diff --git a/doc/Jamfile b/doc/Jamfile index 0cee1212..7eb23de7 100644 --- a/doc/Jamfile +++ b/doc/Jamfile @@ -37,34 +37,6 @@ local sources = [ path.glob-tree ../include/boost/beast : *.hpp *.ipp : detail i #ECHO Using xsltproc from "$(.xsltproc)" ; -#------------------------------------------------------------------------------- -# -# Generate transform.xsl. This xsl transfomration takes as input -# the Doxygen-generated XML and produces QuickBook output. -# -make transform.xsl - : - docca/include/docca/doxygen.xsl - xsl/config.xsl - xsl/class_detail.xsl - xsl/includes.xsl - xsl/includes_foot.xsl - : - @make_transform - ; - -# Make a copy of the docca transform. Then, insert our -# customizations into the speciall marked locations using sed. -# -actions make_transform -{ - cp $(2[1]) $(1) - sed -i -e "//{r $(2[2])" -e "d}" $(1) - sed -i -e "//{r $(2[3])" -e "d}" $(1) - sed -i -e "//{r $(2[4])" -e "d}" $(1) - sed -i -e "//{r $(2[5])" -e "d}" $(1) -} - #------------------------------------------------------------------------------- # # Invoke Doxygen to process the header files and produce the XML @@ -106,8 +78,131 @@ else } } +#------------------------------------------------------------------------------- +# +# Copy all the XSLT modules to the target directory. +# +# FIXME: Change this so we can just specify a directory, +# rather than every file individually. +# +# Also, somehow force dependencies in a general way +# such that the XSLT has to be executed again +# if any of the modules change. For example, +# if base-extract-xml-pages.xml changes, then +# an invocation of extract-xml-pages.xsl (which +# imports the former) must be run again. +# +make extract-xml-pages.xsl : docca/include/docca/extract-xml-pages.xsl : @copy_script ; +make base-extract-xml-pages.xsl : docca/include/docca/base-extract-xml-pages.xsl : @copy_script ; +make config.xsl : docca/include/docca/config.xsl : @copy_script ; +make common.xsl : docca/include/docca/common.xsl : @copy_script ; +make stage1.xsl : docca/include/docca/stage1.xsl : @copy_script ; +make base-stage1.xsl : docca/include/docca/base-stage1.xsl : @copy_script ; +make stage2.xsl : docca/include/docca/stage2.xsl : @copy_script ; +make assemble-quickbook.xsl : docca/include/docca/assemble-quickbook.xsl : @copy_script ; +make emphasized-types.xsl : docca/include/docca/emphasized-types.xsl : @copy_script ; + +# Beginning (failed) attempt to make all the xslt-visualizer code available +#make xslt-visualizer : docca/include/xslt-visualizer : @copy_dir ; +# +#actions copy_dir +#{ +# cp -r $(2[1]) $(1) +#} + +# Make a copy of the given file. +# +actions copy_script +{ + cp $(2[1]) $(1) +} + + +# This is to initially create the directory as a side effect; I'm sure there's a better way... +make xml-pages/directory/placeholder : index.xml : @null_action ; + +#------------------------------------------------------------------------------- +# +# Run index.xml through the first transformation stage +# (assembling and splitting the XML into page-specific files). +# +make xml-pages.xml + : + index.xml + extract-xml-pages.xsl + + # Make bjam aware of additional dependencies + base-extract-xml-pages.xsl + config.xsl + common.xsl + : + saxonhe.saxonhe + ; + +# This is just to make the directory eligible as a source +make xml-pages : index.xml : @null_action ; + +# Not ready for prime time until I figure out how to get the xslt-visualizer code in place +#make stage1/code-trace-enabled/stage1.xsl +# : +# stage1.xsl +# xslt-visualizer/xsl/trace-enable.xsl +# : +# saxonhe.saxonhe +# ; + +# This is to initially create the directory as a side effect; I'm sure there's a better way... +make stage1/results/directory/placeholder : xml-pages.xml : @null_action ; +make stage2/results/directory/placeholder : xml-pages.xml : @null_action ; + +# TODO: figure out why this (and the following stage) get built every time +make stage1/results + : + xml-pages + stage1.xsl + + # additional dependencies + xml-pages.xml + base-stage1.xsl + config.xsl + common.xsl + : + saxonhe.saxonhe + ; + +make stage2/results + : + stage1/results + stage2.xsl + : + saxonhe.saxonhe + ; + +make reference.qbk + : + xml-pages.xml + assemble-quickbook.xsl + + # TODO: make this input to the XSLT somehow + # rather than relying on it being hard-coded + # in the XSLT (which it is!) + stage2/results + : + saxonhe.saxonhe + ; + +actions make_dir +{ + mkdir $(1) +} + make combine.xslt : index.xml : @null_action ; +actions touch_file +{ + touch $(1) ; +} + actions null_action { touch -c $(1) ; @@ -131,13 +226,13 @@ actions call-xsltproc # Produce the reference.qbk file by running # the reference xml through the transform. # -make reference.qbk - : - reference.xml - transform.xsl - : - saxonhe.saxonhe - ; +#make reference.qbk +# : +# reference.xml +# transform.xsl +# : +# saxonhe.saxonhe +# ; # We have to make a copy of reference.qbk and put it # in a place where the static .qbk files can find it @@ -201,4 +296,4 @@ alias boostdoc ; explicit boostdoc ; alias boostrelease : beast ; -explicit boostrelease ; +explicit boostrelease ; \ No newline at end of file diff --git a/doc/docca b/doc/docca index 77a24a56..457bd23c 160000 --- a/doc/docca +++ b/doc/docca @@ -1 +1 @@ -Subproject commit 77a24a56c68ebb158f7d605cc3d5546510002c1c +Subproject commit 457bd23cf7aa236fecf7287ba1ab73bf06a33bcd