• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# \libs\multiprecision\example\jamfile.v2
2# Runs multiprecision examples.
3# Copyright 2014 John Maddock
4# Copyright Paul A. Bristow 2014.
5# Copyright Christopher 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.
11import testing ;
12import modules ;
13import path ;
14import ../../config/checks/config : requires ;
15
16local ntl-path = [ modules.peek : NTL_PATH ] ;
17local gmp_path = [ modules.peek : GMP_PATH ] ;
18local mpfr_path = [ modules.peek : MPFR_PATH ] ;
19local mpfi_path = [ modules.peek : MPFI_PATH ] ;
20local tommath_path = [ modules.peek : TOMMATH_PATH ] ;
21
22project
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      <toolset>clang:<link>static
64
65    ;
66
67lib gmp : : <search>$(gmp_path) ;
68lib mpfr : : <search>$(gmp_path) <search>$(mpfr_path) <search>$(mpfr_path)/build.vc10/lib/Win32/Debug ;
69lib mpfi : : <search>$(gmp_path) <search>$(mpfr_path) <search>$(mpfr_path)/build.vc10/lib/Win32/Debug <search>$(mpfi_path) <search>$(mpfi_path)/src ;
70lib quadmath ;
71
72if $(tommath_path)
73{
74   lib tommath : [ GLOB $(tommath_path) : *.c ] : <visibility>global ;
75   TOMMATH = tommath ;
76}
77else
78{
79   lib tommath : : <search>$(tommath_path) ;
80   TOMMATH = tommath ;
81}
82
83lib no_eh_eg_support : ../test/no_eh_test_support.cpp ;
84
85test-suite examples :
86
87      [ run cpp_int_snips.cpp no_eh_eg_support ]
88      [ run cpp_int_import_export.cpp no_eh_eg_support ]
89      [ run cpp_bin_float_import_export.cpp no_eh_eg_support ]
90
91      [ run cpp_dec_float_snips.cpp no_eh_eg_support ]
92
93      [ run cpp_bin_float_snips.cpp no_eh_eg_support ]
94
95      [ run debug_adaptor_snips.cpp no_eh_eg_support ]
96      [ run float128_snips.cpp quadmath no_eh_eg_support : : : [ check-target-builds ../config//has_float128 : : <build>no ] ]
97
98      [ run floating_point_examples.cpp no_eh_eg_support : : : <toolset>gcc-mingw:<cxxflags>-Wa,-mbig-obj ] # See note above.
99      [ run gauss_laguerre_quadrature.cpp no_eh_eg_support : : : release [ requires cxx11_lambdas ] ]
100      [ run hypergeometric_luke_algorithms.cpp no_eh_eg_support ../../chrono/build//boost_chrono ../../system/build//boost_system : : : [ requires cxx11_nullptr ]  ]
101      [ run integer_examples.cpp no_eh_eg_support ]
102      [ run logged_adaptor.cpp no_eh_eg_support mpfi mpfr gmp :  :  : [ check-target-builds ../config//has_mpfi : : <build>no ] ]
103      [ run mixed_integer_arithmetic.cpp no_eh_eg_support ]
104      [ 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 ] ]
105      [ run random_snips.cpp gmp no_eh_eg_support : : : [ requires cxx11_explicit_conversion_operators ] [ check-target-builds ../config//has_gmp : : <build>no ] ]
106      [ run safe_prime.cpp no_eh_eg_support ]
107
108      [ run gmp_snips.cpp gmp no_eh_eg_support : : : [ check-target-builds ../config//has_gmp : : <build>no ] ]
109      [ run mpfi_snips.cpp mpfi mpfr gmp no_eh_eg_support :  :  : [ check-target-builds ../config//has_mpfi : : <build>no ] ]
110      [ run mpfr_snips.cpp mpfr gmp no_eh_eg_support : : : [ check-target-builds ../config//has_mpfr : : <build>no ] ]
111      [ run tommath_snips.cpp $(TOMMATH) no_eh_eg_support : : : [ check-target-builds ../config//has_tommath : : <build>no ] ]
112      [ compile constexpr_float_arithmetic_examples.cpp : [ requires cxx14_constexpr cxx17_if_constexpr ] ]
113
114      [ run big_seventh.cpp no_eh_eg_support ]
115
116;
117