To check out this repository please hg clone the following URL, or open the URL using EasyMercurial or your preferred Mercurial client.

The primary repository for this project is hosted at https://github.com/sonic-visualiser/sv-dependency-builds .
This repository is a read-only copy which is updated automatically every hour.

Statistics Download as Zip
| Branch: | Tag: | Revision:

root / src / fftw-3.3.8 / compile @ 167:bd3cc4d1df30

History | View | Annotate | Download (7.16 KB)

1
#! /bin/sh
2
# Wrapper for compilers which do not understand '-c -o'.
3

    
4
scriptversion=2012-10-14.11; # UTC
5

    
6
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
7
# Written by Tom Tromey <tromey@cygnus.com>.
8
#
9
# This program is free software; you can redistribute it and/or modify
10
# it under the terms of the GNU General Public License as published by
11
# the Free Software Foundation; either version 2, or (at your option)
12
# any later version.
13
#
14
# This program is distributed in the hope that it will be useful,
15
# but WITHOUT ANY WARRANTY; without even the implied warranty of
16
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17
# GNU General Public License for more details.
18
#
19
# You should have received a copy of the GNU General Public License
20
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
21

    
22
# As a special exception to the GNU General Public License, if you
23
# distribute this file as part of a program that contains a
24
# configuration script generated by Autoconf, you may include it under
25
# the same distribution terms that you use for the rest of that program.
26

    
27
# This file is maintained in Automake, please report
28
# bugs to <bug-automake@gnu.org> or send patches to
29
# <automake-patches@gnu.org>.
30

    
31
nl='
32
'
33

    
34
# We need space, tab and new line, in precisely that order.  Quoting is
35
# there to prevent tools from complaining about whitespace usage.
36
IFS=" ""	$nl"
37

    
38
file_conv=
39

    
40
# func_file_conv build_file lazy
41
# Convert a $build file to $host form and store it in $file
42
# Currently only supports Windows hosts. If the determined conversion
43
# type is listed in (the comma separated) LAZY, no conversion will
44
# take place.
45
func_file_conv ()
46
{
47
  file=$1
48
  case $file in
49
    / | /[!/]*) # absolute file, and not a UNC file
50
      if test -z "$file_conv"; then
51
	# lazily determine how to convert abs files
52
	case `uname -s` in
53
	  MINGW*)
54
	    file_conv=mingw
55
	    ;;
56
	  CYGWIN*)
57
	    file_conv=cygwin
58
	    ;;
59
	  *)
60
	    file_conv=wine
61
	    ;;
62
	esac
63
      fi
64
      case $file_conv/,$2, in
65
	*,$file_conv,*)
66
	  ;;
67
	mingw/*)
68
	  file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
69
	  ;;
70
	cygwin/*)
71
	  file=`cygpath -m "$file" || echo "$file"`
72
	  ;;
73
	wine/*)
74
	  file=`winepath -w "$file" || echo "$file"`
75
	  ;;
76
      esac
77
      ;;
78
  esac
79
}
80

    
81
# func_cl_dashL linkdir
82
# Make cl look for libraries in LINKDIR
83
func_cl_dashL ()
84
{
85
  func_file_conv "$1"
86
  if test -z "$lib_path"; then
87
    lib_path=$file
88
  else
89
    lib_path="$lib_path;$file"
90
  fi
91
  linker_opts="$linker_opts -LIBPATH:$file"
92
}
93

    
94
# func_cl_dashl library
95
# Do a library search-path lookup for cl
96
func_cl_dashl ()
97
{
98
  lib=$1
99
  found=no
100
  save_IFS=$IFS
101
  IFS=';'
102
  for dir in $lib_path $LIB
103
  do
104
    IFS=$save_IFS
105
    if $shared && test -f "$dir/$lib.dll.lib"; then
106
      found=yes
107
      lib=$dir/$lib.dll.lib
108
      break
109
    fi
110
    if test -f "$dir/$lib.lib"; then
111
      found=yes
112
      lib=$dir/$lib.lib
113
      break
114
    fi
115
    if test -f "$dir/lib$lib.a"; then
116
      found=yes
117
      lib=$dir/lib$lib.a
118
      break
119
    fi
120
  done
121
  IFS=$save_IFS
122

    
123
  if test "$found" != yes; then
124
    lib=$lib.lib
125
  fi
126
}
127

    
128
# func_cl_wrapper cl arg...
129
# Adjust compile command to suit cl
130
func_cl_wrapper ()
131
{
132
  # Assume a capable shell
133
  lib_path=
134
  shared=:
135
  linker_opts=
136
  for arg
137
  do
138
    if test -n "$eat"; then
139
      eat=
140
    else
141
      case $1 in
142
	-o)
143
	  # configure might choose to run compile as 'compile cc -o foo foo.c'.
144
	  eat=1
145
	  case $2 in
146
	    *.o | *.[oO][bB][jJ])
147
	      func_file_conv "$2"
148
	      set x "$@" -Fo"$file"
149
	      shift
150
	      ;;
151
	    *)
152
	      func_file_conv "$2"
153
	      set x "$@" -Fe"$file"
154
	      shift
155
	      ;;
156
	  esac
157
	  ;;
158
	-I)
159
	  eat=1
160
	  func_file_conv "$2" mingw
161
	  set x "$@" -I"$file"
162
	  shift
163
	  ;;
164
	-I*)
165
	  func_file_conv "${1#-I}" mingw
166
	  set x "$@" -I"$file"
167
	  shift
168
	  ;;
169
	-l)
170
	  eat=1
171
	  func_cl_dashl "$2"
172
	  set x "$@" "$lib"
173
	  shift
174
	  ;;
175
	-l*)
176
	  func_cl_dashl "${1#-l}"
177
	  set x "$@" "$lib"
178
	  shift
179
	  ;;
180
	-L)
181
	  eat=1
182
	  func_cl_dashL "$2"
183
	  ;;
184
	-L*)
185
	  func_cl_dashL "${1#-L}"
186
	  ;;
187
	-static)
188
	  shared=false
189
	  ;;
190
	-Wl,*)
191
	  arg=${1#-Wl,}
192
	  save_ifs="$IFS"; IFS=','
193
	  for flag in $arg; do
194
	    IFS="$save_ifs"
195
	    linker_opts="$linker_opts $flag"
196
	  done
197
	  IFS="$save_ifs"
198
	  ;;
199
	-Xlinker)
200
	  eat=1
201
	  linker_opts="$linker_opts $2"
202
	  ;;
203
	-*)
204
	  set x "$@" "$1"
205
	  shift
206
	  ;;
207
	*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
208
	  func_file_conv "$1"
209
	  set x "$@" -Tp"$file"
210
	  shift
211
	  ;;
212
	*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
213
	  func_file_conv "$1" mingw
214
	  set x "$@" "$file"
215
	  shift
216
	  ;;
217
	*)
218
	  set x "$@" "$1"
219
	  shift
220
	  ;;
221
      esac
222
    fi
223
    shift
224
  done
225
  if test -n "$linker_opts"; then
226
    linker_opts="-link$linker_opts"
227
  fi
228
  exec "$@" $linker_opts
229
  exit 1
230
}
231

    
232
eat=
233

    
234
case $1 in
235
  '')
236
     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
237
     exit 1;
238
     ;;
239
  -h | --h*)
240
    cat <<\EOF
241
Usage: compile [--help] [--version] PROGRAM [ARGS]
242

    
243
Wrapper for compilers which do not understand '-c -o'.
244
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
245
arguments, and rename the output as expected.
246

    
247
If you are trying to build a whole package this is not the
248
right script to run: please start by reading the file 'INSTALL'.
249

    
250
Report bugs to <bug-automake@gnu.org>.
251
EOF
252
    exit $?
253
    ;;
254
  -v | --v*)
255
    echo "compile $scriptversion"
256
    exit $?
257
    ;;
258
  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
259
    func_cl_wrapper "$@"      # Doesn't return...
260
    ;;
261
esac
262

    
263
ofile=
264
cfile=
265

    
266
for arg
267
do
268
  if test -n "$eat"; then
269
    eat=
270
  else
271
    case $1 in
272
      -o)
273
	# configure might choose to run compile as 'compile cc -o foo foo.c'.
274
	# So we strip '-o arg' only if arg is an object.
275
	eat=1
276
	case $2 in
277
	  *.o | *.obj)
278
	    ofile=$2
279
	    ;;
280
	  *)
281
	    set x "$@" -o "$2"
282
	    shift
283
	    ;;
284
	esac
285
	;;
286
      *.c)
287
	cfile=$1
288
	set x "$@" "$1"
289
	shift
290
	;;
291
      *)
292
	set x "$@" "$1"
293
	shift
294
	;;
295
    esac
296
  fi
297
  shift
298
done
299

    
300
if test -z "$ofile" || test -z "$cfile"; then
301
  # If no '-o' option was seen then we might have been invoked from a
302
  # pattern rule where we don't need one.  That is ok -- this is a
303
  # normal compilation that the losing compiler can handle.  If no
304
  # '.c' file was seen then we are probably linking.  That is also
305
  # ok.
306
  exec "$@"
307
fi
308

    
309
# Name of file we expect compiler to create.
310
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
311

    
312
# Create the lock directory.
313
# Note: use '[/\\:.-]' here to ensure that we don't use the same name
314
# that we are using for the .o file.  Also, base the name on the expected
315
# object file name, since that is what matters with a parallel build.
316
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
317
while true; do
318
  if mkdir "$lockdir" >/dev/null 2>&1; then
319
    break
320
  fi
321
  sleep 1
322
done
323
# FIXME: race condition here if user kills between mkdir and trap.
324
trap "rmdir '$lockdir'; exit 1" 1 2 15
325

    
326
# Run the compile.
327
"$@"
328
ret=$?
329

    
330
if test -f "$cofile"; then
331
  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
332
elif test -f "${cofile}bj"; then
333
  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
334
fi
335

    
336
rmdir "$lockdir"
337
exit $ret
338

    
339
# Local Variables:
340
# mode: shell-script
341
# sh-indentation: 2
342
# eval: (add-hook 'write-file-hooks 'time-stamp)
343
# time-stamp-start: "scriptversion="
344
# time-stamp-format: "%:y-%02m-%02d.%02H"
345
# time-stamp-time-zone: "UTC"
346
# time-stamp-end: "; # UTC"
347
# End: