#!/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) ;; 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++*) # 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 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