• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Copyright Daryle Walker, Hubert Holin, John Maddock 2006 - 2007
2# copyright Paul A. Bristow 2006 - 2010
3# Distributed under the Boost Software License, Version 1.0.
4# (See accompanying file LICENSE_1_0.txt or copy at
5# http://www.boost.org/LICENSE_1_0.txt.
6# \math_toolkit\libs\math\test\jamfile.v2
7# Runs all math toolkit tests, functions & distributions,
8# and build math examples.
9
10# bring in the rules for testing
11import testing ;
12import modules ;
13import path ;
14import pch ;
15import ../../../config/checks/config : requires ;
16using quickbook ;
17using auto-index ;
18
19project
20    : requirements
21      <include>../../include_private
22    ;
23
24if $(is_unix)
25{
26	local osname = [ SHELL uname ] ;
27
28	switch $(osname)
29	{
30		case "Sun*" : OTHERFLAGS = "-lpthread -lrt" ;
31		case "*BSD*" : OTHERFLAGS = "-lpthread" ;
32	}
33}
34
35#
36# Configuration first:
37#
38lib gsl ;
39lib gslcblas ;
40lib Rmath ;
41obj has_cxx17_cmath : has_cxx17_cmath.cpp ;
42explicit has_cxx17_cmath ;
43obj has_c99_cmath : has_c99_cmath.cpp ;
44explicit has_c99_cmath ;
45exe has_gsl : has_gsl.cpp gsl gslcblas ;
46explicit has_gsl ;
47exe has_rmath : has_rmath.cpp Rmath ;
48explicit has_rmath ;
49
50CEPHES_SOURCE = acosh.c airy.c asin.c asinh.c atan.c atanh.c bdtr.c beta.c
51btdtr.c cbrt.c chbevl.c chdtr.c clog.c cmplx.c const.c
52cosh.c dawsn.c drand.c ei.c ellie.c ellik.c ellpe.c ellpj.c ellpk.c
53exp.c exp10.c exp2.c expn.c expx2.c fabs.c fac.c fdtr.c
54fresnl.c gamma.c gdtr.c hyp2f1.c hyperg.c i0.c i1.c igami.c incbet.c
55incbi.c igam.c isnan.c iv.c j0.c j1.c jn.c jv.c k0.c k1.c kn.c kolmogorov.c
56log.c log2.c log10.c lrand.c nbdtr.c ndtr.c ndtri.c pdtr.c planck.c
57polevl.c polmisc.c polylog.c polyn.c pow.c powi.c psi.c rgamma.c round.c
58shichi.c sici.c sin.c sindg.c sinh.c spence.c stdtr.c struve.c
59tan.c tandg.c tanh.c unity.c yn.c zeta.c zetac.c
60sqrt.c floor.c setprec.c mtherr.c ;
61
62path-constant here : . ;
63make $(here)/third_party/cephes_double/acosh.c : : @check_exists ;
64actions check_exists
65{
66    stat $(<)
67}
68explicit $(here)/third_party/cephes_double/acosh.c ;
69
70lib cephes_double : $(here)/third_party/cephes_double/$(CEPHES_SOURCE)
71    :
72        release
73        <link>static
74        [ check-target-builds $(here)/third_party/cephes_double/acosh.c : : <build>no ]
75   ;
76
77explicit cephes_double ;
78
79rule all-tests {
80     local result ;
81     for local source in [ glob test*.cpp ]
82     {
83         result += [ run $(source) /boost/regex//boost_regex /boost/system /boost/filesystem /boost/test//boost_unit_test_framework
84         : : :
85          [ check-target-builds has_gsl : <define>ALWAYS_TEST_DOUBLE : ]
86          <target-os>linux:<linkflags>-lpthread
87          <target-os>linux:<linkflags>-lrt
88          <toolset>gcc:<linkflags>$(OTHERFLAGS) ]
89         ;
90         result += [ run $(source) /boost/regex//boost_regex /boost/system /boost/filesystem /boost/test//boost_unit_test_framework
91         : : : [ check-target-builds has_cxx17_cmath : <define>TEST_CXX17_CMATH : <build>no ]
92          <target-os>linux:<linkflags>-lpthread
93          <target-os>linux:<linkflags>-lrt
94          <toolset>gcc:<linkflags>$(OTHERFLAGS)
95          : $(source:B)_cxx17_cmath ]
96         ;
97         result += [ run $(source) /boost/regex//boost_regex /boost/system /boost/filesystem /boost/test//boost_unit_test_framework
98         : : : [ check-target-builds has_c99_cmath : <define>TEST_C99 : <build>no ]
99          <target-os>linux:<linkflags>-lpthread
100          <target-os>linux:<linkflags>-lrt
101          <toolset>gcc:<linkflags>$(OTHERFLAGS)
102          : $(source:B)_c99 ]
103         ;
104         result += [ run $(source) /boost/regex//boost_regex /boost/system /boost/filesystem /boost/test//boost_unit_test_framework gsl gslcblas
105         : : : [ check-target-builds has_gsl : <define>TEST_GSL : <build>no ]
106          <target-os>linux:<linkflags>-lpthread
107          <target-os>linux:<linkflags>-lrt
108          <toolset>gcc:<linkflags>$(OTHERFLAGS)
109          : $(source:B)_gsl ]
110         ;
111         result += [ run $(source) /boost/regex//boost_regex /boost/system /boost/filesystem /boost/test//boost_unit_test_framework Rmath
112         : : : [ check-target-builds has_rmath : <define>TEST_RMATH : <build>no ]
113          <target-os>linux:<linkflags>-lpthread
114          <target-os>linux:<linkflags>-lrt
115          <toolset>gcc:<linkflags>$(OTHERFLAGS)
116          : $(source:B)_rmath ]
117         ;
118         result += [ run $(source) /boost/regex//boost_regex /boost/system /boost/filesystem /boost/test//boost_unit_test_framework cephes_double
119         : : : [ check-target-builds $(here)/third_party/cephes_double/acosh.c : <define>TEST_CEPHES <source>cephes_double : <build>no ]
120          <target-os>linux:<linkflags>-lpthread
121          <target-os>linux:<linkflags>-lrt
122          <toolset>gcc:<linkflags>$(OTHERFLAGS)
123          : $(source:B)_cephes ]
124         ;
125     }
126     return $(result) ;
127}
128
129test-suite report_gen : [ all-tests ] ;
130
131path-constant images_location : html ;
132path-constant here : . ;
133
134xml report : doc/report.qbk : <dependency>report_gen ;
135boostbook standalone
136    :
137        report
138    :
139        # Path for links to Boost:
140        <xsl:param>boost.root=../../../../..
141
142        # Some general style settings:
143        <xsl:param>table.footnote.number.format=1
144        <xsl:param>footnote.number.format=1
145        <xsl:param>html.stylesheet=http://www.boost.org/doc/libs/1_58_0/doc/src/boostbook.css
146
147        # HTML options first:
148        # Use graphics not text for navigation:
149        <xsl:param>navig.graphics=1
150        # How far down we chunk nested sections, basically all of them:
151        <xsl:param>chunk.section.depth=0
152        # Don't put the first section on the same page as the TOC:
153        <xsl:param>chunk.first.sections=0
154        # How far down sections get TOC's
155        <xsl:param>toc.section.depth=2
156        # Max depth in each TOC:
157        <xsl:param>toc.max.depth=4
158        # How far down we go with TOC's
159        <xsl:param>generate.section.toc.level=10
160    ;
161
162