blob: 739aa4ca974d99f9aa77ede9bb203e652334789f [file] [log] [blame]
# Copyright Eric Niebler 2005. Use, modification, and distribution are
# subject to the Boost Software License, Version 1.0. (See accompanying
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
import os ;
import common ;
import doxygen ;
import quickbook ;
#
# Accumulators docs are dependent upon
# latex dvips and ps being in your PATH.
# This is true for most Unix installs, but
# not on Win32, where you will need to install
# MkTex and Ghostscript and add these tools
# to your path.
#
make latex.check : : @check-latex ;
actions check-latex
{
latex -version > latex.version
}
make dvips.check : : @check-dvips ;
actions check-dvips
{
dvips -version > dvips.version
}
make gs.check : : @check-gs ;
import os ;
if [ os.name ] = "NT"
{
actions check-gs
{
gswin32c -version > gs.version
}
}
else
{
actions check-gs
{
gs -version > gs.version
}
}
# Use Doxygen to emit a tagfile with the definition of depends_on<>. That
# tagfile will be used by Doxygen below when generating the Statistics Library
# Reference. This is all so that the Doxygen-generated documentation for the
# features shows the dependency relationships between them.
doxygen tagfile
:
../../../boost/accumulators/framework/depends_on.hpp
../../../boost/accumulators/framework/extractor.hpp
:
<doxygen:param>MACRO_EXPANSION=YES
<doxygen:param>EXPAND_ONLY_PREDEF=YES
<doxygen:param>GENERATE_TAGFILE=accumulators.tag
<doxygen:param>"PREDEFINED=\"BOOST_ACCUMULATORS_DOXYGEN_INVOKED=1\" \\
\"BOOST_PP_REPEAT_FROM_TO(a,b,c,d)=\" \\
\"BOOST_PP_ENUM_PARAMS(a,b)=b ## 1, b ## 2, ...\""
<dependency>latex.check
<dependency>dvips.check
<dependency>gs.check
;
doxygen accdoc
:
[ glob ../../../boost/accumulators/accumulators*.hpp ]
[ glob ../../../boost/accumulators/framework/*.hpp ]
[ glob ../../../boost/accumulators/framework/parameters/*.hpp ]
[ glob ../../../boost/accumulators/framework/accumulators/*.hpp ]
:
<doxygen:param>EXTRACT_ALL=YES
<doxygen:param>"PREDEFINED=\"BOOST_ACCUMULATORS_DOXYGEN_INVOKED=1\" \\
\"BOOST_PP_REPEAT_FROM_TO(a,b,c,d)=\" \\
\"BOOST_PP_REPEAT(a,b,c)=\" \\
\"BOOST_PARAMETER_KEYWORD(a,b)=\\
namespace a { struct b {}; } \\
boost::parameter::keyword<a::b> const b;\" \\
\"BOOST_PP_ENUM_PARAMS(a,b)=b ## 1, b ## 2, ...\""
<doxygen:param>HIDE_UNDOC_MEMBERS=NO
<doxygen:param>EXTRACT_PRIVATE=NO
<doxygen:param>ENABLE_PREPROCESSING=YES
<doxygen:param>MACRO_EXPANSION=YES
<doxygen:param>EXPAND_ONLY_PREDEF=YES
<doxygen:param>SEARCH_INCLUDES=NO
<reftitle>"Accumulators Framework Reference"
<dependency>latex.check
<dependency>dvips.check
<dependency>gs.check
;
# Generate the HTML form of the stats documentation, as this
# causes Doxygen to generate .png images for the LaTeX formulas
# embedded in the doc comments.
doxygen statsdoc.html
:
[ glob ../../../boost/accumulators/statistics*.hpp ]
[ glob ../../../boost/accumulators/statistics/*.hpp ]
[ glob ../../../boost/accumulators/statistics/variates/*.hpp ]
:
<dependency>latex.check
<dependency>dvips.check
<dependency>gs.check
;
if [ os.name ] = NT
{
CP = copy /y ;
MKDIR = mkdir ;
FROM = \\..\\..\\..\\html\\statsdoc\\*.png ;
TOHTML = .\\html\\images\\accumulators ;
TOPDF = \\images\\accumulators ;
}
else
{
CP = cp ;
MKDIR = mkdir -p ;
FROM = /../../html/statsdoc/*.png ;
TOHTML = ./html/images/accumulators ;
TOPDF = /images/accumulators ;
}
actions copy-latex-pngs
{
$(MKDIR) $(TOHTML)
$(MKDIR) $(<:D)$(TOPDF)
$(CP) $(<:D)$(FROM) $(TOHTML)
$(CP) $(<:D)$(FROM) $(<:D)$(TOPDF)
echo "Stamped" > "$(<)"
}
# This causes the png files built above to be copied
# into the html/images/accumulators directory.
make statsdoclatex.tag
: statsdoc.html
: @copy-latex-pngs
;
doxygen statsdoc
:
[ glob ../../../boost/accumulators/statistics*.hpp ]
[ glob ../../../boost/accumulators/statistics/*.hpp ]
[ glob ../../../boost/accumulators/statistics/variates/*.hpp ]
:
<doxygen:param>EXTRACT_ALL=YES
<doxygen:param>"PREDEFINED=\"BOOST_ACCUMULATORS_DOXYGEN_INVOKED=1\" \\
\"BOOST_PP_REPEAT_FROM_TO(a,b,c,d)=\" \\
\"BOOST_PP_REPEAT(a,b,c)=\" \\
\"BOOST_PARAMETER_KEYWORD(a,b)=\\
namespace a { struct b {}; } \\
boost::parameter::keyword<a::b> const b;\" \\
\"BOOST_PP_ENUM_PARAMS(a,b)=b ## 1, b ## 2, ...\""
<doxygen:param>HIDE_UNDOC_MEMBERS=NO
<doxygen:param>EXTRACT_PRIVATE=NO
<doxygen:param>ENABLE_PREPROCESSING=YES
<doxygen:param>MACRO_EXPANSION=YES
<doxygen:param>EXPAND_ONLY_PREDEF=YES
<doxygen:param>SEARCH_INCLUDES=NO
<doxygen:param>TAGFILES=accumulators.tag
<xsl:param>boost.doxygen.formuladir=images/accumulators/
<reftitle>"Statistics Library Reference"
<dependency>tagfile
<dependency>statsdoclatex.tag
<dependency>latex.check
<dependency>dvips.check
<dependency>gs.check
;
doxygen opdoc
:
[ glob ../../../boost/accumulators/numeric/functional.hpp ]
[ glob ../../../boost/accumulators/numeric/functional/*.hpp ]
:
<doxygen:param>EXTRACT_ALL=YES
<doxygen:param>"PREDEFINED=\"BOOST_NUMERIC_FUNCTIONAL_DOXYGEN_INVOKED=1\" \\
\"BOOST_NUMERIC_FUNCTIONAL_DEFINE_BINARY_OP(a,b,c)=\\
namespace functional { \\
template<class Left,class Right,class EnableIf=void> struct a ## _base \\
: std::binary_function<Left, Right, typeof(lvalue<Left>() b lvalue<Right>())> { \\
/** \\return left b right */ \\
result_type operator()(Left &left, Right &right) const; }; \\
template<class Left,class Right, \\
class LeftTag=typename tag<Left>::type, \\
class RightTag=typename tag<Right>::type> \\
struct a : a ## _base<Left,Right,void> {}; } \\
namespace op { \\
struct a : boost::detail::function2< \\
functional::a<_1,_2,functional::tag<_1>,functional::tag<_2> > > {}; } \\
namespace { \\
/** \\return functional::a<Left, Right>()(left, right) */ \\
op::a const & a = boost::detail::pod_singleton<op::min_assign>::instance; } \" \\
\"BOOST_NUMERIC_FUNCTIONAL_DEFINE_UNARY_OP(a,b)=\\
namespace functional { \\
template<class Arg,class EnableIf=void> struct a ## _base \\
: std::unary_function<Arg, typeof(b lvalue<Arg>())> { \\
/** \\return b arg */ \\
result_type operator()(Arg & arg) const; }; \\
template<class Arg,class Tag=typename tag<Arg>::type> \\
struct a : a ## _base<Arg,void> {}; } \\
namespace op { \\
struct a : boost::detail::function1< \\
functional::a<_,functional::tag<_> > > {}; } \\
namespace { \\
/** \\return functional::a<Arg>()(arg) */ \\
op::a const & a = boost::detail::pod_singleton<op::min_assign>::instance; }\""
<doxygen:param>HIDE_UNDOC_MEMBERS=NO
<doxygen:param>EXTRACT_PRIVATE=NO
<doxygen:param>ENABLE_PREPROCESSING=YES
<doxygen:param>MACRO_EXPANSION=YES
<doxygen:param>EXPAND_ONLY_PREDEF=YES
<doxygen:param>SEARCH_INCLUDES=NO
<reftitle>"Numeric Operators Library Reference"
<dependency>latex.check
<dependency>dvips.check
<dependency>gs.check
;
xml accumulators
:
accumulators.qbk
:
<xsl:param>boost.max.id.length=1024
<xsl:param>toc.max.depth=4
<xsl:param>toc.section.depth=4
<xsl:param>chunk.section.depth=2
;
path-constant images_location : html ;
boostbook standalone
:
accumulators
:
<xsl:param>boost.root=../../../..
<xsl:param>boost.max.id.length=1024
<xsl:param>toc.max.depth=4
<xsl:param>toc.section.depth=4
<xsl:param>chunk.section.depth=2
<dependency>accdoc
<dependency>statsdoc
<dependency>opdoc
<format>pdf:<xsl:param>img.src.path=$(images_location)/
<format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/doc/html
;