/[svn]/hopm/trunk/src/libopm/compile
ViewVC logotype

Annotation of /hopm/trunk/src/libopm/compile

Parent Directory Parent Directory | Revision Log Revision Log


Revision 5133 - (hide annotations)
Thu Dec 25 18:36:13 2014 UTC (5 years, 1 month ago) by michael
File size: 7333 byte(s)
- Added missing compile scripts

1 michael 5133 #! /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-2013 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:

Properties

Name Value
svn:executable *

svnadmin@ircd-hybrid.org
ViewVC Help
Powered by ViewVC 1.1.26