Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100755 144 lines (126 sloc) 3.707 kb
6204d1b Masayoshi Sekimura copied some files from autoconf-1.11
authored
1 #! /bin/sh
2 # Wrapper for compilers which do not understand `-c -o'.
3
4 scriptversion=2009-04-28.21; # UTC
5
6 # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009 Free Software
7 # Foundation, Inc.
8 # Written by Tom Tromey <tromey@cygnus.com>.
9 #
10 # This program is free software; you can redistribute it and/or modify
11 # it under the terms of the GNU General Public License as published by
12 # the Free Software Foundation; either version 2, or (at your option)
13 # any later version.
14 #
15 # This program is distributed in the hope that it will be useful,
16 # but WITHOUT ANY WARRANTY; without even the implied warranty of
17 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 # GNU General Public License for more details.
19 #
20 # You should have received a copy of the GNU General Public License
21 # along with this program. If not, see <http://www.gnu.org/licenses/>.
22
23 # As a special exception to the GNU General Public License, if you
24 # distribute this file as part of a program that contains a
25 # configuration script generated by Autoconf, you may include it under
26 # the same distribution terms that you use for the rest of that program.
27
28 # This file is maintained in Automake, please report
29 # bugs to <bug-automake@gnu.org> or send patches to
30 # <automake-patches@gnu.org>.
31
32 case $1 in
33 '')
34 echo "$0: No command. Try \`$0 --help' for more information." 1>&2
35 exit 1;
36 ;;
37 -h | --h*)
38 cat <<\EOF
39 Usage: compile [--help] [--version] PROGRAM [ARGS]
40
41 Wrapper for compilers which do not understand `-c -o'.
42 Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
43 arguments, and rename the output as expected.
44
45 If you are trying to build a whole package this is not the
46 right script to run: please start by reading the file `INSTALL'.
47
48 Report bugs to <bug-automake@gnu.org>.
49 EOF
50 exit $?
51 ;;
52 -v | --v*)
53 echo "compile $scriptversion"
54 exit $?
55 ;;
56 esac
57
58 ofile=
59 cfile=
60 eat=
61
62 for arg
63 do
64 if test -n "$eat"; then
65 eat=
66 else
67 case $1 in
68 -o)
69 # configure might choose to run compile as `compile cc -o foo foo.c'.
70 # So we strip `-o arg' only if arg is an object.
71 eat=1
72 case $2 in
73 *.o | *.obj)
74 ofile=$2
75 ;;
76 *)
77 set x "$@" -o "$2"
78 shift
79 ;;
80 esac
81 ;;
82 *.c)
83 cfile=$1
84 set x "$@" "$1"
85 shift
86 ;;
87 *)
88 set x "$@" "$1"
89 shift
90 ;;
91 esac
92 fi
93 shift
94 done
95
96 if test -z "$ofile" || test -z "$cfile"; then
97 # If no `-o' option was seen then we might have been invoked from a
98 # pattern rule where we don't need one. That is ok -- this is a
99 # normal compilation that the losing compiler can handle. If no
100 # `.c' file was seen then we are probably linking. That is also
101 # ok.
102 exec "$@"
103 fi
104
105 # Name of file we expect compiler to create.
106 cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
107
108 # Create the lock directory.
109 # Note: use `[/\\:.-]' here to ensure that we don't use the same name
110 # that we are using for the .o file. Also, base the name on the expected
111 # object file name, since that is what matters with a parallel build.
112 lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
113 while true; do
114 if mkdir "$lockdir" >/dev/null 2>&1; then
115 break
116 fi
117 sleep 1
118 done
119 # FIXME: race condition here if user kills between mkdir and trap.
120 trap "rmdir '$lockdir'; exit 1" 1 2 15
121
122 # Run the compile.
123 "$@"
124 ret=$?
125
126 if test -f "$cofile"; then
127 mv "$cofile" "$ofile"
128 elif test -f "${cofile}bj"; then
129 mv "${cofile}bj" "$ofile"
130 fi
131
132 rmdir "$lockdir"
133 exit $ret
134
135 # Local Variables:
136 # mode: shell-script
137 # sh-indentation: 2
138 # eval: (add-hook 'write-file-hooks 'time-stamp)
139 # time-stamp-start: "scriptversion="
140 # time-stamp-format: "%:y-%02m-%02d.%02H"
141 # time-stamp-time-zone: "UTC"
142 # time-stamp-end: "; # UTC"
143 # End:
Something went wrong with that request. Please try again.