X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=cflags.SH;h=fe4bacc2197474ded7dc37c9534108835dc00e0d;hb=42cd432e78efd1039af03fb10782bd0dba2e23ee;hp=1c542a047eec3f3f3e77947d3e0f399ab06aeb83;hpb=a07cd53d52eddd3373b7f4babb55144d44a1613d;p=p5sagit%2Fp5-mst-13.2.git diff --git a/cflags.SH b/cflags.SH index 1c542a0..fe4bacc 100755 --- a/cflags.SH +++ b/cflags.SH @@ -17,6 +17,11 @@ case "$0" in */*) cd `expr X$0 : 'X\(.*\)/'` ;; esac +if test -f config_h.SH && ! test -f config.h; then + . ./config_h.SH + CONFIG_H=already-done +fi + warn='' # Add -Wall for the core modules iff gcc and not already -Wall @@ -122,6 +127,7 @@ Intel*) ;; # # Is that you, Intel C++? case "`$cc $cflags $opt _cflags.c -o _cflags$_exe 2>&1`" in *"unrecognized"*) ;; *"Invalid"*) ;; + *"is valid for C"*) ;; *) if test -x _cflags$_exe then case "$opt" in @@ -138,28 +144,29 @@ Intel*) ;; # # Is that you, Intel C++? esac rm -f _cflags.c _cflags$_exe -# If we have g++, we cannot have the -Wdeclaration-after-statement. -# Some g++s accept it but then whine about it with every file. -# This removal is also done "later", in cflags run time. -case "$cc" in -*g++*) warn="`echo $warn|sed 's/-Wdeclaration-after-statement/ /'`" ;; -esac - -# If we have -Duse64bitint (or equivalent) in effect and the quadtype -# has become 'long long', gcc -pedantic becomes unbearable (moreso -# when combined with -Wall) because long long and LL and %lld|%Ld -# become warn-worthy. So let's drop the -pedantic in that case. -case "$quadtype:$sPRId64" in -"long long"*|*lld*|*Ld*) - ccflags="`echo $ccflags|sed 's/-pedantic/ /'`" - warn="`echo $warn|sed 's/-pedantic/ /'`" +case "$gccversion" in +'') ;; +*) + if [ "$gccansipedantic" = "" ]; then + # If we have -Duse64bitint (or equivalent) in effect and the quadtype + # has become 'long long', gcc -pedantic becomes unbearable (moreso + # when combined with -Wall) because long long and LL and %lld|%Ld + # become warn-worthy. So let's drop the -pedantic in that case. + case "$quadtype:$sPRId64" in + "long long"*|*lld*|*Ld*) + ccflags="`echo $ccflags|sed 's/-pedantic/ /'`" + warn="`echo $warn|sed 's/-pedantic/ /'`" + ;; + esac + fi + # Using certain features (like the gcc statement expressions) + # requires knowing whether -pedantic has been specified. + case "$warn$ccflags" in + *-pedantic*) warn="$warn -DPERL_GCC_PEDANTIC" ;; + esac ;; esac -case "$warn$ccflags" in -*-pedantic*) warn="$warn -DPERL_GCC_PEDANTIC" ;; -esac - # Code to set any extra flags here. extra='' @@ -288,8 +295,13 @@ for file do case "$cc" in *g++*) - # We need to remove this also in here (removed also earlier in cflags.SH). - ccflags="`echo $ccflags|sed 's/-Wdeclaration-after-statement/ /'`" + # Extra paranoia in case people have bad canned ccflags: + # bad in the sense that the flags are accepted by g++, + # but then whined about. + for f in -Wdeclaration-after-statement -std=c89 + do + ccflags=`echo $ccflags|sed 's/$f/ /'` + done ;; esac