TRILAB-192 merging warnings changes from develop
This commit is contained in:
754
config/gnu-flags
754
config/gnu-flags
@@ -17,6 +17,24 @@
|
||||
# if the compiler is not GNU; otherwise 'cc_flags_set' is set to 'yes'
|
||||
#
|
||||
|
||||
#
|
||||
# For now, do not promote any warnings to errors.
|
||||
#
|
||||
PROMOTE_ERRORS_DFLT=no
|
||||
|
||||
#
|
||||
# This filter rewrites -Werror= as -W, in that way demoting warnings
|
||||
# promoted to errors back to warnings, if PROMOTE_ERRORS is no.
|
||||
#
|
||||
demote_errors()
|
||||
{
|
||||
if [ ${PROMOTE_ERRORS:-${PROMOTE_ERRORS_DFLT}} = no ]; then
|
||||
sed 's,-Werror=,-W,g'
|
||||
else
|
||||
cat
|
||||
fi
|
||||
}
|
||||
|
||||
#
|
||||
# Prepend `$srcdir/config/gnu-` to the filename suffix(es) given as
|
||||
# subroutine argument(s), remove comments starting with # and ending
|
||||
@@ -26,7 +44,7 @@
|
||||
load_gcc_arguments()
|
||||
{
|
||||
set -- $(for arg; do
|
||||
sed 's,#.*$,,' $srcdir/config/gnu-${arg}
|
||||
sed 's,#.*$,,' $srcdir/config/gnu-warnings/${arg} | demote_errors
|
||||
done)
|
||||
IFS=' ' echo "$*"
|
||||
}
|
||||
@@ -71,7 +89,11 @@ fi
|
||||
# Common GCC flags for various situations
|
||||
case "$cc_vendor-$cc_version" in
|
||||
gcc*)
|
||||
# Architecture-specific flags
|
||||
|
||||
###############################
|
||||
# Architecture-specific flags #
|
||||
###############################
|
||||
|
||||
arch=
|
||||
case "$host_os-$host_cpu" in
|
||||
# FreeBSD sets the information from "uname -m" to the general machine
|
||||
@@ -99,578 +121,63 @@ case "$cc_vendor-$cc_version" in
|
||||
;;
|
||||
esac
|
||||
|
||||
# Host-specific flags
|
||||
case "`hostname`" in
|
||||
sleipnir.ncsa.uiuc.edu)
|
||||
arch="$arch -pipe"
|
||||
case "$host_os-$host_cpu" in
|
||||
# cygwin needs the "-std=c99" flag removed, so make
|
||||
# a specific case for Cygwin without the flag and a default
|
||||
# case to add the flag everywhere else
|
||||
cygwin-*)
|
||||
;;
|
||||
|
||||
*)
|
||||
H5_CFLAGS="$H5_CFLAGS -std=c99"
|
||||
;;
|
||||
esac
|
||||
|
||||
# General
|
||||
H5_CFLAGS="$H5_CFLAGS $arch -std=c99"
|
||||
H5_CFLAGS="$H5_CFLAGS $(load_gcc_arguments warnings-general)"
|
||||
H5_CFLAGS="$H5_CFLAGS $arch"
|
||||
|
||||
# Production
|
||||
case "$cc_vendor-$cc_version" in
|
||||
gcc-[34].*)
|
||||
PROD_CFLAGS="-O3"
|
||||
;;
|
||||
gcc-5.*)
|
||||
PROD_CFLAGS="-O3 -fstdarg-opt"
|
||||
;;
|
||||
*)
|
||||
PROD_CFLAGS="-O -finline-functions"
|
||||
;;
|
||||
esac
|
||||
##############
|
||||
# Production #
|
||||
##############
|
||||
|
||||
# NDEBUG is handled explicitly by the configure script
|
||||
if test $cc_vers_major -le 4; then
|
||||
PROD_CFLAGS=
|
||||
else
|
||||
PROD_CFLAGS="-fstdarg-opt"
|
||||
fi
|
||||
PROD_CPPFLAGS=
|
||||
|
||||
# Debug
|
||||
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 #
|
||||
#########
|
||||
|
||||
# NDEBUG is handled explicitly by the configure script
|
||||
# -g is handled by the symbols flags
|
||||
if test $cc_vers_major -le 4; then
|
||||
DEBUG_CFLAGS=
|
||||
else
|
||||
DEBUG_CFLAGS="-ftrapv -fno-common"
|
||||
fi
|
||||
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"
|
||||
#############
|
||||
# Profiling #
|
||||
#############
|
||||
|
||||
# Profile
|
||||
PROFILE_CFLAGS="-Og -g -pg"
|
||||
PROFILE_CFLAGS="-pg"
|
||||
PROFILE_CPPFLAGS=
|
||||
|
||||
# Flags are set
|
||||
cc_flags_set=yes
|
||||
;;
|
||||
esac
|
||||
|
||||
############
|
||||
# Warnings #
|
||||
############
|
||||
|
||||
# Version specific GCC flags
|
||||
#
|
||||
# Please follow the pattern below by adding new versions at the top, copying
|
||||
# the information from the previous version and adding modifications to that.
|
||||
case "$cc_vendor-$cc_version" in
|
||||
|
||||
# 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-5*)
|
||||
# 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"
|
||||
|
||||
# (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.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"
|
||||
# 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"
|
||||
|
||||
# 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"
|
||||
;;
|
||||
|
||||
gcc-4.7*)
|
||||
# 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...
|
||||
# (this warning was removed in gcc 4.5+)
|
||||
#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"
|
||||
;;
|
||||
|
||||
gcc-4.6*)
|
||||
# Disable warnings about using 'long long' type
|
||||
H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
|
||||
|
||||
# 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...
|
||||
# (this warning was removed in gcc 4.5+)
|
||||
#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 -Wnonnull -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-aliasing -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"
|
||||
;;
|
||||
|
||||
gcc-4.5*)
|
||||
# Disable warnings about using 'long long' type
|
||||
H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
|
||||
|
||||
# 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...
|
||||
# (this warning was removed in gcc 4.5+)
|
||||
#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 -Wnonnull -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-aliasing -Wstrict-overflow=5 -Wjump-misses-init -Wunsuffixed-float-constants"
|
||||
;;
|
||||
|
||||
gcc-4.4*)
|
||||
# Disable warnings about using 'long long' type
|
||||
H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
|
||||
|
||||
# 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 -Wnonnull -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"
|
||||
;;
|
||||
|
||||
gcc-4.3*)
|
||||
# Disable warnings about using 'long long' type
|
||||
H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
|
||||
|
||||
# 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 -Wnonnull -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 -Wvolatile-register-var"
|
||||
|
||||
# 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 -Wvla"
|
||||
;;
|
||||
|
||||
gcc-4.2*)
|
||||
# Disable warnings about using 'long long' type
|
||||
H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
|
||||
|
||||
# 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 does not appear to be reliable yet...
|
||||
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 gcc 4.0+ know about
|
||||
H5_CFLAGS="$H5_CFLAGS -Wvariadic-macros -Wnonnull -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 -Wvolatile-register-var"
|
||||
|
||||
# Append more extra warning flags that only gcc 4.2+ know about
|
||||
H5_CFLAGS="$H5_CFLAGS -Wstrict-overflow"
|
||||
;;
|
||||
|
||||
# older compiler versions
|
||||
gcc-4.1.*)
|
||||
# Disable warnings about using 'long long' type
|
||||
H5_CFLAGS="$H5_CFLAGS -Wno-long-long"
|
||||
@@ -831,10 +338,139 @@ 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-*)
|
||||
|
||||
###########
|
||||
# General #
|
||||
###########
|
||||
|
||||
H5_CFLAGS="$H5_CFLAGS $(load_gcc_arguments general)"
|
||||
H5_ECFLAGS="$H5_ECFLAGS $(load_gcc_arguments error-general)"
|
||||
|
||||
######################
|
||||
# Developer warnings #
|
||||
######################
|
||||
|
||||
NO_DEVELOPER_WARNING_CFLAGS=$(load_gcc_arguments no-developer-general)
|
||||
DEVELOPER_WARNING_CFLAGS=$(load_gcc_arguments developer-general)
|
||||
|
||||
#######################
|
||||
# gcc 4 special cases #
|
||||
#######################
|
||||
|
||||
# GCC 4.2 through 4.6
|
||||
if test $cc_vers_major -eq 4 -a $cc_vers_minor -ge 2 -o $cc_vers_major -eq 4 -a $cc_vers_minor -le 6; then
|
||||
H5_CFLAGS="$H5_CFLAGS $(load_gcc_arguments 4.2-4.6)"
|
||||
fi
|
||||
|
||||
# GCC 4.2 through 4.3
|
||||
if test $cc_vers_major -eq 4 -a $cc_vers_minor -ge 2 -o $cc_vers_major -eq 4 -a $cc_vers_minor -le 3; then
|
||||
H5_CFLAGS="$H5_CFLAGS $(load_gcc_arguments 4.2-4.3)"
|
||||
fi
|
||||
|
||||
# GCC 4.5 through 4.6
|
||||
if test $cc_vers_major -eq 4 -a $cc_vers_minor -ge 5 -o $cc_vers_major -eq 4 -a $cc_vers_minor -le 6; then
|
||||
H5_CFLAGS="$H5_CFLAGS $(load_gcc_arguments 4.5-4.6)"
|
||||
fi
|
||||
|
||||
# GCC 4.2 through 4.4
|
||||
if test $cc_vers_major -eq 4 -a $cc_vers_minor -ge 2 -a $cc_vers_major -eq 4 -a $cc_vers_minor -le 4; then
|
||||
H5_CFLAGS="$H5_CFLAGS $(load_gcc_arguments 4.2-4.4)"
|
||||
fi
|
||||
|
||||
# GCC 4.2 through the end of GCC 4 series
|
||||
if test $cc_vers_major -eq 4 -a $cc_vers_minor -ge 2; then
|
||||
H5_CFLAGS="$H5_CFLAGS $(load_gcc_arguments 4.2-4.last)"
|
||||
fi
|
||||
|
||||
#############################
|
||||
# Version-specific warnings #
|
||||
#############################
|
||||
|
||||
# gcc >= 4.3
|
||||
if test $cc_vers_major -ge 5 -o $cc_vers_major -eq 4 -a $cc_vers_minor -ge 3; then
|
||||
H5_CFLAGS="$H5_CFLAGS $(load_gcc_arguments 4.3)"
|
||||
fi
|
||||
|
||||
# gcc >= 4.4
|
||||
if test $cc_vers_major -ge 5 -o $cc_vers_major -eq 4 -a $cc_vers_minor -ge 4; then
|
||||
H5_CFLAGS="$H5_CFLAGS $(load_gcc_arguments 4.4)"
|
||||
fi
|
||||
|
||||
# gcc >= 4.5
|
||||
if test $cc_vers_major -ge 5 -o $cc_vers_major -eq 4 -a $cc_vers_minor -ge 5; then
|
||||
H5_CFLAGS="$H5_CFLAGS $(load_gcc_arguments 4.5)"
|
||||
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS $(load_gcc_arguments developer-4.5)"
|
||||
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS $(load_gcc_arguments no-developer-4.5)"
|
||||
fi
|
||||
|
||||
# gcc >= 4.6
|
||||
if test $cc_vers_major -ge 5 -o $cc_vers_major -eq 4 -a $cc_vers_minor -ge 6; then
|
||||
H5_CFLAGS="$H5_CFLAGS $(load_gcc_arguments 4.6)"
|
||||
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS $(load_gcc_arguments developer-4.6)"
|
||||
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS $(load_gcc_arguments no-developer-4.6)"
|
||||
fi
|
||||
|
||||
# gcc >= 4.7
|
||||
if test $cc_vers_major -ge 5 -o $cc_vers_major -eq 4 -a $cc_vers_minor -ge 7; then
|
||||
H5_CFLAGS="$H5_CFLAGS $(load_gcc_arguments 4.7)"
|
||||
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS $(load_gcc_arguments developer-4.7)"
|
||||
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS $(load_gcc_arguments no-developer-4.7)"
|
||||
fi
|
||||
|
||||
# gcc >= 4.8
|
||||
if test $cc_vers_major -ge 5 -o $cc_vers_major -eq 4 -a $cc_vers_minor -ge 8; then
|
||||
H5_CFLAGS="$H5_CFLAGS $(load_gcc_arguments 4.8)"
|
||||
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS $(load_gcc_arguments developer-4.8)"
|
||||
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS $(load_gcc_arguments no-developer-4.8)"
|
||||
fi
|
||||
|
||||
# gcc >= 4.9
|
||||
if test $cc_vers_major -ge 5 -o $cc_vers_major -eq 4 -a $cc_vers_minor -ge 9; then
|
||||
H5_CFLAGS="$H5_CFLAGS $(load_gcc_arguments 4.9)"
|
||||
fi
|
||||
|
||||
# gcc >= 5
|
||||
if test $cc_vers_major -ge 5; then
|
||||
H5_CFLAGS="$H5_CFLAGS $(load_gcc_arguments 5)"
|
||||
H5_ECFLAGS="$H5_ECFLAGS $(load_gcc_arguments error-5)"
|
||||
fi
|
||||
|
||||
# gcc >= 6
|
||||
if test $cc_vers_major -ge 6; then
|
||||
H5_CFLAGS="$H5_CFLAGS $(load_gcc_arguments 6)"
|
||||
fi
|
||||
|
||||
# gcc >= 7
|
||||
if test $cc_vers_major -ge 7; then
|
||||
H5_CFLAGS="$H5_CFLAGS $(load_gcc_arguments 7)"
|
||||
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS $(load_gcc_arguments developer-7)"
|
||||
fi
|
||||
|
||||
# gcc 8
|
||||
if test $cc_vers_major -ge 8; then
|
||||
H5_CFLAGS="$H5_CFLAGS $(load_gcc_arguments 8)"
|
||||
H5_ECFLAGS="$H5_ECFLAGS $(load_gcc_arguments error-8)"
|
||||
DEVELOPER_WARNING_CFLAGS="$DEVELOPER_WARNING_CFLAGS $(load_gcc_arguments developer-8)"
|
||||
NO_DEVELOPER_WARNING_CFLAGS="$NO_DEVELOPER_WARNING_CFLAGS $(load_gcc_arguments no-developer-8)"
|
||||
fi
|
||||
|
||||
# gcc 9
|
||||
if test $cc_vers_major -ge 9; then
|
||||
H5_CFLAGS="$H5_CFLAGS $(load_gcc_arguments 9)"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
#################
|
||||
# Flags are set #
|
||||
#################
|
||||
cc_flags_set=yes
|
||||
fi
|
||||
|
||||
# Clear cc info if no flags set
|
||||
if test "X$cc_flags_set" = "X"; then
|
||||
cc_vendor=
|
||||
cc_version=
|
||||
cc_vendor=
|
||||
cc_version=
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user