1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
|
#!/bin/sh
# Extra warnings, used e.g. for gcc.
warn="-Wall -Wextra -Wendif-labels -Wc++-compat"
# Extra standardness.
stdflags=" -std=c99"
# Extra extra.
extra=""
# TODO - remove this Cross-config-xxx stuff
case $PERL_CONFIG_SH in
'')
if test -f Cross/config-arm.sh; then TOP=.;
elif test -f ../Cross/config-arm.sh; then TOP=..;
elif test -f ../../Cross/config-arm.sh; then TOP=../..;
elif test -f ../../../Cross/config-arm.sh; then TOP=../../..;
elif test -f ../../../../Cross/config-arm.sh; then TOP=../../../..;
else
echo "Can't find config-arm.sh."; exit 1
fi
. $TOP/Cross/config-arm.sh
;;
esac
: syntax: cflags [optimize=XXX] [file[.suffix]]
: displays the compiler command line for file
case "X$1" in
Xoptimize=*|X"optimize=*")
eval "$1"
shift
;;
esac
also=': '
case $# in
1) also='echo 1>&2 " CCCMD = "'
esac
case $# in
0) set *.c; echo "The current C flags are:" ;;
esac
set `echo "$* " | sed -e 's/\.[oc] / /g' -e "s/\.${CROSS_NAME}o / /g" -e 's/\.obj / /g' -e "s/\\$obj_ext / /g"`
for file do
case "$#" in
1) extra="-o $file.${CROSS_NAME}o $extra";;
*) echo $n " $file.c $c" ;;
esac
: allow variables like toke_cflags to be evaluated
if echo $file | grep -v / >/dev/null
then
eval 'eval ${'"${file}_cflags"'-""}'
fi
: or customize here
case "$file" in
DB_File) ;;
GDBM_File) ;;
NDBM_File) ;;
ODBM_File) ;;
POSIX) ;;
SDBM_File) ;;
av) ;;
byterun) ;;
deb) ;;
dl) ;;
doio) ;;
doop) ;;
dquote) ;;
dump) ;;
globals) ;;
gv) ;;
hv) ;;
locale) ;;
main) ;;
malloc) ;;
mg) ;;
miniperlmain) ;;
numeric) ;;
op) ;;
opmini) ;;
pad) ;;
perl) ;;
perlmain) ;;
perly) ;;
pp) ;;
pp_ctl) ;;
pp_hot) ;;
pp_pack) ;;
pp_sort) ;;
pp_sys) ;;
regcomp) ;;
regexec) ;;
run) ;;
scope) ;;
sv) ;;
taint) ;;
time64) ;;
toke) ;;
universal) ;;
usersub) ;;
utf8) ;;
util) ;;
*) ;;
esac
case "$cc" in
*g++*)
# Without -Wno-unused-variable g++ 4.x compiles are rather unwatchable
# because of all the warnings about Perl___notused, and g++ doesn't do
# __attribute__((unused)) (and even if at some stage it may, people do
# have older gcc installations), and ((void)x) isn't enough to silence
# the noises about XS functions not using their cv parameter, so we need
# the -Wno-unused-parameter too.
# Yes, we lose some valid warnings, but hopefully other compilers
# (like gcc) will still pick up those warnings.
for o in -Wno-unused-variable -Wno-unused-parameter
do
case "$warn" in
*$o*) ;;
*) warn="$warn $o" ;;
esac
done
;;
esac
if test -f .patch; then
ccflags="-DPERL_PATCHNUM=`cat .patch` $ccflags"
fi
echo "$CROSSCC -c -DUSE_CROSS_COMPILE -DPERL_CORE $ccflags $stdflags $optimize $warn $extra"
eval "$also "'"$CROSSCC -DUSE_CROSS_COMPILE -DPERL_CORE -c $ccflags $stdflags $optimize $warn $extra"'
. $TOP/Cross/config-arm.sh
done
|