summaryrefslogtreecommitdiffstats
path: root/config/gnu-flags
diff options
context:
space:
mode:
Diffstat (limited to 'config/gnu-flags')
-rw-r--r--config/gnu-flags258
1 files changed, 97 insertions, 161 deletions
diff --git a/config/gnu-flags b/config/gnu-flags
index 6c33808..5f10519 100644
--- a/config/gnu-flags
+++ b/config/gnu-flags
@@ -19,10 +19,10 @@
# if the compiler is not GNU; otherwise `cc_flags_set' is set to `yes'
#
-# Get the compiler version in a way that works for gcc, egcs, and
-# pgcc unless a compiler version is already known
+# Get the compiler version in a way that works for gcc
+# unless a compiler version is already known
#
-# cc_vendor: The compiler name: gcc, egcs, or pgcc
+# cc_vendor: The compiler name: gcc
# cc_version: Version number: 2.91.60, 2.7.2.1
#
if test X = "X$cc_flags_set"; then
@@ -55,61 +55,9 @@ if test X = "X$cc_flags_set"; then
cc_vers_all=`expr $cc_vers_major '*' 1000000 + $cc_vers_minor '*' 1000 + $cc_vers_patch`
fi
-# GCC compilers before gcc-2.8.1 have problems with `long long'.
-if test gcc = "$cc_vendor" -a "$cc_vers_all" -lt 2008001; then
- cat <<EOF
- **
- ** This compiler may be unable to properly compile the long long
- ** data type used extensively by hdf5. There may be other code
- ** generation problems also, especially when optimizations are
- ** enabled. Please upgrade to at least GNU gcc version 2.8.1
- ** before reporting bugs to the HDF5 team.
- **
-EOF
- sleep 5
-
-# GCC v2.96 (shipped with RH7.x) has problems with `float'-> `double' conversions.
-elif test gcc = "$cc_vendor" -a "$cc_vers_all" -eq 2096000; then
- cat <<EOF
- **
- ** This compiler may have problems converting 'float' values to
- ** 'double' values. There may be other code generation problems
- ** as well.
- **
- ** Please use a different version of gcc before reporting bugs.
- **
-EOF
- sleep 5
-
-# Current EGCS compilers have problems with `long long' and register
-# allocation when optimizations are turned on for x86 systems.
-elif test egcs = "$cc_vendor" -a "$cc_vers_all" -le 2091066; then
- cat <<EOF
- **
- ** This compiler may have problems allocating registers when
- ** optimizations are enabled on some platforms.
- **
-EOF
- sleep 5
-
-# All current versions of PGCC have problems also.
-elif test pgcc = "$cc_vendor" -a "$cc_vers_all" -le 2091066; then
- cat <<EOF
- **
- ** This compiler may have problems allocating registers for long
- ** long data types when optimizations are enabled. There may be
- ** other code generation problems as well. We know of no version
- ** of pgcc which is capable of compiling HDF5 in production mode.
- ** Please use gcc-2.8 or egcs-1.1.1 before reporting bugs.
- **
-EOF
- sleep 5
-
-fi
-
# Common GCC flags for various situations
case "$cc_vendor-$cc_version" in
- gcc*|egcs*|pgcc*)
+ gcc*)
# Architecture-specific flags
arch=
case "$host_os-$host_cpu" in
@@ -146,33 +94,40 @@ case "$cc_vendor-$cc_version" in
esac
# General
- H5_CFLAGS="$H5_CFLAGS $arch -ansi -pedantic -Wall -W -Wundef -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wnested-externs -Winline"
+ H5_CFLAGS="$H5_CFLAGS $arch -std=c99 -pedantic -Wall -W -Wundef -Wshadow -Wpointer-arith -Wbad-function-cast -Wcast-qual -Wcast-align -Wwrite-strings -Wconversion -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wnested-externs -Winline"
# Production
case "$cc_vendor-$cc_version" in
- gcc-2.95.[34])
- PROD_CFLAGS="-O3"
- ;;
- gcc-3.*)
+ gcc-[34].*)
PROD_CFLAGS="-O3"
;;
- gcc-4.*)
- PROD_CFLAGS="-O3"
+ gcc-5.*)
+ PROD_CFLAGS="-O3 -fstdarg-opt"
;;
*)
- PROD_CFLAGS="-O"
+ PROD_CFLAGS="-O -finline-functions"
;;
esac
-
- PROD_CFLAGS="$PROD_CFLAGS -fomit-frame-pointer -finline-functions"
PROD_CPPFLAGS=
# Debug
- DEBUG_CFLAGS="-g -fverbose-asm"
+ case "$cc_vendor-$cc_version" in
+ gcc-5.*)
+ DEBUG_CFLAGS="-Og -g -ftrapv -fno-common"
+ ;;
+ *)
+ DEBUG_CFLAGS="-g"
+ ;;
+ esac
+ #DEBUG_CFLAGS="$DEBUG_CFLAGS -fsanitize=undefined"
DEBUG_CPPFLAGS=
+ # Try out the new "stack protector" feature introduced in gcc 4.1
+ # (We should also think about adding some of the other memory protection options)
+ #DEBUG_CFLAGS="$DEBUG_CFLAGS -Wstack-protector -fstack-protector-all"
+
# Profile
- PROFILE_CFLAGS="-g -pg"
+ PROFILE_CFLAGS="-Og -g -pg"
PROFILE_CPPFLAGS=
# Flags are set
@@ -186,13 +141,10 @@ esac
# the information from the previous version and adding modifications to that.
case "$cc_vendor-$cc_version" in
-# Closer to the gcc 4.10 release, we should check for additional flags to
+# Closer to the gcc 5.2 release, we should check for additional flags to
# include and break it out into it's own section, like the other versions
# below. -QAK
- gcc-4.9*)
- # Replace -ansi flag with -std=c99 flag
- H5_CFLAGS="`echo $H5_CFLAGS | sed -e 's/-ansi/-std=c99/g'`"
-
+ gcc-5.1*)
# Append warning flags
# Don't use the '-Wtraditional' flag, we're way past having K&R C code
# H5_CFLAGS="$H5_CFLAGS -Wtraditional"
@@ -259,16 +211,81 @@ case "$cc_vendor-$cc_version" in
# Append more extra warning flags that only gcc 4.9+ know about
H5_CFLAGS="$H5_CFLAGS -Wdate-time -Wopenmp-simd"
- # Try out the new "stack protector" feature in gcc 4.1
- # (Strictly speaking this isn't really a "warning" flag, so it's added to
- # the debugging flags)
- #DEBUG_CFLAGS="$DEBUG_CFLAGS -Wstack-protector -fstack-protector-all"
+ # (There was no release of gcc 5.0)
+
+ # Append more extra warning flags that only gcc 5.1+ know about
+ H5_CFLAGS="$H5_CFLAGS -Warray-bounds=2 -Wc99-c11-compat"
;;
- gcc-4.8*)
- # Replace -ansi flag with -std=c99 flag
- H5_CFLAGS="`echo $H5_CFLAGS | sed -e 's/-ansi/-std=c99/g'`"
+ gcc-4.9*)
+ # Append warning flags
+ # Don't use the '-Wtraditional' flag, we're way past having K&R C code
+ # H5_CFLAGS="$H5_CFLAGS -Wtraditional"
+ # Don't use the '-Wtraditional-conversion' flag, there's too many warnings
+ # from GCC's assert macro
+ # H5_CFLAGS="$H5_CFLAGS -Wtraditional-conversion"
+
+ # Append warning flags from gcc-3* case
+ # (don't use -Wpadded flag for normal builds, many of the warnings its
+ # issuing can't be fixed and they are making it hard to detect other,
+ # more important warnings)
+ #H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute -Wpadded"
+ H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute"
+
+ # Append warning flags from gcc-3.2* case
+ H5_CFLAGS="$H5_CFLAGS -Wmissing-noreturn -Wpacked -Wdisabled-optimization"
+
+ # Enable more format checking flags, beyond the basic -Wformat included
+ # in -Wall
+ H5_CFLAGS="$H5_CFLAGS -Wformat=2"
+
+ # The "unreachable code" warning appears to be reliable now...
+ H5_CFLAGS="$H5_CFLAGS -Wunreachable-code"
+
+ # Append warning flags from gcc-3.3* case
+ H5_CFLAGS="$H5_CFLAGS -Wendif-labels"
+
+ # Append warning flags from gcc-3.4* case
+ H5_CFLAGS="$H5_CFLAGS -Wdeclaration-after-statement -Wold-style-definition -Winvalid-pch"
+ # Replace old -W flag with new -Wextra flag
+ H5_CFLAGS="`echo $H5_CFLAGS | sed -e 's/-W\ /-Wextra\ /g'`"
+
+ # Append more extra warning flags that only gcc4.0+ know about
+ H5_CFLAGS="$H5_CFLAGS -Wvariadic-macros -Winit-self -Wmissing-include-dirs -Wswitch-default -Wswitch-enum -Wunused-macros"
+
+ # Append more extra warning flags that only gcc 4.1+ know about
+ H5_CFLAGS="$H5_CFLAGS -Wunsafe-loop-optimizations -Wc++-compat"
+
+ # Append more extra warning flags that only gcc 4.2+ know about
+ H5_CFLAGS="$H5_CFLAGS -Wstrict-overflow"
+
+ # Append more extra warning flags that only gcc 4.3+ know about
+ #
+ # Technically, variable-length arrays are part of the C99 standard, but
+ # we should approach them a bit cautiously... -QAK
+ H5_CFLAGS="$H5_CFLAGS -Wlogical-op -Wlarger-than=2048 -Wvla"
+
+ # Append more extra warning flags that only gcc 4.4+ know about
+ H5_CFLAGS="$H5_CFLAGS -Wsync-nand -Wframe-larger-than=16384 -Wpacked-bitfield-compat"
+
+ # Append more extra warning flags that only gcc 4.5+ know about
+ H5_CFLAGS="$H5_CFLAGS -Wstrict-overflow=5 -Wjump-misses-init -Wunsuffixed-float-constants"
+
+ # Append more extra warning flags that only gcc 4.6+ know about
+ H5_CFLAGS="$H5_CFLAGS -Wdouble-promotion -Wsuggest-attribute=const -Wtrampolines"
+
+ # Append more extra warning flags that only gcc 4.7+ know about
+ H5_CFLAGS="$H5_CFLAGS -Wstack-usage=8192 -Wvector-operation-performance -Wsuggest-attribute=pure -Wsuggest-attribute=noreturn"
+
+ # Append more extra warning flags that only gcc 4.8+ know about
+ H5_CFLAGS="$H5_CFLAGS -Wsuggest-attribute=format"
+
+ # Append more extra warning flags that only gcc 4.9+ know about
+ H5_CFLAGS="$H5_CFLAGS -Wdate-time -Wopenmp-simd"
+ ;;
+
+ gcc-4.8*)
# Append warning flags
# Don't use the '-Wtraditional' flag, we're way past having K&R C code
# H5_CFLAGS="$H5_CFLAGS -Wtraditional"
@@ -331,17 +348,9 @@ case "$cc_vendor-$cc_version" in
# Append more extra warning flags that only gcc 4.8+ know about
H5_CFLAGS="$H5_CFLAGS -Wsuggest-attribute=format"
-
- # Try out the new "stack protector" feature in gcc 4.1
- # (Strictly speaking this isn't really a "warning" flag, so it's added to
- # the debugging flags)
- #DEBUG_CFLAGS="$DEBUG_CFLAGS -Wstack-protector -fstack-protector-all"
;;
gcc-4.7*)
- # Replace -ansi flag with -std=c99 flag
- H5_CFLAGS="`echo $H5_CFLAGS | sed -e 's/-ansi/-std=c99/g'`"
-
# Append warning flags
# Don't use the '-Wtraditional' flag, we're way past having K&R C code
# H5_CFLAGS="$H5_CFLAGS -Wtraditional"
@@ -402,17 +411,9 @@ case "$cc_vendor-$cc_version" in
# Append more extra warning flags that only gcc 4.7+ know about
H5_CFLAGS="$H5_CFLAGS -Wstack-usage=8192 -Wvector-operation-performance -Wsuggest-attribute=pure -Wsuggest-attribute=noreturn"
-
- # Try out the new "stack protector" feature in gcc 4.1
- # (Strictly speaking this isn't really a "warning" flag, so it's added to
- # the debugging flags)
- #DEBUG_CFLAGS="$DEBUG_CFLAGS -Wstack-protector -fstack-protector-all"
;;
gcc-4.6*)
- # Replace -ansi flag with -std=c99 flag
- H5_CFLAGS="`echo $H5_CFLAGS | sed -e 's/-ansi/-std=c99/g'`"
-
# Disable warnings about using 'long long' type
H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
@@ -466,17 +467,9 @@ case "$cc_vendor-$cc_version" in
# Append more extra warning flags that only gcc 4.6+ know about
H5_CFLAGS="$H5_CFLAGS -Wdouble-promotion -Wsuggest-attribute=const -Wtrampolines"
-
- # Try out the new "stack protector" feature in gcc 4.1
- # (Strictly speaking this isn't really a "warning" flag, so it's added to
- # the debugging flags)
- #DEBUG_CFLAGS="$DEBUG_CFLAGS -Wstack-protector -fstack-protector-all"
;;
gcc-4.5*)
- # Replace -ansi flag with -std=c99 flag
- H5_CFLAGS="`echo $H5_CFLAGS | sed -e 's/-ansi/-std=c99/g'`"
-
# Disable warnings about using 'long long' type
H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
@@ -527,17 +520,9 @@ case "$cc_vendor-$cc_version" in
# Append more extra warning flags that only gcc 4.5+ know about
H5_CFLAGS="$H5_CFLAGS -Wstrict-aliasing -Wstrict-overflow=5 -Wjump-misses-init -Wunsuffixed-float-constants"
-
- # Try out the new "stack protector" feature in gcc 4.1
- # (Strictly speaking this isn't really a "warning" flag, so it's added to
- # the debugging flags)
- #DEBUG_CFLAGS="$DEBUG_CFLAGS -Wstack-protector -fstack-protector-all"
;;
gcc-4.4*)
- # Replace -ansi flag with -std=c99 flag
- H5_CFLAGS="`echo $H5_CFLAGS | sed -e 's/-ansi/-std=c99/g'`"
-
# Disable warnings about using 'long long' type
H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
@@ -584,17 +569,9 @@ case "$cc_vendor-$cc_version" in
# Append more extra warning flags that only gcc 4.4+ know about
H5_CFLAGS="$H5_CFLAGS -Wsync-nand -Wframe-larger-than=16384 -Wpacked-bitfield-compat"
-
- # Try out the new "stack protector" feature in gcc 4.1
- # (Strictly speaking this isn't really a "warning" flag, so it's added to
- # the debugging flags)
- #DEBUG_CFLAGS="$DEBUG_CFLAGS -Wstack-protector -fstack-protector-all"
;;
gcc-4.3*)
- # Replace -ansi flag with -std=c99 flag
- H5_CFLAGS="`echo $H5_CFLAGS | sed -e 's/-ansi/-std=c99/g'`"
-
# Disable warnings about using 'long long' type
H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
@@ -638,17 +615,9 @@ case "$cc_vendor-$cc_version" in
# Technically, variable-length arrays are part of the C99 standard, but
# we should approach them a bit cautiously... -QAK
H5_CFLAGS="$H5_CFLAGS -Wlogical-op -Wvla"
-
- # Try out the new "stack protector" feature in gcc 4.1
- # (Strictly speaking this isn't really a "warning" flag, so it's added to
- # the debugging flags)
- #DEBUG_CFLAGS="$DEBUG_CFLAGS -Wstack-protector -fstack-protector-all"
;;
gcc-4.2*)
- # Replace -ansi flag with -std=c99 flag
- H5_CFLAGS="`echo $H5_CFLAGS | sed -e 's/-ansi/-std=c99/g'`"
-
# Disable warnings about using 'long long' type
H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
@@ -686,17 +655,9 @@ case "$cc_vendor-$cc_version" in
# Append more extra warning flags that only gcc 4.2+ know about
H5_CFLAGS="$H5_CFLAGS -Wstrict-overflow"
-
- # Try out the new "stack protector" feature in gcc 4.1
- # (Strictly speaking this isn't really a "warning" flag, so it's added to
- # the debugging flags)
- #DEBUG_CFLAGS="$DEBUG_CFLAGS -Wstack-protector -fstack-protector-all"
;;
gcc-4.1.*)
- # Replace -ansi flag with -std=c99 flag
- H5_CFLAGS="`echo $H5_CFLAGS | sed -e 's/-ansi/-std=c99/g'`"
-
# Disable warnings about using 'long long' type
H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
@@ -731,17 +692,9 @@ case "$cc_vendor-$cc_version" in
# Append more extra warning flags that only gcc 4.1+ know about
H5_CFLAGS="$H5_CFLAGS -Wunsafe-loop-optimizations -Wc++-compat -Wvolatile-register-var"
-
- # Try out the new "stack protector" feature in gcc 4.1
- # (Strictly speaking this isn't really a "warning" flag, so it's added to
- # the debugging flags)
- #DEBUG_CFLAGS="$DEBUG_CFLAGS -Wstack-protector -fstack-protector-all"
;;
gcc-4.0*)
- # Replace -ansi flag with -std=c99 flag
- H5_CFLAGS="`echo $H5_CFLAGS | sed -e 's/-ansi/-std=c99/g'`"
-
# Disable warnings about using 'long long' type
H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
@@ -776,9 +729,6 @@ case "$cc_vendor-$cc_version" in
;;
gcc-3.4*)
- # Replace -ansi flag with -std=c99 flag
- H5_CFLAGS="`echo $H5_CFLAGS | sed -e 's/-ansi/-std=c99/g'`"
-
# Disable warnings about using 'long long' type
H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
@@ -810,9 +760,6 @@ case "$cc_vendor-$cc_version" in
;;
gcc-3.3*)
- # Replace -ansi flag with -std=c99 flag
- H5_CFLAGS="`echo $H5_CFLAGS | sed -e 's/-ansi/-std=c99/g'`"
-
# Disable warnings about using 'long long' type
H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
@@ -838,9 +785,6 @@ case "$cc_vendor-$cc_version" in
;;
gcc-3.2*)
- # Replace -ansi flag with -std=c99 flag
- H5_CFLAGS="`echo $H5_CFLAGS | sed -e 's/-ansi/-std=c99/g'`"
-
# Disable warnings about using 'long long' type
H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
@@ -863,9 +807,6 @@ case "$cc_vendor-$cc_version" in
;;
gcc-3*)
- # Replace -ansi flag with -std=c99 flag
- H5_CFLAGS="`echo $H5_CFLAGS | sed -e 's/-ansi/-std=c99/g'`"
-
# Disable warnings about using 'long long' type
H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
@@ -876,11 +817,6 @@ case "$cc_vendor-$cc_version" in
#H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute -Wpadded"
H5_CFLAGS="$H5_CFLAGS -Wfloat-equal -Wmissing-format-attribute"
;;
-
- gcc-2.9[56]*)
- # Disable warnings about using 'long long' type
- H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
- ;;
esac
# Clear cc info if no flags set