Mercurial > hg > easyhg-kdiff3
comparison kdiff3/admin/depcomp @ 69:8febbfb1148c
KDiff3 0.9.89
author | joachim99 |
---|---|
date | Mon, 10 Apr 2006 08:40:51 +0000 |
parents | 415083d043f3 |
children | 1184fc843210 |
comparison
equal
deleted
inserted
replaced
68:d7cafcda8c99 | 69:8febbfb1148c |
---|---|
1 #! /bin/sh | 1 #! /bin/sh |
2 | |
3 # depcomp - compile a program generating dependencies as side-effects | 2 # depcomp - compile a program generating dependencies as side-effects |
4 # Copyright 1999, 2000 Free Software Foundation, Inc. | 3 |
4 scriptversion=2005-05-14.22 | |
5 | |
6 # Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. | |
5 | 7 |
6 # This program is free software; you can redistribute it and/or modify | 8 # This program is free software; you can redistribute it and/or modify |
7 # it under the terms of the GNU General Public License as published by | 9 # it under the terms of the GNU General Public License as published by |
8 # the Free Software Foundation; either version 2, or (at your option) | 10 # the Free Software Foundation; either version 2, or (at your option) |
9 # any later version. | 11 # any later version. |
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
14 # GNU General Public License for more details. | 16 # GNU General Public License for more details. |
15 | 17 |
16 # You should have received a copy of the GNU General Public License | 18 # You should have received a copy of the GNU General Public License |
17 # along with this program; if not, write to the Free Software | 19 # along with this program; if not, write to the Free Software |
18 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA | 20 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
19 # 02111-1307, USA. | 21 # 02110-1301, USA. |
20 | 22 |
21 # As a special exception to the GNU General Public License, if you | 23 # As a special exception to the GNU General Public License, if you |
22 # distribute this file as part of a program that contains a | 24 # distribute this file as part of a program that contains a |
23 # configuration script generated by Autoconf, you may include it under | 25 # configuration script generated by Autoconf, you may include it under |
24 # the same distribution terms that you use for the rest of that program. | 26 # the same distribution terms that you use for the rest of that program. |
25 | 27 |
26 # Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. | 28 # Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. |
27 | 29 |
30 case $1 in | |
31 '') | |
32 echo "$0: No command. Try \`$0 --help' for more information." 1>&2 | |
33 exit 1; | |
34 ;; | |
35 -h | --h*) | |
36 cat <<\EOF | |
37 Usage: depcomp [--help] [--version] PROGRAM [ARGS] | |
38 | |
39 Run PROGRAMS ARGS to compile a file, generating dependencies | |
40 as side-effects. | |
41 | |
42 Environment variables: | |
43 depmode Dependency tracking mode. | |
44 source Source file read by `PROGRAMS ARGS'. | |
45 object Object file output by `PROGRAMS ARGS'. | |
46 DEPDIR directory where to store dependencies. | |
47 depfile Dependency file to output. | |
48 tmpdepfile Temporary file to use when outputing dependencies. | |
49 libtool Whether libtool is used (yes/no). | |
50 | |
51 Report bugs to <bug-automake@gnu.org>. | |
52 EOF | |
53 exit $? | |
54 ;; | |
55 -v | --v*) | |
56 echo "depcomp $scriptversion" | |
57 exit $? | |
58 ;; | |
59 esac | |
60 | |
28 if test -z "$depmode" || test -z "$source" || test -z "$object"; then | 61 if test -z "$depmode" || test -z "$source" || test -z "$object"; then |
29 echo "depcomp: Variables source, object and depmode must be set" 1>&2 | 62 echo "depcomp: Variables source, object and depmode must be set" 1>&2 |
30 exit 1 | 63 exit 1 |
31 fi | 64 fi |
32 # `libtool' can also be set to `yes' or `no'. | 65 |
33 | 66 # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. |
34 depfile=${depfile-`echo "$object" | sed 's,\([^/]*\)$,.deps/\1,;s/\.\([^.]*\)$/.P\1/'`} | 67 depfile=${depfile-`echo "$object" | |
68 sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} | |
35 tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} | 69 tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} |
36 | 70 |
37 rm -f "$tmpdepfile" | 71 rm -f "$tmpdepfile" |
38 | 72 |
39 # Some modes work just like other modes, but use different flags. We | 73 # Some modes work just like other modes, but use different flags. We |
161 rm -f "$tmpdepfile" | 195 rm -f "$tmpdepfile" |
162 ;; | 196 ;; |
163 | 197 |
164 aix) | 198 aix) |
165 # The C for AIX Compiler uses -M and outputs the dependencies | 199 # The C for AIX Compiler uses -M and outputs the dependencies |
166 # in a .u file. This file always lives in the current directory. | 200 # in a .u file. In older versions, this file always lives in the |
167 # Also, the AIX compiler puts `$object:' at the start of each line; | 201 # current directory. Also, the AIX compiler puts `$object:' at the |
168 # $object doesn't have directory information. | 202 # start of each line; $object doesn't have directory information. |
169 stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'` | 203 # Version 6 uses the directory in both cases. |
204 stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` | |
170 tmpdepfile="$stripped.u" | 205 tmpdepfile="$stripped.u" |
171 outname="$stripped.o" | |
172 if test "$libtool" = yes; then | 206 if test "$libtool" = yes; then |
173 "$@" -Wc,-M | 207 "$@" -Wc,-M |
174 else | 208 else |
175 "$@" -M | 209 "$@" -M |
176 fi | 210 fi |
177 | |
178 stat=$? | 211 stat=$? |
212 | |
213 if test -f "$tmpdepfile"; then : | |
214 else | |
215 stripped=`echo "$stripped" | sed 's,^.*/,,'` | |
216 tmpdepfile="$stripped.u" | |
217 fi | |
218 | |
179 if test $stat -eq 0; then : | 219 if test $stat -eq 0; then : |
180 else | 220 else |
181 rm -f "$tmpdepfile" | 221 rm -f "$tmpdepfile" |
182 exit $stat | 222 exit $stat |
183 fi | 223 fi |
184 | 224 |
185 if test -f "$tmpdepfile"; then | 225 if test -f "$tmpdepfile"; then |
226 outname="$stripped.o" | |
186 # Each line is of the form `foo.o: dependent.h'. | 227 # Each line is of the form `foo.o: dependent.h'. |
187 # Do two passes, one to just change these to | 228 # Do two passes, one to just change these to |
188 # `$object: dependent.h' and one to simply `dependent.h:'. | 229 # `$object: dependent.h' and one to simply `dependent.h:'. |
189 sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" | 230 sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" |
190 sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" | 231 sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" |
196 fi | 237 fi |
197 rm -f "$tmpdepfile" | 238 rm -f "$tmpdepfile" |
198 ;; | 239 ;; |
199 | 240 |
200 icc) | 241 icc) |
201 # Must come before tru64. | 242 # Intel's C compiler understands `-MD -MF file'. However on |
202 | |
203 # Intel's C compiler understands `-MD -MF file'. However | |
204 # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c | 243 # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c |
205 # will fill foo.d with something like | 244 # ICC 7.0 will fill foo.d with something like |
206 # foo.o: sub/foo.c | 245 # foo.o: sub/foo.c |
207 # foo.o: sub/foo.h | 246 # foo.o: sub/foo.h |
208 # which is wrong. We want: | 247 # which is wrong. We want: |
209 # sub/foo.o: sub/foo.c | 248 # sub/foo.o: sub/foo.c |
210 # sub/foo.o: sub/foo.h | 249 # sub/foo.o: sub/foo.h |
211 # sub/foo.c: | 250 # sub/foo.c: |
212 # sub/foo.h: | 251 # sub/foo.h: |
252 # ICC 7.1 will output | |
253 # foo.o: sub/foo.c sub/foo.h | |
254 # and will wrap long lines using \ : | |
255 # foo.o: sub/foo.c ... \ | |
256 # sub/foo.h ... \ | |
257 # ... | |
213 | 258 |
214 "$@" -MD -MF "$tmpdepfile" | 259 "$@" -MD -MF "$tmpdepfile" |
215 stat=$? | 260 stat=$? |
216 if test $stat -eq 0; then : | 261 if test $stat -eq 0; then : |
217 else | 262 else |
218 rm -f "$tmpdepfile" | 263 rm -f "$tmpdepfile" |
219 exit $stat | 264 exit $stat |
220 fi | 265 fi |
221 rm -f "$depfile" | 266 rm -f "$depfile" |
222 # Each line is of the form `foo.o: dependent.h'. | 267 # Each line is of the form `foo.o: dependent.h', |
268 # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. | |
223 # Do two passes, one to just change these to | 269 # Do two passes, one to just change these to |
224 # `$object: dependent.h' and one to simply `dependent.h:'. | 270 # `$object: dependent.h' and one to simply `dependent.h:'. |
225 sed -e "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" | 271 sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" |
226 sed -e "s,^[^:]*: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" | 272 # Some versions of the HPUX 10.20 sed can't process this invocation |
273 # correctly. Breaking it into two sed invocations is a workaround. | |
274 sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | | |
275 sed -e 's/$/ :/' >> "$depfile" | |
227 rm -f "$tmpdepfile" | 276 rm -f "$tmpdepfile" |
228 ;; | 277 ;; |
229 | 278 |
230 tru64) | 279 tru64) |
231 # The Tru64 AIX compiler uses -MD to generate dependencies as a side | 280 # The Tru64 compiler uses -MD to generate dependencies as a side |
232 # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. | 281 # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. |
233 # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put | 282 # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put |
234 # dependencies in `foo.d' instead, so we check for that too. | 283 # dependencies in `foo.d' instead, so we check for that too. |
235 # Subdirectories are respected. | 284 # Subdirectories are respected. |
236 | 285 dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` |
237 tmpdepfile1="$object.d" | 286 test "x$dir" = "x$object" && dir= |
238 tmpdepfile2=`echo "$object" | sed -e 's/.o$/.d/'` | 287 base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` |
288 | |
239 if test "$libtool" = yes; then | 289 if test "$libtool" = yes; then |
290 # With Tru64 cc, shared objects can also be used to make a | |
291 # static library. This mecanism is used in libtool 1.4 series to | |
292 # handle both shared and static libraries in a single compilation. | |
293 # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. | |
294 # | |
295 # With libtool 1.5 this exception was removed, and libtool now | |
296 # generates 2 separate objects for the 2 libraries. These two | |
297 # compilations output dependencies in in $dir.libs/$base.o.d and | |
298 # in $dir$base.o.d. We have to check for both files, because | |
299 # one of the two compilations can be disabled. We should prefer | |
300 # $dir$base.o.d over $dir.libs/$base.o.d because the latter is | |
301 # automatically cleaned when .libs/ is deleted, while ignoring | |
302 # the former would cause a distcleancheck panic. | |
303 tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 | |
304 tmpdepfile2=$dir$base.o.d # libtool 1.5 | |
305 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 | |
306 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 | |
240 "$@" -Wc,-MD | 307 "$@" -Wc,-MD |
241 else | 308 else |
309 tmpdepfile1=$dir$base.o.d | |
310 tmpdepfile2=$dir$base.d | |
311 tmpdepfile3=$dir$base.d | |
312 tmpdepfile4=$dir$base.d | |
242 "$@" -MD | 313 "$@" -MD |
243 fi | 314 fi |
244 | 315 |
245 stat=$? | 316 stat=$? |
246 if test $stat -eq 0; then : | 317 if test $stat -eq 0; then : |
247 else | 318 else |
248 rm -f "$tmpdepfile1" "$tmpdepfile2" | 319 rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" |
249 exit $stat | 320 exit $stat |
250 fi | 321 fi |
251 | 322 |
252 if test -f "$tmpdepfile1"; then | 323 for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" |
253 tmpdepfile="$tmpdepfile1" | 324 do |
254 else | 325 test -f "$tmpdepfile" && break |
255 tmpdepfile="$tmpdepfile2" | 326 done |
256 fi | |
257 if test -f "$tmpdepfile"; then | 327 if test -f "$tmpdepfile"; then |
258 sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" | 328 sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" |
259 # That's a space and a tab in the []. | 329 # That's a tab and a space in the []. |
260 sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" | 330 sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" |
261 else | 331 else |
262 echo "#dummy" > "$depfile" | 332 echo "#dummy" > "$depfile" |
263 fi | 333 fi |
264 rm -f "$tmpdepfile" | 334 rm -f "$tmpdepfile" |
265 ;; | 335 ;; |
268 # This comment above is used by automake to tell side-effect | 338 # This comment above is used by automake to tell side-effect |
269 # dependency tracking mechanisms from slower ones. | 339 # dependency tracking mechanisms from slower ones. |
270 | 340 |
271 dashmstdout) | 341 dashmstdout) |
272 # Important note: in order to support this mode, a compiler *must* | 342 # Important note: in order to support this mode, a compiler *must* |
273 # always write the proprocessed file to stdout, regardless of -o, | 343 # always write the preprocessed file to stdout, regardless of -o. |
274 # because we must use -o when running libtool. | 344 "$@" || exit $? |
345 | |
346 # Remove the call to Libtool. | |
347 if test "$libtool" = yes; then | |
348 while test $1 != '--mode=compile'; do | |
349 shift | |
350 done | |
351 shift | |
352 fi | |
353 | |
354 # Remove `-o $object'. | |
355 IFS=" " | |
356 for arg | |
357 do | |
358 case $arg in | |
359 -o) | |
360 shift | |
361 ;; | |
362 $object) | |
363 shift | |
364 ;; | |
365 *) | |
366 set fnord "$@" "$arg" | |
367 shift # fnord | |
368 shift # $arg | |
369 ;; | |
370 esac | |
371 done | |
372 | |
275 test -z "$dashmflag" && dashmflag=-M | 373 test -z "$dashmflag" && dashmflag=-M |
276 ( IFS=" " | 374 # Require at least two characters before searching for `:' |
277 case " $* " in | 375 # in the target name. This is to cope with DOS-style filenames: |
278 *" --mode=compile "*) # this is libtool, let us make it quiet | 376 # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. |
279 for arg | 377 "$@" $dashmflag | |
280 do # cycle over the arguments | 378 sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" |
281 case "$arg" in | |
282 "--mode=compile") | |
283 # insert --quiet before "--mode=compile" | |
284 set fnord "$@" --quiet | |
285 shift # fnord | |
286 ;; | |
287 esac | |
288 set fnord "$@" "$arg" | |
289 shift # fnord | |
290 shift # "$arg" | |
291 done | |
292 ;; | |
293 esac | |
294 "$@" $dashmflag | sed 's:^[^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" | |
295 ) & | |
296 proc=$! | |
297 "$@" | |
298 stat=$? | |
299 wait "$proc" | |
300 if test "$stat" != 0; then exit $stat; fi | |
301 rm -f "$depfile" | 379 rm -f "$depfile" |
302 cat < "$tmpdepfile" > "$depfile" | 380 cat < "$tmpdepfile" > "$depfile" |
303 tr ' ' ' | 381 tr ' ' ' |
304 ' < "$tmpdepfile" | \ | 382 ' < "$tmpdepfile" | \ |
305 ## Some versions of the HPUX 10.20 sed can't process this invocation | 383 ## Some versions of the HPUX 10.20 sed can't process this invocation |
313 # run, as this mode is specially recognized in the preamble. | 391 # run, as this mode is specially recognized in the preamble. |
314 exit 1 | 392 exit 1 |
315 ;; | 393 ;; |
316 | 394 |
317 makedepend) | 395 makedepend) |
396 "$@" || exit $? | |
397 # Remove any Libtool call | |
398 if test "$libtool" = yes; then | |
399 while test $1 != '--mode=compile'; do | |
400 shift | |
401 done | |
402 shift | |
403 fi | |
318 # X makedepend | 404 # X makedepend |
319 ( | 405 shift |
320 shift | 406 cleared=no |
321 cleared=no | 407 for arg in "$@"; do |
322 for arg in "$@"; do | 408 case $cleared in |
323 case $cleared in no) | 409 no) |
324 set ""; shift | 410 set ""; shift |
325 cleared=yes | 411 cleared=yes ;; |
326 esac | 412 esac |
327 case "$arg" in | 413 case "$arg" in |
328 -D*|-I*) | 414 -D*|-I*) |
329 set fnord "$@" "$arg"; shift;; | 415 set fnord "$@" "$arg"; shift ;; |
330 -*) | 416 # Strip any option that makedepend may not understand. Remove |
331 ;; | 417 # the object too, otherwise makedepend will parse it as a source file. |
332 *) | 418 -*|$object) |
333 set fnord "$@" "$arg"; shift;; | 419 ;; |
334 esac | 420 *) |
335 done | 421 set fnord "$@" "$arg"; shift ;; |
336 obj_suffix="`echo $object | sed 's/^.*\././'`" | 422 esac |
337 touch "$tmpdepfile" | 423 done |
338 ${MAKEDEPEND-makedepend} 2>/dev/null -o"$obj_suffix" -f"$tmpdepfile" "$@" | 424 obj_suffix="`echo $object | sed 's/^.*\././'`" |
339 ) & | 425 touch "$tmpdepfile" |
340 proc=$! | 426 ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" |
341 "$@" | |
342 stat=$? | |
343 wait "$proc" | |
344 if test "$stat" != 0; then exit $stat; fi | |
345 rm -f "$depfile" | 427 rm -f "$depfile" |
346 cat < "$tmpdepfile" > "$depfile" | 428 cat < "$tmpdepfile" > "$depfile" |
347 tail +3 "$tmpdepfile" | tr ' ' ' | 429 sed '1,2d' "$tmpdepfile" | tr ' ' ' |
348 ' | \ | 430 ' | \ |
349 ## Some versions of the HPUX 10.20 sed can't process this invocation | 431 ## Some versions of the HPUX 10.20 sed can't process this invocation |
350 ## correctly. Breaking it into two sed invocations is a workaround. | 432 ## correctly. Breaking it into two sed invocations is a workaround. |
351 sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" | 433 sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" |
352 rm -f "$tmpdepfile" "$tmpdepfile".bak | 434 rm -f "$tmpdepfile" "$tmpdepfile".bak |
353 ;; | 435 ;; |
354 | 436 |
355 cpp) | 437 cpp) |
356 # Important note: in order to support this mode, a compiler *must* | 438 # Important note: in order to support this mode, a compiler *must* |
357 # always write the proprocessed file to stdout, regardless of -o, | 439 # always write the preprocessed file to stdout. |
358 # because we must use -o when running libtool. | 440 "$@" || exit $? |
359 ( IFS=" " | 441 |
360 case " $* " in | 442 # Remove the call to Libtool. |
361 *" --mode=compile "*) | 443 if test "$libtool" = yes; then |
362 for arg | 444 while test $1 != '--mode=compile'; do |
363 do # cycle over the arguments | 445 shift |
364 case $arg in | 446 done |
365 "--mode=compile") | 447 shift |
366 # insert --quiet before "--mode=compile" | 448 fi |
367 set fnord "$@" --quiet | 449 |
368 shift # fnord | 450 # Remove `-o $object'. |
369 ;; | 451 IFS=" " |
370 esac | 452 for arg |
371 set fnord "$@" "$arg" | 453 do |
372 shift # fnord | 454 case $arg in |
373 shift # "$arg" | 455 -o) |
374 done | 456 shift |
457 ;; | |
458 $object) | |
459 shift | |
460 ;; | |
461 *) | |
462 set fnord "$@" "$arg" | |
463 shift # fnord | |
464 shift # $arg | |
375 ;; | 465 ;; |
376 esac | 466 esac |
377 "$@" -E | | 467 done |
468 | |
469 "$@" -E | | |
378 sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | | 470 sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | |
379 sed '$ s: \\$::' > "$tmpdepfile" | 471 sed '$ s: \\$::' > "$tmpdepfile" |
380 ) & | |
381 proc=$! | |
382 "$@" | |
383 stat=$? | |
384 wait "$proc" | |
385 if test "$stat" != 0; then exit $stat; fi | |
386 rm -f "$depfile" | 472 rm -f "$depfile" |
387 echo "$object : \\" > "$depfile" | 473 echo "$object : \\" > "$depfile" |
388 cat < "$tmpdepfile" >> "$depfile" | 474 cat < "$tmpdepfile" >> "$depfile" |
389 sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" | 475 sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" |
390 rm -f "$tmpdepfile" | 476 rm -f "$tmpdepfile" |
391 ;; | 477 ;; |
392 | 478 |
393 msvisualcpp) | 479 msvisualcpp) |
394 # Important note: in order to support this mode, a compiler *must* | 480 # Important note: in order to support this mode, a compiler *must* |
395 # always write the proprocessed file to stdout, regardless of -o, | 481 # always write the preprocessed file to stdout, regardless of -o, |
396 # because we must use -o when running libtool. | 482 # because we must use -o when running libtool. |
397 ( IFS=" " | 483 "$@" || exit $? |
398 case " $* " in | 484 IFS=" " |
399 *" --mode=compile "*) | 485 for arg |
400 for arg | 486 do |
401 do # cycle over the arguments | 487 case "$arg" in |
402 case $arg in | 488 "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") |
403 "--mode=compile") | 489 set fnord "$@" |
404 # insert --quiet before "--mode=compile" | 490 shift |
405 set fnord "$@" --quiet | 491 shift |
406 shift # fnord | 492 ;; |
407 ;; | 493 *) |
408 esac | |
409 set fnord "$@" "$arg" | 494 set fnord "$@" "$arg" |
410 shift # fnord | 495 shift |
411 shift # "$arg" | 496 shift |
412 done | 497 ;; |
413 ;; | |
414 esac | 498 esac |
415 "$@" -E | | 499 done |
416 sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" | 500 "$@" -E | |
417 ) & | 501 sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" |
418 proc=$! | |
419 "$@" | |
420 stat=$? | |
421 wait "$proc" | |
422 if test "$stat" != 0; then exit $stat; fi | |
423 rm -f "$depfile" | 502 rm -f "$depfile" |
424 echo "$object : \\" > "$depfile" | 503 echo "$object : \\" > "$depfile" |
425 . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" | 504 . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" |
426 echo " " >> "$depfile" | 505 echo " " >> "$depfile" |
427 . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" | 506 . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" |
437 exit 1 | 516 exit 1 |
438 ;; | 517 ;; |
439 esac | 518 esac |
440 | 519 |
441 exit 0 | 520 exit 0 |
521 | |
522 # Local Variables: | |
523 # mode: shell-script | |
524 # sh-indentation: 2 | |
525 # eval: (add-hook 'write-file-hooks 'time-stamp) | |
526 # time-stamp-start: "scriptversion=" | |
527 # time-stamp-format: "%:y-%02m-%02d.%02H" | |
528 # time-stamp-end: "$" | |
529 # End: |