| 1 |
case $PERL_CONFIG_SH in |
| 2 |
'') |
| 3 |
if test -f config.sh; then TOP=.; |
| 4 |
elif test -f ../config.sh; then TOP=..; |
| 5 |
elif test -f ../../config.sh; then TOP=../..; |
| 6 |
elif test -f ../../../config.sh; then TOP=../../..; |
| 7 |
elif test -f ../../../../config.sh; then TOP=../../../..; |
| 8 |
else |
| 9 |
echo "Can't find config.sh."; exit 1 |
| 10 |
fi |
| 11 |
. $TOP/config.sh |
| 12 |
;; |
| 13 |
esac |
| 14 |
: This forces SH files to create target in same directory as SH file. |
| 15 |
: This is so that make depend always knows where to find SH derivatives. |
| 16 |
case "$0" in |
| 17 |
*/*) cd `expr X$0 : 'X\(.*\)/'` ;; |
| 18 |
esac |
| 19 |
echo "Extracting cflags (with variable substitutions)" |
| 20 |
: This section of the file will have variable substitutions done on it. |
| 21 |
: Move anything that needs config subs from !NO!SUBS! section to !GROK!THIS!. |
| 22 |
: Protect any dollar signs and backticks that you do not want interpreted |
| 23 |
: by putting a backslash in front. You may delete these comments. |
| 24 |
rm -f cflags |
| 25 |
$spitshell >cflags <<!GROK!THIS! |
| 26 |
$startsh |
| 27 |
!GROK!THIS! |
| 28 |
|
| 29 |
: In the following dollars and backticks do not need the extra backslash. |
| 30 |
$spitshell >>cflags <<'!NO!SUBS!' |
| 31 |
case $PERL_CONFIG_SH in |
| 32 |
'') |
| 33 |
if test -f config.sh; then TOP=.; |
| 34 |
elif test -f ../config.sh; then TOP=..; |
| 35 |
elif test -f ../../config.sh; then TOP=../..; |
| 36 |
elif test -f ../../../config.sh; then TOP=../../..; |
| 37 |
elif test -f ../../../../config.sh; then TOP=../../../..; |
| 38 |
else |
| 39 |
echo "Can't find config.sh."; exit 1 |
| 40 |
fi |
| 41 |
. $TOP/config.sh |
| 42 |
;; |
| 43 |
esac |
| 44 |
|
| 45 |
: syntax: cflags [optimize=XXX] [file[.suffix]] |
| 46 |
: displays the compiler command line for file |
| 47 |
|
| 48 |
case "X$1" in |
| 49 |
Xoptimize=*|X"optimize=*") |
| 50 |
eval "$1" |
| 51 |
shift |
| 52 |
;; |
| 53 |
esac |
| 54 |
|
| 55 |
also=': ' |
| 56 |
case $# in |
| 57 |
1) also='echo 1>&2 " CCCMD = "' |
| 58 |
esac |
| 59 |
|
| 60 |
case $# in |
| 61 |
0) set *.c; echo "The current C flags are:" ;; |
| 62 |
esac |
| 63 |
|
| 64 |
set `echo "$* " | sed -e 's/\.[oc] / /g' -e 's/\.obj / /g' -e "s/\\$obj_ext / /g"` |
| 65 |
|
| 66 |
for file do |
| 67 |
|
| 68 |
case "$#" in |
| 69 |
1) ;; |
| 70 |
*) echo $n " $file.c $c" ;; |
| 71 |
esac |
| 72 |
|
| 73 |
: allow variables like toke_cflags to be evaluated |
| 74 |
|
| 75 |
if echo $file | grep -v / >/dev/null |
| 76 |
then |
| 77 |
eval 'eval ${'"${file}_cflags"'-""}' |
| 78 |
fi |
| 79 |
|
| 80 |
: or customize here |
| 81 |
|
| 82 |
case "$file" in |
| 83 |
DB_File) ;; |
| 84 |
GDBM_File) ;; |
| 85 |
NDBM_File) ;; |
| 86 |
ODBM_File) ;; |
| 87 |
POSIX) ;; |
| 88 |
SDBM_File) ;; |
| 89 |
av) ;; |
| 90 |
byterun) ;; |
| 91 |
deb) ;; |
| 92 |
dl) ;; |
| 93 |
doio) ;; |
| 94 |
doop) ;; |
| 95 |
dump) ;; |
| 96 |
gv) ;; |
| 97 |
hv) ;; |
| 98 |
locale) ;; |
| 99 |
main) ;; |
| 100 |
malloc) ;; |
| 101 |
mg) ;; |
| 102 |
miniperlmain) ;; |
| 103 |
numeric) ;; |
| 104 |
op) ;; |
| 105 |
perl) ;; |
| 106 |
perlapi) ;; |
| 107 |
perlmain) ;; |
| 108 |
perly) ;; |
| 109 |
pp) ;; |
| 110 |
pp_ctl) ;; |
| 111 |
pp_hot) ;; |
| 112 |
pp_pack) ;; |
| 113 |
pp_sys) ;; |
| 114 |
regcomp) ;; |
| 115 |
regexec) ;; |
| 116 |
run) ;; |
| 117 |
scope) ;; |
| 118 |
sv) ;; |
| 119 |
taint) ;; |
| 120 |
toke) ;; |
| 121 |
usersub) ;; |
| 122 |
util) ;; |
| 123 |
*) ;; |
| 124 |
esac |
| 125 |
|
| 126 |
# Add -Wall for the core modules iff gcc and not already -Wall |
| 127 |
warn='' |
| 128 |
case "$gccversion" in |
| 129 |
'') ;; |
| 130 |
*) case "$ccflags" in |
| 131 |
*-Wall*) ;; |
| 132 |
*) warn="$warn -Wall" ;; |
| 133 |
esac |
| 134 |
case "$gccansipedantic" in |
| 135 |
define) |
| 136 |
case "$gccversion" in |
| 137 |
[12]*) ;; # gcc versions 1 (gasp!) and 2 are not good for this. |
| 138 |
*) case "$osname" in |
| 139 |
# Add -ansi -pedantic only for known platforms. |
| 140 |
aix|dec_osf|freebsd|hpux|irix|linux) |
| 141 |
ansipedantic="-ansi -pedantic" ;; |
| 142 |
solaris) |
| 143 |
# Can't add -ansi for Solaris. |
| 144 |
# Off_t/off_t is a struct in Solaris with largefiles, and with -ansi |
| 145 |
# that struct cannot be compared with a flat integer, such as a STRLEN. |
| 146 |
# The -ansi will also cause a lot of noise in Solaris because of: |
| 147 |
# /usr/include/sys/resource.h:148: warning: `struct rlimit64' declared inside parameter list |
| 148 |
ansipedantic="-pedantic" ;; |
| 149 |
esac |
| 150 |
for i in $ansipedantic |
| 151 |
do |
| 152 |
case "$ccflags" in |
| 153 |
*$i*) ;; |
| 154 |
*) warn="$warn $i" ;; |
| 155 |
esac |
| 156 |
done |
| 157 |
case "$warn$ccflags" in |
| 158 |
*-pedantic*) warn="$warn -DPERL_GCC_PEDANTIC" ;; |
| 159 |
esac |
| 160 |
;; |
| 161 |
esac |
| 162 |
;; |
| 163 |
esac |
| 164 |
;; |
| 165 |
esac |
| 166 |
|
| 167 |
: Can we perhaps use $ansi2knr here |
| 168 |
echo "$cc -c -DPERL_CORE $ccflags $optimize $warn" |
| 169 |
eval "$also "'"$cc -DPERL_CORE -c $ccflags $optimize $warn"' |
| 170 |
|
| 171 |
. $TOP/config.sh |
| 172 |
|
| 173 |
done |
| 174 |
!NO!SUBS! |
| 175 |
chmod 755 cflags |
| 176 |
$eunicefix cflags |