Imported Upstream version 1.72.0
[platform/upstream/boost.git] / libs / multiprecision / example / Jamfile.v2
1 # \libs\math\example\jamfile.v2
2 # Runs multiprecision examples.
3 # Copyright 2014 John Maddock
4 # Copyright Paul A. Bristow 2014.
5 # Copyright Christpher Kormanyos 2014
6
7 # Distributed under the Boost Software License, Version 1.0.
8 # (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
9
10 # bring in the rules for testing
11 import testing ;
12 import modules ;
13 import path ;
14 import ../../config/checks/config : requires ;
15
16 local ntl-path = [ modules.peek : NTL_PATH ] ;
17 local gmp_path = [ modules.peek : GMP_PATH ] ;
18 local mpfr_path = [ modules.peek : MPFR_PATH ] ;
19 local mpfi_path = [ modules.peek : MPFI_PATH ] ;
20 local tommath_path = [ modules.peek : TOMMATH_PATH ] ;
21
22 project
23     : requirements
24      <include>$(gmp_path)
25      <include>$(gmp_path)/mpfr
26      <include>$(gmp_path)/gmpfrxx
27      <include>$(mpfr_path)
28      <include>$(mpfi_path)
29      <include>$(mpfi_path)/src
30      <include>$(tommath_path)
31      <include>../include
32      <include>../../..
33      
34      <toolset>gcc:<cxxflags>-Wno-missing-braces
35       
36       # Assembler error "File too big" caused by lots of C++ templates, for example, math/floating_point_examples.cpp.
37       # Some projects on some toolsets may require
38       #   <toolset>gcc-mingw:<cxxflags>\"-Wa,-mbig-obj\"
39       # See https://digitalkarabela.com/mingw-w64-how-to-fix-file-too-big-too-many-sections/
40       # <toolset>gcc-mingw:<cxxflags>-Wa,-mbig-obj # Some projects may overflow assembler and require equivalent of MSVC /bigobj.
41       # Requires version 2.30 of GNU binutils.
42       # Best applied only to projects that require this, see run math/floating_point_examples.cpp below.
43
44       <toolset>darwin:<cxxflags>-Wno-missing-braces
45       <toolset>acc:<cxxflags>+W2068,2461,2236,4070
46       <toolset>intel:<cxxflags>-Qwd264,239
47       <toolset>msvc:<runtime-link>static
48       <toolset>msvc:<link>static
49       <toolset>msvc:<warnings>all
50       <toolset>msvc:<asynch-exceptions>on
51       <toolset>msvc:<define>_CRT_SECURE_NO_DEPRECATE
52       <toolset>msvc:<define>_SCL_SECURE_NO_DEPRECATE
53       <toolset>msvc:<define>_SCL_SECURE_NO_WARNINGS
54       <toolset>msvc:<define>_CRT_SECURE_NO_WARNINGS
55       <toolset>msvc:<cxxflags>/wd4996
56       <toolset>msvc:<cxxflags>/wd4512
57       <toolset>msvc:<cxxflags>/wd4610
58       <toolset>msvc:<cxxflags>/wd4510
59       <toolset>msvc:<cxxflags>/wd4127
60       <toolset>msvc:<cxxflags>/wd4701
61       <toolset>msvc:<cxxflags>/wd4127
62       <toolset>msvc:<cxxflags>/wd4305
63     ;
64
65 lib gmp : : <search>$(gmp_path) ;
66 lib mpfr : : <search>$(gmp_path) <search>$(mpfr_path) <search>$(mpfr_path)/build.vc10/lib/Win32/Debug ;
67 lib mpfi : : <search>$(gmp_path) <search>$(mpfr_path) <search>$(mpfr_path)/build.vc10/lib/Win32/Debug <search>$(mpfi_path) <search>$(mpfi_path)/src ;
68 lib quadmath ;
69
70 if $(tommath_path)
71 {
72    lib tommath : [ GLOB $(tommath_path) : *.c ] ;
73    TOMMATH = tommath ;
74 }
75 else
76 {
77    lib tommath : : <search>$(tommath_path) ;
78    TOMMATH = tommath ;
79 }
80
81 lib no_eh_eg_support : ../test/no_eh_test_support.cpp ;
82
83 test-suite examples :
84
85       [ run cpp_int_snips.cpp no_eh_eg_support ]
86       [ run cpp_int_import_export.cpp no_eh_eg_support ]
87       [ run cpp_bin_float_import_export.cpp no_eh_eg_support ]
88
89       [ run cpp_dec_float_snips.cpp no_eh_eg_support ]
90
91       [ run cpp_bin_float_snips.cpp no_eh_eg_support ]
92
93       [ run debug_adaptor_snips.cpp no_eh_eg_support ]
94       [ run float128_snips.cpp quadmath no_eh_eg_support : : : [ check-target-builds ../config//has_float128 : : <build>no ] ]
95
96       [ run floating_point_examples.cpp no_eh_eg_support : : : <toolset>gcc-mingw:<cxxflags>-Wa,-mbig-obj ] # See note above.
97       [ run gauss_laguerre_quadrature.cpp no_eh_eg_support : : : release [ requires cxx11_lambdas ] ]
98       [ run hypergeometric_luke_algorithms.cpp no_eh_eg_support ../../chrono/build//boost_chrono ../../system/build//boost_system : : : [ requires cxx11_nullptr ]  ]
99       [ run integer_examples.cpp no_eh_eg_support ]
100       [ run logged_adaptor.cpp no_eh_eg_support mpfi mpfr gmp :  :  : [ check-target-builds ../config//has_mpfi : : <build>no ] ]
101       [ run mixed_integer_arithmetic.cpp no_eh_eg_support ]
102       [ run numeric_limits_snips.cpp no_eh_eg_support /boost//test_exec_monitor : : : [ requires cxx11_numeric_limits ]  [ check-target-builds ../config//has_float128 : <source>quadmath ] ]
103       [ run random_snips.cpp gmp no_eh_eg_support : : : [ requires cxx11_explicit_conversion_operators ] [ check-target-builds ../config//has_gmp : : <build>no ] ]
104       [ run safe_prime.cpp no_eh_eg_support ]
105
106       [ run gmp_snips.cpp gmp no_eh_eg_support : : : [ check-target-builds ../config//has_gmp : : <build>no ] ]
107       [ run mpfi_snips.cpp mpfi mpfr gmp no_eh_eg_support :  :  : [ check-target-builds ../config//has_mpfi : : <build>no ] ]
108       [ run mpfr_snips.cpp mpfr gmp no_eh_eg_support : : : [ check-target-builds ../config//has_mpfr : : <build>no ] ]
109       [ run tommath_snips.cpp $(TOMMATH) no_eh_eg_support : : : [ check-target-builds ../config//has_tommath : : <build>no ] ]
110       [ compile constexpr_float_arithmetic_examples.cpp : [ requires cxx14_constexpr cxx17_if_constexpr ] ]
111
112 ;