Annotation of rpl/depcomp, revision 1.5

1.1       bertrand    1: #! /bin/sh
                      2: # depcomp - compile a program generating dependencies as side-effects
                      3: 
1.5     ! bertrand    4: scriptversion=2011-12-04.11; # UTC
1.1       bertrand    5: 
1.5     ! bertrand    6: # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010,
        !             7: # 2011 Free Software Foundation, Inc.
1.1       bertrand    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: # Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
                     28: 
                     29: case $1 in
                     30:   '')
                     31:      echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
                     32:      exit 1;
                     33:      ;;
                     34:   -h | --h*)
                     35:     cat <<\EOF
                     36: Usage: depcomp [--help] [--version] PROGRAM [ARGS]
                     37: 
                     38: Run PROGRAMS ARGS to compile a file, generating dependencies
                     39: as side-effects.
                     40: 
                     41: Environment variables:
                     42:   depmode     Dependency tracking mode.
                     43:   source      Source file read by `PROGRAMS ARGS'.
                     44:   object      Object file output by `PROGRAMS ARGS'.
                     45:   DEPDIR      directory where to store dependencies.
                     46:   depfile     Dependency file to output.
1.5     ! bertrand   47:   tmpdepfile  Temporary file to use when outputting dependencies.
1.1       bertrand   48:   libtool     Whether libtool is used (yes/no).
                     49: 
                     50: Report bugs to <bug-automake@gnu.org>.
                     51: EOF
                     52:     exit $?
                     53:     ;;
                     54:   -v | --v*)
                     55:     echo "depcomp $scriptversion"
                     56:     exit $?
                     57:     ;;
                     58: esac
                     59: 
                     60: if test -z "$depmode" || test -z "$source" || test -z "$object"; then
                     61:   echo "depcomp: Variables source, object and depmode must be set" 1>&2
                     62:   exit 1
                     63: fi
                     64: 
                     65: # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
                     66: depfile=${depfile-`echo "$object" |
                     67:   sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
                     68: tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
                     69: 
                     70: rm -f "$tmpdepfile"
                     71: 
                     72: # Some modes work just like other modes, but use different flags.  We
                     73: # parameterize here, but still list the modes in the big case below,
                     74: # to make depend.m4 easier to write.  Note that we *cannot* use a case
                     75: # here, because this file can only contain one case statement.
                     76: if test "$depmode" = hp; then
                     77:   # HP compiler uses -M and no extra arg.
                     78:   gccflag=-M
                     79:   depmode=gcc
                     80: fi
                     81: 
                     82: if test "$depmode" = dashXmstdout; then
                     83:    # This is just like dashmstdout with a different argument.
                     84:    dashmflag=-xM
                     85:    depmode=dashmstdout
                     86: fi
                     87: 
                     88: cygpath_u="cygpath -u -f -"
                     89: if test "$depmode" = msvcmsys; then
                     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
1.5     ! bertrand   93:    cygpath_u='sed s,\\\\,/,g'
1.1       bertrand   94:    depmode=msvisualcpp
                     95: fi
                     96: 
1.5     ! bertrand   97: 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
        !           103: fi
        !           104: 
1.1       bertrand  105: case "$depmode" in
                    106: gcc3)
                    107: ## gcc 3 implements dependency tracking that does exactly what
                    108: ## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
                    109: ## it if -MD -MP comes after the -MF stuff.  Hmm.
                    110: ## Unfortunately, FreeBSD c89 acceptance of flags depends upon
                    111: ## the command line argument order; so add the flags where they
                    112: ## appear in depend2.am.  Note that the slowdown incurred here
                    113: ## affects only configure: in makefiles, %FASTDEP% shortcuts this.
                    114:   for arg
                    115:   do
                    116:     case $arg in
                    117:     -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
                    118:     *)  set fnord "$@" "$arg" ;;
                    119:     esac
                    120:     shift # fnord
                    121:     shift # $arg
                    122:   done
                    123:   "$@"
                    124:   stat=$?
                    125:   if test $stat -eq 0; then :
                    126:   else
                    127:     rm -f "$tmpdepfile"
                    128:     exit $stat
                    129:   fi
                    130:   mv "$tmpdepfile" "$depfile"
                    131:   ;;
                    132: 
                    133: gcc)
                    134: ## There are various ways to get dependency output from gcc.  Here's
                    135: ## why we pick this rather obscure method:
                    136: ## - Don't want to use -MD because we'd like the dependencies to end
                    137: ##   up in a subdir.  Having to rename by hand is ugly.
                    138: ##   (We might end up doing this anyway to support other compilers.)
                    139: ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
                    140: ##   -MM, not -M (despite what the docs say).
                    141: ## - Using -M directly means running the compiler twice (even worse
                    142: ##   than renaming).
                    143:   if test -z "$gccflag"; then
                    144:     gccflag=-MD,
                    145:   fi
                    146:   "$@" -Wp,"$gccflag$tmpdepfile"
                    147:   stat=$?
                    148:   if test $stat -eq 0; then :
                    149:   else
                    150:     rm -f "$tmpdepfile"
                    151:     exit $stat
                    152:   fi
                    153:   rm -f "$depfile"
                    154:   echo "$object : \\" > "$depfile"
                    155:   alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
                    156: ## The second -e expression handles DOS-style file names with drive letters.
                    157:   sed -e 's/^[^:]*: / /' \
                    158:       -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
                    159: ## This next piece of magic avoids the `deleted header file' problem.
                    160: ## The problem is that when a header file which appears in a .P file
                    161: ## is deleted, the dependency causes make to die (because there is
                    162: ## typically no way to rebuild the header).  We avoid this by adding
                    163: ## dummy dependencies for each header file.  Too bad gcc doesn't do
                    164: ## this for us directly.
                    165:   tr ' ' '
                    166: ' < "$tmpdepfile" |
                    167: ## Some versions of gcc put a space before the `:'.  On the theory
                    168: ## that the space means something, we add a space to the output as
1.5     ! bertrand  169: ## well.  hp depmode also adds that space, but also prefixes the VPATH
        !           170: ## to the object.  Take care to not repeat it in the output.
1.1       bertrand  171: ## Some versions of the HPUX 10.20 sed can't process this invocation
                    172: ## correctly.  Breaking it into two sed invocations is a workaround.
1.5     ! bertrand  173:     sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
        !           174:       | sed -e 's/$/ :/' >> "$depfile"
1.1       bertrand  175:   rm -f "$tmpdepfile"
                    176:   ;;
                    177: 
                    178: hp)
                    179:   # This case exists only to let depend.m4 do its work.  It works by
                    180:   # looking at the text of this script.  This case will never be run,
                    181:   # since it is checked for above.
                    182:   exit 1
                    183:   ;;
                    184: 
                    185: sgi)
                    186:   if test "$libtool" = yes; then
                    187:     "$@" "-Wp,-MDupdate,$tmpdepfile"
                    188:   else
                    189:     "$@" -MDupdate "$tmpdepfile"
                    190:   fi
                    191:   stat=$?
                    192:   if test $stat -eq 0; then :
                    193:   else
                    194:     rm -f "$tmpdepfile"
                    195:     exit $stat
                    196:   fi
                    197:   rm -f "$depfile"
                    198: 
                    199:   if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
                    200:     echo "$object : \\" > "$depfile"
                    201: 
                    202:     # Clip off the initial element (the dependent).  Don't try to be
                    203:     # clever and replace this with sed code, as IRIX sed won't handle
                    204:     # lines with more than a fixed number of characters (4096 in
                    205:     # 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 the
                    207:     # dependency line.
                    208:     tr ' ' '
                    209: ' < "$tmpdepfile" \
                    210:     | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
                    211:     tr '
                    212: ' ' ' >> "$depfile"
                    213:     echo >> "$depfile"
                    214: 
                    215:     # 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"
                    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"
                    227:   ;;
                    228: 
                    229: aix)
                    230:   # The C for AIX Compiler uses -M and outputs the dependencies
                    231:   # in a .u file.  In older versions, this file always lives in the
                    232:   # current directory.  Also, the AIX compiler puts `$object:' at the
                    233:   # start of each line; $object doesn't have directory information.
                    234:   # 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$//'`
                    238:   if test "$libtool" = yes; then
                    239:     tmpdepfile1=$dir$base.u
                    240:     tmpdepfile2=$base.u
                    241:     tmpdepfile3=$dir.libs/$base.u
                    242:     "$@" -Wc,-M
                    243:   else
                    244:     tmpdepfile1=$dir$base.u
                    245:     tmpdepfile2=$dir$base.u
                    246:     tmpdepfile3=$dir$base.u
                    247:     "$@" -M
                    248:   fi
                    249:   stat=$?
                    250: 
                    251:   if test $stat -eq 0; then :
                    252:   else
                    253:     rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
                    254:     exit $stat
                    255:   fi
                    256: 
                    257:   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
                    258:   do
                    259:     test -f "$tmpdepfile" && break
                    260:   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
                    274:   rm -f "$tmpdepfile"
                    275:   ;;
                    276: 
                    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
                    289:   #    foo.o: sub/foo.c sub/foo.h
                    290:   # and will wrap long lines using \ :
                    291:   #    foo.o: sub/foo.c ... \
                    292:   #     sub/foo.h ... \
                    293:   #     ...
                    294: 
                    295:   "$@" -MD -MF "$tmpdepfile"
                    296:   stat=$?
                    297:   if test $stat -eq 0; then :
                    298:   else
                    299:     rm -f "$tmpdepfile"
                    300:     exit $stat
                    301:   fi
                    302:   rm -f "$depfile"
                    303:   # Each line is of the form `foo.o: dependent.h',
                    304:   # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
                    305:   # Do two passes, one to just change these to
                    306:   # `$object: dependent.h' and one to simply `dependent.h:'.
                    307:   sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
                    308:   # Some versions of the HPUX 10.20 sed can't process this invocation
                    309:   # correctly.  Breaking it into two sed invocations is a workaround.
                    310:   sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
                    311:     sed -e 's/$/ :/' >> "$depfile"
                    312:   rm -f "$tmpdepfile"
                    313:   ;;
                    314: 
                    315: hp2)
                    316:   # The "hp" stanza above does not work with aCC (C++) and HP's ia64
                    317:   # compilers, which have integrated preprocessors.  The correct option
                    318:   # to use with these is +Maked; it writes dependencies to a file named
                    319:   # 'foo.d', which lands next to the object file, wherever that
                    320:   # happens to be.
                    321:   # 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$//'`
                    325:   if test "$libtool" = yes; then
                    326:     tmpdepfile1=$dir$base.d
                    327:     tmpdepfile2=$dir.libs/$base.d
                    328:     "$@" -Wc,+Maked
                    329:   else
                    330:     tmpdepfile1=$dir$base.d
                    331:     tmpdepfile2=$dir$base.d
                    332:     "$@" +Maked
                    333:   fi
                    334:   stat=$?
                    335:   if test $stat -eq 0; then :
                    336:   else
                    337:      rm -f "$tmpdepfile1" "$tmpdepfile2"
                    338:      exit $stat
                    339:   fi
                    340: 
                    341:   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
                    342:   do
                    343:     test -f "$tmpdepfile" && break
                    344:   done
                    345:   if test -f "$tmpdepfile"; then
                    346:     sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
                    347:     # Add `dependent.h:' lines.
                    348:     sed -ne '2,${
                    349:           s/^ *//
                    350:           s/ \\*$//
                    351:           s/$/:/
                    352:           p
                    353:         }' "$tmpdepfile" >> "$depfile"
                    354:   else
                    355:     echo "#dummy" > "$depfile"
                    356:   fi
                    357:   rm -f "$tmpdepfile" "$tmpdepfile2"
                    358:   ;;
                    359: 
                    360: 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:    ;;
                    417: 
1.5     ! bertrand  418: msvc7)
        !           419:   if test "$libtool" = yes; then
        !           420:     showIncludes=-Wc,-showIncludes
        !           421:   else
        !           422:     showIncludes=-showIncludes
        !           423:   fi
        !           424:   "$@" $showIncludes > "$tmpdepfile"
        !           425:   stat=$?
        !           426:   grep -v '^Note: including file: ' "$tmpdepfile"
        !           427:   if test "$stat" = 0; then :
        !           428:   else
        !           429:     rm -f "$tmpdepfile"
        !           430:     exit $stat
        !           431:   fi
        !           432:   rm -f "$depfile"
        !           433:   echo "$object : \\" > "$depfile"
        !           434:   # The first sed program below extracts the file names and escapes
        !           435:   # backslashes for cygpath.  The second sed program outputs the file
        !           436:   # name when reading, but also accumulates all include files in the
        !           437:   # hold buffer in order to output them again at the end.  This only
        !           438:   # works with sed implementations that can handle large buffers.
        !           439:   sed < "$tmpdepfile" -n '
        !           440: /^Note: including file:  *\(.*\)/ {
        !           441:   s//\1/
        !           442:   s/\\/\\\\/g
        !           443:   p
        !           444: }' | $cygpath_u | sort -u | sed -n '
        !           445: s/ /\\ /g
        !           446: s/\(.*\)/  \1 \\/p
        !           447: s/.\(.*\) \\/\1:/
        !           448: H
        !           449: $ {
        !           450:   s/.*/    /
        !           451:   G
        !           452:   p
        !           453: }' >> "$depfile"
        !           454:   rm -f "$tmpdepfile"
        !           455:   ;;
        !           456: 
        !           457: msvc7msys)
        !           458:   # This case exists only to let depend.m4 do its work.  It works by
        !           459:   # looking at the text of this script.  This case will never be run,
        !           460:   # since it is checked for above.
        !           461:   exit 1
        !           462:   ;;
        !           463: 
1.1       bertrand  464: #nosideeffect)
                    465:   # This comment above is used by automake to tell side-effect
                    466:   # dependency tracking mechanisms from slower ones.
                    467: 
                    468: dashmstdout)
                    469:   # Important note: in order to support this mode, a compiler *must*
                    470:   # always write the preprocessed file to stdout, regardless of -o.
                    471:   "$@" || exit $?
                    472: 
                    473:   # Remove the call to Libtool.
                    474:   if test "$libtool" = yes; then
                    475:     while test "X$1" != 'X--mode=compile'; do
                    476:       shift
                    477:     done
                    478:     shift
                    479:   fi
                    480: 
                    481:   # Remove `-o $object'.
                    482:   IFS=" "
                    483:   for arg
                    484:   do
                    485:     case $arg in
                    486:     -o)
                    487:       shift
                    488:       ;;
                    489:     $object)
                    490:       shift
                    491:       ;;
                    492:     *)
                    493:       set fnord "$@" "$arg"
                    494:       shift # fnord
                    495:       shift # $arg
                    496:       ;;
                    497:     esac
                    498:   done
                    499: 
                    500:   test -z "$dashmflag" && dashmflag=-M
                    501:   # Require at least two characters before searching for `:'
                    502:   # 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.
                    504:   "$@" $dashmflag |
                    505:     sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
                    506:   rm -f "$depfile"
                    507:   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"
                    513:   rm -f "$tmpdepfile"
                    514:   ;;
                    515: 
                    516: dashXmstdout)
                    517:   # This case only exists to satisfy depend.m4.  It is never actually
                    518:   # run, as this mode is specially recognized in the preamble.
                    519:   exit 1
                    520:   ;;
                    521: 
                    522: makedepend)
                    523:   "$@" || exit $?
                    524:   # Remove any Libtool call
                    525:   if test "$libtool" = yes; then
                    526:     while test "X$1" != 'X--mode=compile'; do
                    527:       shift
                    528:     done
                    529:     shift
                    530:   fi
                    531:   # X makedepend
                    532:   shift
                    533:   cleared=no eat=no
                    534:   for arg
                    535:   do
                    536:     case $cleared in
                    537:     no)
                    538:       set ""; shift
                    539:       cleared=yes ;;
                    540:     esac
                    541:     if test $eat = yes; then
                    542:       eat=no
                    543:       continue
                    544:     fi
                    545:     case "$arg" in
                    546:     -D*|-I*)
                    547:       set fnord "$@" "$arg"; shift ;;
                    548:     # Strip any option that makedepend may not understand.  Remove
                    549:     # the object too, otherwise makedepend will parse it as a source file.
                    550:     -arch)
                    551:       eat=yes ;;
                    552:     -*|$object)
                    553:       ;;
                    554:     *)
                    555:       set fnord "$@" "$arg"; shift ;;
                    556:     esac
                    557:   done
                    558:   obj_suffix=`echo "$object" | sed 's/^.*\././'`
                    559:   touch "$tmpdepfile"
                    560:   ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
                    561:   rm -f "$depfile"
1.5     ! bertrand  562:   # makedepend may prepend the VPATH from the source file name to the object.
        !           563:   # No need to regex-escape $object, excess matching of '.' is harmless.
        !           564:   sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
1.1       bertrand  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"
                    570:   rm -f "$tmpdepfile" "$tmpdepfile".bak
                    571:   ;;
                    572: 
                    573: cpp)
                    574:   # Important note: in order to support this mode, a compiler *must*
                    575:   # always write the preprocessed file to stdout.
                    576:   "$@" || exit $?
                    577: 
                    578:   # Remove the call to Libtool.
                    579:   if test "$libtool" = yes; then
                    580:     while test "X$1" != 'X--mode=compile'; do
                    581:       shift
                    582:     done
                    583:     shift
                    584:   fi
                    585: 
                    586:   # Remove `-o $object'.
                    587:   IFS=" "
                    588:   for arg
                    589:   do
                    590:     case $arg in
                    591:     -o)
                    592:       shift
                    593:       ;;
                    594:     $object)
                    595:       shift
                    596:       ;;
                    597:     *)
                    598:       set fnord "$@" "$arg"
                    599:       shift # fnord
                    600:       shift # $arg
                    601:       ;;
                    602:     esac
                    603:   done
                    604: 
                    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"
                    609:   rm -f "$depfile"
                    610:   echo "$object : \\" > "$depfile"
                    611:   cat < "$tmpdepfile" >> "$depfile"
                    612:   sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
                    613:   rm -f "$tmpdepfile"
                    614:   ;;
                    615: 
                    616: msvisualcpp)
                    617:   # Important note: in order to support this mode, a compiler *must*
                    618:   # always write the preprocessed file to stdout.
                    619:   "$@" || exit $?
                    620: 
                    621:   # Remove the call to Libtool.
                    622:   if test "$libtool" = yes; then
                    623:     while test "X$1" != 'X--mode=compile'; do
                    624:       shift
                    625:     done
                    626:     shift
                    627:   fi
                    628: 
                    629:   IFS=" "
                    630:   for arg
                    631:   do
                    632:     case "$arg" in
                    633:     -o)
                    634:       shift
                    635:       ;;
                    636:     $object)
                    637:       shift
                    638:       ;;
                    639:     "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
                    640:    set fnord "$@"
                    641:    shift
                    642:    shift
                    643:    ;;
                    644:     *)
                    645:    set fnord "$@" "$arg"
                    646:    shift
                    647:    shift
                    648:    ;;
                    649:     esac
                    650:   done
                    651:   "$@" -E 2>/dev/null |
                    652:   sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
                    653:   rm -f "$depfile"
                    654:   echo "$object : \\" > "$depfile"
                    655:   sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
                    656:   echo "   " >> "$depfile"
                    657:   sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
                    658:   rm -f "$tmpdepfile"
                    659:   ;;
                    660: 
                    661: msvcmsys)
                    662:   # This case exists only to let depend.m4 do its work.  It works by
                    663:   # looking at the text of this script.  This case will never be run,
                    664:   # since it is checked for above.
                    665:   exit 1
                    666:   ;;
                    667: 
                    668: none)
                    669:   exec "$@"
                    670:   ;;
                    671: 
                    672: *)
                    673:   echo "Unknown depmode $depmode" 1>&2
                    674:   exit 1
                    675:   ;;
                    676: esac
                    677: 
                    678: exit 0
                    679: 
                    680: # Local Variables:
                    681: # mode: shell-script
                    682: # sh-indentation: 2
                    683: # eval: (add-hook 'write-file-hooks 'time-stamp)
                    684: # time-stamp-start: "scriptversion="
                    685: # time-stamp-format: "%:y-%02m-%02d.%02H"
                    686: # time-stamp-time-zone: "UTC"
                    687: # time-stamp-end: "; # UTC"
                    688: # End:

CVSweb interface <joel.bertrand@systella.fr>