-Dgccansipedantic only for gcc 3+
H.Merijn Brand [Mon, 30 Sep 2002 09:51:40 +0000 (09:51 +0000)]
Mon, 30 Sep 2002, Jarkko Hietaniemi <jhi@iki.fi>

p4raw-id: //depot/perl@17945

Porting/pumpkin.pod
cflags.SH

index 0146f68..a000108 100644 (file)
@@ -780,6 +780,10 @@ The flag -DPERL_GCC_PEDANTIC also gets added, since gcc does not add
 any internal cpp flag to signify that -pedantic is being used, as it
 does for -ansi (__STRICT_ANSI__).
 
+Note that the -ansi and -pedantic are enabled only for version 3 (and
+later) of gcc, since even gcc version 2.95.4 finds lots of seemingly
+false "value computed not used" errors from Perl.
+
 The -ansi and -pedantic are useful in catching at least the following
 nonportable practices:
 
index 453fff6..634aba5 100755 (executable)
--- a/cflags.SH
+++ b/cflags.SH
@@ -133,29 +133,33 @@ case "$gccversion" in
     esac
     case "$gccansipedantic" in
     define)
-        case "$osname" in
-       # Add -ansi -pedantic only for known platforms.
-        aix|dec_osf|freebsd|hpux|irix|linux)
-           ansipedantic="-ansi -pedantic" ;;
-        solaris)
+       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" ;;
+               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
-       done
-        case "$warn$ccflags" in
-        *-pedantic*) warn="$warn -DPERL_GCC_PEDANTIC" ;;
-        esac
-        ;;
+           ;;
+       esac
+       ;;
     esac
     ;;
 esac