Cross Reference: /bind-9.11.3/unit/atf-src/admin/compile
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
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt#! /bin/sh
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt# Wrapper for compilers which do not understand '-c -o'.
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrewsscriptversion=2016-01-11.22; # UTC
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews# Copyright (C) 1999-2017 Free Software Foundation, Inc.
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# Written by Tom Tromey <tromey@cygnus.com>.
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt#
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# This program is free software; you can redistribute it and/or modify
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# it under the terms of the GNU General Public License as published by
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# the Free Software Foundation; either version 2, or (at your option)
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# any later version.
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt#
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# This program is distributed in the hope that it will be useful,
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# but WITHOUT ANY WARRANTY; without even the implied warranty of
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# GNU General Public License for more details.
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt#
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# You should have received a copy of the GNU General Public License
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# along with this program. If not, see <http://www.gnu.org/licenses/>.
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# As a special exception to the GNU General Public License, if you
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# distribute this file as part of a program that contains a
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# configuration script generated by Autoconf, you may include it under
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# the same distribution terms that you use for the rest of that program.
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# This file is maintained in Automake, please report
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# bugs to <bug-automake@gnu.org> or send patches to
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# <automake-patches@gnu.org>.
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Huntnl='
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt'
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt# We need space, tab and new line, in precisely that order. Quoting is
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt# there to prevent tools from complaining about whitespace usage.
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan HuntIFS=" "" $nl"
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Huntfile_conv=
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt# func_file_conv build_file lazy
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt# Convert a $build file to $host form and store it in $file
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt# Currently only supports Windows hosts. If the determined conversion
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt# type is listed in (the comma separated) LAZY, no conversion will
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt# take place.
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Huntfunc_file_conv ()
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt{
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt file=$1
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt case $file in
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt / | /[!/]*) # absolute file, and not a UNC file
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt if test -z "$file_conv"; then
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt # lazily determine how to convert abs files
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt case `uname -s` in
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt MINGW*)
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt file_conv=mingw
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt ;;
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt CYGWIN*)
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt file_conv=cygwin
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt ;;
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt *)
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt file_conv=wine
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt ;;
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt esac
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt fi
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt case $file_conv/,$2, in
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt *,$file_conv,*)
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt ;;
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt mingw/*)
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt ;;
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt cygwin/*)
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt file=`cygpath -m "$file" || echo "$file"`
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt ;;
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt wine/*)
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt file=`winepath -w "$file" || echo "$file"`
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt ;;
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt esac
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt ;;
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt esac
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt}
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt# func_cl_dashL linkdir
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt# Make cl look for libraries in LINKDIR
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Huntfunc_cl_dashL ()
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt{
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt func_file_conv "$1"
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt if test -z "$lib_path"; then
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt lib_path=$file
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt else
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt lib_path="$lib_path;$file"
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt fi
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt linker_opts="$linker_opts -LIBPATH:$file"
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt}
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt# func_cl_dashl library
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt# Do a library search-path lookup for cl
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Huntfunc_cl_dashl ()
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt{
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt lib=$1
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt found=no
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt save_IFS=$IFS
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt IFS=';'
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt for dir in $lib_path $LIB
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt do
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt IFS=$save_IFS
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt if $shared && test -f "$dir/$lib.dll.lib"; then
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt found=yes
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt lib=$dir/$lib.dll.lib
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt break
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt fi
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt if test -f "$dir/$lib.lib"; then
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt found=yes
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt lib=$dir/$lib.lib
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt break
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt fi
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews if test -f "$dir/lib$lib.a"; then
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews found=yes
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews lib=$dir/lib$lib.a
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews break
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews fi
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt done
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt IFS=$save_IFS
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt if test "$found" != yes; then
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt lib=$lib.lib
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt fi
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt}
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt# func_cl_wrapper cl arg...
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt# Adjust compile command to suit cl
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Huntfunc_cl_wrapper ()
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt{
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt # Assume a capable shell
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt lib_path=
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt shared=:
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt linker_opts=
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt for arg
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt do
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt if test -n "$eat"; then
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt eat=
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt else
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt case $1 in
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt -o)
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt # configure might choose to run compile as 'compile cc -o foo foo.c'.
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt eat=1
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt case $2 in
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt *.o | *.[oO][bB][jJ])
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt func_file_conv "$2"
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt set x "$@" -Fo"$file"
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt shift
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt ;;
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt *)
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt func_file_conv "$2"
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt set x "$@" -Fe"$file"
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt shift
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt ;;
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt esac
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt ;;
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt -I)
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt eat=1
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt func_file_conv "$2" mingw
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt set x "$@" -I"$file"
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt shift
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt ;;
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt -I*)
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt func_file_conv "${1#-I}" mingw
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt set x "$@" -I"$file"
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt shift
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt ;;
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt -l)
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt eat=1
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt func_cl_dashl "$2"
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt set x "$@" "$lib"
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt shift
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt ;;
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt -l*)
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt func_cl_dashl "${1#-l}"
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt set x "$@" "$lib"
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt shift
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt ;;
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt -L)
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt eat=1
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt func_cl_dashL "$2"
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt ;;
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt -L*)
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt func_cl_dashL "${1#-L}"
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt ;;
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt -static)
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt shared=false
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt ;;
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt -Wl,*)
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt arg=${1#-Wl,}
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt save_ifs="$IFS"; IFS=','
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt for flag in $arg; do
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt IFS="$save_ifs"
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt linker_opts="$linker_opts $flag"
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt done
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt IFS="$save_ifs"
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt ;;
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt -Xlinker)
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt eat=1
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt linker_opts="$linker_opts $2"
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt ;;
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt -*)
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt set x "$@" "$1"
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt shift
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt ;;
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt func_file_conv "$1"
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt set x "$@" -Tp"$file"
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt shift
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt ;;
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt func_file_conv "$1" mingw
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt set x "$@" "$file"
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt shift
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt ;;
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt *)
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt set x "$@" "$1"
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt shift
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt ;;
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt esac
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt fi
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt shift
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt done
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt if test -n "$linker_opts"; then
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt linker_opts="-link$linker_opts"
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt fi
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt exec "$@" $linker_opts
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt exit 1
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt}
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunteat=
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt
ef421f66f47224a42073deaf087378c5d0c9952eEvan Huntcase $1 in
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt '')
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt echo "$0: No command. Try '$0 --help' for more information." 1>&2
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt exit 1;
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt ;;
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt -h | --h*)
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt cat <<\EOF
ef421f66f47224a42073deaf087378c5d0c9952eEvan HuntUsage: compile [--help] [--version] PROGRAM [ARGS]
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan HuntWrapper for compilers which do not understand '-c -o'.
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan HuntRemove '-o dest.o' from ARGS, run PROGRAM with the remaining
ef421f66f47224a42073deaf087378c5d0c9952eEvan Huntarguments, and rename the output as expected.
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt
ef421f66f47224a42073deaf087378c5d0c9952eEvan HuntIf you are trying to build a whole package this is not the
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Huntright script to run: please start by reading the file 'INSTALL'.
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt
ef421f66f47224a42073deaf087378c5d0c9952eEvan HuntReport bugs to <bug-automake@gnu.org>.
ef421f66f47224a42073deaf087378c5d0c9952eEvan HuntEOF
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt exit $?
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt ;;
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt -v | --v*)
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt echo "compile $scriptversion"
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt exit $?
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt ;;
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt func_cl_wrapper "$@" # Doesn't return...
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt ;;
ef421f66f47224a42073deaf087378c5d0c9952eEvan Huntesac
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt
ef421f66f47224a42073deaf087378c5d0c9952eEvan Huntofile=
ef421f66f47224a42073deaf087378c5d0c9952eEvan Huntcfile=
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt
ef421f66f47224a42073deaf087378c5d0c9952eEvan Huntfor arg
ef421f66f47224a42073deaf087378c5d0c9952eEvan Huntdo
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt if test -n "$eat"; then
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt eat=
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt else
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt case $1 in
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt -o)
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt # configure might choose to run compile as 'compile cc -o foo foo.c'.
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt # So we strip '-o arg' only if arg is an object.
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt eat=1
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt case $2 in
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt *.o | *.obj)
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt ofile=$2
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt ;;
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt *)
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt set x "$@" -o "$2"
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt shift
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt ;;
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt esac
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt ;;
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt *.c)
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt cfile=$1
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt set x "$@" "$1"
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt shift
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt ;;
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt *)
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt set x "$@" "$1"
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt shift
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt ;;
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt esac
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt fi
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt shift
ef421f66f47224a42073deaf087378c5d0c9952eEvan Huntdone
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt
ef421f66f47224a42073deaf087378c5d0c9952eEvan Huntif test -z "$ofile" || test -z "$cfile"; then
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt # If no '-o' option was seen then we might have been invoked from a
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt # pattern rule where we don't need one. That is ok -- this is a
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt # normal compilation that the losing compiler can handle. If no
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt # '.c' file was seen then we are probably linking. That is also
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt # ok.
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt exec "$@"
ef421f66f47224a42073deaf087378c5d0c9952eEvan Huntfi
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# Name of file we expect compiler to create.
ef421f66f47224a42073deaf087378c5d0c9952eEvan Huntcofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# Create the lock directory.
a747113422afaa29ce72d2c5ba7f0b7ea9ec2054Evan Hunt# Note: use '[/\\:.-]' here to ensure that we don't use the same name
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# that we are using for the .o file. Also, base the name on the expected
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# object file name, since that is what matters with a parallel build.
ef421f66f47224a42073deaf087378c5d0c9952eEvan Huntlockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
ef421f66f47224a42073deaf087378c5d0c9952eEvan Huntwhile true; do
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt if mkdir "$lockdir" >/dev/null 2>&1; then
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt break
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt fi
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt sleep 1
ef421f66f47224a42073deaf087378c5d0c9952eEvan Huntdone
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# FIXME: race condition here if user kills between mkdir and trap.
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunttrap "rmdir '$lockdir'; exit 1" 1 2 15
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# Run the compile.
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt"$@"
ef421f66f47224a42073deaf087378c5d0c9952eEvan Huntret=$?
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt
ef421f66f47224a42073deaf087378c5d0c9952eEvan Huntif test -f "$cofile"; then
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
ef421f66f47224a42073deaf087378c5d0c9952eEvan Huntelif test -f "${cofile}bj"; then
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
ef421f66f47224a42073deaf087378c5d0c9952eEvan Huntfi
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt
ef421f66f47224a42073deaf087378c5d0c9952eEvan Huntrmdir "$lockdir"
ef421f66f47224a42073deaf087378c5d0c9952eEvan Huntexit $ret
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# Local Variables:
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# mode: shell-script
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# sh-indentation: 2
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# eval: (add-hook 'write-file-hooks 'time-stamp)
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# time-stamp-start: "scriptversion="
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# time-stamp-format: "%:y-%02m-%02d.%02H"
4a53e3c2b83c476a93148eaee0272649beb221caMark Andrews# time-stamp-time-zone: "UTC0"
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# time-stamp-end: "; # UTC"
ef421f66f47224a42073deaf087378c5d0c9952eEvan Hunt# End: