Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • automake/depcomp

    r59310bf r00cc023  
    22# depcomp - compile a program generating dependencies as side-effects
    33
    4 scriptversion=2013-05-30.07; # UTC
    5 
    6 # Copyright (C) 1999-2014 Free Software Foundation, Inc.
     4scriptversion=2011-12-04.11; # UTC
     5
     6# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
     7# 2011 Free Software Foundation, Inc.
    78
    89# This program is free software; you can redistribute it and/or modify
     
    2829case $1 in
    2930  '')
    30     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
    31     exit 1;
    32     ;;
     31     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
     32     exit 1;
     33     ;;
    3334  -h | --h*)
    3435    cat <<\EOF
     
    4041Environment variables:
    4142  depmode     Dependency tracking mode.
    42   source      Source file read by 'PROGRAMS ARGS'.
    43   object      Object file output by 'PROGRAMS ARGS'.
     43  source      Source file read by `PROGRAMS ARGS'.
     44  object      Object file output by `PROGRAMS ARGS'.
    4445  DEPDIR      directory where to store dependencies.
    4546  depfile     Dependency file to output.
     
    5758esac
    5859
    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 
    11960if test -z "$depmode" || test -z "$source" || test -z "$object"; then
    12061  echo "depcomp: Variables source, object and depmode must be set" 1>&2
     
    12869
    12970rm -f "$tmpdepfile"
    130 
    131 # Avoid interferences from the environment.
    132 gccflag= dashmflag=
    13371
    13472# Some modes work just like other modes, but use different flags.  We
     
    14381
    14482if test "$depmode" = dashXmstdout; then
    145   # This is just like dashmstdout with a different argument.
    146   dashmflag=-xM
    147   depmode=dashmstdout
     83   # This is just like dashmstdout with a different argument.
     84   dashmflag=-xM
     85   depmode=dashmstdout
    14886fi
    14987
    15088cygpath_u="cygpath -u -f -"
    15189if 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
     90   # This is just like msvisualcpp but w/o cygpath translation.
     91   # Just convert the backslash-escaped backslashes to single forward
     92   # slashes to satisfy depend.m4
     93   cygpath_u='sed s,\\\\,/,g'
     94   depmode=msvisualcpp
    15795fi
    15896
    15997if 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
     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
    171103fi
    172104
     
    191123  "$@"
    192124  stat=$?
    193   if test $stat -ne 0; then
     125  if test $stat -eq 0; then :
     126  else
    194127    rm -f "$tmpdepfile"
    195128    exit $stat
     
    199132
    200133gcc)
    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).
    204134## There are various ways to get dependency output from gcc.  Here's
    205135## why we pick this rather obscure method:
     
    208138##   (We might end up doing this anyway to support other compilers.)
    209139## - 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.
     140##   -MM, not -M (despite what the docs say).
    212141## - Using -M directly means running the compiler twice (even worse
    213142##   than renaming).
     
    217146  "$@" -Wp,"$gccflag$tmpdepfile"
    218147  stat=$?
    219   if test $stat -ne 0; then
     148  if test $stat -eq 0; then :
     149  else
    220150    rm -f "$tmpdepfile"
    221151    exit $stat
     
    223153  rm -f "$depfile"
    224154  echo "$object : \\" > "$depfile"
    225   # The second -e expression handles DOS-style file names with drive
    226   # letters.
     155  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
     156## The second -e expression handles DOS-style file names with drive letters.
    227157  sed -e 's/^[^:]*: / /' \
    228158      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
    229 ## This next piece of magic avoids the "deleted header file" problem.
     159## This next piece of magic avoids the `deleted header file' problem.
    230160## The problem is that when a header file which appears in a .P file
    231161## is deleted, the dependency causes make to die (because there is
     
    233163## dummy dependencies for each header file.  Too bad gcc doesn't do
    234164## this for us directly.
    235 ## Some versions of gcc put a space before the ':'.  On the theory
     165  tr ' ' '
     166' < "$tmpdepfile" |
     167## Some versions of gcc put a space before the `:'.  On the theory
    236168## that the space means something, we add a space to the output as
    237169## well.  hp depmode also adds that space, but also prefixes the VPATH
     
    239171## Some versions of the HPUX 10.20 sed can't process this invocation
    240172## 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"
     173    sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
     174      | sed -e 's/$/ :/' >> "$depfile"
    244175  rm -f "$tmpdepfile"
    245176  ;;
     
    259190  fi
    260191  stat=$?
    261   if test $stat -ne 0; then
     192  if test $stat -eq 0; then :
     193  else
    262194    rm -f "$tmpdepfile"
    263195    exit $stat
     
    267199  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
    268200    echo "$object : \\" > "$depfile"
     201
    269202    # Clip off the initial element (the dependent).  Don't try to be
    270203    # clever and replace this with sed code, as IRIX sed won't handle
    271204    # lines with more than a fixed number of characters (4096 in
    272205    # 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
     206    # the IRIX cc adds comments like `#:fec' to the end of the
    274207    # dependency line.
    275     tr ' ' "$nl" < "$tmpdepfile" \
    276       | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
    277       | tr "$nl" ' ' >> "$depfile"
     208    tr ' ' '
     209' < "$tmpdepfile" \
     210    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
     211    tr '
     212' ' ' >> "$depfile"
    278213    echo >> "$depfile"
     214
    279215    # 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
     216    tr ' ' '
     217' < "$tmpdepfile" \
     218   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
     219   >> "$depfile"
     220  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"
     225  fi
     226  rm -f "$tmpdepfile"
    294227  ;;
    295228
     
    297230  # The C for AIX Compiler uses -M and outputs the dependencies
    298231  # in a .u file.  In older versions, this file always lives in the
    299   # current directory.  Also, the AIX compiler puts '$object:' at the
     232  # current directory.  Also, the AIX compiler puts `$object:' at the
    300233  # start of each line; $object doesn't have directory information.
    301234  # Version 6 uses the directory in both cases.
    302   set_dir_from "$object"
    303   set_base_from "$object"
     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$//'`
    304238  if test "$libtool" = yes; then
    305239    tmpdepfile1=$dir$base.u
     
    314248  fi
    315249  stat=$?
    316   if test $stat -ne 0; then
     250
     251  if test $stat -eq 0; then :
     252  else
    317253    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
    318254    exit $stat
     
    323259    test -f "$tmpdepfile" && break
    324260  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
     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
     274  rm -f "$tmpdepfile"
     275  ;;
     276
     277icc)
     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
    369289  #    foo.o: sub/foo.c sub/foo.h
    370   # and will wrap long lines using '\' :
     290  # and will wrap long lines using \ :
    371291  #    foo.o: sub/foo.c ... \
    372292  #     sub/foo.h ... \
    373293  #     ...
    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
     294
     295  "$@" -MD -MF "$tmpdepfile"
     296  stat=$?
     297  if test $stat -eq 0; then :
     298  else
    419299    rm -f "$tmpdepfile"
    420300    exit $stat
     
    428308  # Some versions of the HPUX 10.20 sed can't process this invocation
    429309  # correctly.  Breaking it into two sed invocations is a workaround.
    430   sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
    431     | sed -e 's/$/ :/' >> "$depfile"
     310  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
     311    sed -e 's/$/ :/' >> "$depfile"
    432312  rm -f "$tmpdepfile"
    433313  ;;
     
    440320  # happens to be.
    441321  # Much of this is similar to the tru64 case; see comments there.
    442   set_dir_from  "$object"
    443   set_base_from "$object"
     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$//'`
    444325  if test "$libtool" = yes; then
    445326    tmpdepfile1=$dir$base.d
     
    452333  fi
    453334  stat=$?
    454   if test $stat -ne 0; then
     335  if test $stat -eq 0; then :
     336  else
    455337     rm -f "$tmpdepfile1" "$tmpdepfile2"
    456338     exit $stat
     
    462344  done
    463345  if test -f "$tmpdepfile"; then
    464     sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
    465     # Add 'dependent.h:' lines.
     346    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
     347    # Add `dependent.h:' lines.
    466348    sed -ne '2,${
    467                s/^ *//
    468                s/ \\*$//
    469                s/$/:/
    470                p
    471              }' "$tmpdepfile" >> "$depfile"
    472   else
    473     make_dummy_depfile
     349               s/^ *//
     350               s/ \\*$//
     351               s/$/:/
     352               p
     353             }' "$tmpdepfile" >> "$depfile"
     354  else
     355    echo "#dummy" > "$depfile"
    474356  fi
    475357  rm -f "$tmpdepfile" "$tmpdepfile2"
     
    477359
    478360tru64)
    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   ;;
     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   ;;
    519417
    520418msvc7)
     
    527425  stat=$?
    528426  grep -v '^Note: including file: ' "$tmpdepfile"
    529   if test $stat -ne 0; then
     427  if test "$stat" = 0; then :
     428  else
    530429    rm -f "$tmpdepfile"
    531430    exit $stat
     
    545444}' | $cygpath_u | sort -u | sed -n '
    546445s/ /\\ /g
    547 s/\(.*\)/'"$tab"'\1 \\/p
     446s/\(.*\)/       \1 \\/p
    548447s/.\(.*\) \\/\1:/
    549448H
    550449$ {
    551   s/.*/'"$tab"'/
     450  s/.*/ /
    552451  G
    553452  p
    554453}' >> "$depfile"
    555   echo >> "$depfile" # make sure the fragment doesn't end with a backslash
    556454  rm -f "$tmpdepfile"
    557455  ;;
     
    581479  fi
    582480
    583   # Remove '-o $object'.
     481  # Remove `-o $object'.
    584482  IFS=" "
    585483  for arg
     
    601499
    602500  test -z "$dashmflag" && dashmflag=-M
    603   # Require at least two characters before searching for ':'
     501  # Require at least two characters before searching for `:'
    604502  # 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.
     503  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
    606504  "$@" $dashmflag |
    607     sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
     505    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
    608506  rm -f "$depfile"
    609507  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"
     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"
    615513  rm -f "$tmpdepfile"
    616514  ;;
     
    665563  # No need to regex-escape $object, excess matching of '.' is harmless.
    666564  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"
     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"
    673570  rm -f "$tmpdepfile" "$tmpdepfile".bak
    674571  ;;
     
    687584  fi
    688585
    689   # Remove '-o $object'.
     586  # Remove `-o $object'.
    690587  IFS=" "
    691588  for arg
     
    706603  done
    707604
    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"
     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"
    712609  rm -f "$depfile"
    713610  echo "$object : \\" > "$depfile"
     
    741638      ;;
    742639    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
    743         set fnord "$@"
    744         shift
    745         shift
    746         ;;
     640        set fnord "$@"
     641        shift
     642        shift
     643        ;;
    747644    *)
    748         set fnord "$@" "$arg"
    749         shift
    750         shift
    751         ;;
     645        set fnord "$@" "$arg"
     646        shift
     647        shift
     648        ;;
    752649    esac
    753650  done
     
    756653  rm -f "$depfile"
    757654  echo "$object : \\" > "$depfile"
    758   sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
    759   echo "$tab" >> "$depfile"
     655  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::      \1 \\:p' >> "$depfile"
     656  echo "        " >> "$depfile"
    760657  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
    761658  rm -f "$tmpdepfile"
Note: See TracChangeset for help on using the changeset viewer.