• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright Eric Niebler 2005. Use, modification, and distribution are
2# subject to the Boost Software License, Version 1.0. (See accompanying
3# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
4
5import os ;
6import common ;
7import doxygen ;
8import quickbook ;
9
10#
11# Accumulators docs are dependent upon
12# latex dvips and ps being in your PATH.
13# This is true for most Unix installs, but
14# not on Win32, where you will need to install
15# MkTex and Ghostscript and add these tools
16# to your path.
17#
18make latex.check : : @check-latex ;
19actions check-latex
20{
21    latex -version > latex.version
22}
23
24make dvips.check : : @check-dvips ;
25actions check-dvips
26{
27    dvips -version > dvips.version
28}
29
30make gs.check : : @check-gs ;
31
32import os ;
33
34if [ os.name ] = "NT"
35{
36   actions check-gs
37   {
38       gswin32c -version > gs.version
39   }
40}
41else
42{
43   actions check-gs
44   {
45       gs -version > gs.version
46   }
47}
48
49# Use Doxygen to emit a tagfile with the definition of depends_on<>. That
50# tagfile will be used by Doxygen below when generating the Statistics Library
51# Reference. This is all so that the Doxygen-generated documentation for the
52# features shows the dependency relationships between them.
53doxygen tagfile
54    :
55        ../../../boost/accumulators/framework/depends_on.hpp
56        ../../../boost/accumulators/framework/extractor.hpp
57    :
58        <doxygen:param>MACRO_EXPANSION=YES
59        <doxygen:param>EXPAND_ONLY_PREDEF=YES
60        <doxygen:param>GENERATE_TAGFILE=accumulators.tag
61        <doxygen:param>"PREDEFINED=\"BOOST_ACCUMULATORS_DOXYGEN_INVOKED=1\" \\
62                                   \"BOOST_PP_REPEAT_FROM_TO(a,b,c,d)=\" \\
63                                   \"BOOST_PP_ENUM_PARAMS(a,b)=b ## 1, b ## 2, ...\""
64        <dependency>latex.check
65        <dependency>dvips.check
66        <dependency>gs.check
67    ;
68
69doxygen accdoc
70    :
71        [ glob ../../../boost/accumulators/accumulators*.hpp ]
72        [ glob ../../../boost/accumulators/framework/*.hpp ]
73        [ glob ../../../boost/accumulators/framework/parameters/*.hpp ]
74        [ glob ../../../boost/accumulators/framework/accumulators/*.hpp ]
75    :
76        <doxygen:param>EXTRACT_ALL=YES
77        <doxygen:param>"PREDEFINED=\"BOOST_ACCUMULATORS_DOXYGEN_INVOKED=1\" \\
78                                   \"BOOST_PP_REPEAT_FROM_TO(a,b,c,d)=\" \\
79                                   \"BOOST_PP_REPEAT(a,b,c)=\" \\
80                                   \"BOOST_PARAMETER_KEYWORD(a,b)=\\
81                                         namespace a { struct b {}; } \\
82                                         boost::parameter::keyword<a::b> const b;\" \\
83                                   \"BOOST_PP_ENUM_PARAMS(a,b)=b ## 1, b ## 2, ...\""
84        <doxygen:param>HIDE_UNDOC_MEMBERS=NO
85        <doxygen:param>EXTRACT_PRIVATE=NO
86        <doxygen:param>ENABLE_PREPROCESSING=YES
87        <doxygen:param>MACRO_EXPANSION=YES
88        <doxygen:param>EXPAND_ONLY_PREDEF=YES
89        <doxygen:param>SEARCH_INCLUDES=NO
90        <reftitle>"Accumulators Framework Reference"
91        <dependency>latex.check
92        <dependency>dvips.check
93        <dependency>gs.check
94    ;
95
96# Generate the HTML form of the stats documentation, as this causes Doxygen to
97# generate .png images for the LaTeX formulas embedded in the doc comments.
98doxygen statsdoc.html
99    :
100        [ glob ../../../boost/accumulators/statistics*.hpp ]
101        [ glob ../../../boost/accumulators/statistics/*.hpp ]
102        [ glob ../../../boost/accumulators/statistics/variates/*.hpp ]
103    :
104        <dependency>latex.check
105        <dependency>dvips.check
106        <dependency>gs.check
107    ;
108
109if [ os.name ] = NT
110{
111    CP = copy /y ;
112    MKDIR = mkdir ;
113    FROM = \\..\\..\\..\\html\\statsdoc\\*.png ;
114    TOHTML = .\\html\\images\\accumulators ;
115    TOPDF = \\images\\accumulators ;
116}
117else
118{
119    CP = cp ;
120    MKDIR = mkdir -p ;
121    FROM = /../../html/statsdoc/*.png ;
122    TOHTML = ./html/images/accumulators ;
123    TOPDF = /images/accumulators ;
124}
125
126actions copy-latex-pngs
127{
128    $(MKDIR) $(TOHTML)
129    $(MKDIR) $(<:D)$(TOPDF)
130    $(CP) $(<:D)$(FROM) $(TOHTML)
131    $(CP) $(<:D)$(FROM) $(<:D)$(TOPDF)
132    echo "Stamped" > "$(<)"
133}
134
135# This causes the png files built above to be copied into the
136# html/images/accumulators directory.
137make statsdoclatex.tag
138    : statsdoc.html
139    : @copy-latex-pngs
140    ;
141
142doxygen statsdoc
143    :
144        [ glob ../../../boost/accumulators/statistics*.hpp ]
145        [ glob ../../../boost/accumulators/statistics/*.hpp ]
146        [ glob ../../../boost/accumulators/statistics/variates/*.hpp ]
147    :
148        <doxygen:param>EXTRACT_ALL=YES
149        <doxygen:param>"PREDEFINED=\"BOOST_ACCUMULATORS_DOXYGEN_INVOKED=1\" \\
150                                   \"BOOST_PP_REPEAT_FROM_TO(a,b,c,d)=\" \\
151                                   \"BOOST_PP_REPEAT(a,b,c)=\" \\
152                                   \"BOOST_PARAMETER_KEYWORD(a,b)=\\
153                                         namespace a { struct b {}; } \\
154                                         boost::parameter::keyword<a::b> const b;\" \\
155                                   \"BOOST_PP_ENUM_PARAMS(a,b)=b ## 1, b ## 2, ...\""
156        <doxygen:param>HIDE_UNDOC_MEMBERS=NO
157        <doxygen:param>EXTRACT_PRIVATE=NO
158        <doxygen:param>ENABLE_PREPROCESSING=YES
159        <doxygen:param>MACRO_EXPANSION=YES
160        <doxygen:param>EXPAND_ONLY_PREDEF=YES
161        <doxygen:param>SEARCH_INCLUDES=NO
162        <doxygen:param>TAGFILES=accumulators.tag
163        <xsl:param>boost.doxygen.formuladir=images/accumulators/
164        <reftitle>"Statistics Library Reference"
165        <dependency>tagfile
166        <dependency>statsdoclatex.tag
167        <dependency>latex.check
168        <dependency>dvips.check
169        <dependency>gs.check
170    ;
171
172doxygen opdoc
173    :
174        [ glob ../../../boost/accumulators/numeric/functional.hpp ]
175        [ glob ../../../boost/accumulators/numeric/functional/*.hpp ]
176    :
177        <doxygen:param>EXTRACT_ALL=YES
178        <doxygen:param>"PREDEFINED=\"BOOST_NUMERIC_FUNCTIONAL_DOXYGEN_INVOKED=1\" \\
179                                   \"BOOST_NUMERIC_FUNCTIONAL_DEFINE_BINARY_OP(a,b,c)=\\
180                                         namespace functional { \\
181                                         template<class Left,class Right,class EnableIf=void> struct a ## _base \\
182                                         : std::binary_function<Left, Right, typeof(lvalue<Left>() b lvalue<Right>())> { \\
183                                         /** \\return left b right */ \\
184                                         result_type operator()(Left &left, Right &right) const; }; \\
185                                         template<class Left,class Right, \\
186                                                  class LeftTag=typename tag<Left>::type, \\
187                                                  class RightTag=typename tag<Right>::type> \\
188                                         struct a : a ## _base<Left,Right,void> {}; } \\
189                                         namespace op { \\
190                                         struct a : boost::detail::function2< \\
191                                             functional::a<_1,_2,functional::tag<_1>,functional::tag<_2> > > {}; } \\
192                                         namespace { \\
193                                         /** \\return functional::a<Left, Right>()(left, right) */ \\
194                                         op::a const & a = boost::detail::pod_singleton<op::min_assign>::instance; } \" \\
195                                   \"BOOST_NUMERIC_FUNCTIONAL_DEFINE_UNARY_OP(a,b)=\\
196                                         namespace functional { \\
197                                         template<class Arg,class EnableIf=void> struct a ## _base \\
198                                         : std::unary_function<Arg, typeof(b lvalue<Arg>())> { \\
199                                         /** \\return b arg */ \\
200                                         result_type operator()(Arg & arg) const; }; \\
201                                         template<class Arg,class Tag=typename tag<Arg>::type> \\
202                                         struct a : a ## _base<Arg,void> {}; } \\
203                                         namespace op { \\
204                                         struct a : boost::detail::function1< \\
205                                             functional::a<_,functional::tag<_> > > {}; } \\
206                                         namespace { \\
207                                         /** \\return functional::a<Arg>()(arg) */ \\
208                                         op::a const & a = boost::detail::pod_singleton<op::min_assign>::instance; }\""
209        <doxygen:param>HIDE_UNDOC_MEMBERS=NO
210        <doxygen:param>EXTRACT_PRIVATE=NO
211        <doxygen:param>ENABLE_PREPROCESSING=YES
212        <doxygen:param>MACRO_EXPANSION=YES
213        <doxygen:param>EXPAND_ONLY_PREDEF=YES
214        <doxygen:param>SEARCH_INCLUDES=NO
215        <reftitle>"Numeric Operators Library Reference"
216        <dependency>latex.check
217        <dependency>dvips.check
218        <dependency>gs.check
219    ;
220
221xml accumulators
222    :
223        accumulators.qbk
224    :
225        <xsl:param>boost.max.id.length=1024
226        <xsl:param>toc.max.depth=4
227        <xsl:param>toc.section.depth=4
228        <xsl:param>chunk.section.depth=2
229    ;
230
231path-constant images_location : html ;
232
233boostbook standalone
234    :
235        accumulators
236    :
237        <xsl:param>boost.root=../../../..
238        <xsl:param>boost.max.id.length=1024
239        <xsl:param>toc.max.depth=4
240        <xsl:param>toc.section.depth=4
241        <xsl:param>chunk.section.depth=2
242        <dependency>accdoc
243        <dependency>statsdoc
244        <dependency>opdoc
245        <format>pdf:<xsl:param>img.src.path=$(images_location)/
246        <format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/doc/html
247    ;
248
249###############################################################################
250alias boostdoc
251    : accumulators
252    :
253    : <dependency>accdoc <dependency>statsdoc <dependency>opdoc
254    : ;
255explicit boostdoc ;
256alias boostrelease ;
257explicit boostrelease ;
258