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