project redis/doc ; import doxygen ; import path ; import sequence ; # All paths must be absolute to work well with the Doxygen rules. path-constant this_dir : . ; path-constant target_dir : html ; path-constant redis_root_dir : .. ; path-constant include_dir : ../include ; path-constant examples_dir : ../example ; path-constant readme : ../README.md ; path-constant layout_file : DoxygenLayout.xml ; path-constant header : header.html ; path-constant footer : footer.html ; local stylesheet_files = [ path.glob $(this_dir) : *.css ] ; local includes = [ path.glob-tree $(include_dir) : *.hpp *.cpp ] ; local examples = [ path.glob-tree $(examples_dir) : *.hpp *.cpp ] ; # If passed directly, several HTML_EXTRA_STYLESHEET tags are generated, # which is not correct. local stylesheet_arg = [ sequence.join "\"$(stylesheet_files)\"" : " " ] ; # The doxygen rule requires the target name to end in .html to generate HTML files doxygen doc.html : $(includes) $(examples) $(readme) : "PROJECT_NAME=Boost.Redis" PROJECT_NUMBER="1.84.0" PROJECT_BRIEF="A redis client library" "STRIP_FROM_PATH=\"$(redis_root_dir)\"" "STRIP_FROM_INC_PATH=\"$(include_dir)\"" BUILTIN_STL_SUPPORT=YES INLINE_SIMPLE_STRUCTS=YES HIDE_UNDOC_MEMBERS=YES HIDE_UNDOC_CLASSES=YES SHOW_HEADERFILE=YES SORT_BRIEF_DOCS=YES SORT_MEMBERS_CTORS_1ST=YES SHOW_FILES=NO SHOW_NAMESPACES=NO "LAYOUT_FILE=\"$(layout_file)\"" WARN_IF_INCOMPLETE_DOC=YES FILE_PATTERNS="*.hpp *.cpp" EXCLUDE_SYMBOLS=std "USE_MDFILE_AS_MAINPAGE=\"$(readme)\"" SOURCE_BROWSER=YES "HTML_HEADER=\"$(header)\"" "HTML_FOOTER=\"$(footer)\"" "HTML_EXTRA_STYLESHEET=$(stylesheet_arg)" HTML_TIMESTAMP=YES GENERATE_TREEVIEW=YES FULL_SIDEBAR=YES DISABLE_INDEX=YES ENUM_VALUES_PER_LINE=0 OBFUSCATE_EMAILS=YES USE_MATHJAX=YES MATHJAX_VERSION=MathJax_2 MATHJAX_RELPATH="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/" MACRO_EXPANSION=YES HAVE_DOT=NO CLASS_GRAPH=NO DIRECTORY_GRAPH=NO ; explicit doc.html ; # The doxygen rule only informs b2 about the main HTML file, and not about # all the doc directory that gets generated. Using the install rule copies # only a single file, which is incorrect. This is a workaround to copy # the generated docs to the doc/html directory, where they should be. make copyhtml.tag : doc.html : @copy_html_dir ; explicit copyhtml.tag ; actions copy_html_dir { rm -rf $(target_dir) mkdir -p $(target_dir) cp -r $(<:D)/html/doc/* $(target_dir)/ echo "Stamped" > "$(<)" } # These are used to inform the build system of the # means to build the integrated and stand-alone docs. alias boostdoc ; explicit boostdoc ; alias boostrelease : copyhtml.tag ; explicit boostrelease ;