diff options
Diffstat (limited to 'Cross/cflags-cross-arm')
-rwxr-xr-x | Cross/cflags-cross-arm | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/Cross/cflags-cross-arm b/Cross/cflags-cross-arm new file mode 100755 index 0000000000..9241d01cca --- /dev/null +++ b/Cross/cflags-cross-arm @@ -0,0 +1,157 @@ +#!/bin/sh + +# Extra warnings, used e.g. for gcc. +warn="-Wall -ansi -W -Wextra -Wdeclaration-after-statement -Wendif-labels -Wc++-compat" +# Extra standardness. +stdflags=" -std=c89" +# 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) ;; + dump) ;; + globals) ;; + gv) ;; + hv) ;; + locale) ;; + madly) ;; + main) ;; + malloc) ;; + mg) ;; + miniperlmain) ;; + numeric) ;; + op) ;; + opmini) ;; + pad) ;; + perl) ;; + perlapi) ;; + perlmain) ;; + perly) ;; + pp) ;; + pp_ctl) ;; + pp_hot) ;; + pp_pack) ;; + pp_sort) ;; + pp_sys) ;; + regcomp) ;; + regexec) ;; + run) ;; + scope) ;; + sv) ;; + taint) ;; + toke) ;; + universal) ;; + usersub) ;; + utf8) ;; + util) ;; + xsutils) ;; + *) ;; + esac + +case "$cc" in +*g++*) + # Extra paranoia in case people have bad canned ccflags: + # bad in the sense that the flags are accepted by g++, + # but then whined about. + for f in -Wdeclaration-after-statement -std=c89 + do + ccflags=`echo $ccflags|sed 's/$f/ /'` + done + ;; +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 + + : Can we perhaps use $ansi2knr here + echo "$CROSSCC -c -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 |