This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perlio.c: false Coverity finding (it cannot see that two pointers are the same):...
[perl5.git] / cflags.SH
index 1bd5c94..6c26025 100755 (executable)
--- a/cflags.SH
+++ b/cflags.SH
@@ -42,6 +42,9 @@ case $PERL_CONFIG_SH in
        ;;
 esac
 
+: syntax: cflags [optimize=XXX] [file[.suffix]]
+: displays the compiler command line for file
+
 case "X$1" in
 Xoptimize=*|X"optimize=*")
        eval "$1"
@@ -49,20 +52,6 @@ Xoptimize=*|X"optimize=*")
        ;;
 esac
 
-perltype=''
-optdebug=''    # ensure -g used if building a -DDEBUGGING libperl
-case $# in
-2) case $1 in
-    *perl.*)    perltype='';;
-    *perld.*)   perltype='-DDEBUGGING'; optdebug='-g' ;;
-    *perle.*)   perltype='-DEMBED';;
-    *perlde.*)  perltype='-DDEBUGGING -DEMBED'; optdebug='-g' ;;
-    *perlm.*)   perltype='-DEMBED -DMULTIPLICITY';;
-    *perldm.*)  perltype='-DDEBUGGING -DEMBED -DMULTIPLICITY'; optdebug='-g' ;;
-    esac
-    shift ;;
-esac
-
 also=': '
 case $# in
 1) also='echo 1>&2 "     CCCMD = "'
@@ -134,29 +123,55 @@ for file do
     *) ;;
     esac
 
-       if test "X$optdebug" != "X"; then
-               optimize="$optdebug"
-       fi
-
-# Add -Wall for the core and core modules iff gcc and not already -Wall
+# Add -Wall for the core modules iff gcc and not already -Wall
 warn=''
 case "$gccversion" in
 '') ;;
+Intel*) ;;
 *)  case "$ccflags" in
     *-Wall*) ;;
-# Can't add -ansi here because it will fail e.g. in Solaris.
+    *) warn="$warn -Wall" ;;
+    esac
+    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
-    *) warn='-Wall' ;;
+               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
 
+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 $warn $perltype"
-    eval "$also "'"$cc -DPERL_CORE -c $ccflags $optimize $warn $perltype"'
+    echo "$cc -c -DPERL_CORE $ccflags $optimize $warn"
+    eval "$also "'"$cc -DPERL_CORE -c $ccflags $optimize $warn"'
 
     . $TOP/config.sh