summaryrefslogtreecommitdiff
path: root/Cross/cflags-cross-arm
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