1 # copyright John Maddock 2011
2 # Distributed under the Boost Software License, Version 1.0.
3 # (See accompanying file LICENSE_1_0.txt or copy at
4 # http://www.boost.org/LICENSE_1_0.txt.
9 import ../../config/checks/config : requires ;
11 local ntl-path = [ modules.peek : NTL_PATH ] ;
12 local gmp_path = [ modules.peek : GMP_PATH ] ;
13 local mpfr_path = [ modules.peek : MPFR_PATH ] ;
14 local mpfi_path = [ modules.peek : MPFI_PATH ] ;
15 local tommath_path = [ modules.peek : TOMMATH_PATH ] ;
18 #######################################################################################
20 # NOTE: Because these tests take a fair while to build and run, they are split up into
21 # multiple smaller test suites which are:
24 # functions_and_limits
33 # You can run an individual suite by passing it's name to b2 on the command line.
34 # Or you can run all except the "specfun" tests (which are very slow) by not specifying anything.
36 # Please make sure that any new tests are added to one of the test suites, and that the
37 # build times for the various suites are reasonably balanced: otherwise the CI builds
38 # will time out if one suite contains too many.
40 #######################################################################################################
42 path-constant here : . ;
44 project : requirements
46 <include>$(gmp_path)/mpfr
47 <include>$(gmp_path)/gmpfrxx
50 <include>$(mpfi_path)/src
51 <include>$(tommath_path)
54 # We set these to make it easier to set up and test GMP and MPFR under Win32:
55 <toolset>msvc:<runtime-link>static
56 <toolset>msvc:<link>static
57 <toolset>msvc:<warnings>all
58 <toolset>msvc:<cxxflags>/fp\:precise
59 <toolset>intel-win:<runtime-link>static
60 <toolset>intel-win:<link>static
61 <toolset>clang-win:<link>static
63 # Assembler error "File too big" caused by lots of C++ templates, for example, math/floating_point_examples.cpp.
64 # Some projects on some toolsets may require
65 # <toolset>gcc-mingw:<cxxflags>\"-Wa,-mbig-obj\"
66 # See https://digitalkarabela.com/mingw-w64-how-to-fix-file-too-big-too-many-sections/
67 # <toolset>gcc-mingw:<cxxflags>-Wa,-mbig-obj # Some projects may overflow assembler and require equivalent of MSVC /bigobj.
68 # Requires version 2.30 of GNU binutils.
69 # Best applied only to projects that require this, see multiprecision/example run math/floating_point_examples.cpp.
72 <toolset>msvc:<debug-symbols>off
73 <toolset>intel:<debug-symbols>off
74 <toolset>gcc:<cxxflags>-Wall
75 <toolset>gcc:<cxxflags>-Wextra
76 <toolset>intel:<define>SLOW_COMPILER
77 <toolset>msvc,<optimization>off:<cxxflags>-RTC1
78 # We can't yet enable this - it breaks the STL in some tests...
79 #<toolset>msvc,<optimization>off:<cxxflags>-RTCc
80 #<toolset>msvc,<optimization>off:<define>_ALLOW_RTCc_IN_STL
83 local enable-specfun = [ MATCH (--enable-specfun) : [ modules.peek : ARGV ] ] ;
84 local disable-concepts = [ MATCH (--disable-concepts) : [ modules.peek : ARGV ] ] ;
86 lib gmp : : <search>$(gmp_path) ;
87 lib mpfr : : <search>$(gmp_path) <search>$(mpfr_path) <search>$(mpfr_path)/build.vc10/lib/Win32/Debug ;
88 lib mpfi : : <search>$(gmp_path) <search>$(mpfr_path) <search>$(mpfr_path)/build.vc10/lib/Win32/Debug <search>$(mpfi_path) <search>$(mpfi_path)/src ;
94 lib tommath : [ GLOB $(tommath_path) : *.c ] ;
99 lib tommath : : <search>$(tommath_path) ;
103 lib no_eh_support : no_eh_test_support.cpp ;
105 test-suite arithmetic_tests :
107 [ run test_arithmetic_backend_concept.cpp no_eh_support ]
109 [ run test_arithmetic_cpp_dec_float_1.cpp no_eh_support ]
110 [ run test_arithmetic_cpp_dec_float_2.cpp no_eh_support ]
111 [ run test_arithmetic_cpp_dec_float_3.cpp no_eh_support ]
112 [ run test_arithmetic_cpp_dec_float_3m.cpp no_eh_support ]
114 [ run test_arithmetic_cpp_bin_float_1.cpp no_eh_support ]
115 [ run test_arithmetic_cpp_bin_float_2.cpp no_eh_support ]
116 [ run test_arithmetic_cpp_bin_float_2m.cpp no_eh_support ]
117 [ run test_arithmetic_cpp_bin_float_3.cpp no_eh_support ]
119 [ run test_arithmetic_mpf_50.cpp gmp no_eh_support : : : [ check-target-builds ../config//has_gmp : : <build>no ] ]
120 [ run test_arithmetic_mpf.cpp gmp no_eh_support : : : [ check-target-builds ../config//has_gmp : : <build>no ] ]
121 [ run test_arithmetic_mpz.cpp gmp no_eh_support : : : [ check-target-builds ../config//has_gmp : : <build>no ] ]
122 [ run test_arithmetic_mpz_rat.cpp gmp no_eh_support : : : [ check-target-builds ../config//has_gmp : : <build>no ] ]
123 [ run test_arithmetic_mpz_br.cpp gmp no_eh_support : : : [ check-target-builds ../config//has_gmp : : <build>no ] ]
124 [ run test_arithmetic_mpq.cpp gmp no_eh_support : : : [ check-target-builds ../config//has_gmp : : <build>no ] ]
126 [ run test_arithmetic_mpfr.cpp mpfr gmp no_eh_support : : : [ check-target-builds ../config//has_mpfr : : <build>no ] ]
127 [ run test_arithmetic_mpfr_50.cpp mpfr gmp no_eh_support : : : [ check-target-builds ../config//has_mpfr : : <build>no ] ]
128 [ run test_arithmetic_mpfr_50_static.cpp mpfr gmp no_eh_support : : : [ check-target-builds ../config//has_mpfr : : <build>no ] ]
130 [ run test_arithmetic_tommath.cpp $(TOMMATH) no_eh_support : : : [ check-target-builds ../config//has_tommath : : <build>no ] ]
131 [ run test_arithmetic_tommath_rat.cpp $(TOMMATH) no_eh_support : : : [ check-target-builds ../config//has_tommath : : <build>no ] ]
132 [ run test_arithmetic_tommath_br.cpp $(TOMMATH) no_eh_support : : : [ check-target-builds ../config//has_tommath : : <build>no ] ]
134 [ run test_arithmetic_cpp_int_1.cpp no_eh_support : : : <toolset>msvc:<cxxflags>-bigobj ]
135 [ run test_arithmetic_cpp_int_2.cpp no_eh_support ]
136 [ run test_arithmetic_cpp_int_3.cpp no_eh_support ]
137 [ run test_arithmetic_cpp_int_4.cpp no_eh_support ]
138 [ run test_arithmetic_cpp_int_5.cpp no_eh_support ]
139 [ run test_arithmetic_cpp_int_6.cpp no_eh_support ]
140 [ run test_arithmetic_cpp_int_7.cpp no_eh_support ]
141 [ run test_arithmetic_cpp_int_8.cpp no_eh_support ]
142 [ run test_arithmetic_cpp_int_9.cpp no_eh_support ]
143 [ run test_arithmetic_cpp_int_10.cpp no_eh_support ]
144 [ run test_arithmetic_cpp_int_11.cpp no_eh_support ]
145 [ run test_arithmetic_cpp_int_12.cpp no_eh_support ]
146 [ run test_arithmetic_cpp_int_13.cpp no_eh_support ]
147 [ run test_arithmetic_cpp_int_14.cpp no_eh_support ]
148 [ run test_arithmetic_cpp_int_15.cpp no_eh_support ]
149 [ run test_arithmetic_cpp_int_16.cpp no_eh_support ]
150 [ run test_arithmetic_cpp_int_17.cpp no_eh_support ]
151 [ run test_arithmetic_cpp_int_18.cpp no_eh_support ]
152 [ run test_arithmetic_cpp_int_19.cpp no_eh_support ]
153 [ run test_arithmetic_cpp_int_br.cpp no_eh_support ]
155 [ run test_arithmetic_ab_1.cpp no_eh_support ]
156 [ run test_arithmetic_ab_2.cpp no_eh_support ]
157 [ run test_arithmetic_ab_3.cpp no_eh_support ]
159 [ run test_cpp_dec_float_round.cpp no_eh_support ]
161 [ run test_arithmetic_logged_1.cpp no_eh_support ]
162 [ run test_arithmetic_logged_2.cpp no_eh_support ]
164 [ run test_arithmetic_dbg_adptr1.cpp no_eh_support ]
165 [ run test_arithmetic_dbg_adptr1m.cpp no_eh_support ]
166 [ run test_arithmetic_dbg_adptr2.cpp no_eh_support ]
168 [ run test_arithmetic_mpfi_50.cpp mpfi mpfr gmp no_eh_support : : : [ check-target-builds ../config//has_mpfi : : <build>no ] ]
170 [ run test_arithmetic_float_128.cpp quadmath no_eh_support : : : [ check-target-builds ../config//has_float128 : : <build>no ] ]
171 [ run test_arithmetic_float_128.cpp no_eh_support : : : [ check-target-builds ../config//has_intel_quad : <cxxflags>-Qoption,cpp,--extended_float_type : <build>no ] [ check-target-builds ../config//has_float128 : <source>quadmath ] : test_arithmetic_intel_quad ]
173 [ run test_arithmetic_mpc.cpp mpc mpfr gmp : : : [ check-target-builds ../config//has_mpc : : <build>no ] ]
174 [ run test_mpfr_mpc_precisions.cpp mpc mpfr gmp : : : [ check-target-builds ../config//has_mpc : : <build>no ] ]
175 [ run test_mpfi_precisions.cpp mpfi mpfr gmp : : : [ check-target-builds ../config//has_mpfi : : <build>no ] ]
176 [ run test_mpf_precisions.cpp gmp : : : [ check-target-builds ../config//has_gmp : : <build>no ] ]
177 [ run test_complex.cpp : : : [ check-target-builds ../config//has_mpc : <define>TEST_MPC <source>mpc <source>mpfr <source>gmp ] [ check-target-builds ../config//has_float128 : <source>quadmath ] ]
178 [ run test_arithmetic_complex_adaptor.cpp ]
179 [ run test_arithmetic_complex_adaptor_2.cpp ]
180 [ run test_arithmetic_complex128.cpp : : : [ check-target-builds ../config//has_float128 : <source>quadmath ] ]
184 rule get_function_tests
187 for local source in test_exp.cpp test_log.cpp test_pow.cpp test_sinh.cpp test_sqrt.cpp test_cosh.cpp test_tanh.cpp test_sin.cpp test_cos.cpp test_tan.cpp test_asin.cpp test_acos.cpp test_atan.cpp test_round.cpp test_fpclassify.cpp test_sf_import_c99.cpp
189 result += [ run $(source) gmp no_eh_support
193 [ check-target-builds ../config//has_gmp : : <build>no ]
195 : $(source:B)_mpf50 ] ;
196 result += [ run $(source) mpfr gmp no_eh_support
200 [ check-target-builds ../config//has_mpfr : : <build>no ]
202 : $(source:B)_mpfr50 ] ;
203 result += [ run $(source) mpfi mpfr gmp no_eh_support
207 [ check-target-builds ../config//has_mpfi : : <build>no ]
209 : $(source:B)_mpfi50 ] ;
210 result += [ run $(source) no_eh_support
214 <define>TEST_CPP_DEC_FLOAT
215 : $(source:B)_cpp_dec_float ] ;
216 result += [ run $(source) no_eh_support
220 <define>TEST_CPP_BIN_FLOAT
221 : $(source:B)_cpp_bin_float ] ;
222 result += [ run $(source) quadmath no_eh_support
226 [ check-target-builds ../config//has_float128 : : <build>no ]
227 <define>TEST_FLOAT128
228 : $(source:B)_float128 ] ;
229 result += [ run $(source) no_eh_support
233 [ check-target-builds ../config//has_intel_quad : <cxxflags>-Qoption,cpp,--extended_float_type : <build>no ] [ check-target-builds ../config//has_float128 : <source>quadmath ]
234 <define>TEST_FLOAT128
235 : $(source:B)_intel_quad ] ;
240 test-suite functions_and_limits :
242 [ run test_numeric_limits.cpp no_eh_support
247 : test_numeric_limits_backend_concept ]
249 [ run test_numeric_limits.cpp gmp no_eh_support
254 [ check-target-builds ../config//has_gmp : : <build>no ]
255 : test_numeric_limits_mpf50 ]
257 [ run test_numeric_limits.cpp gmp no_eh_support
262 [ check-target-builds ../config//has_gmp : : <build>no ]
263 : test_numeric_limits_mpf ]
265 [ run test_numeric_limits.cpp gmp no_eh_support
270 [ check-target-builds ../config//has_gmp : : <build>no ]
271 : test_numeric_limits_mpz ]
273 [ run test_numeric_limits.cpp gmp no_eh_support
278 [ check-target-builds ../config//has_gmp : : <build>no ]
279 : test_numeric_limits_mpq ]
281 [ run test_numeric_limits.cpp mpfr gmp no_eh_support
286 [ check-target-builds ../config//has_mpfr : : <build>no ]
287 : test_numeric_limits_mpfr ]
289 [ run test_numeric_limits.cpp mpfr gmp no_eh_support
294 [ check-target-builds ../config//has_mpfr : : <build>no ]
295 : test_numeric_limits_mpfr_50 ]
297 [ run test_numeric_limits.cpp no_eh_support
301 <define>TEST_CPP_DEC_FLOAT
302 : test_numeric_limits_cpp_dec_float ]
304 [ run test_numeric_limits.cpp no_eh_support
308 <define>TEST_CPP_BIN_FLOAT
309 : test_numeric_limits_cpp_bin_float ]
311 [ run test_numeric_limits.cpp $(TOMMATH) no_eh_support
316 [ check-target-builds ../config//has_tommath : : <build>no ]
317 : test_numeric_limits_tommath ]
319 [ run test_numeric_limits.cpp no_eh_support
324 : test_numeric_limits_cpp_int ]
326 [ run test_numeric_limits.cpp mpfi mpfr gmp no_eh_support
331 [ check-target-builds ../config//has_mpfi : : <build>no ]
332 : test_numeric_limits_mpfi_50 ]
335 [ run test_numeric_limits.cpp quadmath no_eh_support
339 <define>TEST_FLOAT128
340 [ check-target-builds ../config//has_float128 : : <build>no ]
341 : test_numeric_limits_float128 ]
342 [ run test_numeric_limits.cpp no_eh_support
346 <define>TEST_FLOAT128
347 [ check-target-builds ../config//has_intel_quad : <cxxflags>-Qoption,cpp,--extended_float_type : <build>no ] [ check-target-builds ../config//has_float128 : <source>quadmath ]
348 : test_numeric_limits_intel_quad ]
350 [ run test_sf_import_c99.cpp : : : <define>TEST_CPP_DEC_FLOAT_2 : test_sf_import_c99_cpp_dec_float_2 ]
351 [ run test_sf_import_c99.cpp : : : <define>TEST_CPP_DEC_FLOAT_3 : test_sf_import_c99_cpp_dec_float_3 ]
352 [ run test_sf_import_c99.cpp : : : <define>TEST_CPP_DEC_FLOAT_4 : test_sf_import_c99_cpp_dec_float_4 ]
353 [ run test_sf_import_c99.cpp : : : <define>TEST_CPP_DEC_FLOAT_5 : test_sf_import_c99_cpp_dec_float_5 ]
354 [ run test_sf_import_c99.cpp : : : <define>TEST_CPP_DEC_FLOAT_6 : test_sf_import_c99_cpp_dec_float_6 ]
356 [ run test_sf_import_c99.cpp : : : <define>TEST_CPP_BIN_FLOAT_2 : test_sf_import_c99_cpp_bin_float_2 ]
357 [ run test_sf_import_c99.cpp : : : <define>TEST_CPP_BIN_FLOAT_2 : test_sf_import_c99_cpp_bin_float_3 ]
359 [ run test_move.cpp mpfr gmp no_eh_support
364 [ check-target-builds ../config//has_mpfr : : <build>no ]
367 [ run test_move.cpp mpc mpfr gmp no_eh_support
372 [ check-target-builds ../config//has_mpc : : <build>no ]
375 [ run test_move.cpp gmp no_eh_support
380 [ check-target-builds ../config//has_gmp : : <build>no ]
383 [ run test_move.cpp $(TOMMATH) no_eh_support
388 [ check-target-builds ../config//has_tommath : : <build>no ]
389 : test_move_tommath ]
391 [ run test_move.cpp no_eh_support
396 : test_move_cpp_int ]
398 [ get_function_tests ]
401 test-suite conversions :
403 [ run test_gmp_conversions.cpp gmp no_eh_support
407 [ check-target-builds ../config//has_gmp : : <build>no ] ]
409 [ run test_mpfr_conversions.cpp gmp mpfr no_eh_support
413 [ check-target-builds ../config//has_mpfr : : <build>no ] ]
415 [ run test_mpc_conversions.cpp gmp mpfr mpc no_eh_support
419 [ check-target-builds ../config//has_mpc : : <build>no ] ]
421 [ run test_constants.cpp gmp no_eh_support
426 [ check-target-builds ../config//has_gmp : : <build>no ]
427 : test_constants_mpf50 ]
429 [ run test_constants.cpp mpfr gmp no_eh_support
434 [ check-target-builds ../config//has_mpfr : : <build>no ]
435 : test_constants_mpfr_50 ]
437 [ run test_constants.cpp no_eh_support
441 <define>TEST_CPP_DEC_FLOAT
442 : test_constants_cpp_dec_float ]
445 [ run test_test.cpp ]
446 [ run test_cpp_int_lit.cpp no_eh_support ]
449 # Interconversion tests:
451 [ run test_convert_from_cpp_int.cpp
455 [ check-target-builds ../config//has_gmp : <define>HAS_GMP <source>gmp : ]
456 [ check-target-builds ../config//has_mpfr : <define>HAS_MPFR <source>gmp <source>mpfr : ]
457 [ check-target-builds ../config//has_mpfi : <define>HAS_MPFI <source>gmp <source>mpfr <source>mpfi : ]
458 [ check-target-builds ../config//has_tommath : <define>HAS_TOMMATH <source>tommath : ]
459 [ check-target-builds ../config//has_float128 : <define>HAS_FLOAT128 <source>quadmath : ]
461 [ run test_convert_from_mpz_int.cpp
465 [ check-target-builds ../config//has_gmp : <define>HAS_GMP <source>gmp : ]
466 [ check-target-builds ../config//has_mpfr : <define>HAS_MPFR <source>gmp <source>mpfr : ]
467 [ check-target-builds ../config//has_mpfi : <define>HAS_MPFI <source>gmp <source>mpfr <source>mpfi : ]
468 [ check-target-builds ../config//has_tommath : <define>HAS_TOMMATH <source>tommath : ]
469 [ check-target-builds ../config//has_float128 : <define>HAS_FLOAT128 <source>quadmath : ]
471 [ run test_convert_from_tom_int.cpp
475 [ check-target-builds ../config//has_gmp : <define>HAS_GMP <source>gmp : ]
476 [ check-target-builds ../config//has_mpfr : <define>HAS_MPFR <source>gmp <source>mpfr : ]
477 [ check-target-builds ../config//has_mpfi : <define>HAS_MPFI <source>gmp <source>mpfr <source>mpfi : ]
478 [ check-target-builds ../config//has_tommath : <define>HAS_TOMMATH <source>tommath : ]
479 [ check-target-builds ../config//has_float128 : <define>HAS_FLOAT128 <source>quadmath : ]
481 [ run test_convert_from_cpp_rational.cpp
485 [ check-target-builds ../config//has_gmp : <define>HAS_GMP <source>gmp : ]
486 [ check-target-builds ../config//has_mpfr : <define>HAS_MPFR <source>gmp <source>mpfr : ]
487 [ check-target-builds ../config//has_mpfi : <define>HAS_MPFI <source>gmp <source>mpfr <source>mpfi : ]
488 [ check-target-builds ../config//has_tommath : <define>HAS_TOMMATH <source>tommath : ]
489 [ check-target-builds ../config//has_float128 : <define>HAS_FLOAT128 <source>quadmath : ]
491 [ run test_convert_from_gmp_rational.cpp
495 [ check-target-builds ../config//has_gmp : <define>HAS_GMP <source>gmp : ]
496 [ check-target-builds ../config//has_mpfr : <define>HAS_MPFR <source>gmp <source>mpfr : ]
497 [ check-target-builds ../config//has_mpfi : <define>HAS_MPFI <source>gmp <source>mpfr <source>mpfi : ]
498 [ check-target-builds ../config//has_tommath : <define>HAS_TOMMATH <source>tommath : ]
499 [ check-target-builds ../config//has_float128 : <define>HAS_FLOAT128 <source>quadmath : ]
501 [ run test_convert_from_tom_rational.cpp
505 [ check-target-builds ../config//has_gmp : <define>HAS_GMP <source>gmp : ]
506 [ check-target-builds ../config//has_mpfr : <define>HAS_MPFR <source>gmp <source>mpfr : ]
507 [ check-target-builds ../config//has_mpfi : <define>HAS_MPFI <source>gmp <source>mpfr <source>mpfi : ]
508 [ check-target-builds ../config//has_tommath : <define>HAS_TOMMATH <source>tommath : ]
509 [ check-target-builds ../config//has_float128 : <define>HAS_FLOAT128 <source>quadmath : ]
511 [ run test_convert_from_cpp_bin_float.cpp
515 [ check-target-builds ../config//has_gmp : <define>HAS_GMP <source>gmp : ]
516 [ check-target-builds ../config//has_mpfr : <define>HAS_MPFR <source>gmp <source>mpfr : ]
517 [ check-target-builds ../config//has_mpfi : <define>HAS_MPFI <source>gmp <source>mpfr <source>mpfi : ]
518 [ check-target-builds ../config//has_tommath : <define>HAS_TOMMATH <source>tommath : ]
519 [ check-target-builds ../config//has_float128 : <define>HAS_FLOAT128 <source>quadmath : ]
521 [ run test_convert_from_cpp_dec_float.cpp
525 [ check-target-builds ../config//has_gmp : <define>HAS_GMP <source>gmp : ]
526 [ check-target-builds ../config//has_mpfr : <define>HAS_MPFR <source>gmp <source>mpfr : ]
527 [ check-target-builds ../config//has_mpfi : <define>HAS_MPFI <source>gmp <source>mpfr <source>mpfi : ]
528 [ check-target-builds ../config//has_tommath : <define>HAS_TOMMATH <source>tommath : ]
529 [ check-target-builds ../config//has_float128 : <define>HAS_FLOAT128 <source>quadmath : ]
531 [ run test_convert_from_mpf_float.cpp
535 [ check-target-builds ../config//has_gmp : <define>HAS_GMP <source>gmp : ]
536 [ check-target-builds ../config//has_mpfr : <define>HAS_MPFR <source>gmp <source>mpfr : ]
537 [ check-target-builds ../config//has_mpfi : <define>HAS_MPFI <source>gmp <source>mpfr <source>mpfi : ]
538 [ check-target-builds ../config//has_tommath : <define>HAS_TOMMATH <source>tommath : ]
539 [ check-target-builds ../config//has_float128 : <define>HAS_FLOAT128 <source>quadmath : ]
541 [ run test_convert_from_mpfr_float.cpp
545 [ check-target-builds ../config//has_gmp : <define>HAS_GMP <source>gmp : ]
546 [ check-target-builds ../config//has_mpfr : <define>HAS_MPFR <source>gmp <source>mpfr : ]
547 [ check-target-builds ../config//has_mpfi : <define>HAS_MPFI <source>gmp <source>mpfr <source>mpfi : ]
548 [ check-target-builds ../config//has_tommath : <define>HAS_TOMMATH <source>tommath : ]
549 [ check-target-builds ../config//has_float128 : <define>HAS_FLOAT128 <source>quadmath : ]
551 [ run test_convert_from_mpfi_float.cpp
555 [ check-target-builds ../config//has_gmp : <define>HAS_GMP <source>gmp : ]
556 [ check-target-builds ../config//has_mpfr : <define>HAS_MPFR <source>gmp <source>mpfr : ]
557 [ check-target-builds ../config//has_mpfi : <define>HAS_MPFI <source>gmp <source>mpfr <source>mpfi : ]
558 [ check-target-builds ../config//has_tommath : <define>HAS_TOMMATH <source>tommath : ]
559 [ check-target-builds ../config//has_float128 : <define>HAS_FLOAT128 <source>quadmath : ]
561 [ run test_convert_from_float128.cpp
565 [ check-target-builds ../config//has_gmp : <define>HAS_GMP <source>gmp : ]
566 [ check-target-builds ../config//has_mpfr : <define>HAS_MPFR <source>gmp <source>mpfr : ]
567 [ check-target-builds ../config//has_mpfi : <define>HAS_MPFI <source>gmp <source>mpfr <source>mpfi : ]
568 [ check-target-builds ../config//has_tommath : <define>HAS_TOMMATH <source>tommath : ]
569 [ check-target-builds ../config//has_float128 : <define>HAS_FLOAT128 <source>quadmath : ]
572 [ run test_cpp_bin_float_conv.cpp ]
574 [ run test_cpp_bin_float_io.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono
578 <define>TEST_CPP_BIN_FLOAT
580 release # Otherwise [ runtime is slow
581 : test_cpp_bin_float_io_1
584 [ run test_cpp_bin_float_io.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono
588 <define>TEST_CPP_BIN_FLOAT
590 release # Otherwise [ runtime is slow
591 : test_cpp_bin_float_io_2
594 [ run test_cpp_bin_float.cpp no_eh_support mpfr gmp /boost/system//boost_system /boost/chrono//boost_chrono
599 [ check-target-builds ../config//has_mpfr : : <build>no ]
600 release # Otherwise [ runtime is slow
603 [ run test_float_io.cpp no_eh_support
607 <define>TEST_CPP_DEC_FLOAT
608 release # Otherwise [ runtime is slow
609 : test_float_io_cpp_dec_float ]
611 [ run test_float_io.cpp gmp no_eh_support
616 release # Otherwise [ runtime is slow
617 [ check-target-builds ../config//has_gmp : : <build>no ]
618 : test_float_io_mpf ]
620 [ run test_float_io.cpp mpfr gmp no_eh_support
625 release # Otherwise [ runtime is slow
626 [ check-target-builds ../config//has_mpfr : : <build>no ]
627 : test_float_io_mpfr ]
629 [ run test_float_io.cpp mpfi mpfr gmp no_eh_support
634 release # Otherwise [ runtime is slow
635 [ check-target-builds ../config//has_mpfi : : <build>no ]
636 : test_float_io_mpfi ]
638 [ run test_float_io.cpp quadmath no_eh_support
642 <define>TEST_FLOAT128
643 release # Otherwise [ runtime is slow
644 [ check-target-builds ../config//has_float128 : : <build>no ]
645 : test_float_io_float128 ]
646 [ run test_float_io.cpp no_eh_support
650 <define>TEST_FLOAT128
651 release # Otherwise [ runtime is slow
652 [ check-target-builds ../config//has_intel_quad : <cxxflags>-Qoption,cpp,--extended_float_type : <build>no ] [ check-target-builds ../config//has_float128 : <source>quadmath ]
653 : test_float_io_intel_quad ]
655 [ run test_int_io.cpp no_eh_support $(TOMMATH)
660 release # Otherwise [ runtime is slow
661 [ check-target-builds ../config//has_tommath : : <build>no ]
662 : test_int_io_tommath ]
664 [ run test_int_io.cpp no_eh_support gmp
669 release # Otherwise [ runtime is slow
670 [ check-target-builds ../config//has_gmp : : <build>no ]
676 test-suite cpp_int_tests :
678 [ run test_int_io.cpp no_eh_support
683 release # Otherwise [ runtime is slow
684 : test_int_io_cpp_int ]
686 [ run test_cpp_int_left_shift.cpp gmp no_eh_support
690 [ check-target-builds ../config//has_gmp : : <build>no ]
691 release # otherwise [ runtime is too slow!!
694 [ run test_cpp_int.cpp gmp no_eh_support
698 [ check-target-builds ../config//has_gmp : : <build>no ]
699 release # otherwise [ runtime is too slow!!
704 [ run test_cpp_int.cpp gmp no_eh_support
708 [ check-target-builds ../config//has_gmp : : <build>no ]
709 release # otherwise [ runtime is too slow!!
714 [ run test_cpp_int.cpp gmp no_eh_support
718 [ check-target-builds ../config//has_gmp : : <build>no ]
719 release # otherwise [ runtime is too slow!!
724 [ run test_cpp_int.cpp gmp no_eh_support
728 [ check-target-builds ../config//has_gmp : : <build>no ]
729 release # otherwise [ runtime is too slow!!
734 [ run test_cpp_int.cpp gmp no_eh_support
738 [ check-target-builds ../config//has_gmp : : <build>no ]
739 release # otherwise [ runtime is too slow!!
744 [ run test_checked_cpp_int.cpp no_eh_support ]
745 [ run test_unchecked_cpp_int.cpp no_eh_support : : : release ]
747 [ run test_cpp_int_serial.cpp ../../serialization/build//boost_serialization : : : release <define>TEST1 <toolset>gcc-mingw:<link>static : test_cpp_int_serial_1 ]
748 [ run test_cpp_int_serial.cpp ../../serialization/build//boost_serialization : : : release <define>TEST2 <toolset>gcc-mingw:<link>static : test_cpp_int_serial_2 ]
749 [ run test_cpp_int_serial.cpp ../../serialization/build//boost_serialization : : : release <define>TEST3 <toolset>gcc-mingw:<link>static : test_cpp_int_serial_3 ]
750 [ run test_cpp_int_serial.cpp ../../serialization/build//boost_serialization : : : release <define>TEST4 <toolset>gcc-mingw:<link>static : test_cpp_int_serial_4 ]
751 [ run test_cpp_int_deserial.cpp ../../serialization/build//boost_serialization ../../filesystem/build//boost_filesystem : $(here)/serial_txts : : release <toolset>gcc-mingw:<link>static ]
752 [ run test_cpp_rat_serial.cpp ../../serialization/build//boost_serialization : : : release <toolset>gcc-mingw:<link>static ]
758 [ compile test_constexpr.cpp :
759 [ check-target-builds ../config//has_float128 : <define>HAVE_FLOAT128 : ]
760 [ check-target-builds ../config//has_intel_quad : <cxxflags>-Qoption,cpp,--extended_float_type <define>HAVE_FLOAT128 : ]
761 [ requires cxx11_constexpr cxx11_user_defined_literals ] ]
763 [ compile constexpr_test_arithmetic_backend.cpp :
764 [ requires cxx14_constexpr cxx17_if_constexpr ] ]
765 [ compile constexpr_test_float128.cpp :
766 [ requires cxx14_constexpr cxx17_if_constexpr ] [ check-target-builds ../config//has_float128 : <source>quadmath : <build>no ] ]
768 [ run constexpr_test_cpp_int.cpp : : : [ requires cxx14_constexpr cxx17_if_constexpr ] [ check-target-builds ../config//has_is_constant_evaluated : : <build>no ] ]
769 [ run constexpr_test_cpp_int_2.cpp : : : [ requires cxx14_constexpr cxx17_if_constexpr ] [ check-target-builds ../config//has_is_constant_evaluated : : <build>no ] ]
770 [ run constexpr_test_cpp_int_3.cpp : : : [ requires cxx14_constexpr cxx17_if_constexpr ] [ check-target-builds ../config//has_is_constant_evaluated : : <build>no ] ]
771 [ run constexpr_test_cpp_int_4.cpp : : : [ requires cxx14_constexpr cxx17_if_constexpr ] [ check-target-builds ../config//has_is_constant_evaluated : : <build>no ] ]
772 [ run constexpr_test_cpp_int_5.cpp : : : [ requires cxx14_constexpr cxx17_if_constexpr ] [ check-target-builds ../config//has_is_constant_evaluated : : <build>no ] ]
773 [ run constexpr_test_cpp_int_6.cpp : : : [ requires cxx14_constexpr cxx17_if_constexpr ] [ check-target-builds ../config//has_is_constant_evaluated : <toolset>clang:<cxxflags>-fconstexpr-steps=268435456 : <build>no ] [ check-target-builds ../config//has_constexpr_limits : <cxxflags>-fconstexpr-ops-limit=268435456 ] ]
774 [ run constexpr_test_cpp_int_7.cpp : : : [ requires cxx14_constexpr cxx17_if_constexpr ] [ check-target-builds ../config//has_is_constant_evaluated : <toolset>clang:<cxxflags>-fconstexpr-steps=268435456 : <build>no ] ]
776 [ compile test_nothrow_cpp_int.cpp ]
777 [ compile test_nothrow_cpp_rational.cpp ]
778 [ compile test_nothrow_cpp_bin_float.cpp ]
779 [ compile test_nothrow_cpp_dec_float.cpp ]
780 [ compile test_nothrow_float128.cpp : [ check-target-builds ../config//has_float128 : : <build>no ] ]
781 [ compile test_nothrow_gmp.cpp : [ check-target-builds ../config//has_gmp : : <build>no ] ]
782 [ compile test_nothrow_mpfr.cpp : [ check-target-builds ../config//has_mpfr : : <build>no ] ]
784 [ run test_miller_rabin.cpp no_eh_support gmp
788 [ check-target-builds ../config//has_gmp : : <build>no ]
789 release # otherwise [ runtime is too slow!!
792 [ run test_rational_io.cpp $(TOMMATH) no_eh_support
797 [ check-target-builds ../config//has_tommath : : <build>no ]
798 release # Otherwise [ runtime is slow
799 : test_rational_io_tommath ]
801 [ run test_rational_io.cpp gmp no_eh_support
806 [ check-target-builds ../config//has_gmp : : <build>no ]
807 release # Otherwise [ runtime is slow
808 : test_rational_io_mpz ]
810 [ run test_rational_io.cpp no_eh_support
815 release # Otherwise [ runtime is slow
816 : test_rational_io_cpp_int ]
818 [ run test_generic_conv.cpp no_eh_support
822 [ check-target-builds ../config//has_gmp : <define>TEST_GMP <source>gmp : ]
823 [ check-target-builds ../config//has_tommath : <define>TEST_TOMMATH <source>$(TOMMATH) : ]
824 [ check-target-builds ../config//has_mpfr : <define>TEST_MPFR <source>mpfr : ]
825 release # Otherwise [ runtime is slow
828 [ run test_rat_float_interconv.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono
834 : test_rat_float_interconv_1 ]
836 [ run test_rat_float_interconv.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono
842 : test_rat_float_interconv_2 ]
844 [ run test_rat_float_interconv.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono
850 : test_rat_float_interconv_3 ]
852 [ run test_rat_float_interconv.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono
858 : test_rat_float_interconv_4 ]
860 [ run test_rat_float_interconv.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono mpfr gmp
865 [ check-target-builds ../config//has_mpfr : : <build>no ]
867 : test_rat_float_interconv_5 ]
869 [ run test_rat_float_interconv.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono mpfr gmp
874 [ check-target-builds ../config//has_mpfr : : <build>no ]
876 : test_rat_float_interconv_6 ]
878 [ run test_rat_float_interconv.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono mpfr gmp
883 [ check-target-builds ../config//has_mpfr : : <build>no ]
885 : test_rat_float_interconv_7 ]
887 [ run test_rat_float_interconv.cpp no_eh_support /boost/system//boost_system /boost/chrono//boost_chrono mpfr gmp
892 [ check-target-builds ../config//has_mpfr : : <build>no ]
894 : test_rat_float_interconv_8 ]
896 [ run test_cpp_int_conv.cpp no_eh_support ]
897 [ run test_cpp_int_import_export.cpp no_eh_support ]
898 [ run test_native_integer.cpp no_eh_support ]
900 [ run test_mixed_cpp_int.cpp no_eh_support ]
901 [ run test_mixed_float.cpp no_eh_support
905 [ check-target-builds ../config//has_gmp : <define>TEST_GMP <library>gmp : ]
906 [ check-target-builds ../config//has_mpfr : <define>TEST_MPFR <library>mpfr <library>gmp : ] ]
907 [ compile include_test/mpfr_include_test.cpp
909 [ check-target-builds ../config//has_mpfr : : <build>no ] ]
910 [ compile include_test/gmp_include_test.cpp
912 [ check-target-builds ../config//has_gmp : : <build>no ] ]
913 [ compile include_test/tommath_include_test.cpp
915 [ check-target-builds ../config//has_tommath : : <build>no ] ]
916 [ compile include_test/cpp_int_include_test.cpp ]
917 [ compile include_test/cpp_dec_float_include_test.cpp ]
918 [ compile include_test/cpp_bin_float_include_test.cpp ]
920 [ run ublas_interop/test1.cpp ublas_interop/test11.cpp ublas_interop/test12.cpp ublas_interop/test13.cpp no_eh_support ]
921 [ run ublas_interop/test2.cpp ublas_interop/test21.cpp ublas_interop/test22.cpp ublas_interop/test23.cpp no_eh_support ]
922 #[ run ublas_interop/test3.cpp ublas_interop/test31.cpp ublas_interop/test32.cpp ublas_interop/test33.cpp ]
923 [ run ublas_interop/test4.cpp ublas_interop/test42.cpp ublas_interop/test43.cpp no_eh_support ]
924 [ run ublas_interop/test5.cpp ublas_interop/test52.cpp ublas_interop/test53.cpp no_eh_support ]
925 [ run ublas_interop/test6.cpp ublas_interop/test62.cpp ublas_interop/test63.cpp no_eh_support ]
926 #[ run ublas_interop/test7.cpp ublas_interop/test71.cpp ublas_interop/test72.cpp ublas_interop/test73.cpp ]
928 [ run ublas_interop/test1.cpp ublas_interop/test11.cpp ublas_interop/test12.cpp ublas_interop/test13.cpp no_eh_support : : : <define>TEST_ET=1 : ublas1_et ]
929 [ run ublas_interop/test2.cpp ublas_interop/test21.cpp ublas_interop/test22.cpp ublas_interop/test23.cpp no_eh_support : : : <define>TEST_ET=1 : ublas2_et ]
930 #[ run ublas_interop/test3.cpp ublas_interop/test31.cpp ublas_interop/test32.cpp ublas_interop/test33.cpp : : : <define>TEST_ET=1 : ublas3_et ]
931 [ run ublas_interop/test4.cpp ublas_interop/test42.cpp ublas_interop/test43.cpp no_eh_support : : : <define>TEST_ET=1 : ublas3_et ]
932 [ run ublas_interop/test5.cpp ublas_interop/test52.cpp ublas_interop/test53.cpp no_eh_support : : : <define>TEST_ET=1 : ublas4_et ]
933 [ run ublas_interop/test6.cpp ublas_interop/test62.cpp ublas_interop/test63.cpp no_eh_support : : : <define>TEST_ET=1 : ublas5_et ]
934 #[ run ublas_interop/test7.cpp ublas_interop/test71.cpp ublas_interop/test72.cpp ublas_interop/test73.cpp : : : <define>TEST_ET=1 : ublas6_et ]
937 # Serialization tests, run in release mode so we cycle through more values:
939 [ run test_adapt_serial.cpp ../../serialization/build//boost_serialization : : : release <toolset>gcc-mingw:<link>static ]
940 [ run test_cpp_dec_float_serial.cpp ../../serialization/build//boost_serialization : : : release <define>TEST1 <toolset>gcc-mingw:<link>static : test_cpp_dec_float_serial_1 ]
941 [ run test_cpp_dec_float_serial.cpp ../../serialization/build//boost_serialization : : : release <define>TEST2 <toolset>gcc-mingw:<link>static : test_cpp_dec_float_serial_2 ]
942 [ run test_float128_serial.cpp ../../serialization/build//boost_serialization quadmath : : : release <toolset>gcc-mingw:<link>static [ check-target-builds ../config//has_float128 : : <build>no ] ]
943 [ run test_cpp_bin_float_serial.cpp ../../serialization/build//boost_serialization : : : release <toolset>gcc-mingw:<link>static <define>TEST1 : test_bin_dec_float_serial_1 ]
944 [ run test_cpp_bin_float_serial.cpp ../../serialization/build//boost_serialization : : : release <define>TEST2 <toolset>gcc-mingw:<link>static : test_bin_dec_float_serial_2 ]
947 # Mixed mode comparison tests, see: https://svn.boost.org/trac/boost/ticket/11328
949 [ run test_checked_mixed_cpp_int.cpp no_eh_support ]
950 [ run test_mixed_cpp_bin_float.cpp no_eh_support ]
951 [ run test_mixed_cpp_dec_float.cpp no_eh_support ]
952 [ run test_mixed_mpf_float.cpp gmp no_eh_support : : : [ check-target-builds ../config//has_gmp : : <build>no ] ]
953 [ run test_mixed_mpfr_float.cpp mpfr gmp no_eh_support : : : [ check-target-builds ../config//has_mpfr : : <build>no ] ]
955 # Check for narrowing conversions:
957 [ run test_float_conversions.cpp no_eh_support ]
959 # specific bug cases:
961 [ compile bug11922.cpp ]
962 [ run bug12039.cpp no_eh_support ]
963 [ compile git_issue_30.cpp ]
964 [ compile git_issue_98.cpp :
965 [ check-target-builds ../config//has_float128 : <define>TEST_FLOAT128 <source>quadmath : ]
966 [ check-target-builds ../config//has_gmp : <define>TEST_GMP <source>gmp : ]
967 [ check-target-builds ../config//has_mpfr : <define>TEST_MPFR <source>gmp <source>mpfr : ]
968 [ check-target-builds ../config//has_mpc : <define>TEST_MPC <source>gmp <source>mpfr <source>mpc : ] ]
969 [ run issue_13301.cpp ]
970 [ run issue_13148.cpp ]
971 [ run test_hash.cpp : : :
972 [ check-target-builds ../config//has_float128 : <define>TEST_FLOAT128 <source>quadmath : ]
973 [ check-target-builds ../config//has_gmp : <define>TEST_GMP <source>gmp : ]
974 [ check-target-builds ../config//has_mpfr : <define>TEST_MPFR <source>gmp <source>mpfr : ]
975 [ check-target-builds ../config//has_mpfi : <define>TEST_MPFI <source>gmp <source>mpfr <source>mpfi : ]
976 [ check-target-builds ../config//has_tommath : <define>TEST_TOMMATH <source>tommath : ]
978 [ run test_optional_compat.cpp ]
980 # Eigen interoperability:
982 [ run test_eigen_interop_cpp_int.cpp : : : release [ check-target-builds ../config//has_eigen : : <build>no ] ]
983 [ run test_eigen_interop_cpp_dec_float.cpp : : : release [ check-target-builds ../config//has_eigen : : <build>no ] ]
984 [ run test_eigen_interop_cpp_dec_float_2.cpp : : : release [ check-target-builds ../config//has_eigen : : <build>no ] ]
985 [ run test_eigen_interop_cpp_dec_float_3.cpp : : : release [ check-target-builds ../config//has_eigen : : <build>no ] ]
986 [ run test_eigen_interop_cpp_bin_float_1.cpp : : : release [ check-target-builds ../config//has_eigen : : <build>no ] ]
987 [ run test_eigen_interop_cpp_bin_float_2.cpp : : : release [ check-target-builds ../config//has_eigen : : <build>no ] ]
988 [ run test_eigen_interop_cpp_bin_float_3.cpp : : : release [ check-target-builds ../config//has_eigen : : <build>no ] ]
989 [ run test_eigen_interop_mpfr_1.cpp mpfr gmp : : : release [ check-target-builds ../config//has_eigen : : <build>no ] [ check-target-builds ../config//has_mpfr : : <build>no ] ]
990 [ run test_eigen_interop_mpfr_2.cpp mpfr gmp : : : release [ check-target-builds ../config//has_eigen : : <build>no ] [ check-target-builds ../config//has_mpfr : : <build>no ] ]
991 [ run test_eigen_interop_mpfr_3.cpp mpfr gmp : : : release [ check-target-builds ../config//has_eigen : : <build>no ] [ check-target-builds ../config//has_mpfr : : <build>no ] ]
992 [ run test_eigen_interop_gmp.cpp gmp : : : release [ check-target-builds ../config//has_eigen : : <build>no ] [ check-target-builds ../config//has_gmp : : <build>no ] ]
993 [ run test_eigen_interop_mpc.cpp mpc mpfr gmp : : : release [ check-target-builds ../config//has_eigen : : <build>no ] [ check-target-builds ../config//has_mpc : : <build>no ] ]
998 # This take too long to run as a regular part of the tests:
1000 run test_cpp_bin_float_round.cpp mpfr gmp ;
1001 explicit test_cpp_bin_float_round ;
1003 rule get_specfun_tests
1006 for local source in [ glob math/*.cpp ]
1008 result += [ run $(source) mpfr gmp
1009 /boost/test//boost_unit_test_framework/<link>static
1010 /boost/regex//boost_regex/<link>static
1011 math/instances//test_instances_mpfr/<link>static
1015 [ check-target-builds ../config//has_mpfr : : <build>no ]
1016 <define>TEST_MPFR_50
1018 <define>BOOST_ALL_NO_LIB
1019 <define>BOOST_OPTIONAL_USE_OLD_DEFINITION_OF_NONE
1020 <toolset>msvc:<cxxflags>-bigobj
1021 <include>../../math/include_private
1023 : $(source:B)_mpfr ] ;
1024 result += [ run $(source) gmp
1025 /boost/test//boost_unit_test_framework/<link>static
1026 /boost/regex//boost_regex/<link>static
1027 math/instances//test_instances_mpf/<link>static
1031 [ check-target-builds ../config//has_gmp : : <build>no ]
1034 <define>BOOST_ALL_NO_LIB
1035 <define>BOOST_OPTIONAL_USE_OLD_DEFINITION_OF_NONE
1036 <toolset>msvc:<cxxflags>-bigobj
1037 <include>../../math/include_private
1039 : $(source:B)_mpf ] ;
1040 result += [ run $(source) /boost/test//boost_unit_test_framework/<link>static
1041 /boost/regex//boost_regex/<link>static
1042 math/instances//test_instances_cpp_dec_float/<link>static
1046 <define>TEST_CPP_DEC_FLOAT
1047 <define>BOOST_ALL_NO_LIB
1048 <define>BOOST_OPTIONAL_USE_OLD_DEFINITION_OF_NONE
1050 <toolset>msvc:<cxxflags>-bigobj
1051 <include>../../math/include_private
1053 : $(source:B)_cpp_dec_float ] ;
1054 result += [ run $(source) /boost/test//boost_unit_test_framework/<link>static
1055 /boost/regex//boost_regex/<link>static
1056 math/instances//test_instances_cpp_bin_float/<link>static
1060 <define>TEST_CPP_BIN_FLOAT
1061 <define>BOOST_ALL_NO_LIB
1062 <define>BOOST_OPTIONAL_USE_OLD_DEFINITION_OF_NONE
1064 <toolset>msvc:<cxxflags>-bigobj
1065 <include>../../math/include_private
1067 : $(source:B)_cpp_bin_float ] ;
1068 result += [ run $(source) quadmath
1069 /boost/test//boost_unit_test_framework/<link>static
1070 /boost/regex//boost_regex/<link>static
1071 math/instances//test_instances_float128/<link>static
1075 [ check-target-builds ../config//has_float128 : : <build>no ]
1077 <define>TEST_FLOAT128
1078 <define>BOOST_ALL_NO_LIB
1079 <define>BOOST_OPTIONAL_USE_OLD_DEFINITION_OF_NONE
1080 <toolset>msvc:<cxxflags>-bigobj
1081 <include>../../math/include_private
1083 : $(source:B)_float128 ] ;
1084 result += [ run $(source)
1085 /boost/test//boost_unit_test_framework/<link>static
1086 /boost/regex//boost_regex/<link>static
1087 math/instances//test_instances_intel_quad/<link>static
1091 [ check-target-builds ../config//has_intel_quad : <cxxflags>-Qoption,cpp,--extended_float_type : <build>no ] [ check-target-builds ../config//has_float128 : <source>quadmath ]
1093 <define>TEST_FLOAT128
1094 <define>BOOST_ALL_NO_LIB
1095 <define>BOOST_OPTIONAL_USE_OLD_DEFINITION_OF_NONE
1096 <toolset>msvc:<cxxflags>-bigobj
1097 <include>../../math/include_private
1099 : $(source:B)_intel_quad ] ;
1102 # High precision tests are rather different, as they test only one
1103 # multiprecision type and are more a test of Boost.Math:
1105 for local source in [ glob math/high_prec/*.cpp ]
1107 result += [ run $(source)
1108 /boost/test//boost_unit_test_framework/<link>static
1109 /boost/regex//boost_regex/<link>static
1114 <define>BOOST_ALL_NO_LIB
1115 <define>BOOST_OPTIONAL_USE_OLD_DEFINITION_OF_NONE
1116 <toolset>msvc:<cxxflags>-bigobj
1117 [ check-target-builds ../config//has_mpfr : <define>TEST_MPFR <source>gmp <source>mpfr : ]
1118 <include>../../math/include_private
1124 test-suite specfun : [ get_specfun_tests ] ;
1127 rule get_compile_fail_tests
1130 local compile_fail_tests ;
1132 for local source in [ glob compile_fail/*.cpp ]
1134 compile_fail_tests += $(source:B) ;
1135 compile-fail $(source)
1137 [ check-target-builds ../config//has_gmp : <define>TEST_GMP <debug-symbols>off : ]
1138 [ check-target-builds ../config//has_mpfr : <define>TEST_MPFR <debug-symbols>off : ]
1141 return $(compile_fail_tests) ;
1144 test-suite compile_fail : [ get_compile_fail_tests ] ;
1146 rule get_concept_checks
1149 for local source in [ glob concepts/*.cpp ]
1152 result += [ compile $(source) mpfr
1154 <define>TEST_MPFR_50
1155 [ check-target-builds ../config//has_mpfr : : <build>no ]
1158 : $(source:B)_mpfr_50 ] ;
1160 result += [ compile $(source) mpfr
1163 [ check-target-builds ../config//has_mpfr : : <build>no ]
1166 : $(source:B)_mpfr_6 ] ;
1168 result += [ compile $(source) mpfr
1170 <define>TEST_MPFR_15
1171 [ check-target-builds ../config//has_mpfr : : <build>no ]
1174 : $(source:B)_mpfr_15 ] ;
1176 result += [ compile $(source) mpfr
1178 <define>TEST_MPFR_17
1179 [ check-target-builds ../config//has_mpfr : : <build>no ]
1182 : $(source:B)_mpfr_17 ] ;
1184 result += [ compile $(source) mpfr
1186 <define>TEST_MPFR_30
1187 [ check-target-builds ../config//has_mpfr : : <build>no ]
1190 : $(source:B)_mpfr_30 ] ;
1192 result += [ compile $(source) gmp
1195 [ check-target-builds ../config//has_gmp : : <build>no ]
1198 : $(source:B)_mpf50 ] ;
1200 result += [ compile $(source)
1202 <define>TEST_CPP_DEC_FLOAT
1205 : $(source:B)_cpp_dec_float ] ;
1207 result += [ compile $(source)
1209 <define>TEST_CPP_BIN_FLOAT
1212 : $(source:B)_cpp_bin_float ] ;
1214 result += [ compile $(source)
1216 <define>TEST_CPP_DEC_FLOAT_NO_ET
1219 : $(source:B)_cpp_dec_float_no_et ] ;
1221 result += [ compile $(source)
1223 <define>TEST_BACKEND
1226 : $(source:B)_backend_concept ] ;
1228 result += [ compile $(source)
1230 <define>TEST_LOGGED_ADAPTER
1233 : $(source:B)_logged_adaptor ] ;
1238 test-suite concepts : [ get_concept_checks ] ;
1240 test-suite examples : ../example//examples ;