X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/26102cc7c0c3b613cde3c9439c90b8fb1ab06a52..ab3bbdeb874c2a82798e2c9cc4b61acf5866b410:/cflags.SH diff --git a/cflags.SH b/cflags.SH index c397d40..bc22c2c 100755 --- a/cflags.SH +++ b/cflags.SH @@ -16,6 +16,93 @@ esac case "$0" in */*) cd `expr X$0 : 'X\(.*\)/'` ;; esac + +warn='' + +# Add -Wall for the core modules iff gcc and not already -Wall +case "$gccversion" in +'') ;; +Intel*) ;; # The Intel C++ plays gcc on TV but is not really it. +*) case "$ccflags" in + *-Wall*) ;; + *) warn="$warn -Wall" ;; + esac + ;; +esac + +# The gcc -ansi -pedantic require their own dance, too. +case "$gccversion" in +'') ;; +Intel*) ;; # Is that you, Intel C++? +*) case "$gccansipedantic" in + define) + case "$gccversion" in + [12]*) ;; # gcc versions 1 (gasp!) and 2 are not good for this. + *) case "$osname" in + # Add -ansi -pedantic only for known platforms. + aix|dec_osf|freebsd|hpux|irix|linux) + ansipedantic="-ansi -pedantic" ;; + solaris) +# Can't add -ansi for Solaris. +# Off_t/off_t is a struct in Solaris with largefiles, and with -ansi +# that struct cannot be compared with a flat integer, such as a STRLEN. +# The -ansi will also cause a lot of noise in Solaris because of: +# /usr/include/sys/resource.h:148: warning: `struct rlimit64' declared inside parameter list + ansipedantic="-pedantic" ;; + esac + for i in $ansipedantic + do + case "$ccflags" in + *$i*) ;; + *) warn="$warn $i" ;; + esac + done + case "$warn$ccflags" in + *-pedantic*) warn="$warn -DPERL_GCC_PEDANTIC" ;; + esac + ;; + esac + ;; + esac + ;; +esac + +# Further gcc warning options. +case "$gccversion" in +'') ;; +[12]*) ;; +Intel*) ;; # Haven't we been through this already? +*) for opt in '' extra declaration-after-statement endif-labels + do + case " $ccflags " in + *"-W$opt "*) ;; + *) case "`echo >_cflags.c | $cc -W$opt -c _cflags.c -o _cflags.o 2>&1`" in + *"unrecognized"*) ;; + *"Invalid"*) ;; + *) warn="$warn -W$opt" ;; + esac + ;; + esac + rm -f _cflags.c cflags.o + done + ;; +esac + + +stdflags='' + +# Be strict C89 for gcc (but not for g++). +case "$gccversion" in +'') ;; +Intel*) ;; # Nice try, Intel C++. +12]*) ;; # Go easy on the older versions of gcc. +*) case "$cc" in + *g++*) ;; + *) stdflags="$stdflags -std=c89" ;; + esac + ;; +esac + echo "Extracting cflags (with variable substitutions)" : This section of the file will have variable substitutions done on it. : Move anything that needs config subs from !NO!SUBS! section to !GROK!THIS!. @@ -24,6 +111,12 @@ echo "Extracting cflags (with variable substitutions)" rm -f cflags $spitshell >cflags <&2 " CCCMD = "' @@ -104,15 +186,19 @@ for file do doio) ;; doop) ;; dump) ;; + globals) ;; gv) ;; hv) ;; locale) ;; + madly) ;; main) ;; malloc) ;; mg) ;; miniperlmain) ;; numeric) ;; op) ;; + opmini) ;; + pad) ;; perl) ;; perlapi) ;; perlmain) ;; @@ -121,6 +207,7 @@ for file do pp_ctl) ;; pp_hot) ;; pp_pack) ;; + pp_sort) ;; pp_sys) ;; regcomp) ;; regexec) ;; @@ -129,18 +216,21 @@ for file do sv) ;; taint) ;; toke) ;; + universal) ;; usersub) ;; + utf8) ;; util) ;; + xsutils) ;; *) ;; esac - if test "X$optdebug" != "X"; then - optimize="$optdebug" - fi +if test -f .patch; then + ccflags="-DPERL_PATCHNUM=`cat .patch` $ccflags" +fi : Can we perhaps use $ansi2knr here - echo "$cc -c -DPERL_CORE $ccflags $optimize $perltype" - eval "$also "'"$cc -DPERL_CORE -c $ccflags $optimize $perltype"' + echo "$cc -c -DPERL_CORE $ccflags $stdflags $optimize $warn" + eval "$also "'"$cc -DPERL_CORE -c $ccflags $stdflags $optimize $warn"' . $TOP/config.sh