This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
don't installperl pods
[perl5.git] / cflags.SH
index c1510ea..1bd5c94 100755 (executable)
--- a/cflags.SH
+++ b/cflags.SH
@@ -1,13 +1,15 @@
-case $CONFIG in
+case $PERL_CONFIG_SH in
 '')
-    if test ! -f config.sh; then
-       ln ../config.sh . || \
-       ln ../../config.sh . || \
-       ln ../../../config.sh . || \
-       (echo "Can't find config.sh."; exit 1)
-    fi
-    . ./config.sh
-    ;;
+       if test -f config.sh; then TOP=.;
+       elif test -f ../config.sh; then TOP=..;
+       elif test -f ../../config.sh; then TOP=../..;
+       elif test -f ../../../config.sh; then TOP=../../..;
+       elif test -f ../../../../config.sh; then TOP=../../../..;
+       else
+               echo "Can't find config.sh."; exit 1
+       fi
+       . $TOP/config.sh
+       ;;
 esac
 : This forces SH files to create target in same directory as SH file.
 : This is so that make depend always knows where to find SH derivatives.
@@ -21,23 +23,44 @@ echo "Extracting cflags (with variable substitutions)"
 : by putting a backslash in front.  You may delete these comments.
 rm -f cflags
 $spitshell >cflags <<!GROK!THIS!
+$startsh
 !GROK!THIS!
 
 : In the following dollars and backticks do not need the extra backslash.
 $spitshell >>cflags <<'!NO!SUBS!'
-case "$0" in
-*/*) cd `expr X$0 : 'X\(.*\)/'` ;;
-esac
-case $CONFIG in
+case $PERL_CONFIG_SH in
 '')
-    if test ! -f config.sh; then
-       ln ../config.sh . || \
-       ln ../../config.sh . || \
-       ln ../../../config.sh . || \
-       (echo "Can't find config.sh."; exit 1)
-    fi 2>/dev/null
-    . ./config.sh
-    ;;
+       if test -f config.sh; then TOP=.;
+       elif test -f ../config.sh; then TOP=..;
+       elif test -f ../../config.sh; then TOP=../..;
+       elif test -f ../../../config.sh; then TOP=../../..;
+       elif test -f ../../../../config.sh; then TOP=../../../..;
+       else
+               echo "Can't find config.sh."; exit 1
+       fi
+       . $TOP/config.sh
+       ;;
+esac
+
+case "X$1" in
+Xoptimize=*|X"optimize=*")
+       eval "$1"
+       shift
+       ;;
+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=': '
@@ -49,7 +72,7 @@ case $# in
 0) set *.c; echo "The current C flags are:" ;;
 esac
 
-set `echo "$* " | sed 's/\.[oc] / /g'`
+set `echo "$* " | sed -e 's/\.[oc] / /g' -e 's/\.obj / /g' -e "s/\\$obj_ext / /g"`
 
 for file do
 
@@ -60,62 +83,84 @@ for file do
 
     : allow variables like toke_cflags to be evaluated
 
-    eval 'eval ${'"${file}_cflags"'-""}'
+    if echo $file | grep -v / >/dev/null
+    then
+      eval 'eval ${'"${file}_cflags"'-""}'
+    fi
 
     : or customize here
 
     case "$file" in
-    array) ;;
-    cmd) ;;
-    cons) ;;
-    consarg) ;;
-    doarg) ;;
+    DB_File) ;;
+    GDBM_File) ;;
+    NDBM_File) ;;
+    ODBM_File) ;;
+    POSIX) ;;
+    SDBM_File) ;;
+    av) ;;
+    byterun) ;;
+    deb) ;;
+    dl) ;;
     doio) ;;
-    dolist) ;;
+    doop) ;;
     dump) ;;
-    eval) ;;
-    form) ;;
-    hash) ;;
+    gv) ;;
+    hv) ;;
+    locale) ;;
+    main) ;;
     malloc) ;;
+    mg) ;;
+    miniperlmain) ;;
+    numeric) ;;
+    op) ;;
     perl) ;;
+    perlapi) ;;
+    perlmain) ;;
     perly) ;;
+    pp) ;;
+    pp_ctl) ;;
+    pp_hot) ;;
+    pp_pack) ;;
+    pp_sys) ;;
     regcomp) ;;
     regexec) ;;
-    stab) ;;
-    str) ;;
+    run) ;;
+    scope) ;;
+    sv) ;;
+    taint) ;;
     toke) ;;
     usersub) ;;
     util) ;;
-    tarray) ;;
-    tcmd) ;;
-    tcons) ;;
-    tconsarg) ;;
-    tdoarg) ;;
-    tdoio) ;;
-    tdolist) ;;
-    tdump) ;;
-    teval) ;;
-    tform) ;;
-    thash) ;;
-    tmalloc) ;;
-    tperl) ;;
-    tperly) ;;
-    tregcomp) ;;
-    tregexec) ;;
-    tstab) ;;
-    tstr) ;;
-    ttoke) ;;
-    tusersub) ;;
-    tutil) ;;
     *) ;;
     esac
 
-    echo "$cc -c $ccflags $optimize $large $split"
-    eval "$also "'"$cc -c $ccflags $optimize $large $split"'
+       if test "X$optdebug" != "X"; then
+               optimize="$optdebug"
+       fi
+
+# Add -Wall for the core and core modules iff gcc and not already -Wall
+warn=''
+case "$gccversion" in
+'') ;;
+*)  case "$ccflags" in
+    *-Wall*) ;;
+# Can't add -ansi here because it will fail e.g. in 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' ;;
+    esac
+    ;;
+esac
+
+    : 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"'
 
-    . ./config.sh
+    . $TOP/config.sh
 
 done
 !NO!SUBS!
-chmod +x cflags
+chmod 755 cflags
 $eunicefix cflags