@@ -1196,6 +1196,7 @@ with_cxx_std
1196
1196
enable_sanitize
1197
1197
enable_glibcxx_debugging
1198
1198
enable_glibcxx_debugging_cppunit
1199
+ enable_fpe_safety
1199
1200
enable_coverage
1200
1201
with_methods
1201
1202
enable_werror
@@ -2014,6 +2015,7 @@ Optional Features:
2014
2015
dbg mode
2015
2016
--enable-glibcxx-debugging-cppunit
2016
2017
Use GLIBCXX debugging flags for unit tests
2018
+ --disable-fpe-safety remove FPE-trapping compiler flags
2017
2019
--enable-coverage configure code coverage analysis tools
2018
2020
--enable-werror Turn compilation warnings into errors
2019
2021
--enable-paranoid-warnings
@@ -8038,34 +8040,70 @@ fi
8038
8040
if test "x$compiler_brand_detected" = "xno"
8039
8041
then :
8040
8042
8041
- clang_version ="`($CXX --version 2>&1)`"
8042
- is_clang="`echo $clang_version | grep 'clang'`"
8043
+ ACSM_CLANG_VERSION_STRING ="`($CXX --version 2>&1)`"
8044
+ is_clang="`echo $ACSM_CLANG_VERSION_STRING | grep 'clang'`"
8043
8045
8044
8046
if test "x$is_clang" != "x"
8045
8047
then :
8046
8048
8047
- is_apple_clang="`echo $clang_version | grep 'Apple'`"
8049
+ is_apple_clang="`echo $ACSM_CLANG_VERSION_STRING | grep 'Apple'`"
8048
8050
clang_vendor="clang"
8049
8051
if test "x$is_apple_clang" != "x"
8050
8052
then :
8051
8053
clang_vendor="Apple clang"
8052
8054
fi
8053
8055
8054
- clang_major_minor=unknown
8055
-
8056
- if test "x$PERL" != "x"
8057
- then :
8058
-
8059
- clang_major_minor=`echo $clang_version | $PERL -ne 'print $1 if /version\s(\d+\.\d+)/'`
8060
- if test "x$clang_major_minor" = "x"
8061
- then :
8062
- clang_major_minor=unknown
8063
- fi
8064
-
8065
- fi
8056
+ case "x$ACSM_CLANG_VERSION_STRING" in #(
8057
+ *clang\ version\ 17.*) :
8058
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: <<< C++ compiler is clang-17.x >>>" >&5
8059
+ printf "%s\n" "<<< C++ compiler is clang-17.x >>>" >&6; }
8060
+ ACSM_CLANG_VERSION=17 ;; #(
8061
+ *clang\ version\ 16.*) :
8062
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: <<< C++ compiler is clang-16.x >>>" >&5
8063
+ printf "%s\n" "<<< C++ compiler is clang-16.x >>>" >&6; }
8064
+ ACSM_CLANG_VERSION=16 ;; #(
8065
+ *clang\ version\ 15.*) :
8066
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: <<< C++ compiler is clang-15.x >>>" >&5
8067
+ printf "%s\n" "<<< C++ compiler is clang-15.x >>>" >&6; }
8068
+ ACSM_CLANG_VERSION=15 ;; #(
8069
+ *clang\ version\ 14.*) :
8070
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: <<< C++ compiler is clang-14.x >>>" >&5
8071
+ printf "%s\n" "<<< C++ compiler is clang-14.x >>>" >&6; }
8072
+ ACSM_CLANG_VERSION=14 ;; #(
8073
+ *clang\ version\ 13.*) :
8074
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: <<< C++ compiler is clang-13.x >>>" >&5
8075
+ printf "%s\n" "<<< C++ compiler is clang-13.x >>>" >&6; }
8076
+ ACSM_CLANG_VERSION=13 ;; #(
8077
+ *clang\ version\ 12.*) :
8078
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: <<< C++ compiler is clang-12.x >>>" >&5
8079
+ printf "%s\n" "<<< C++ compiler is clang-12.x >>>" >&6; }
8080
+ ACSM_CLANG_VERSION=12 ;; #(
8081
+ *clang\ version\ 11.*) :
8082
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: <<< C++ compiler is clang-11.x >>>" >&5
8083
+ printf "%s\n" "<<< C++ compiler is clang-11.x >>>" >&6; }
8084
+ ACSM_CLANG_VERSION=11 ;; #(
8085
+ *clang\ version\ 10.*) :
8086
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: <<< C++ compiler is clang-10.x >>>" >&5
8087
+ printf "%s\n" "<<< C++ compiler is clang-10.x >>>" >&6; }
8088
+ ACSM_CLANG_VERSION=10 ;; #(
8089
+ *clang\ version\ 9.*) :
8090
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: <<< C++ compiler is clang-9.x >>>" >&5
8091
+ printf "%s\n" "<<< C++ compiler is clang-9.x >>>" >&6; }
8092
+ ACSM_CLANG_VERSION=9 ;; #(
8093
+ *clang\ version\ 8.*) :
8094
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: <<< C++ compiler is clang-8.x >>>" >&5
8095
+ printf "%s\n" "<<< C++ compiler is clang-8.x >>>" >&6; }
8096
+ ACSM_CLANG_VERSION=8 ;; #(
8097
+ *clang\ version\ 7.*) :
8098
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: <<< C++ compiler is clang-7.x >>>" >&5
8099
+ printf "%s\n" "<<< C++ compiler is clang-7.x >>>" >&6; }
8100
+ ACSM_CLANG_VERSION=7 ;; #(
8101
+ *) :
8102
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: <<< C++ compiler \"$ACSM_CLANG_VERSION\" is unknown but accepted clang version >>>" >&5
8103
+ printf "%s\n" "<<< C++ compiler \"$ACSM_CLANG_VERSION\" is unknown but accepted clang version >>>" >&6; }
8104
+ ACSM_CLANG_VERSION=other ;;
8105
+ esac
8066
8106
8067
- { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: <<< C++ compiler is ${clang_vendor}, version ${clang_major_minor} >>>" >&5
8068
- printf "%s\n" "<<< C++ compiler is ${clang_vendor}, version ${clang_major_minor} >>>" >&6; }
8069
8107
ACSM_GXX_VERSION=clang
8070
8108
compiler_brand_detected=yes
8071
8109
@@ -26494,7 +26532,17 @@ fi
26494
26532
ACSM_CXXFLAGS_DBG="$ACSM_CXXFLAGS_DBG -Wunused-parameter -Wunused -Wpointer-arith -Wformat -Wparentheses -Qunused-arguments -Woverloaded-virtual -fno-limit-debug-info"
26495
26533
ACSM_NODEPRECATEDFLAG="-Wno-deprecated"
26496
26534
26497
- ACSM_FPE_SAFETY_FLAGS="-ftrapping-math"
26535
+ if test "x$ACSM_CLANG_VERSION" = "xother" || test $ACSM_CLANG_VERSION -ge 10
26536
+ then :
26537
+ ACSM_FPE_SAFETY_FLAGS="-ftrapping-math"
26538
+ else $as_nop
26539
+ ACSM_FPE_SAFETY_FLAGS=""
26540
+ fi
26541
+
26542
+ if test "x$ACSM_CLANG_VERSION" = "xother" || test $ACSM_CLANG_VERSION -ge 12
26543
+ then :
26544
+ ACSM_FPE_SAFETY_FLAGS="$ACSM_FPE_SAFETY_FLAGS -Wno-unsupported-floating-point-opt"
26545
+ fi
26498
26546
26499
26547
ACSM_PARANOID_FLAGS="-Wall -Wextra -Wcast-align -Wdisabled-optimization -Wformat=2"
26500
26548
ACSM_PARANOID_FLAGS="$ACSM_PARANOID_FLAGS -Wformat-nonliteral -Wformat-security -Wformat-y2k"
@@ -26596,6 +26644,132 @@ fi
26596
26644
26597
26645
26598
26646
26647
+
26648
+
26649
+
26650
+ # Check whether --enable-fpe-safety was given.
26651
+ if test ${enable_fpe_safety+y}
26652
+ then :
26653
+ enableval=$enable_fpe_safety; case "${enableval}" in #(
26654
+ yes) :
26655
+ acsm_enablefpesafety=yes ;; #(
26656
+ no) :
26657
+ acsm_enablefpesafety=no ;; #(
26658
+ *) :
26659
+ as_fn_error $? "bad value ${enableval} for --enable-fpe-safety" "$LINENO" 5 ;;
26660
+ esac
26661
+ else $as_nop
26662
+ acsm_enablefpesafety=yes
26663
+ fi
26664
+
26665
+
26666
+ if test "$acsm_enablefpesafety" = "yes"
26667
+ then :
26668
+
26669
+ ac_ext=c
26670
+ ac_cpp='$CPP $CPPFLAGS'
26671
+ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
26672
+ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
26673
+ ac_compiler_gnu=$ac_cv_c_compiler_gnu
26674
+
26675
+ ac_fpe_safety_save_CFLAGS="$CFLAGS"
26676
+ CFLAGS="${CFLAGS} ${ACSM_FPE_SAFETY_FLAGS}"
26677
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
26678
+ /* end confdefs.h. */
26679
+
26680
+ int
26681
+ main (void)
26682
+ {
26683
+
26684
+ ;
26685
+ return 0;
26686
+ }
26687
+ _ACEOF
26688
+ if ac_fn_c_try_compile "$LINENO"
26689
+ then :
26690
+
26691
+ else $as_nop
26692
+
26693
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unable to compile C with FPE safety flag ($CC $ACSM_FPE_SAFETY_FLAGS)" >&5
26694
+ printf "%s\n" "$as_me: WARNING: unable to compile C with FPE safety flag ($CC $ACSM_FPE_SAFETY_FLAGS)" >&2;}
26695
+ ACSM_FPE_SAFETY_FLAGS=""
26696
+
26697
+ fi
26698
+ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
26699
+ CFLAGS="$ac_fpe_safety_save_CFLAGS"
26700
+ ac_ext=cpp
26701
+ ac_cpp='$CXXCPP $CPPFLAGS'
26702
+ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
26703
+ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
26704
+ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
26705
+
26706
+
26707
+ ac_ext=cpp
26708
+ ac_cpp='$CXXCPP $CPPFLAGS'
26709
+ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
26710
+ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
26711
+ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
26712
+
26713
+ ac_fpe_safety_save_CXXFLAGS="$CXXFLAGS"
26714
+ CXXFLAGS="${CXXFLAGS} ${ACSM_FPE_SAFETY_FLAGS}"
26715
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
26716
+ /* end confdefs.h. */
26717
+
26718
+ int
26719
+ main (void)
26720
+ {
26721
+
26722
+ ;
26723
+ return 0;
26724
+ }
26725
+ _ACEOF
26726
+ if ac_fn_cxx_try_compile "$LINENO"
26727
+ then :
26728
+
26729
+ else $as_nop
26730
+
26731
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unable to compile C++ with FPE safety flag ($CXX $ACSM_FPE_SAFETY_FLAGS)" >&5
26732
+ printf "%s\n" "$as_me: WARNING: unable to compile C++ with FPE safety flag ($CXX $ACSM_FPE_SAFETY_FLAGS)" >&2;}
26733
+ ACSM_FPE_SAFETY_FLAGS=""
26734
+
26735
+ fi
26736
+ rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext
26737
+ CXXFLAGS="$ac_fpe_safety_save_CXXFLAGS"
26738
+ ac_ext=cpp
26739
+ ac_cpp='$CXXCPP $CPPFLAGS'
26740
+ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
26741
+ ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
26742
+ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
26743
+
26744
+
26745
+ if test "x$ACSM_FPE_SAFETY_FLAGS" != "x"
26746
+ then :
26747
+
26748
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: <<< Adding $ACSM_FPE_SAFETY_FLAGS for FPE safety >>>" >&5
26749
+ printf "%s\n" "<<< Adding $ACSM_FPE_SAFETY_FLAGS for FPE safety >>>" >&6; }
26750
+
26751
+ else $as_nop
26752
+
26753
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: <<< No flags found to use for FPE safety >>>" >&5
26754
+ printf "%s\n" "<<< No flags found to use for FPE safety >>>" >&6; }
26755
+
26756
+ fi
26757
+ ACSM_CXXFLAGS_OPT="$ACSM_CXXFLAGS_OPT $ACSM_FPE_SAFETY_FLAGS"
26758
+ ACSM_CXXFLAGS_DBG="$ACSM_CXXFLAGS_DBG $ACSM_FPE_SAFETY_FLAGS"
26759
+ ACSM_CXXFLAGS_DEVEL="$ACSM_CXXFLAGS_DEVEL $ACSM_FPE_SAFETY_FLAGS"
26760
+
26761
+ ACSM_CFLAGS_OPT="$ACSM_CFLAGS_OPT $ACSM_FPE_SAFETY_FLAGS"
26762
+ ACSM_CFLAGS_DBG="$ACSM_CFLAGS_DBG $ACSM_FPE_SAFETY_FLAGS"
26763
+ ACSM_CFLAGS_DEVEL="$ACSM_CFLAGS_DEVEL $ACSM_FPE_SAFETY_FLAGS"
26764
+
26765
+ else $as_nop
26766
+
26767
+ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: <<< Not enabling flags for FPE safety >>>" >&5
26768
+ printf "%s\n" "<<< Not enabling flags for FPE safety >>>" >&6; }
26769
+
26770
+ fi
26771
+
26772
+
26599
26773
CXXFLAGS_OPT="$ACSM_CXXFLAGS_OPT"
26600
26774
CXXFLAGS_DEVEL="$ACSM_CXXFLAGS_DEVEL"
26601
26775
CXXFLAGS_DBG="$ACSM_CXXFLAGS_DBG"
0 commit comments