Commit | Line | Data |
---|---|---|
8ed6d636 VK |
1 | #!/bin/sh |
2 | ||
3 | # Extra warnings, used e.g. for gcc. | |
4 | warn="-Wall -ansi -W -Wextra -Wdeclaration-after-statement -Wendif-labels -Wc++-compat" | |
5 | # Extra standardness. | |
6 | stdflags=" -std=c89" | |
7 | # Extra extra. | |
8 | extra="" | |
9 | ||
10 | # TODO - remove this Cross-config-xxx stuff | |
11 | ||
12 | case $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 | ;; | |
24 | esac | |
25 | ||
26 | : syntax: cflags [optimize=XXX] [file[.suffix]] | |
27 | : displays the compiler command line for file | |
28 | ||
29 | case "X$1" in | |
30 | Xoptimize=*|X"optimize=*") | |
31 | eval "$1" | |
32 | shift | |
33 | ;; | |
34 | esac | |
35 | ||
36 | also=': ' | |
37 | case $# in | |
38 | 1) also='echo 1>&2 " CCCMD = "' | |
39 | esac | |
40 | ||
41 | case $# in | |
42 | 0) set *.c; echo "The current C flags are:" ;; | |
43 | esac | |
44 | ||
45 | set `echo "$* " | sed -e 's/\.[oc] / /g' -e "s/\.${CROSS_NAME}o / /g" -e 's/\.obj / /g' -e "s/\\$obj_ext / /g"` | |
46 | ||
47 | for 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 | dump) ;; | |
77 | globals) ;; | |
78 | gv) ;; | |
79 | hv) ;; | |
80 | locale) ;; | |
81 | madly) ;; | |
82 | main) ;; | |
83 | malloc) ;; | |
84 | mg) ;; | |
85 | miniperlmain) ;; | |
86 | numeric) ;; | |
87 | op) ;; | |
88 | opmini) ;; | |
89 | pad) ;; | |
90 | perl) ;; | |
91 | perlapi) ;; | |
92 | perlmain) ;; | |
93 | perly) ;; | |
94 | pp) ;; | |
95 | pp_ctl) ;; | |
96 | pp_hot) ;; | |
97 | pp_pack) ;; | |
98 | pp_sort) ;; | |
99 | pp_sys) ;; | |
100 | regcomp) ;; | |
101 | regexec) ;; | |
102 | run) ;; | |
103 | scope) ;; | |
104 | sv) ;; | |
105 | taint) ;; | |
106 | toke) ;; | |
107 | universal) ;; | |
108 | usersub) ;; | |
109 | utf8) ;; | |
110 | util) ;; | |
111 | xsutils) ;; | |
112 | *) ;; | |
113 | esac | |
114 | ||
115 | case "$cc" in | |
116 | *g++*) | |
117 | # Extra paranoia in case people have bad canned ccflags: | |
118 | # bad in the sense that the flags are accepted by g++, | |
119 | # but then whined about. | |
120 | for f in -Wdeclaration-after-statement -std=c89 | |
121 | do | |
122 | ccflags=`echo $ccflags|sed 's/$f/ /'` | |
123 | done | |
124 | ;; | |
125 | esac | |
126 | ||
127 | case "$cc" in | |
128 | *g++*) | |
129 | # Without -Wno-unused-variable g++ 4.x compiles are rather unwatchable | |
130 | # because of all the warnings about Perl___notused, and g++ doesn't do | |
131 | # __attribute__((unused)) (and even if at some stage it may, people do | |
132 | # have older gcc installations), and ((void)x) isn't enough to silence | |
133 | # the noises about XS functions not using their cv parameter, so we need | |
134 | # the -Wno-unused-parameter too. | |
135 | # Yes, we lose some valid warnings, but hopefully other compilers | |
136 | # (like gcc) will still pick up those warnings. | |
137 | for o in -Wno-unused-variable -Wno-unused-parameter | |
138 | do | |
139 | case "$warn" in | |
140 | *$o*) ;; | |
141 | *) warn="$warn $o" ;; | |
142 | esac | |
143 | done | |
144 | ;; | |
145 | esac | |
146 | ||
147 | if test -f .patch; then | |
148 | ccflags="-DPERL_PATCHNUM=`cat .patch` $ccflags" | |
149 | fi | |
150 | ||
151 | : Can we perhaps use $ansi2knr here | |
152 | echo "$CROSSCC -c -DPERL_CORE $ccflags $stdflags $optimize $warn $extra" | |
153 | eval "$also "'"$CROSSCC -DUSE_CROSS_COMPILE -DPERL_CORE -c $ccflags $stdflags $optimize $warn $extra"' | |
154 | ||
155 | . $TOP/Cross/config-arm.sh | |
156 | ||
157 | done |