# Distributed under the Boost Software License, Version 1.0. (See
# accomanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt

import path ;
import doxygen ;
import quickbook ;

using doxygen ;
using quickbook ;
using boostbook ;

path-constant here : . ;

rule run_doxygen ( files * : name : expand ? )
{

    expand ?= <doxygen:param>EXPAND_ONLY_PREDEF=YES ;

    doxygen parser_reference
      :
        $(files)
      :
        <doxygen:param>EXTRACT_ALL=YES
        # note that there is no detail::unspecified -- this is a hack to get all
        # the SFINAE code out of the API docs.
        <doxygen:param>"PREDEFINED=\"BOOST_PARSER_DOXYGEN=1\" \\
                                   \"BOOST_PARSER_USE_CONCEPTS=1\" \\
                                   \"enable_if=detail::unspecified\""
        <doxygen:param>HIDE_UNDOC_MEMBERS=NO
        <doxygen:param>EXTRACT_PRIVATE=NO
        <doxygen:param>ENABLE_PREPROCESSING=YES
        <doxygen:param>MACRO_EXPANSION=YES
        $(expand)
        <doxygen:param>SEARCH_INCLUDES=NO
        <doxygen:param>EXAMPLE_PATH=.
        <reftitle>$(name)
      ;

}

run_doxygen [ glob $(here)/../include/boost/parser/*.hpp : $(here)/../include/boost/parser/concepts.hpp ] : "Headers" ;

install images_standalone : [ glob *.png ] : <location>html/parser/img ;
explicit images_standalone ;

install images_boostdoc : [ glob *.png ] : <location>../../../doc/html/parser/img ;
explicit images_boostdoc ;

xml parser
    :
        parser.qbk
    :
        <dependency>parser_reference
    ;

boostbook standalone
    :
        parser
    :
        <dependency>css
        <dependency>images

        # HTML options first:
        # Use graphics not text for navigation:
        <xsl:param>navig.graphics=1
        # How far down we chunk nested sections, basically all of them:
        <xsl:param>chunk.section.depth=10
        # Don't put the first section on the same page as the TOC:
        <xsl:param>chunk.first.sections=1
        # How far down sections get TOC's
        <xsl:param>toc.section.depth=10
        # Max depth in each TOC:
        <xsl:param>toc.max.depth=4
        # How far down we go with TOC's
        <xsl:param>generate.section.toc.level=10
        # Set the path to the boost-root so we find our graphics:
        #<xsl:param>boost.root="../../../.."
        # location of the main index file so our links work:
        #<xsl:param>boost.libraries=../../../../../libs/libraries.htm

        # PDF Options:
        # TOC Generation: this is needed for FOP-0.9 and later:
        # <xsl:param>fop1.extensions=1
        <xsl:param>xep.extensions=1
        # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9!
        <xsl:param>fop.extensions=0
        # No indent on body text:
        <xsl:param>body.start.indent=0pt
        # Margin size:
        <xsl:param>page.margin.inner=0.5in
        # Margin size:
        <xsl:param>page.margin.outer=0.5in
        # Yes, we want graphics for admonishments:
        <xsl:param>admon.graphics=1
        # Set this one for PDF generation *only*:
        # default pnd graphics are awful in PDF form,
        # better use SVG's instead:
        # <xsl:param>admon.graphics.extension=".svg"

        # <auto-index>on
        # <auto-index-verbose>on
        # <auto-index-internal>on
        # <auto-index-script>parser.idx
        # <quickbook-define>enable_index
        # <auto-index-prefix>..
        # <xsl:param>index.on.type=1

        <dependency>images_standalone
    ;

install css : [ glob $(BOOST_ROOT)/doc/src/*.css ]
    : <location>html ;
install images : [ glob $(BOOST_ROOT)/doc/src/images/*.png ]
    : <location>html/images ;

alias boostdoc : parser : : : <dependency>images_boostdoc ;
explicit boostdoc ;
alias boostrelease ;
explicit boostrelease ;
explicit css ;
explicit images ;
