Browse code
remove symlinks
Showing 8 changed files
3 | 1 |
new file mode 100755 |
... | ... |
@@ -0,0 +1,347 @@ |
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: |
3 | 1 |
new file mode 100755 |
... | ... |
@@ -0,0 +1,791 @@ |
1 |
+#! /bin/sh |
|
2 |
+# depcomp - compile a program generating dependencies as side-effects |
|
3 |
+ |
|
4 |
+scriptversion=2013-05-30.07; # UTC |
|
5 |
+ |
|
6 |
+# Copyright (C) 1999-2014 Free Software Foundation, Inc. |
|
7 |
+ |
|
8 |
+# This program is free software; you can redistribute it and/or modify |
|
9 |
+# it under the terms of the GNU General Public License as published by |
|
10 |
+# the Free Software Foundation; either version 2, or (at your option) |
|
11 |
+# any later version. |
|
12 |
+ |
|
13 |
+# This program is distributed in the hope that it will be useful, |
|
14 |
+# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
15 |
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
16 |
+# GNU General Public License for more details. |
|
17 |
+ |
|
18 |
+# You should have received a copy of the GNU General Public License |
|
19 |
+# along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
20 |
+ |
|
21 |
+# As a special exception to the GNU General Public License, if you |
|
22 |
+# distribute this file as part of a program that contains a |
|
23 |
+# configuration script generated by Autoconf, you may include it under |
|
24 |
+# the same distribution terms that you use for the rest of that program. |
|
25 |
+ |
|
26 |
+# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. |
|
27 |
+ |
|
28 |
+case $1 in |
|
29 |
+ '') |
|
30 |
+ echo "$0: No command. Try '$0 --help' for more information." 1>&2 |
|
31 |
+ exit 1; |
|
32 |
+ ;; |
|
33 |
+ -h | --h*) |
|
34 |
+ cat <<\EOF |
|
35 |
+Usage: depcomp [--help] [--version] PROGRAM [ARGS] |
|
36 |
+ |
|
37 |
+Run PROGRAMS ARGS to compile a file, generating dependencies |
|
38 |
+as side-effects. |
|
39 |
+ |
|
40 |
+Environment variables: |
|
41 |
+ depmode Dependency tracking mode. |
|
42 |
+ source Source file read by 'PROGRAMS ARGS'. |
|
43 |
+ object Object file output by 'PROGRAMS ARGS'. |
|
44 |
+ DEPDIR directory where to store dependencies. |
|
45 |
+ depfile Dependency file to output. |
|
46 |
+ tmpdepfile Temporary file to use when outputting dependencies. |
|
47 |
+ libtool Whether libtool is used (yes/no). |
|
48 |
+ |
|
49 |
+Report bugs to <bug-automake@gnu.org>. |
|
50 |
+EOF |
|
51 |
+ exit $? |
|
52 |
+ ;; |
|
53 |
+ -v | --v*) |
|
54 |
+ echo "depcomp $scriptversion" |
|
55 |
+ exit $? |
|
56 |
+ ;; |
|
57 |
+esac |
|
58 |
+ |
|
59 |
+# Get the directory component of the given path, and save it in the |
|
60 |
+# global variables '$dir'. Note that this directory component will |
|
61 |
+# be either empty or ending with a '/' character. This is deliberate. |
|
62 |
+set_dir_from () |
|
63 |
+{ |
|
64 |
+ case $1 in |
|
65 |
+ */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; |
|
66 |
+ *) dir=;; |
|
67 |
+ esac |
|
68 |
+} |
|
69 |
+ |
|
70 |
+# Get the suffix-stripped basename of the given path, and save it the |
|
71 |
+# global variable '$base'. |
|
72 |
+set_base_from () |
|
73 |
+{ |
|
74 |
+ base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` |
|
75 |
+} |
|
76 |
+ |
|
77 |
+# If no dependency file was actually created by the compiler invocation, |
|
78 |
+# we still have to create a dummy depfile, to avoid errors with the |
|
79 |
+# Makefile "include basename.Plo" scheme. |
|
80 |
+make_dummy_depfile () |
|
81 |
+{ |
|
82 |
+ echo "#dummy" > "$depfile" |
|
83 |
+} |
|
84 |
+ |
|
85 |
+# Factor out some common post-processing of the generated depfile. |
|
86 |
+# Requires the auxiliary global variable '$tmpdepfile' to be set. |
|
87 |
+aix_post_process_depfile () |
|
88 |
+{ |
|
89 |
+ # If the compiler actually managed to produce a dependency file, |
|
90 |
+ # post-process it. |
|
91 |
+ if test -f "$tmpdepfile"; then |
|
92 |
+ # Each line is of the form 'foo.o: dependency.h'. |
|
93 |
+ # Do two passes, one to just change these to |
|
94 |
+ # $object: dependency.h |
|
95 |
+ # and one to simply output |
|
96 |
+ # dependency.h: |
|
97 |
+ # which is needed to avoid the deleted-header problem. |
|
98 |
+ { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" |
|
99 |
+ sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" |
|
100 |
+ } > "$depfile" |
|
101 |
+ rm -f "$tmpdepfile" |
|
102 |
+ else |
|
103 |
+ make_dummy_depfile |
|
104 |
+ fi |
|
105 |
+} |
|
106 |
+ |
|
107 |
+# A tabulation character. |
|
108 |
+tab=' ' |
|
109 |
+# A newline character. |
|
110 |
+nl=' |
|
111 |
+' |
|
112 |
+# Character ranges might be problematic outside the C locale. |
|
113 |
+# These definitions help. |
|
114 |
+upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ |
|
115 |
+lower=abcdefghijklmnopqrstuvwxyz |
|
116 |
+digits=0123456789 |
|
117 |
+alpha=${upper}${lower} |
|
118 |
+ |
|
119 |
+if test -z "$depmode" || test -z "$source" || test -z "$object"; then |
|
120 |
+ echo "depcomp: Variables source, object and depmode must be set" 1>&2 |
|
121 |
+ exit 1 |
|
122 |
+fi |
|
123 |
+ |
|
124 |
+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. |
|
125 |
+depfile=${depfile-`echo "$object" | |
|
126 |
+ sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} |
|
127 |
+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} |
|
128 |
+ |
|
129 |
+rm -f "$tmpdepfile" |
|
130 |
+ |
|
131 |
+# Avoid interferences from the environment. |
|
132 |
+gccflag= dashmflag= |
|
133 |
+ |
|
134 |
+# Some modes work just like other modes, but use different flags. We |
|
135 |
+# parameterize here, but still list the modes in the big case below, |
|
136 |
+# to make depend.m4 easier to write. Note that we *cannot* use a case |
|
137 |
+# here, because this file can only contain one case statement. |
|
138 |
+if test "$depmode" = hp; then |
|
139 |
+ # HP compiler uses -M and no extra arg. |
|
140 |
+ gccflag=-M |
|
141 |
+ depmode=gcc |
|
142 |
+fi |
|
143 |
+ |
|
144 |
+if test "$depmode" = dashXmstdout; then |
|
145 |
+ # This is just like dashmstdout with a different argument. |
|
146 |
+ dashmflag=-xM |
|
147 |
+ depmode=dashmstdout |
|
148 |
+fi |
|
149 |
+ |
|
150 |
+cygpath_u="cygpath -u -f -" |
|
151 |
+if test "$depmode" = msvcmsys; then |
|
152 |
+ # This is just like msvisualcpp but w/o cygpath translation. |
|
153 |
+ # Just convert the backslash-escaped backslashes to single forward |
|
154 |
+ # slashes to satisfy depend.m4 |
|
155 |
+ cygpath_u='sed s,\\\\,/,g' |
|
156 |
+ depmode=msvisualcpp |
|
157 |
+fi |
|
158 |
+ |
|
159 |
+if test "$depmode" = msvc7msys; then |
|
160 |
+ # This is just like msvc7 but w/o cygpath translation. |
|
161 |
+ # Just convert the backslash-escaped backslashes to single forward |
|
162 |
+ # slashes to satisfy depend.m4 |
|
163 |
+ cygpath_u='sed s,\\\\,/,g' |
|
164 |
+ depmode=msvc7 |
|
165 |
+fi |
|
166 |
+ |
|
167 |
+if test "$depmode" = xlc; then |
|
168 |
+ # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. |
|
169 |
+ gccflag=-qmakedep=gcc,-MF |
|
170 |
+ depmode=gcc |
|
171 |
+fi |
|
172 |
+ |
|
173 |
+case "$depmode" in |
|
174 |
+gcc3) |
|
175 |
+## gcc 3 implements dependency tracking that does exactly what |
|
176 |
+## we want. Yay! Note: for some reason libtool 1.4 doesn't like |
|
177 |
+## it if -MD -MP comes after the -MF stuff. Hmm. |
|
178 |
+## Unfortunately, FreeBSD c89 acceptance of flags depends upon |
|
179 |
+## the command line argument order; so add the flags where they |
|
180 |
+## appear in depend2.am. Note that the slowdown incurred here |
|
181 |
+## affects only configure: in makefiles, %FASTDEP% shortcuts this. |
|
182 |
+ for arg |
|
183 |
+ do |
|
184 |
+ case $arg in |
|
185 |
+ -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; |
|
186 |
+ *) set fnord "$@" "$arg" ;; |
|
187 |
+ esac |
|
188 |
+ shift # fnord |
|
189 |
+ shift # $arg |
|
190 |
+ done |
|
191 |
+ "$@" |
|
192 |
+ stat=$? |
|
193 |
+ if test $stat -ne 0; then |
|
194 |
+ rm -f "$tmpdepfile" |
|
195 |
+ exit $stat |
|
196 |
+ fi |
|
197 |
+ mv "$tmpdepfile" "$depfile" |
|
198 |
+ ;; |
|
199 |
+ |
|
200 |
+gcc) |
|
201 |
+## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. |
|
202 |
+## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. |
|
203 |
+## (see the conditional assignment to $gccflag above). |
|
204 |
+## There are various ways to get dependency output from gcc. Here's |
|
205 |
+## why we pick this rather obscure method: |
|
206 |
+## - Don't want to use -MD because we'd like the dependencies to end |
|
207 |
+## up in a subdir. Having to rename by hand is ugly. |
|
208 |
+## (We might end up doing this anyway to support other compilers.) |
|
209 |
+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like |
|
210 |
+## -MM, not -M (despite what the docs say). Also, it might not be |
|
211 |
+## supported by the other compilers which use the 'gcc' depmode. |
|
212 |
+## - Using -M directly means running the compiler twice (even worse |
|
213 |
+## than renaming). |
|
214 |
+ if test -z "$gccflag"; then |
|
215 |
+ gccflag=-MD, |
|
216 |
+ fi |
|
217 |
+ "$@" -Wp,"$gccflag$tmpdepfile" |
|
218 |
+ stat=$? |
|
219 |
+ if test $stat -ne 0; then |
|
220 |
+ rm -f "$tmpdepfile" |
|
221 |
+ exit $stat |
|
222 |
+ fi |
|
223 |
+ rm -f "$depfile" |
|
224 |
+ echo "$object : \\" > "$depfile" |
|
225 |
+ # The second -e expression handles DOS-style file names with drive |
|
226 |
+ # letters. |
|
227 |
+ sed -e 's/^[^:]*: / /' \ |
|
228 |
+ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" |
|
229 |
+## This next piece of magic avoids the "deleted header file" problem. |
|
230 |
+## The problem is that when a header file which appears in a .P file |
|
231 |
+## is deleted, the dependency causes make to die (because there is |
|
232 |
+## typically no way to rebuild the header). We avoid this by adding |
|
233 |
+## dummy dependencies for each header file. Too bad gcc doesn't do |
|
234 |
+## this for us directly. |
|
235 |
+## Some versions of gcc put a space before the ':'. On the theory |
|
236 |
+## that the space means something, we add a space to the output as |
|
237 |
+## well. hp depmode also adds that space, but also prefixes the VPATH |
|
238 |
+## to the object. Take care to not repeat it in the output. |
|
239 |
+## Some versions of the HPUX 10.20 sed can't process this invocation |
|
240 |
+## correctly. Breaking it into two sed invocations is a workaround. |
|
241 |
+ tr ' ' "$nl" < "$tmpdepfile" \ |
|
242 |
+ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ |
|
243 |
+ | sed -e 's/$/ :/' >> "$depfile" |
|
244 |
+ rm -f "$tmpdepfile" |
|
245 |
+ ;; |
|
246 |
+ |
|
247 |
+hp) |
|
248 |
+ # This case exists only to let depend.m4 do its work. It works by |
|
249 |
+ # looking at the text of this script. This case will never be run, |
|
250 |
+ # since it is checked for above. |
|
251 |
+ exit 1 |
|
252 |
+ ;; |
|
253 |
+ |
|
254 |
+sgi) |
|
255 |
+ if test "$libtool" = yes; then |
|
256 |
+ "$@" "-Wp,-MDupdate,$tmpdepfile" |
|
257 |
+ else |
|
258 |
+ "$@" -MDupdate "$tmpdepfile" |
|
259 |
+ fi |
|
260 |
+ stat=$? |
|
261 |
+ if test $stat -ne 0; then |
|
262 |
+ rm -f "$tmpdepfile" |
|
263 |
+ exit $stat |
|
264 |
+ fi |
|
265 |
+ rm -f "$depfile" |
|
266 |
+ |
|
267 |
+ if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files |
|
268 |
+ echo "$object : \\" > "$depfile" |
|
269 |
+ # Clip off the initial element (the dependent). Don't try to be |
|
270 |
+ # clever and replace this with sed code, as IRIX sed won't handle |
|
271 |
+ # lines with more than a fixed number of characters (4096 in |
|
272 |
+ # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; |
|
273 |
+ # the IRIX cc adds comments like '#:fec' to the end of the |
|
274 |
+ # dependency line. |
|
275 |
+ tr ' ' "$nl" < "$tmpdepfile" \ |
|
276 |
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ |
|
277 |
+ | tr "$nl" ' ' >> "$depfile" |
|
278 |
+ echo >> "$depfile" |
|
279 |
+ # The second pass generates a dummy entry for each header file. |
|
280 |
+ tr ' ' "$nl" < "$tmpdepfile" \ |
|
281 |
+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ |
|
282 |
+ >> "$depfile" |
|
283 |
+ else |
|
284 |
+ make_dummy_depfile |
|
285 |
+ fi |
|
286 |
+ rm -f "$tmpdepfile" |
|
287 |
+ ;; |
|
288 |
+ |
|
289 |
+xlc) |
|
290 |
+ # This case exists only to let depend.m4 do its work. It works by |
|
291 |
+ # looking at the text of this script. This case will never be run, |
|
292 |
+ # since it is checked for above. |
|
293 |
+ exit 1 |
|
294 |
+ ;; |
|
295 |
+ |
|
296 |
+aix) |
|
297 |
+ # The C for AIX Compiler uses -M and outputs the dependencies |
|
298 |
+ # in a .u file. In older versions, this file always lives in the |
|
299 |
+ # current directory. Also, the AIX compiler puts '$object:' at the |
|
300 |
+ # start of each line; $object doesn't have directory information. |
|
301 |
+ # Version 6 uses the directory in both cases. |
|
302 |
+ set_dir_from "$object" |
|
303 |
+ set_base_from "$object" |
|
304 |
+ if test "$libtool" = yes; then |
|
305 |
+ tmpdepfile1=$dir$base.u |
|
306 |
+ tmpdepfile2=$base.u |
|
307 |
+ tmpdepfile3=$dir.libs/$base.u |
|
308 |
+ "$@" -Wc,-M |
|
309 |
+ else |
|
310 |
+ tmpdepfile1=$dir$base.u |
|
311 |
+ tmpdepfile2=$dir$base.u |
|
312 |
+ tmpdepfile3=$dir$base.u |
|
313 |
+ "$@" -M |
|
314 |
+ fi |
|
315 |
+ stat=$? |
|
316 |
+ if test $stat -ne 0; then |
|
317 |
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" |
|
318 |
+ exit $stat |
|
319 |
+ fi |
|
320 |
+ |
|
321 |
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" |
|
322 |
+ do |
|
323 |
+ test -f "$tmpdepfile" && break |
|
324 |
+ done |
|
325 |
+ aix_post_process_depfile |
|
326 |
+ ;; |
|
327 |
+ |
|
328 |
+tcc) |
|
329 |
+ # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 |
|
330 |
+ # FIXME: That version still under development at the moment of writing. |
|
331 |
+ # Make that this statement remains true also for stable, released |
|
332 |
+ # versions. |
|
333 |
+ # It will wrap lines (doesn't matter whether long or short) with a |
|
334 |
+ # trailing '\', as in: |
|
335 |
+ # |
|
336 |
+ # foo.o : \ |
|
337 |
+ # foo.c \ |
|
338 |
+ # foo.h \ |
|
339 |
+ # |
|
340 |
+ # It will put a trailing '\' even on the last line, and will use leading |
|
341 |
+ # spaces rather than leading tabs (at least since its commit 0394caf7 |
|
342 |
+ # "Emit spaces for -MD"). |
|
343 |
+ "$@" -MD -MF "$tmpdepfile" |
|
344 |
+ stat=$? |
|
345 |
+ if test $stat -ne 0; then |
|
346 |
+ rm -f "$tmpdepfile" |
|
347 |
+ exit $stat |
|
348 |
+ fi |
|
349 |
+ rm -f "$depfile" |
|
350 |
+ # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. |
|
351 |
+ # We have to change lines of the first kind to '$object: \'. |
|
352 |
+ sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" |
|
353 |
+ # And for each line of the second kind, we have to emit a 'dep.h:' |
|
354 |
+ # dummy dependency, to avoid the deleted-header problem. |
|
355 |
+ sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" |
|
356 |
+ rm -f "$tmpdepfile" |
|
357 |
+ ;; |
|
358 |
+ |
|
359 |
+## The order of this option in the case statement is important, since the |
|
360 |
+## shell code in configure will try each of these formats in the order |
|
361 |
+## listed in this file. A plain '-MD' option would be understood by many |
|
362 |
+## compilers, so we must ensure this comes after the gcc and icc options. |
|
363 |
+pgcc) |
|
364 |
+ # Portland's C compiler understands '-MD'. |
|
365 |
+ # Will always output deps to 'file.d' where file is the root name of the |
|
366 |
+ # source file under compilation, even if file resides in a subdirectory. |
|
367 |
+ # The object file name does not affect the name of the '.d' file. |
|
368 |
+ # pgcc 10.2 will output |
|
369 |
+ # foo.o: sub/foo.c sub/foo.h |
|
370 |
+ # and will wrap long lines using '\' : |
|
371 |
+ # foo.o: sub/foo.c ... \ |
|
372 |
+ # sub/foo.h ... \ |
|
373 |
+ # ... |
|
374 |
+ set_dir_from "$object" |
|
375 |
+ # Use the source, not the object, to determine the base name, since |
|
376 |
+ # that's sadly what pgcc will do too. |
|
377 |
+ set_base_from "$source" |
|
378 |
+ tmpdepfile=$base.d |
|
379 |
+ |
|
380 |
+ # For projects that build the same source file twice into different object |
|
381 |
+ # files, the pgcc approach of using the *source* file root name can cause |
|
382 |
+ # problems in parallel builds. Use a locking strategy to avoid stomping on |
|
383 |
+ # the same $tmpdepfile. |
|
384 |
+ lockdir=$base.d-lock |
|
385 |
+ trap " |
|
386 |
+ echo '$0: caught signal, cleaning up...' >&2 |
|
387 |
+ rmdir '$lockdir' |
|
388 |
+ exit 1 |
|
389 |
+ " 1 2 13 15 |
|
390 |
+ numtries=100 |
|
391 |
+ i=$numtries |
|
392 |
+ while test $i -gt 0; do |
|
393 |
+ # mkdir is a portable test-and-set. |
|
394 |
+ if mkdir "$lockdir" 2>/dev/null; then |
|
395 |
+ # This process acquired the lock. |
|
396 |
+ "$@" -MD |
|
397 |
+ stat=$? |
|
398 |
+ # Release the lock. |
|
399 |
+ rmdir "$lockdir" |
|
400 |
+ break |
|
401 |
+ else |
|
402 |
+ # If the lock is being held by a different process, wait |
|
403 |
+ # until the winning process is done or we timeout. |
|
404 |
+ while test -d "$lockdir" && test $i -gt 0; do |
|
405 |
+ sleep 1 |
|
406 |
+ i=`expr $i - 1` |
|
407 |
+ done |
|
408 |
+ fi |
|
409 |
+ i=`expr $i - 1` |
|
410 |
+ done |
|
411 |
+ trap - 1 2 13 15 |
|
412 |
+ if test $i -le 0; then |
|
413 |
+ echo "$0: failed to acquire lock after $numtries attempts" >&2 |
|
414 |
+ echo "$0: check lockdir '$lockdir'" >&2 |
|
415 |
+ exit 1 |
|
416 |
+ fi |
|
417 |
+ |
|
418 |
+ if test $stat -ne 0; then |
|
419 |
+ rm -f "$tmpdepfile" |
|
420 |
+ exit $stat |
|
421 |
+ fi |
|
422 |
+ rm -f "$depfile" |
|
423 |
+ # Each line is of the form `foo.o: dependent.h', |
|
424 |
+ # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. |
|
425 |
+ # Do two passes, one to just change these to |
|
426 |
+ # `$object: dependent.h' and one to simply `dependent.h:'. |
|
427 |
+ sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" |
|
428 |
+ # Some versions of the HPUX 10.20 sed can't process this invocation |
|
429 |
+ # correctly. Breaking it into two sed invocations is a workaround. |
|
430 |
+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ |
|
431 |
+ | sed -e 's/$/ :/' >> "$depfile" |
|
432 |
+ rm -f "$tmpdepfile" |
|
433 |
+ ;; |
|
434 |
+ |
|
435 |
+hp2) |
|
436 |
+ # The "hp" stanza above does not work with aCC (C++) and HP's ia64 |
|
437 |
+ # compilers, which have integrated preprocessors. The correct option |
|
438 |
+ # to use with these is +Maked; it writes dependencies to a file named |
|
439 |
+ # 'foo.d', which lands next to the object file, wherever that |
|
440 |
+ # happens to be. |
|
441 |
+ # Much of this is similar to the tru64 case; see comments there. |
|
442 |
+ set_dir_from "$object" |
|
443 |
+ set_base_from "$object" |
|
444 |
+ if test "$libtool" = yes; then |
|
445 |
+ tmpdepfile1=$dir$base.d |
|
446 |
+ tmpdepfile2=$dir.libs/$base.d |
|
447 |
+ "$@" -Wc,+Maked |
|
448 |
+ else |
|
449 |
+ tmpdepfile1=$dir$base.d |
|
450 |
+ tmpdepfile2=$dir$base.d |
|
451 |
+ "$@" +Maked |
|
452 |
+ fi |
|
453 |
+ stat=$? |
|
454 |
+ if test $stat -ne 0; then |
|
455 |
+ rm -f "$tmpdepfile1" "$tmpdepfile2" |
|
456 |
+ exit $stat |
|
457 |
+ fi |
|
458 |
+ |
|
459 |
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" |
|
460 |
+ do |
|
461 |
+ test -f "$tmpdepfile" && break |
|
462 |
+ done |
|
463 |
+ if test -f "$tmpdepfile"; then |
|
464 |
+ sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" |
|
465 |
+ # Add 'dependent.h:' lines. |
|
466 |
+ sed -ne '2,${ |
|
467 |
+ s/^ *// |
|
468 |
+ s/ \\*$// |
|
469 |
+ s/$/:/ |
|
470 |
+ p |
|
471 |
+ }' "$tmpdepfile" >> "$depfile" |
|
472 |
+ else |
|
473 |
+ make_dummy_depfile |
|
474 |
+ fi |
|
475 |
+ rm -f "$tmpdepfile" "$tmpdepfile2" |
|
476 |
+ ;; |
|
477 |
+ |
|
478 |
+tru64) |
|
479 |
+ # The Tru64 compiler uses -MD to generate dependencies as a side |
|
480 |
+ # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. |
|
481 |
+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put |
|
482 |
+ # dependencies in 'foo.d' instead, so we check for that too. |
|
483 |
+ # Subdirectories are respected. |
|
484 |
+ set_dir_from "$object" |
|
485 |
+ set_base_from "$object" |
|
486 |
+ |
|
487 |
+ if test "$libtool" = yes; then |
|
488 |
+ # Libtool generates 2 separate objects for the 2 libraries. These |
|
489 |
+ # two compilations output dependencies in $dir.libs/$base.o.d and |
|
490 |
+ # in $dir$base.o.d. We have to check for both files, because |
|
491 |
+ # one of the two compilations can be disabled. We should prefer |
|
492 |
+ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is |
|
493 |
+ # automatically cleaned when .libs/ is deleted, while ignoring |
|
494 |
+ # the former would cause a distcleancheck panic. |
|
495 |
+ tmpdepfile1=$dir$base.o.d # libtool 1.5 |
|
496 |
+ tmpdepfile2=$dir.libs/$base.o.d # Likewise. |
|
497 |
+ tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 |
|
498 |
+ "$@" -Wc,-MD |
|
499 |
+ else |
|
500 |
+ tmpdepfile1=$dir$base.d |
|
501 |
+ tmpdepfile2=$dir$base.d |
|
502 |
+ tmpdepfile3=$dir$base.d |
|
503 |
+ "$@" -MD |
|
504 |
+ fi |
|
505 |
+ |
|
506 |
+ stat=$? |
|
507 |
+ if test $stat -ne 0; then |
|
508 |
+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" |
|
509 |
+ exit $stat |
|
510 |
+ fi |
|
511 |
+ |
|
512 |
+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" |
|
513 |
+ do |
|
514 |
+ test -f "$tmpdepfile" && break |
|
515 |
+ done |
|
516 |
+ # Same post-processing that is required for AIX mode. |
|
517 |
+ aix_post_process_depfile |
|
518 |
+ ;; |
|
519 |
+ |
|
520 |
+msvc7) |
|
521 |
+ if test "$libtool" = yes; then |
|
522 |
+ showIncludes=-Wc,-showIncludes |
|
523 |
+ else |
|
524 |
+ showIncludes=-showIncludes |
|
525 |
+ fi |
|
526 |
+ "$@" $showIncludes > "$tmpdepfile" |
|
527 |
+ stat=$? |
|
528 |
+ grep -v '^Note: including file: ' "$tmpdepfile" |
|
529 |
+ if test $stat -ne 0; then |
|
530 |
+ rm -f "$tmpdepfile" |
|
531 |
+ exit $stat |
|
532 |
+ fi |
|
533 |
+ rm -f "$depfile" |
|
534 |
+ echo "$object : \\" > "$depfile" |
|
535 |
+ # The first sed program below extracts the file names and escapes |
|
536 |
+ # backslashes for cygpath. The second sed program outputs the file |
|
537 |
+ # name when reading, but also accumulates all include files in the |
|
538 |
+ # hold buffer in order to output them again at the end. This only |
|
539 |
+ # works with sed implementations that can handle large buffers. |
|
540 |
+ sed < "$tmpdepfile" -n ' |
|
541 |
+/^Note: including file: *\(.*\)/ { |
|
542 |
+ s//\1/ |
|
543 |
+ s/\\/\\\\/g |
|
544 |
+ p |
|
545 |
+}' | $cygpath_u | sort -u | sed -n ' |
|
546 |
+s/ /\\ /g |
|
547 |
+s/\(.*\)/'"$tab"'\1 \\/p |
|
548 |
+s/.\(.*\) \\/\1:/ |
|
549 |
+H |
|
550 |
+$ { |
|
551 |
+ s/.*/'"$tab"'/ |
|
552 |
+ G |
|
553 |
+ p |
|
554 |
+}' >> "$depfile" |
|
555 |
+ echo >> "$depfile" # make sure the fragment doesn't end with a backslash |
|
556 |
+ rm -f "$tmpdepfile" |
|
557 |
+ ;; |
|
558 |
+ |
|
559 |
+msvc7msys) |
|
560 |
+ # This case exists only to let depend.m4 do its work. It works by |
|
561 |
+ # looking at the text of this script. This case will never be run, |
|
562 |
+ # since it is checked for above. |
|
563 |
+ exit 1 |
|
564 |
+ ;; |
|
565 |
+ |
|
566 |
+#nosideeffect) |
|
567 |
+ # This comment above is used by automake to tell side-effect |
|
568 |
+ # dependency tracking mechanisms from slower ones. |
|
569 |
+ |
|
570 |
+dashmstdout) |
|
571 |
+ # Important note: in order to support this mode, a compiler *must* |
|
572 |
+ # always write the preprocessed file to stdout, regardless of -o. |
|
573 |
+ "$@" || exit $? |
|
574 |
+ |
|
575 |
+ # Remove the call to Libtool. |
|
576 |
+ if test "$libtool" = yes; then |
|
577 |
+ while test "X$1" != 'X--mode=compile'; do |
|
578 |
+ shift |
|
579 |
+ done |
|
580 |
+ shift |
|
581 |
+ fi |
|
582 |
+ |
|
583 |
+ # Remove '-o $object'. |
|
584 |
+ IFS=" " |
|
585 |
+ for arg |
|
586 |
+ do |
|
587 |
+ case $arg in |
|
588 |
+ -o) |
|
589 |
+ shift |
|
590 |
+ ;; |
|
591 |
+ $object) |
|
592 |
+ shift |
|
593 |
+ ;; |
|
594 |
+ *) |
|
595 |
+ set fnord "$@" "$arg" |
|
596 |
+ shift # fnord |
|
597 |
+ shift # $arg |
|
598 |
+ ;; |
|
599 |
+ esac |
|
600 |
+ done |
|
601 |
+ |
|
602 |
+ test -z "$dashmflag" && dashmflag=-M |
|
603 |
+ # Require at least two characters before searching for ':' |
|
604 |
+ # in the target name. This is to cope with DOS-style filenames: |
|
605 |
+ # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. |
|
606 |
+ "$@" $dashmflag | |
|
607 |
+ sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" |
|
608 |
+ rm -f "$depfile" |
|
609 |
+ cat < "$tmpdepfile" > "$depfile" |
|
610 |
+ # Some versions of the HPUX 10.20 sed can't process this sed invocation |
|
611 |
+ # correctly. Breaking it into two sed invocations is a workaround. |
|
612 |
+ tr ' ' "$nl" < "$tmpdepfile" \ |
|
613 |
+ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ |
|
614 |
+ | sed -e 's/$/ :/' >> "$depfile" |
|
615 |
+ rm -f "$tmpdepfile" |
|
616 |
+ ;; |
|
617 |
+ |
|
618 |
+dashXmstdout) |
|
619 |
+ # This case only exists to satisfy depend.m4. It is never actually |
|
620 |
+ # run, as this mode is specially recognized in the preamble. |
|
621 |
+ exit 1 |
|
622 |
+ ;; |
|
623 |
+ |
|
624 |
+makedepend) |
|
625 |
+ "$@" || exit $? |
|
626 |
+ # Remove any Libtool call |
|
627 |
+ if test "$libtool" = yes; then |
|
628 |
+ while test "X$1" != 'X--mode=compile'; do |
|
629 |
+ shift |
|
630 |
+ done |
|
631 |
+ shift |
|
632 |
+ fi |
|
633 |
+ # X makedepend |
|
634 |
+ shift |
|
635 |
+ cleared=no eat=no |
|
636 |
+ for arg |
|
637 |
+ do |
|
638 |
+ case $cleared in |
|
639 |
+ no) |
|
640 |
+ set ""; shift |
|
641 |
+ cleared=yes ;; |
|
642 |
+ esac |
|
643 |
+ if test $eat = yes; then |
|
644 |
+ eat=no |
|
645 |
+ continue |
|
646 |
+ fi |
|
647 |
+ case "$arg" in |
|
648 |
+ -D*|-I*) |
|
649 |
+ set fnord "$@" "$arg"; shift ;; |
|
650 |
+ # Strip any option that makedepend may not understand. Remove |
|
651 |
+ # the object too, otherwise makedepend will parse it as a source file. |
|
652 |
+ -arch) |
|
653 |
+ eat=yes ;; |
|
654 |
+ -*|$object) |
|
655 |
+ ;; |
|
656 |
+ *) |
|
657 |
+ set fnord "$@" "$arg"; shift ;; |
|
658 |
+ esac |
|
659 |
+ done |
|
660 |
+ obj_suffix=`echo "$object" | sed 's/^.*\././'` |
|
661 |
+ touch "$tmpdepfile" |
|
662 |
+ ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" |
|
663 |
+ rm -f "$depfile" |
|
664 |
+ # makedepend may prepend the VPATH from the source file name to the object. |
|
665 |
+ # No need to regex-escape $object, excess matching of '.' is harmless. |
|
666 |
+ sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" |
|
667 |
+ # Some versions of the HPUX 10.20 sed can't process the last invocation |
|
668 |
+ # correctly. Breaking it into two sed invocations is a workaround. |
|
669 |
+ sed '1,2d' "$tmpdepfile" \ |
|
670 |
+ | tr ' ' "$nl" \ |
|
671 |
+ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ |
|
672 |
+ | sed -e 's/$/ :/' >> "$depfile" |
|
673 |
+ rm -f "$tmpdepfile" "$tmpdepfile".bak |
|
674 |
+ ;; |
|
675 |
+ |
|
676 |
+cpp) |
|
677 |
+ # Important note: in order to support this mode, a compiler *must* |
|
678 |
+ # always write the preprocessed file to stdout. |
|
679 |
+ "$@" || exit $? |
|
680 |
+ |
|
681 |
+ # Remove the call to Libtool. |
|
682 |
+ if test "$libtool" = yes; then |
|
683 |
+ while test "X$1" != 'X--mode=compile'; do |
|
684 |
+ shift |
|
685 |
+ done |
|
686 |
+ shift |
|
687 |
+ fi |
|
688 |
+ |
|
689 |
+ # Remove '-o $object'. |
|
690 |
+ IFS=" " |
|
691 |
+ for arg |
|
692 |
+ do |
|
693 |
+ case $arg in |
|
694 |
+ -o) |
|
695 |
+ shift |
|
696 |
+ ;; |
|
697 |
+ $object) |
|
698 |
+ shift |
|
699 |
+ ;; |
|
700 |
+ *) |
|
701 |
+ set fnord "$@" "$arg" |
|
702 |
+ shift # fnord |
|
703 |
+ shift # $arg |
|
704 |
+ ;; |
|
705 |
+ esac |
|
706 |
+ done |
|
707 |
+ |
|
708 |
+ "$@" -E \ |
|
709 |
+ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ |
|
710 |
+ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ |
|
711 |
+ | sed '$ s: \\$::' > "$tmpdepfile" |
|
712 |
+ rm -f "$depfile" |
|
713 |
+ echo "$object : \\" > "$depfile" |
|
714 |
+ cat < "$tmpdepfile" >> "$depfile" |
|
715 |
+ sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" |
|
716 |
+ rm -f "$tmpdepfile" |
|
717 |
+ ;; |
|
718 |
+ |
|
719 |
+msvisualcpp) |
|
720 |
+ # Important note: in order to support this mode, a compiler *must* |
|
721 |
+ # always write the preprocessed file to stdout. |
|
722 |
+ "$@" || exit $? |
|
723 |
+ |
|
724 |
+ # Remove the call to Libtool. |
|
725 |
+ if test "$libtool" = yes; then |
|
726 |
+ while test "X$1" != 'X--mode=compile'; do |
|
727 |
+ shift |
|
728 |
+ done |
|
729 |
+ shift |
|
730 |
+ fi |
|
731 |
+ |
|
732 |
+ IFS=" " |
|
733 |
+ for arg |
|
734 |
+ do |
|
735 |
+ case "$arg" in |
|
736 |
+ -o) |
|
737 |
+ shift |
|
738 |
+ ;; |
|
739 |
+ $object) |
|
740 |
+ shift |
|
741 |
+ ;; |
|
742 |
+ "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") |
|
743 |
+ set fnord "$@" |
|
744 |
+ shift |
|
745 |
+ shift |
|
746 |
+ ;; |
|
747 |
+ *) |
|
748 |
+ set fnord "$@" "$arg" |
|
749 |
+ shift |
|
750 |
+ shift |
|
751 |
+ ;; |
|
752 |
+ esac |
|
753 |
+ done |
|
754 |
+ "$@" -E 2>/dev/null | |
|
755 |
+ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" |
|
756 |
+ rm -f "$depfile" |
|
757 |
+ echo "$object : \\" > "$depfile" |
|
758 |
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" |
|
759 |
+ echo "$tab" >> "$depfile" |
|
760 |
+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" |
|
761 |
+ rm -f "$tmpdepfile" |
|
762 |
+ ;; |
|
763 |
+ |
|
764 |
+msvcmsys) |
|
765 |
+ # This case exists only to let depend.m4 do its work. It works by |
|
766 |
+ # looking at the text of this script. This case will never be run, |
|
767 |
+ # since it is checked for above. |
|
768 |
+ exit 1 |
|
769 |
+ ;; |
|
770 |
+ |
|
771 |
+none) |
|
772 |
+ exec "$@" |
|
773 |
+ ;; |
|
774 |
+ |
|
775 |
+*) |
|
776 |
+ echo "Unknown depmode $depmode" 1>&2 |
|
777 |
+ exit 1 |
|
778 |
+ ;; |
|
779 |
+esac |
|
780 |
+ |
|
781 |
+exit 0 |
|
782 |
+ |
|
783 |
+# Local Variables: |
|
784 |
+# mode: shell-script |
|
785 |
+# sh-indentation: 2 |
|
786 |
+# eval: (add-hook 'write-file-hooks 'time-stamp) |
|
787 |
+# time-stamp-start: "scriptversion=" |
|
788 |
+# time-stamp-format: "%:y-%02m-%02d.%02H" |
|
789 |
+# time-stamp-time-zone: "UTC" |
|
790 |
+# time-stamp-end: "; # UTC" |
|
791 |
+# End: |
3 | 1 |
new file mode 100755 |
... | ... |
@@ -0,0 +1,501 @@ |
1 |
+#!/bin/sh |
|
2 |
+# install - install a program, script, or datafile |
|
3 |
+ |
|
4 |
+scriptversion=2013-12-25.23; # UTC |
|
5 |
+ |
|
6 |
+# This originates from X11R5 (mit/util/scripts/install.sh), which was |
|
7 |
+# later released in X11R6 (xc/config/util/install.sh) with the |
|
8 |
+# following copyright and license. |
|
9 |
+# |
|
10 |
+# Copyright (C) 1994 X Consortium |
|
11 |
+# |
|
12 |
+# Permission is hereby granted, free of charge, to any person obtaining a copy |
|
13 |
+# of this software and associated documentation files (the "Software"), to |
|
14 |
+# deal in the Software without restriction, including without limitation the |
|
15 |
+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or |
|
16 |
+# sell copies of the Software, and to permit persons to whom the Software is |
|
17 |
+# furnished to do so, subject to the following conditions: |
|
18 |
+# |
|
19 |
+# The above copyright notice and this permission notice shall be included in |
|
20 |
+# all copies or substantial portions of the Software. |
|
21 |
+# |
|
22 |
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
|
23 |
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
|
24 |
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
|
25 |
+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN |
|
26 |
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- |
|
27 |
+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
|
28 |
+# |
|
29 |
+# Except as contained in this notice, the name of the X Consortium shall not |
|
30 |
+# be used in advertising or otherwise to promote the sale, use or other deal- |
|
31 |
+# ings in this Software without prior written authorization from the X Consor- |
|
32 |
+# tium. |
|
33 |
+# |
|
34 |
+# |
|
35 |
+# FSF changes to this file are in the public domain. |
|
36 |
+# |
|
37 |
+# Calling this script install-sh is preferred over install.sh, to prevent |
|
38 |
+# 'make' implicit rules from creating a file called install from it |
|
39 |
+# when there is no Makefile. |
|
40 |
+# |
|
41 |
+# This script is compatible with the BSD install script, but was written |
|
42 |
+# from scratch. |
|
43 |
+ |
|
44 |
+tab=' ' |
|
45 |
+nl=' |
|
46 |
+' |
|
47 |
+IFS=" $tab$nl" |
|
48 |
+ |
|
49 |
+# Set DOITPROG to "echo" to test this script. |
|
50 |
+ |
|
51 |
+doit=${DOITPROG-} |
|
52 |
+doit_exec=${doit:-exec} |
|
53 |
+ |
|
54 |
+# Put in absolute file names if you don't have them in your path; |
|
55 |
+# or use environment vars. |
|
56 |
+ |
|
57 |
+chgrpprog=${CHGRPPROG-chgrp} |
|
58 |
+chmodprog=${CHMODPROG-chmod} |
|
59 |
+chownprog=${CHOWNPROG-chown} |
|
60 |
+cmpprog=${CMPPROG-cmp} |
|
61 |
+cpprog=${CPPROG-cp} |
|
62 |
+mkdirprog=${MKDIRPROG-mkdir} |
|
63 |
+mvprog=${MVPROG-mv} |
|
64 |
+rmprog=${RMPROG-rm} |
|
65 |
+stripprog=${STRIPPROG-strip} |
|
66 |
+ |
|
67 |
+posix_mkdir= |
|
68 |
+ |
|
69 |
+# Desired mode of installed file. |
|
70 |
+mode=0755 |
|
71 |
+ |
|
72 |
+chgrpcmd= |
|
73 |
+chmodcmd=$chmodprog |
|
74 |
+chowncmd= |
|
75 |
+mvcmd=$mvprog |
|
76 |
+rmcmd="$rmprog -f" |
|
77 |
+stripcmd= |
|
78 |
+ |
|
79 |
+src= |
|
80 |
+dst= |
|
81 |
+dir_arg= |
|
82 |
+dst_arg= |
|
83 |
+ |
|
84 |
+copy_on_change=false |
|
85 |
+is_target_a_directory=possibly |
|
86 |
+ |
|
87 |
+usage="\ |
|
88 |
+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE |
|
89 |
+ or: $0 [OPTION]... SRCFILES... DIRECTORY |
|
90 |
+ or: $0 [OPTION]... -t DIRECTORY SRCFILES... |
|
91 |
+ or: $0 [OPTION]... -d DIRECTORIES... |
|
92 |
+ |
|
93 |
+In the 1st form, copy SRCFILE to DSTFILE. |
|
94 |
+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. |
|
95 |
+In the 4th, create DIRECTORIES. |
|
96 |
+ |
|
97 |
+Options: |
|
98 |
+ --help display this help and exit. |
|
99 |
+ --version display version info and exit. |
|
100 |
+ |
|
101 |
+ -c (ignored) |
|
102 |
+ -C install only if different (preserve the last data modification time) |
|
103 |
+ -d create directories instead of installing files. |
|
104 |
+ -g GROUP $chgrpprog installed files to GROUP. |
|
105 |
+ -m MODE $chmodprog installed files to MODE. |
|
106 |
+ -o USER $chownprog installed files to USER. |
|
107 |
+ -s $stripprog installed files. |
|
108 |
+ -t DIRECTORY install into DIRECTORY. |
|
109 |
+ -T report an error if DSTFILE is a directory. |
|
110 |
+ |
|
111 |
+Environment variables override the default commands: |
|
112 |
+ CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG |
|
113 |
+ RMPROG STRIPPROG |
|
114 |
+" |
|
115 |
+ |
|
116 |
+while test $# -ne 0; do |
|
117 |
+ case $1 in |
|
118 |
+ -c) ;; |
|
119 |
+ |
|
120 |
+ -C) copy_on_change=true;; |
|
121 |
+ |
|
122 |
+ -d) dir_arg=true;; |
|
123 |
+ |
|
124 |
+ -g) chgrpcmd="$chgrpprog $2" |
|
125 |
+ shift;; |
|
126 |
+ |
|
127 |
+ --help) echo "$usage"; exit $?;; |
|
128 |
+ |
|
129 |
+ -m) mode=$2 |
|
130 |
+ case $mode in |
|
131 |
+ *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) |
|
132 |
+ echo "$0: invalid mode: $mode" >&2 |
|
133 |
+ exit 1;; |
|
134 |
+ esac |
|
135 |
+ shift;; |
|
136 |
+ |
|
137 |
+ -o) chowncmd="$chownprog $2" |
|
138 |
+ shift;; |
|
139 |
+ |
|
140 |
+ -s) stripcmd=$stripprog;; |
|
141 |
+ |
|
142 |
+ -t) |
|
143 |
+ is_target_a_directory=always |
|
144 |
+ dst_arg=$2 |
|
145 |
+ # Protect names problematic for 'test' and other utilities. |
|
146 |
+ case $dst_arg in |
|
147 |
+ -* | [=\(\)!]) dst_arg=./$dst_arg;; |
|
148 |
+ esac |
|
149 |
+ shift;; |
|
150 |
+ |
|
151 |
+ -T) is_target_a_directory=never;; |
|
152 |
+ |
|
153 |
+ --version) echo "$0 $scriptversion"; exit $?;; |
|
154 |
+ |
|
155 |
+ --) shift |
|
156 |
+ break;; |
|
157 |
+ |
|
158 |
+ -*) echo "$0: invalid option: $1" >&2 |
|
159 |
+ exit 1;; |
|
160 |
+ |
|
161 |
+ *) break;; |
|
162 |
+ esac |
|
163 |
+ shift |
|
164 |
+done |
|
165 |
+ |
|
166 |
+# We allow the use of options -d and -T together, by making -d |
|
167 |
+# take the precedence; this is for compatibility with GNU install. |
|
168 |
+ |
|
169 |
+if test -n "$dir_arg"; then |
|
170 |
+ if test -n "$dst_arg"; then |
|
171 |
+ echo "$0: target directory not allowed when installing a directory." >&2 |
|
172 |
+ exit 1 |
|
173 |
+ fi |
|
174 |
+fi |
|
175 |
+ |
|
176 |
+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then |
|
177 |
+ # When -d is used, all remaining arguments are directories to create. |
|
178 |
+ # When -t is used, the destination is already specified. |
|
179 |
+ # Otherwise, the last argument is the destination. Remove it from $@. |
|
180 |
+ for arg |
|
181 |
+ do |
|
182 |
+ if test -n "$dst_arg"; then |
|
183 |
+ # $@ is not empty: it contains at least $arg. |
|
184 |
+ set fnord "$@" "$dst_arg" |
|
185 |
+ shift # fnord |
|
186 |
+ fi |
|
187 |
+ shift # arg |
|
188 |
+ dst_arg=$arg |
|
189 |
+ # Protect names problematic for 'test' and other utilities. |
|
190 |
+ case $dst_arg in |
|
191 |
+ -* | [=\(\)!]) dst_arg=./$dst_arg;; |
|
192 |
+ esac |
|
193 |
+ done |
|
194 |
+fi |
|
195 |
+ |
|
196 |
+if test $# -eq 0; then |
|
197 |
+ if test -z "$dir_arg"; then |
|
198 |
+ echo "$0: no input file specified." >&2 |
|
199 |
+ exit 1 |
|
200 |
+ fi |
|
201 |
+ # It's OK to call 'install-sh -d' without argument. |
|
202 |
+ # This can happen when creating conditional directories. |
|
203 |
+ exit 0 |
|
204 |
+fi |
|
205 |
+ |
|
206 |
+if test -z "$dir_arg"; then |
|
207 |
+ if test $# -gt 1 || test "$is_target_a_directory" = always; then |
|
208 |
+ if test ! -d "$dst_arg"; then |
|
209 |
+ echo "$0: $dst_arg: Is not a directory." >&2 |
|
210 |
+ exit 1 |
|
211 |
+ fi |
|
212 |
+ fi |
|
213 |
+fi |
|
214 |
+ |
|
215 |
+if test -z "$dir_arg"; then |
|
216 |
+ do_exit='(exit $ret); exit $ret' |
|
217 |
+ trap "ret=129; $do_exit" 1 |
|
218 |
+ trap "ret=130; $do_exit" 2 |
|
219 |
+ trap "ret=141; $do_exit" 13 |
|
220 |
+ trap "ret=143; $do_exit" 15 |
|
221 |
+ |
|
222 |
+ # Set umask so as not to create temps with too-generous modes. |
|
223 |
+ # However, 'strip' requires both read and write access to temps. |
|
224 |
+ case $mode in |
|
225 |
+ # Optimize common cases. |
|
226 |
+ *644) cp_umask=133;; |
|
227 |
+ *755) cp_umask=22;; |
|
228 |
+ |
|
229 |
+ *[0-7]) |
|
230 |
+ if test -z "$stripcmd"; then |
|
231 |
+ u_plus_rw= |
|
232 |
+ else |
|
233 |
+ u_plus_rw='% 200' |
|
234 |
+ fi |
|
235 |
+ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; |
|
236 |
+ *) |
|
237 |
+ if test -z "$stripcmd"; then |
|
238 |
+ u_plus_rw= |
|
239 |
+ else |
|
240 |
+ u_plus_rw=,u+rw |
|
241 |
+ fi |
|
242 |
+ cp_umask=$mode$u_plus_rw;; |
|
243 |
+ esac |
|
244 |
+fi |
|
245 |
+ |
|
246 |
+for src |
|
247 |
+do |
|
248 |
+ # Protect names problematic for 'test' and other utilities. |
|
249 |
+ case $src in |
|
250 |
+ -* | [=\(\)!]) src=./$src;; |
|
251 |
+ esac |
|
252 |
+ |
|
253 |
+ if test -n "$dir_arg"; then |
|
254 |
+ dst=$src |
|
255 |
+ dstdir=$dst |
|
256 |
+ test -d "$dstdir" |
|
257 |
+ dstdir_status=$? |
|
258 |
+ else |
|
259 |
+ |
|
260 |
+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command |
|
261 |
+ # might cause directories to be created, which would be especially bad |
|
262 |
+ # if $src (and thus $dsttmp) contains '*'. |
|
263 |
+ if test ! -f "$src" && test ! -d "$src"; then |
|
264 |
+ echo "$0: $src does not exist." >&2 |
|
265 |
+ exit 1 |
|
266 |
+ fi |
|
267 |
+ |
|
268 |
+ if test -z "$dst_arg"; then |
|
269 |
+ echo "$0: no destination specified." >&2 |
|
270 |
+ exit 1 |
|
271 |
+ fi |
|
272 |
+ dst=$dst_arg |
|
273 |
+ |
|
274 |
+ # If destination is a directory, append the input filename; won't work |
|
275 |
+ # if double slashes aren't ignored. |
|
276 |
+ if test -d "$dst"; then |
|
277 |
+ if test "$is_target_a_directory" = never; then |
|
278 |
+ echo "$0: $dst_arg: Is a directory" >&2 |
|
279 |
+ exit 1 |
|
280 |
+ fi |
|
281 |
+ dstdir=$dst |
|
282 |
+ dst=$dstdir/`basename "$src"` |
|
283 |
+ dstdir_status=0 |
|
284 |
+ else |
|
285 |
+ dstdir=`dirname "$dst"` |
|
286 |
+ test -d "$dstdir" |
|
287 |
+ dstdir_status=$? |
|
288 |
+ fi |
|
289 |
+ fi |
|
290 |
+ |
|
291 |
+ obsolete_mkdir_used=false |
|
292 |
+ |
|
293 |
+ if test $dstdir_status != 0; then |
|
294 |
+ case $posix_mkdir in |
|
295 |
+ '') |
|
296 |
+ # Create intermediate dirs using mode 755 as modified by the umask. |
|
297 |
+ # This is like FreeBSD 'install' as of 1997-10-28. |
|
298 |
+ umask=`umask` |
|
299 |
+ case $stripcmd.$umask in |
|
300 |
+ # Optimize common cases. |
|
301 |
+ *[2367][2367]) mkdir_umask=$umask;; |
|
302 |
+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; |
|
303 |
+ |
|
304 |
+ *[0-7]) |
|
305 |
+ mkdir_umask=`expr $umask + 22 \ |
|
306 |
+ - $umask % 100 % 40 + $umask % 20 \ |
|
307 |
+ - $umask % 10 % 4 + $umask % 2 |
|
308 |
+ `;; |
|
309 |
+ *) mkdir_umask=$umask,go-w;; |
|
310 |
+ esac |
|
311 |
+ |
|
312 |
+ # With -d, create the new directory with the user-specified mode. |
|
313 |
+ # Otherwise, rely on $mkdir_umask. |
|
314 |
+ if test -n "$dir_arg"; then |
|
315 |
+ mkdir_mode=-m$mode |
|
316 |
+ else |
|
317 |
+ mkdir_mode= |
|
318 |
+ fi |
|
319 |
+ |
|
320 |
+ posix_mkdir=false |
|
321 |
+ case $umask in |
|
322 |
+ *[123567][0-7][0-7]) |
|
323 |
+ # POSIX mkdir -p sets u+wx bits regardless of umask, which |
|
324 |
+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0. |
|
325 |
+ ;; |
|
326 |
+ *) |
|
327 |
+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ |
|
328 |
+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 |
|
329 |
+ |
|
330 |
+ if (umask $mkdir_umask && |
|
331 |
+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 |
|
332 |
+ then |
|
333 |
+ if test -z "$dir_arg" || { |
|
334 |
+ # Check for POSIX incompatibilities with -m. |
|
335 |
+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or |
|
336 |
+ # other-writable bit of parent directory when it shouldn't. |
|
337 |
+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. |
|
338 |
+ ls_ld_tmpdir=`ls -ld "$tmpdir"` |
|
339 |
+ case $ls_ld_tmpdir in |
|
340 |
+ d????-?r-*) different_mode=700;; |
|
341 |
+ d????-?--*) different_mode=755;; |
|
342 |
+ *) false;; |
|
343 |
+ esac && |
|
344 |
+ $mkdirprog -m$different_mode -p -- "$tmpdir" && { |
|
345 |
+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"` |
|
346 |
+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" |
|
347 |
+ } |
|
348 |
+ } |
|
349 |
+ then posix_mkdir=: |
|
350 |
+ fi |
|
351 |
+ rmdir "$tmpdir/d" "$tmpdir" |
|
352 |
+ else |
|
353 |
+ # Remove any dirs left behind by ancient mkdir implementations. |
|
354 |
+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null |
|
355 |
+ fi |
|
356 |
+ trap '' 0;; |
|
357 |
+ esac;; |
|
358 |
+ esac |
|
359 |
+ |
|
360 |
+ if |
|
361 |
+ $posix_mkdir && ( |
|
362 |
+ umask $mkdir_umask && |
|
363 |
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" |
|
364 |
+ ) |
|
365 |
+ then : |
|
366 |
+ else |
|
367 |
+ |
|
368 |
+ # The umask is ridiculous, or mkdir does not conform to POSIX, |
|
369 |
+ # or it failed possibly due to a race condition. Create the |
|
370 |
+ # directory the slow way, step by step, checking for races as we go. |
|
371 |
+ |
|
372 |
+ case $dstdir in |
|
373 |
+ /*) prefix='/';; |
|
374 |
+ [-=\(\)!]*) prefix='./';; |
|
375 |
+ *) prefix='';; |
|
376 |
+ esac |
|
377 |
+ |
|
378 |
+ oIFS=$IFS |
|
379 |
+ IFS=/ |
|
380 |
+ set -f |
|
381 |
+ set fnord $dstdir |
|
382 |
+ shift |
|
383 |
+ set +f |
|
384 |
+ IFS=$oIFS |
|
385 |
+ |
|
386 |
+ prefixes= |
|
387 |
+ |
|
388 |
+ for d |
|
389 |
+ do |
|
390 |
+ test X"$d" = X && continue |
|
391 |
+ |
|
392 |
+ prefix=$prefix$d |
|
393 |
+ if test -d "$prefix"; then |
|
394 |
+ prefixes= |
|
395 |
+ else |
|
396 |
+ if $posix_mkdir; then |
|
397 |
+ (umask=$mkdir_umask && |
|
398 |
+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break |
|
399 |
+ # Don't fail if two instances are running concurrently. |
|
400 |
+ test -d "$prefix" || exit 1 |
|
401 |
+ else |
|
402 |
+ case $prefix in |
|
403 |
+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; |
|
404 |
+ *) qprefix=$prefix;; |
|
405 |
+ esac |
|
406 |
+ prefixes="$prefixes '$qprefix'" |
|
407 |
+ fi |
|
408 |
+ fi |
|
409 |
+ prefix=$prefix/ |
|
410 |
+ done |
|
411 |
+ |
|
412 |
+ if test -n "$prefixes"; then |
|
413 |
+ # Don't fail if two instances are running concurrently. |
|
414 |
+ (umask $mkdir_umask && |
|
415 |
+ eval "\$doit_exec \$mkdirprog $prefixes") || |
|
416 |
+ test -d "$dstdir" || exit 1 |
|
417 |
+ obsolete_mkdir_used=true |
|
418 |
+ fi |
|
419 |
+ fi |
|
420 |
+ fi |
|
421 |
+ |
|
422 |
+ if test -n "$dir_arg"; then |
|
423 |
+ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && |
|
424 |
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && |
|
425 |
+ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || |
|
426 |
+ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 |
|
427 |
+ else |
|
428 |
+ |
|
429 |
+ # Make a couple of temp file names in the proper directory. |
|
430 |
+ dsttmp=$dstdir/_inst.$$_ |
|
431 |
+ rmtmp=$dstdir/_rm.$$_ |
|
432 |
+ |
|
433 |
+ # Trap to clean up those temp files at exit. |
|
434 |
+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 |
|
435 |
+ |
|
436 |
+ # Copy the file name to the temp name. |
|
437 |
+ (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && |
|
438 |
+ |
|
439 |
+ # and set any options; do chmod last to preserve setuid bits. |
|
440 |
+ # |
|
441 |
+ # If any of these fail, we abort the whole thing. If we want to |
|
442 |
+ # ignore errors from any of these, just make sure not to ignore |
|
443 |
+ # errors from the above "$doit $cpprog $src $dsttmp" command. |
|
444 |
+ # |
|
445 |
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && |
|
446 |
+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && |
|
447 |
+ { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && |
|
448 |
+ { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && |
|
449 |
+ |
|
450 |
+ # If -C, don't bother to copy if it wouldn't change the file. |
|
451 |
+ if $copy_on_change && |
|
452 |
+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && |
|
453 |
+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && |
|
454 |
+ set -f && |
|
455 |
+ set X $old && old=:$2:$4:$5:$6 && |
|
456 |
+ set X $new && new=:$2:$4:$5:$6 && |
|
457 |
+ set +f && |
|
458 |
+ test "$old" = "$new" && |
|
459 |
+ $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 |
|
460 |
+ then |
|
461 |
+ rm -f "$dsttmp" |
|
462 |
+ else |
|
463 |
+ # Rename the file to the real destination. |
|
464 |
+ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || |
|
465 |
+ |
|
466 |
+ # The rename failed, perhaps because mv can't rename something else |
|
467 |
+ # to itself, or perhaps because mv is so ancient that it does not |
|
468 |
+ # support -f. |
|
469 |
+ { |
|
470 |
+ # Now remove or move aside any old file at destination location. |
|
471 |
+ # We try this two ways since rm can't unlink itself on some |
|
472 |
+ # systems and the destination file might be busy for other |
|
473 |
+ # reasons. In this case, the final cleanup might fail but the new |
|
474 |
+ # file should still install successfully. |
|
475 |
+ { |
|
476 |
+ test ! -f "$dst" || |
|
477 |
+ $doit $rmcmd -f "$dst" 2>/dev/null || |
|
478 |
+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && |
|
479 |
+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } |
|
480 |
+ } || |
|
481 |
+ { echo "$0: cannot unlink or rename $dst" >&2 |
|
482 |
+ (exit 1); exit 1 |
|
483 |
+ } |
|
484 |
+ } && |
|
485 |
+ |
|
486 |
+ # Now rename the file to the real destination. |
|
487 |
+ $doit $mvcmd "$dsttmp" "$dst" |
|
488 |
+ } |
|
489 |
+ fi || exit 1 |
|
490 |
+ |
|
491 |
+ trap '' 0 |
|
492 |
+ fi |
|
493 |
+done |
|
494 |
+ |
|
495 |
+# Local variables: |
|
496 |
+# eval: (add-hook 'write-file-hooks 'time-stamp) |
|
497 |
+# time-stamp-start: "scriptversion=" |
|
498 |
+# time-stamp-format: "%:y-%02m-%02d.%02H" |
|
499 |
+# time-stamp-time-zone: "UTC" |
|
500 |
+# time-stamp-end: "; # UTC" |
|
501 |
+# End: |
3 | 1 |
new file mode 100755 |
... | ... |
@@ -0,0 +1,215 @@ |
1 |
+#! /bin/sh |
|
2 |
+# Common wrapper for a few potentially missing GNU programs. |
|
3 |
+ |
|
4 |
+scriptversion=2013-10-28.13; # UTC |
|
5 |
+ |
|
6 |
+# Copyright (C) 1996-2014 Free Software Foundation, Inc. |
|
7 |
+# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996. |
|
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 |
+if test $# -eq 0; then |
|
28 |
+ echo 1>&2 "Try '$0 --help' for more information" |
|
29 |
+ exit 1 |
|
30 |
+fi |
|
31 |
+ |
|
32 |
+case $1 in |
|
33 |
+ |
|
34 |
+ --is-lightweight) |
|
35 |
+ # Used by our autoconf macros to check whether the available missing |
|
36 |
+ # script is modern enough. |
|
37 |
+ exit 0 |
|
38 |
+ ;; |
|
39 |
+ |
|
40 |
+ --run) |
|
41 |
+ # Back-compat with the calling convention used by older automake. |
|
42 |
+ shift |
|
43 |
+ ;; |
|
44 |
+ |
|
45 |
+ -h|--h|--he|--hel|--help) |
|
46 |
+ echo "\ |
|
47 |
+$0 [OPTION]... PROGRAM [ARGUMENT]... |
|
48 |
+ |
|
49 |
+Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due |
|
50 |
+to PROGRAM being missing or too old. |
|
51 |
+ |
|
52 |
+Options: |
|
53 |
+ -h, --help display this help and exit |
|
54 |
+ -v, --version output version information and exit |
|
55 |
+ |
|
56 |
+Supported PROGRAM values: |
|
57 |
+ aclocal autoconf autoheader autom4te automake makeinfo |
|
58 |
+ bison yacc flex lex help2man |
|
59 |
+ |
|
60 |
+Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and |
|
61 |
+'g' are ignored when checking the name. |
|
62 |
+ |
|
63 |
+Send bug reports to <bug-automake@gnu.org>." |
|
64 |
+ exit $? |
|
65 |
+ ;; |
|
66 |
+ |
|
67 |
+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version) |
|
68 |
+ echo "missing $scriptversion (GNU Automake)" |
|
69 |
+ exit $? |
|
70 |
+ ;; |
|
71 |
+ |
|
72 |
+ -*) |
|
73 |
+ echo 1>&2 "$0: unknown '$1' option" |
|
74 |
+ echo 1>&2 "Try '$0 --help' for more information" |
|
75 |
+ exit 1 |
|
76 |
+ ;; |
|
77 |
+ |
|
78 |
+esac |
|
79 |
+ |
|
80 |
+# Run the given program, remember its exit status. |
|
81 |
+"$@"; st=$? |
|
82 |
+ |
|
83 |
+# If it succeeded, we are done. |
|
84 |
+test $st -eq 0 && exit 0 |
|
85 |
+ |
|
86 |
+# Also exit now if we it failed (or wasn't found), and '--version' was |
|
87 |
+# passed; such an option is passed most likely to detect whether the |
|
88 |
+# program is present and works. |
|
89 |
+case $2 in --version|--help) exit $st;; esac |
|
90 |
+ |
|
91 |
+# Exit code 63 means version mismatch. This often happens when the user |
|
92 |
+# tries to use an ancient version of a tool on a file that requires a |
|
93 |
+# minimum version. |
|
94 |
+if test $st -eq 63; then |
|
95 |
+ msg="probably too old" |
|
96 |
+elif test $st -eq 127; then |
|
97 |
+ # Program was missing. |
|
98 |
+ msg="missing on your system" |
|
99 |
+else |
|
100 |
+ # Program was found and executed, but failed. Give up. |
|
101 |
+ exit $st |
|
102 |
+fi |
|
103 |
+ |
|
104 |
+perl_URL=http://www.perl.org/ |
|
105 |
+flex_URL=http://flex.sourceforge.net/ |
|
106 |
+gnu_software_URL=http://www.gnu.org/software |
|
107 |
+ |
|
108 |
+program_details () |
|
109 |
+{ |
|
110 |
+ case $1 in |
|
111 |
+ aclocal|automake) |
|
112 |
+ echo "The '$1' program is part of the GNU Automake package:" |
|
113 |
+ echo "<$gnu_software_URL/automake>" |
|
114 |
+ echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" |
|
115 |
+ echo "<$gnu_software_URL/autoconf>" |
|
116 |
+ echo "<$gnu_software_URL/m4/>" |
|
117 |
+ echo "<$perl_URL>" |
|
118 |
+ ;; |
|
119 |
+ autoconf|autom4te|autoheader) |
|
120 |
+ echo "The '$1' program is part of the GNU Autoconf package:" |
|
121 |
+ echo "<$gnu_software_URL/autoconf/>" |
|
122 |
+ echo "It also requires GNU m4 and Perl in order to run:" |
|
123 |
+ echo "<$gnu_software_URL/m4/>" |
|
124 |
+ echo "<$perl_URL>" |
|
125 |
+ ;; |
|
126 |
+ esac |
|
127 |
+} |
|
128 |
+ |
|
129 |
+give_advice () |
|
130 |
+{ |
|
131 |
+ # Normalize program name to check for. |
|
132 |
+ normalized_program=`echo "$1" | sed ' |
|
133 |
+ s/^gnu-//; t |
|
134 |
+ s/^gnu//; t |
|
135 |
+ s/^g//; t'` |
|
136 |
+ |
|
137 |
+ printf '%s\n' "'$1' is $msg." |
|
138 |
+ |
|
139 |
+ configure_deps="'configure.ac' or m4 files included by 'configure.ac'" |
|
140 |
+ case $normalized_program in |
|
141 |
+ autoconf*) |
|
142 |
+ echo "You should only need it if you modified 'configure.ac'," |
|
143 |
+ echo "or m4 files included by it." |
|
144 |
+ program_details 'autoconf' |
|
145 |
+ ;; |
|
146 |
+ autoheader*) |
|
147 |
+ echo "You should only need it if you modified 'acconfig.h' or" |
|
148 |
+ echo "$configure_deps." |
|
149 |
+ program_details 'autoheader' |
|
150 |
+ ;; |
|
151 |
+ automake*) |
|
152 |
+ echo "You should only need it if you modified 'Makefile.am' or" |
|
153 |
+ echo "$configure_deps." |
|
154 |
+ program_details 'automake' |
|
155 |
+ ;; |
|
156 |
+ aclocal*) |
|
157 |
+ echo "You should only need it if you modified 'acinclude.m4' or" |
|
158 |
+ echo "$configure_deps." |
|
159 |
+ program_details 'aclocal' |
|
160 |
+ ;; |
|
161 |
+ autom4te*) |
|
162 |
+ echo "You might have modified some maintainer files that require" |
|
163 |
+ echo "the 'autom4te' program to be rebuilt." |
|
164 |
+ program_details 'autom4te' |
|
165 |
+ ;; |
|
166 |
+ bison*|yacc*) |
|
167 |
+ echo "You should only need it if you modified a '.y' file." |
|
168 |
+ echo "You may want to install the GNU Bison package:" |
|
169 |
+ echo "<$gnu_software_URL/bison/>" |
|
170 |
+ ;; |
|
171 |
+ lex*|flex*) |
|
172 |
+ echo "You should only need it if you modified a '.l' file." |
|
173 |
+ echo "You may want to install the Fast Lexical Analyzer package:" |
|
174 |
+ echo "<$flex_URL>" |
|
175 |
+ ;; |
|
176 |
+ help2man*) |
|
177 |
+ echo "You should only need it if you modified a dependency" \ |
|
178 |
+ "of a man page." |
|
179 |
+ echo "You may want to install the GNU Help2man package:" |
|
180 |
+ echo "<$gnu_software_URL/help2man/>" |
|
181 |
+ ;; |
|
182 |
+ makeinfo*) |
|
183 |
+ echo "You should only need it if you modified a '.texi' file, or" |
|
184 |
+ echo "any other file indirectly affecting the aspect of the manual." |
|
185 |
+ echo "You might want to install the Texinfo package:" |
|
186 |
+ echo "<$gnu_software_URL/texinfo/>" |
|
187 |
+ echo "The spurious makeinfo call might also be the consequence of" |
|
188 |
+ echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" |
|
189 |
+ echo "want to install GNU make:" |
|
190 |
+ echo "<$gnu_software_URL/make/>" |
|
191 |
+ ;; |
|
192 |
+ *) |
|
193 |
+ echo "You might have modified some files without having the proper" |
|
194 |
+ echo "tools for further handling them. Check the 'README' file, it" |
|
195 |
+ echo "often tells you about the needed prerequisites for installing" |
|
196 |
+ echo "this package. You may also peek at any GNU archive site, in" |
|
197 |
+ echo "case some other package contains this missing '$1' program." |
|
198 |
+ ;; |
|
199 |
+ esac |
|
200 |
+} |
|
201 |
+ |
|
202 |
+give_advice "$1" | sed -e '1s/^/WARNING: /' \ |
|
203 |
+ -e '2,$s/^/ /' >&2 |
|
204 |
+ |
|
205 |
+# Propagate the correct exit status (expected to be 127 for a program |
|
206 |
+# not found, 63 for a program that failed due to version mismatch). |
|
207 |
+exit $st |
|
208 |
+ |
|
209 |
+# Local variables: |
|
210 |
+# eval: (add-hook 'write-file-hooks 'time-stamp) |
|
211 |
+# time-stamp-start: "scriptversion=" |
|
212 |
+# time-stamp-format: "%:y-%02m-%02d.%02H" |
|
213 |
+# time-stamp-time-zone: "UTC" |
|
214 |
+# time-stamp-end: "; # UTC" |
|
215 |
+# End: |