Changeset 59310bf for automake/depcomp
- Timestamp:
- Jul 28, 2017, 2:26:14 PM (7 years ago)
- Branches:
- ADT, aaron-thesis, arm-eh, ast-experimental, cleanup-dtors, deferred_resn, demangler, enum, forall-pointer-decay, jacob/cs343-translation, jenkins-sandbox, master, new-ast, new-ast-unique-expr, new-env, no_list, persistent-indexer, pthread-emulation, qualifiedEnum, resolv-new, with_gc
- Children:
- 79dbb79
- Parents:
- a2e0687
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
automake/depcomp
ra2e0687 r59310bf 2 2 # depcomp - compile a program generating dependencies as side-effects 3 3 4 scriptversion=2011-12-04.11; # UTC 5 6 # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 7 # 2011 Free Software Foundation, Inc. 4 scriptversion=2013-05-30.07; # UTC 5 6 # Copyright (C) 1999-2014 Free Software Foundation, Inc. 8 7 9 8 # This program is free software; you can redistribute it and/or modify … … 29 28 case $1 in 30 29 '') 31 echo "$0: No command. Try \`$0 --help' for more information." 1>&232 33 30 echo "$0: No command. Try '$0 --help' for more information." 1>&2 31 exit 1; 32 ;; 34 33 -h | --h*) 35 34 cat <<\EOF … … 41 40 Environment variables: 42 41 depmode Dependency tracking mode. 43 source Source file read by `PROGRAMS ARGS'.44 object Object file output by `PROGRAMS ARGS'.42 source Source file read by 'PROGRAMS ARGS'. 43 object Object file output by 'PROGRAMS ARGS'. 45 44 DEPDIR directory where to store dependencies. 46 45 depfile Dependency file to output. … … 58 57 esac 59 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 60 119 if test -z "$depmode" || test -z "$source" || test -z "$object"; then 61 120 echo "depcomp: Variables source, object and depmode must be set" 1>&2 … … 69 128 70 129 rm -f "$tmpdepfile" 130 131 # Avoid interferences from the environment. 132 gccflag= dashmflag= 71 133 72 134 # Some modes work just like other modes, but use different flags. We … … 81 143 82 144 if test "$depmode" = dashXmstdout; then 83 84 85 145 # This is just like dashmstdout with a different argument. 146 dashmflag=-xM 147 depmode=dashmstdout 86 148 fi 87 149 88 150 cygpath_u="cygpath -u -f -" 89 151 if test "$depmode" = msvcmsys; then 90 91 92 93 94 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 95 157 fi 96 158 97 159 if test "$depmode" = msvc7msys; then 98 # This is just like msvc7 but w/o cygpath translation. 99 # Just convert the backslash-escaped backslashes to single forward 100 # slashes to satisfy depend.m4 101 cygpath_u='sed s,\\\\,/,g' 102 depmode=msvc7 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 103 171 fi 104 172 … … 123 191 "$@" 124 192 stat=$? 125 if test $stat -eq 0; then : 126 else 193 if test $stat -ne 0; then 127 194 rm -f "$tmpdepfile" 128 195 exit $stat … … 132 199 133 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). 134 204 ## There are various ways to get dependency output from gcc. Here's 135 205 ## why we pick this rather obscure method: … … 138 208 ## (We might end up doing this anyway to support other compilers.) 139 209 ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 140 ## -MM, not -M (despite what the docs say). 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. 141 212 ## - Using -M directly means running the compiler twice (even worse 142 213 ## than renaming). … … 146 217 "$@" -Wp,"$gccflag$tmpdepfile" 147 218 stat=$? 148 if test $stat -eq 0; then : 149 else 219 if test $stat -ne 0; then 150 220 rm -f "$tmpdepfile" 151 221 exit $stat … … 153 223 rm -f "$depfile" 154 224 echo "$object : \\" > "$depfile" 155 alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz156 ## The second -e expression handles DOS-style file names with driveletters.225 # The second -e expression handles DOS-style file names with drive 226 # letters. 157 227 sed -e 's/^[^:]*: / /' \ 158 228 -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 159 ## This next piece of magic avoids the `deleted header file'problem.229 ## This next piece of magic avoids the "deleted header file" problem. 160 230 ## The problem is that when a header file which appears in a .P file 161 231 ## is deleted, the dependency causes make to die (because there is … … 163 233 ## dummy dependencies for each header file. Too bad gcc doesn't do 164 234 ## this for us directly. 165 tr ' ' ' 166 ' < "$tmpdepfile" | 167 ## Some versions of gcc put a space before the `:'. On the theory 235 ## Some versions of gcc put a space before the ':'. On the theory 168 236 ## that the space means something, we add a space to the output as 169 237 ## well. hp depmode also adds that space, but also prefixes the VPATH … … 171 239 ## Some versions of the HPUX 10.20 sed can't process this invocation 172 240 ## correctly. Breaking it into two sed invocations is a workaround. 173 sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ 174 | sed -e 's/$/ :/' >> "$depfile" 241 tr ' ' "$nl" < "$tmpdepfile" \ 242 | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ 243 | sed -e 's/$/ :/' >> "$depfile" 175 244 rm -f "$tmpdepfile" 176 245 ;; … … 190 259 fi 191 260 stat=$? 192 if test $stat -eq 0; then : 193 else 261 if test $stat -ne 0; then 194 262 rm -f "$tmpdepfile" 195 263 exit $stat … … 199 267 if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 200 268 echo "$object : \\" > "$depfile" 201 202 269 # Clip off the initial element (the dependent). Don't try to be 203 270 # clever and replace this with sed code, as IRIX sed won't handle 204 271 # lines with more than a fixed number of characters (4096 in 205 272 # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 206 # the IRIX cc adds comments like `#:fec' to the end of the273 # the IRIX cc adds comments like '#:fec' to the end of the 207 274 # dependency line. 208 tr ' ' ' 209 ' < "$tmpdepfile" \ 210 | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 211 tr ' 212 ' ' ' >> "$depfile" 275 tr ' ' "$nl" < "$tmpdepfile" \ 276 | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ 277 | tr "$nl" ' ' >> "$depfile" 213 278 echo >> "$depfile" 214 215 279 # The second pass generates a dummy entry for each header file. 216 tr ' ' ' 217 ' < "$tmpdepfile" \ 218 | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 219 >> "$depfile" 280 tr ' ' "$nl" < "$tmpdepfile" \ 281 | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 282 >> "$depfile" 220 283 else 221 # The sourcefile does not contain any dependencies, so just 222 # store a dummy comment line, to avoid errors with the Makefile 223 # "include basename.Plo" scheme. 224 echo "#dummy" > "$depfile" 284 make_dummy_depfile 225 285 fi 226 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 227 294 ;; 228 295 … … 230 297 # The C for AIX Compiler uses -M and outputs the dependencies 231 298 # in a .u file. In older versions, this file always lives in the 232 # current directory. Also, the AIX compiler puts `$object:' at the299 # current directory. Also, the AIX compiler puts '$object:' at the 233 300 # start of each line; $object doesn't have directory information. 234 301 # Version 6 uses the directory in both cases. 235 dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 236 test "x$dir" = "x$object" && dir= 237 base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 302 set_dir_from "$object" 303 set_base_from "$object" 238 304 if test "$libtool" = yes; then 239 305 tmpdepfile1=$dir$base.u … … 248 314 fi 249 315 stat=$? 250 251 if test $stat -eq 0; then : 252 else 316 if test $stat -ne 0; then 253 317 rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 254 318 exit $stat … … 259 323 test -f "$tmpdepfile" && break 260 324 done 261 if test -f "$tmpdepfile"; then 262 # Each line is of the form `foo.o: dependent.h'. 263 # Do two passes, one to just change these to 264 # `$object: dependent.h' and one to simply `dependent.h:'. 265 sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 266 # That's a tab and a space in the []. 267 sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 268 else 269 # The sourcefile does not contain any dependencies, so just 270 # store a dummy comment line, to avoid errors with the Makefile 271 # "include basename.Plo" scheme. 272 echo "#dummy" > "$depfile" 273 fi 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" 274 356 rm -f "$tmpdepfile" 275 357 ;; 276 358 277 icc) 278 # Intel's C compiler understands `-MD -MF file'. However on 279 # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 280 # ICC 7.0 will fill foo.d with something like 281 # foo.o: sub/foo.c 282 # foo.o: sub/foo.h 283 # which is wrong. We want: 284 # sub/foo.o: sub/foo.c 285 # sub/foo.o: sub/foo.h 286 # sub/foo.c: 287 # sub/foo.h: 288 # ICC 7.1 will output 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 289 369 # foo.o: sub/foo.c sub/foo.h 290 # and will wrap long lines using \:370 # and will wrap long lines using '\' : 291 371 # foo.o: sub/foo.c ... \ 292 372 # sub/foo.h ... \ 293 373 # ... 294 295 "$@" -MD -MF "$tmpdepfile" 296 stat=$? 297 if test $stat -eq 0; then : 298 else 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 299 419 rm -f "$tmpdepfile" 300 420 exit $stat … … 308 428 # Some versions of the HPUX 10.20 sed can't process this invocation 309 429 # correctly. Breaking it into two sed invocations is a workaround. 310 sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |311 sed -e 's/$/ :/' >> "$depfile"430 sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ 431 | sed -e 's/$/ :/' >> "$depfile" 312 432 rm -f "$tmpdepfile" 313 433 ;; … … 320 440 # happens to be. 321 441 # Much of this is similar to the tru64 case; see comments there. 322 dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 323 test "x$dir" = "x$object" && dir= 324 base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 442 set_dir_from "$object" 443 set_base_from "$object" 325 444 if test "$libtool" = yes; then 326 445 tmpdepfile1=$dir$base.d … … 333 452 fi 334 453 stat=$? 335 if test $stat -eq 0; then : 336 else 454 if test $stat -ne 0; then 337 455 rm -f "$tmpdepfile1" "$tmpdepfile2" 338 456 exit $stat … … 344 462 done 345 463 if test -f "$tmpdepfile"; then 346 sed -e "s,^.*\.[ a-z]*:,$object:," "$tmpdepfile" > "$depfile"347 # Add `dependent.h:' lines.464 sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" 465 # Add 'dependent.h:' lines. 348 466 sed -ne '2,${ 349 350 351 352 353 467 s/^ *// 468 s/ \\*$// 469 s/$/:/ 470 p 471 }' "$tmpdepfile" >> "$depfile" 354 472 else 355 echo "#dummy" > "$depfile"473 make_dummy_depfile 356 474 fi 357 475 rm -f "$tmpdepfile" "$tmpdepfile2" … … 359 477 360 478 tru64) 361 # The Tru64 compiler uses -MD to generate dependencies as a side 362 # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 363 # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 364 # dependencies in `foo.d' instead, so we check for that too. 365 # Subdirectories are respected. 366 dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 367 test "x$dir" = "x$object" && dir= 368 base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 369 370 if test "$libtool" = yes; then 371 # With Tru64 cc, shared objects can also be used to make a 372 # static library. This mechanism is used in libtool 1.4 series to 373 # handle both shared and static libraries in a single compilation. 374 # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 375 # 376 # With libtool 1.5 this exception was removed, and libtool now 377 # generates 2 separate objects for the 2 libraries. These two 378 # compilations output dependencies in $dir.libs/$base.o.d and 379 # in $dir$base.o.d. We have to check for both files, because 380 # one of the two compilations can be disabled. We should prefer 381 # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 382 # automatically cleaned when .libs/ is deleted, while ignoring 383 # the former would cause a distcleancheck panic. 384 tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 385 tmpdepfile2=$dir$base.o.d # libtool 1.5 386 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 387 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 388 "$@" -Wc,-MD 389 else 390 tmpdepfile1=$dir$base.o.d 391 tmpdepfile2=$dir$base.d 392 tmpdepfile3=$dir$base.d 393 tmpdepfile4=$dir$base.d 394 "$@" -MD 395 fi 396 397 stat=$? 398 if test $stat -eq 0; then : 399 else 400 rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 401 exit $stat 402 fi 403 404 for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 405 do 406 test -f "$tmpdepfile" && break 407 done 408 if test -f "$tmpdepfile"; then 409 sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 410 # That's a tab and a space in the []. 411 sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 412 else 413 echo "#dummy" > "$depfile" 414 fi 415 rm -f "$tmpdepfile" 416 ;; 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 ;; 417 519 418 520 msvc7) … … 425 527 stat=$? 426 528 grep -v '^Note: including file: ' "$tmpdepfile" 427 if test "$stat" = 0; then : 428 else 529 if test $stat -ne 0; then 429 530 rm -f "$tmpdepfile" 430 531 exit $stat … … 444 545 }' | $cygpath_u | sort -u | sed -n ' 445 546 s/ /\\ /g 446 s/\(.*\)/ 547 s/\(.*\)/'"$tab"'\1 \\/p 447 548 s/.\(.*\) \\/\1:/ 448 549 H 449 550 $ { 450 s/.*/ 551 s/.*/'"$tab"'/ 451 552 G 452 553 p 453 554 }' >> "$depfile" 555 echo >> "$depfile" # make sure the fragment doesn't end with a backslash 454 556 rm -f "$tmpdepfile" 455 557 ;; … … 479 581 fi 480 582 481 # Remove `-o $object'.583 # Remove '-o $object'. 482 584 IFS=" " 483 585 for arg … … 499 601 500 602 test -z "$dashmflag" && dashmflag=-M 501 # Require at least two characters before searching for `:'603 # Require at least two characters before searching for ':' 502 604 # in the target name. This is to cope with DOS-style filenames: 503 # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.605 # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. 504 606 "$@" $dashmflag | 505 sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :'> "$tmpdepfile"607 sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" 506 608 rm -f "$depfile" 507 609 cat < "$tmpdepfile" > "$depfile" 508 tr ' ' '509 ' < "$tmpdepfile" | \ 510 ## Some versions of the HPUX 10.20 sed can't process this invocation 511 ## correctly. Breaking it into two sed invocations is a workaround. 512 sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d'| sed -e 's/$/ :/' >> "$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" 513 615 rm -f "$tmpdepfile" 514 616 ;; … … 563 665 # No need to regex-escape $object, excess matching of '.' is harmless. 564 666 sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" 565 sed '1,2d' "$tmpdepfile" | tr ' ' ' 566 ' | \ 567 ## Some versions of the HPUX 10.20 sed can't process this invocation 568 ## correctly. Breaking it into two sed invocations is a workaround. 569 sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$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" 570 673 rm -f "$tmpdepfile" "$tmpdepfile".bak 571 674 ;; … … 584 687 fi 585 688 586 # Remove `-o $object'.689 # Remove '-o $object'. 587 690 IFS=" " 588 691 for arg … … 603 706 done 604 707 605 "$@" -E |606 sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \607 -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |608 sed '$ s: \\$::' > "$tmpdepfile"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" 609 712 rm -f "$depfile" 610 713 echo "$object : \\" > "$depfile" … … 638 741 ;; 639 742 "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 640 641 642 643 743 set fnord "$@" 744 shift 745 shift 746 ;; 644 747 *) 645 646 647 648 748 set fnord "$@" "$arg" 749 shift 750 shift 751 ;; 649 752 esac 650 753 done … … 653 756 rm -f "$depfile" 654 757 echo "$object : \\" > "$depfile" 655 sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: 656 echo " 758 sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" 759 echo "$tab" >> "$depfile" 657 760 sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" 658 761 rm -f "$tmpdepfile"
Note: See TracChangeset
for help on using the changeset viewer.