blob: 3006394e4cc9d0a3d7baf0decaacf08ed51d4531 (
plain)
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
144
145
146
147
148
149
150
151
152
153
154
155
156
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) ;;
dquote) ;;
dump) ;;
globals) ;;
gv) ;;
hv) ;;
locale) ;;
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) ;;
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
: Can we perhaps use $ansi2knr here
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
|