File:  [local] / rpl / Attic / depcomp
Revision 1.5: download - view: text, annotated - select for diffs - revision graph
Mon Apr 2 08:42:38 2012 UTC (12 years ago) by bertrand
Branches: MAIN
CVS tags: HEAD
Réorganisation.

    1: #! /bin/sh
    2: # depcomp - compile a program generating dependencies as side-effects
    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.
    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.
   47:   tmpdepfile  Temporary file to use when outputting dependencies.
   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
   93:    cygpath_u='sed s,\\\\,/,g'
   94:    depmode=msvisualcpp
   95: fi
   96: 
   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: 
  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
  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.
  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.
  173:     sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
  174:       | sed -e 's/$/ :/' >> "$depfile"
  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: 
  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: 
  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"
  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"
  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>