quickjs-tart

quickjs-based runtime for wallet-core logic
Log | Files | Refs | README | LICENSE

depcomp (23700B)


      1 #! /bin/sh
      2 # depcomp - compile a program generating dependencies as side-effects
      3 
      4 scriptversion=2025-06-18.21; # UTC
      5 
      6 # Copyright (C) 1999-2025 Free Software Foundation, Inc.
      7 
      8 # This program is free software; you can redistribute it and/or modify
      9 # it under the terms of the GNU General Public License as published by
     10 # the Free Software Foundation; either version 2, or (at your option)
     11 # any later version.
     12 
     13 # This program is distributed in the hope that it will be useful,
     14 # but WITHOUT ANY WARRANTY; without even the implied warranty of
     15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     16 # GNU General Public License for more details.
     17 
     18 # You should have received a copy of the GNU General Public License
     19 # along with this program.  If not, see <https://www.gnu.org/licenses/>.
     20 
     21 # As a special exception to the GNU General Public License, if you
     22 # distribute this file as part of a program that contains a
     23 # configuration script generated by Autoconf, you may include it under
     24 # the same distribution terms that you use for the rest of that program.
     25 
     26 # Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
     27 
     28 case $1 in
     29   '')
     30     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
     31     exit 1;
     32     ;;
     33   -h | --h*)
     34     cat <<\EOF
     35 Usage: depcomp [--help] [--version] PROGRAM [ARGS]
     36 
     37 Run PROGRAMS ARGS to compile a file, generating dependencies
     38 as side-effects.
     39 
     40 Environment variables:
     41   depmode     Dependency tracking mode.
     42   source      Source file read by 'PROGRAMS ARGS'.
     43   object      Object file output by 'PROGRAMS ARGS'.
     44   DEPDIR      directory where to store dependencies.
     45   depfile     Dependency file to output.
     46   tmpdepfile  Temporary file to use when outputting dependencies.
     47   libtool     Whether libtool is used (yes/no).
     48 
     49 Report bugs to <bug-automake@gnu.org>.
     50 GNU Automake home page: <https://www.gnu.org/software/automake/>.
     51 General help using GNU software: <https://www.gnu.org/gethelp/>.
     52 EOF
     53     exit $?
     54     ;;
     55   -v | --v*)
     56     echo "depcomp (GNU Automake) $scriptversion"
     57     exit $?
     58     ;;
     59 esac
     60 
     61 # Get the directory component of the given path, and save it in the
     62 # global variables '$dir'.  Note that this directory component will
     63 # be either empty or ending with a '/' character.  This is deliberate.
     64 set_dir_from ()
     65 {
     66   case $1 in
     67     */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
     68       *) dir=;;
     69   esac
     70 }
     71 
     72 # Get the suffix-stripped basename of the given path, and save it the
     73 # global variable '$base'.
     74 set_base_from ()
     75 {
     76   base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
     77 }
     78 
     79 # If no dependency file was actually created by the compiler invocation,
     80 # we still have to create a dummy depfile, to avoid errors with the
     81 # Makefile "include basename.Plo" scheme.
     82 make_dummy_depfile ()
     83 {
     84   echo "#dummy" > "$depfile"
     85 }
     86 
     87 # Factor out some common post-processing of the generated depfile.
     88 # Requires the auxiliary global variable '$tmpdepfile' to be set.
     89 aix_post_process_depfile ()
     90 {
     91   # If the compiler actually managed to produce a dependency file,
     92   # post-process it.
     93   if test -f "$tmpdepfile"; then
     94     # Each line is of the form 'foo.o: dependency.h'.
     95     # Do two passes, one to just change these to
     96     #   $object: dependency.h
     97     # and one to simply output
     98     #   dependency.h:
     99     # which is needed to avoid the deleted-header problem.
    100     { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
    101       sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
    102     } > "$depfile"
    103     rm -f "$tmpdepfile"
    104   else
    105     make_dummy_depfile
    106   fi
    107 }
    108 
    109 # A tabulation character.
    110 tab='	'
    111 # A newline character.
    112 nl='
    113 '
    114 # Character ranges might be problematic outside the C locale.
    115 # These definitions help.
    116 upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
    117 lower=abcdefghijklmnopqrstuvwxyz
    118 alpha=${upper}${lower}
    119 
    120 if test -z "$depmode" || test -z "$source" || test -z "$object"; then
    121   echo "depcomp: Variables source, object and depmode must be set" 1>&2
    122   exit 1
    123 fi
    124 
    125 # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
    126 depfile=${depfile-`echo "$object" |
    127   sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
    128 tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
    129 
    130 rm -f "$tmpdepfile"
    131 
    132 # Avoid interference from the environment.
    133 gccflag= dashmflag=
    134 
    135 # Some modes work just like other modes, but use different flags.  We
    136 # parameterize here, but still list the modes in the big case below,
    137 # to make depend.m4 easier to write.  Note that we *cannot* use a case
    138 # here, because this file can only contain one case statement.
    139 if test "$depmode" = hp; then
    140   # HP compiler uses -M and no extra arg.
    141   gccflag=-M
    142   depmode=gcc
    143 fi
    144 
    145 if test "$depmode" = dashXmstdout; then
    146   # This is just like dashmstdout with a different argument.
    147   dashmflag=-xM
    148   depmode=dashmstdout
    149 fi
    150 
    151 cygpath_u="cygpath -u -f -"
    152 if test "$depmode" = msvcmsys; then
    153   # This is just like msvisualcpp but w/o cygpath translation.
    154   # Just convert the backslash-escaped backslashes to single forward
    155   # slashes to satisfy depend.m4
    156   cygpath_u='sed s,\\\\,/,g'
    157   depmode=msvisualcpp
    158 fi
    159 
    160 if test "$depmode" = msvc7msys; then
    161   # This is just like msvc7 but w/o cygpath translation.
    162   # Just convert the backslash-escaped backslashes to single forward
    163   # slashes to satisfy depend.m4
    164   cygpath_u='sed s,\\\\,/,g'
    165   depmode=msvc7
    166 fi
    167 
    168 if test "$depmode" = xlc; then
    169   # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
    170   gccflag=-qmakedep=gcc,-MF
    171   depmode=gcc
    172 fi
    173 
    174 case "$depmode" in
    175 gcc3)
    176 ## gcc 3 implements dependency tracking that does exactly what
    177 ## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
    178 ## it if -MD -MP comes after the -MF stuff.  Hmm.
    179 ## Unfortunately, FreeBSD c89 acceptance of flags depends upon
    180 ## the command line argument order; so add the flags where they
    181 ## appear in depend2.am.  Note that the slowdown incurred here
    182 ## affects only configure: in makefiles, %FASTDEP% shortcuts this.
    183   for arg
    184   do
    185     case $arg in
    186     -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
    187     *)  set fnord "$@" "$arg" ;;
    188     esac
    189     shift # fnord
    190     shift # $arg
    191   done
    192   "$@"
    193   stat=$?
    194   if test $stat -ne 0; then
    195     rm -f "$tmpdepfile"
    196     exit $stat
    197   fi
    198   mv "$tmpdepfile" "$depfile"
    199   ;;
    200 
    201 gcc)
    202 ## Note that this doesn't just cater to obsolete pre-3.x GCC compilers.
    203 ## but also to in-use compilers like IBM xlc/xlC and the HP C compiler.
    204 ## (see the conditional assignment to $gccflag above).
    205 ## There are various ways to get dependency output from gcc.  Here's
    206 ## why we pick this rather obscure method:
    207 ## - Don't want to use -MD because we'd like the dependencies to end
    208 ##   up in a subdir.  Having to rename by hand is ugly.
    209 ##   (We might end up doing this anyway to support other compilers.)
    210 ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
    211 ##   -MM, not -M (despite what the docs say).  Also, it might not be
    212 ##   supported by the other compilers which use the 'gcc' depmode.
    213 ## - Using -M directly means running the compiler twice (even worse
    214 ##   than renaming).
    215   if test -z "$gccflag"; then
    216     gccflag=-MD,
    217   fi
    218   "$@" -Wp,"$gccflag$tmpdepfile"
    219   stat=$?
    220   if test $stat -ne 0; then
    221     rm -f "$tmpdepfile"
    222     exit $stat
    223   fi
    224   rm -f "$depfile"
    225   echo "$object : \\" > "$depfile"
    226   # The second -e expression handles DOS-style file names with drive
    227   # letters.
    228   sed -e 's/^[^:]*: / /' \
    229       -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
    230 ## This next piece of magic avoids the "deleted header file" problem.
    231 ## The problem is that when a header file which appears in a .P file
    232 ## is deleted, the dependency causes make to die (because there is
    233 ## typically no way to rebuild the header).  We avoid this by adding
    234 ## dummy dependencies for each header file.  Too bad gcc doesn't do
    235 ## this for us directly.
    236 ## Some versions of gcc put a space before the ':'.  On the theory
    237 ## that the space means something, we add a space to the output as
    238 ## well.  hp depmode also adds that space, but also prefixes the VPATH
    239 ## to the object.  Take care to not repeat it in the output.
    240 ## Some versions of the HPUX 10.20 sed can't process this invocation
    241 ## correctly.  Breaking it into two sed invocations is a workaround.
    242   tr ' ' "$nl" < "$tmpdepfile" \
    243     | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
    244     | sed -e 's/$/ :/' >> "$depfile"
    245   rm -f "$tmpdepfile"
    246   ;;
    247 
    248 hp)
    249   # This case exists only to let depend.m4 do its work.  It works by
    250   # looking at the text of this script.  This case will never be run,
    251   # since it is checked for above.
    252   exit 1
    253   ;;
    254 
    255 sgi)
    256   if test "$libtool" = yes; then
    257     "$@" "-Wp,-MDupdate,$tmpdepfile"
    258   else
    259     "$@" -MDupdate "$tmpdepfile"
    260   fi
    261   stat=$?
    262   if test $stat -ne 0; then
    263     rm -f "$tmpdepfile"
    264     exit $stat
    265   fi
    266   rm -f "$depfile"
    267 
    268   if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
    269     echo "$object : \\" > "$depfile"
    270     # Clip off the initial element (the dependent).  Don't try to be
    271     # clever and replace this with sed code, as IRIX sed won't handle
    272     # lines with more than a fixed number of characters (4096 in
    273     # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
    274     # the IRIX cc adds comments like '#:fec' to the end of the
    275     # dependency line.
    276     tr ' ' "$nl" < "$tmpdepfile" \
    277       | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
    278       | tr "$nl" ' ' >> "$depfile"
    279     echo >> "$depfile"
    280     # The second pass generates a dummy entry for each header file.
    281     tr ' ' "$nl" < "$tmpdepfile" \
    282       | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
    283       >> "$depfile"
    284   else
    285     make_dummy_depfile
    286   fi
    287   rm -f "$tmpdepfile"
    288   ;;
    289 
    290 xlc)
    291   # This case exists only to let depend.m4 do its work.  It works by
    292   # looking at the text of this script.  This case will never be run,
    293   # since it is checked for above.
    294   exit 1
    295   ;;
    296 
    297 aix)
    298   # The C for AIX Compiler uses -M and outputs the dependencies
    299   # in a .u file.  In older versions, this file always lives in the
    300   # current directory.  Also, the AIX compiler puts '$object:' at the
    301   # start of each line; $object doesn't have directory information.
    302   # Version 6 uses the directory in both cases.
    303   set_dir_from "$object"
    304   set_base_from "$object"
    305   if test "$libtool" = yes; then
    306     tmpdepfile1=$dir$base.u
    307     tmpdepfile2=$base.u
    308     tmpdepfile3=$dir.libs/$base.u
    309     "$@" -Wc,-M
    310   else
    311     tmpdepfile1=$dir$base.u
    312     tmpdepfile2=$dir$base.u
    313     tmpdepfile3=$dir$base.u
    314     "$@" -M
    315   fi
    316   stat=$?
    317   if test $stat -ne 0; then
    318     rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
    319     exit $stat
    320   fi
    321 
    322   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
    323   do
    324     test -f "$tmpdepfile" && break
    325   done
    326   aix_post_process_depfile
    327   ;;
    328 
    329 tcc)
    330   # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
    331   # FIXME: That version still under development at the moment of writing.
    332   #        Make that this statement remains true also for stable, released
    333   #        versions.
    334   # It will wrap lines (doesn't matter whether long or short) with a
    335   # trailing '\', as in:
    336   #
    337   #   foo.o : \
    338   #    foo.c \
    339   #    foo.h \
    340   #
    341   # It will put a trailing '\' even on the last line, and will use leading
    342   # spaces rather than leading tabs (at least since its commit 0394caf7
    343   # "Emit spaces for -MD").
    344   "$@" -MD -MF "$tmpdepfile"
    345   stat=$?
    346   if test $stat -ne 0; then
    347     rm -f "$tmpdepfile"
    348     exit $stat
    349   fi
    350   rm -f "$depfile"
    351   # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
    352   # We have to change lines of the first kind to '$object: \'.
    353   sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
    354   # And for each line of the second kind, we have to emit a 'dep.h:'
    355   # dummy dependency, to avoid the deleted-header problem.
    356   sed -n -e 's|^  *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
    357   rm -f "$tmpdepfile"
    358   ;;
    359 
    360 ## The order of this option in the case statement is important, since the
    361 ## shell code in configure will try each of these formats in the order
    362 ## listed in this file.  A plain '-MD' option would be understood by many
    363 ## compilers, so we must ensure this comes after the gcc and icc options.
    364 pgcc)
    365   # Portland's C compiler understands '-MD'.
    366   # Will always output deps to 'file.d' where file is the root name of the
    367   # source file under compilation, even if file resides in a subdirectory.
    368   # The object file name does not affect the name of the '.d' file.
    369   # pgcc 10.2 will output
    370   #    foo.o: sub/foo.c sub/foo.h
    371   # and will wrap long lines using '\' :
    372   #    foo.o: sub/foo.c ... \
    373   #     sub/foo.h ... \
    374   #     ...
    375   set_dir_from "$object"
    376   # Use the source, not the object, to determine the base name, since
    377   # that's sadly what pgcc will do too.
    378   set_base_from "$source"
    379   tmpdepfile=$base.d
    380 
    381   # For projects that build the same source file twice into different object
    382   # files, the pgcc approach of using the *source* file root name can cause
    383   # problems in parallel builds.  Use a locking strategy to avoid stomping on
    384   # the same $tmpdepfile.
    385   lockdir=$base.d-lock
    386   trap "
    387     echo '$0: caught signal, cleaning up...' >&2
    388     rmdir '$lockdir'
    389     exit 1
    390   " 1 2 13 15
    391   numtries=100
    392   i=$numtries
    393   while test $i -gt 0; do
    394     # mkdir is a portable test-and-set.
    395     if mkdir "$lockdir" 2>/dev/null; then
    396       # This process acquired the lock.
    397       "$@" -MD
    398       stat=$?
    399       # Release the lock.
    400       rmdir "$lockdir"
    401       break
    402     else
    403       # If the lock is being held by a different process, wait
    404       # until the winning process is done or we timeout.
    405       while test -d "$lockdir" && test $i -gt 0; do
    406         sleep 1
    407         i=`expr $i - 1`
    408       done
    409     fi
    410     i=`expr $i - 1`
    411   done
    412   trap - 1 2 13 15
    413   if test $i -le 0; then
    414     echo "$0: failed to acquire lock after $numtries attempts" >&2
    415     echo "$0: check lockdir '$lockdir'" >&2
    416     exit 1
    417   fi
    418 
    419   if test $stat -ne 0; then
    420     rm -f "$tmpdepfile"
    421     exit $stat
    422   fi
    423   rm -f "$depfile"
    424   # Each line is of the form `foo.o: dependent.h',
    425   # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
    426   # Do two passes, one to just change these to
    427   # `$object: dependent.h' and one to simply `dependent.h:'.
    428   sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
    429   # Some versions of the HPUX 10.20 sed can't process this invocation
    430   # correctly.  Breaking it into two sed invocations is a workaround.
    431   sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
    432     | sed -e 's/$/ :/' >> "$depfile"
    433   rm -f "$tmpdepfile"
    434   ;;
    435 
    436 hp2)
    437   # The "hp" stanza above does not work with aCC (C++) and HP's ia64
    438   # compilers, which have integrated preprocessors.  The correct option
    439   # to use with these is +Maked; it writes dependencies to a file named
    440   # 'foo.d', which lands next to the object file, wherever that
    441   # happens to be.
    442   # Much of this is similar to the tru64 case; see comments there.
    443   set_dir_from  "$object"
    444   set_base_from "$object"
    445   if test "$libtool" = yes; then
    446     tmpdepfile1=$dir$base.d
    447     tmpdepfile2=$dir.libs/$base.d
    448     "$@" -Wc,+Maked
    449   else
    450     tmpdepfile1=$dir$base.d
    451     tmpdepfile2=$dir$base.d
    452     "$@" +Maked
    453   fi
    454   stat=$?
    455   if test $stat -ne 0; then
    456      rm -f "$tmpdepfile1" "$tmpdepfile2"
    457      exit $stat
    458   fi
    459 
    460   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
    461   do
    462     test -f "$tmpdepfile" && break
    463   done
    464   if test -f "$tmpdepfile"; then
    465     sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
    466     # Add 'dependent.h:' lines.
    467     sed -ne '2,${
    468                s/^ *//
    469                s/ \\*$//
    470                s/$/:/
    471                p
    472              }' "$tmpdepfile" >> "$depfile"
    473   else
    474     make_dummy_depfile
    475   fi
    476   rm -f "$tmpdepfile" "$tmpdepfile2"
    477   ;;
    478 
    479 tru64)
    480   # The Tru64 compiler uses -MD to generate dependencies as a side
    481   # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
    482   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
    483   # dependencies in 'foo.d' instead, so we check for that too.
    484   # Subdirectories are respected.
    485   set_dir_from  "$object"
    486   set_base_from "$object"
    487 
    488   if test "$libtool" = yes; then
    489     # Libtool generates 2 separate objects for the 2 libraries.  These
    490     # two compilations output dependencies in $dir.libs/$base.o.d and
    491     # in $dir$base.o.d.  We have to check for both files, because
    492     # one of the two compilations can be disabled.  We should prefer
    493     # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
    494     # automatically cleaned when .libs/ is deleted, while ignoring
    495     # the former would cause a distcleancheck panic.
    496     tmpdepfile1=$dir$base.o.d          # libtool 1.5
    497     tmpdepfile2=$dir.libs/$base.o.d    # Likewise.
    498     tmpdepfile3=$dir.libs/$base.d      # Compaq CCC V6.2-504
    499     "$@" -Wc,-MD
    500   else
    501     tmpdepfile1=$dir$base.d
    502     tmpdepfile2=$dir$base.d
    503     tmpdepfile3=$dir$base.d
    504     "$@" -MD
    505   fi
    506 
    507   stat=$?
    508   if test $stat -ne 0; then
    509     rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
    510     exit $stat
    511   fi
    512 
    513   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
    514   do
    515     test -f "$tmpdepfile" && break
    516   done
    517   # Same post-processing that is required for AIX mode.
    518   aix_post_process_depfile
    519   ;;
    520 
    521 msvc7)
    522   if test "$libtool" = yes; then
    523     showIncludes=-Wc,-showIncludes
    524   else
    525     showIncludes=-showIncludes
    526   fi
    527   "$@" $showIncludes > "$tmpdepfile"
    528   stat=$?
    529   grep -v '^Note: including file: ' "$tmpdepfile"
    530   if test $stat -ne 0; then
    531     rm -f "$tmpdepfile"
    532     exit $stat
    533   fi
    534   rm -f "$depfile"
    535   echo "$object : \\" > "$depfile"
    536   # The first sed program below extracts the file names and escapes
    537   # backslashes for cygpath.  The second sed program outputs the file
    538   # name when reading, but also accumulates all include files in the
    539   # hold buffer in order to output them again at the end.  This only
    540   # works with sed implementations that can handle large buffers.
    541   sed < "$tmpdepfile" -n '
    542 /^Note: including file:  *\(.*\)/ {
    543   s//\1/
    544   s/\\/\\\\/g
    545   p
    546 }' | $cygpath_u | sort -u | sed -n '
    547 s/ /\\ /g
    548 s/\(.*\)/'"$tab"'\1 \\/p
    549 s/.\(.*\) \\/\1:/
    550 H
    551 $ {
    552   s/.*/'"$tab"'/
    553   G
    554   p
    555 }' >> "$depfile"
    556   echo >> "$depfile" # make sure the fragment doesn't end with a backslash
    557   rm -f "$tmpdepfile"
    558   ;;
    559 
    560 msvc7msys)
    561   # This case exists only to let depend.m4 do its work.  It works by
    562   # looking at the text of this script.  This case will never be run,
    563   # since it is checked for above.
    564   exit 1
    565   ;;
    566 
    567 #nosideeffect)
    568   # This comment above is used by automake to tell side-effect
    569   # dependency tracking mechanisms from slower ones.
    570 
    571 dashmstdout)
    572   # Important note: in order to support this mode, a compiler *must*
    573   # always write the preprocessed file to stdout, regardless of -o.
    574   "$@" || exit $?
    575 
    576   # Remove the call to Libtool.
    577   if test "$libtool" = yes; then
    578     while test "X$1" != 'X--mode=compile'; do
    579       shift
    580     done
    581     shift
    582   fi
    583 
    584   # Remove '-o $object'.
    585   IFS=" "
    586   for arg
    587   do
    588     case $arg in
    589     -o)
    590       shift
    591       ;;
    592     $object)
    593       shift
    594       ;;
    595     *)
    596       set fnord "$@" "$arg"
    597       shift # fnord
    598       shift # $arg
    599       ;;
    600     esac
    601   done
    602 
    603   test -z "$dashmflag" && dashmflag=-M
    604   # Require at least two characters before searching for ':'
    605   # in the target name.  This is to cope with DOS-style filenames:
    606   # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
    607   "$@" $dashmflag |
    608     sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
    609   rm -f "$depfile"
    610   cat < "$tmpdepfile" > "$depfile"
    611   # Some versions of the HPUX 10.20 sed can't process this sed invocation
    612   # correctly.  Breaking it into two sed invocations is a workaround.
    613   tr ' ' "$nl" < "$tmpdepfile" \
    614     | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
    615     | sed -e 's/$/ :/' >> "$depfile"
    616   rm -f "$tmpdepfile"
    617   ;;
    618 
    619 dashXmstdout)
    620   # This case only exists to satisfy depend.m4.  It is never actually
    621   # run, as this mode is specially recognized in the preamble.
    622   exit 1
    623   ;;
    624 
    625 makedepend)
    626   "$@" || exit $?
    627   # Remove any Libtool call
    628   if test "$libtool" = yes; then
    629     while test "X$1" != 'X--mode=compile'; do
    630       shift
    631     done
    632     shift
    633   fi
    634   # X makedepend
    635   shift
    636   cleared=no eat=no
    637   for arg
    638   do
    639     case $cleared in
    640     no)
    641       set ""; shift
    642       cleared=yes ;;
    643     esac
    644     if test $eat = yes; then
    645       eat=no
    646       continue
    647     fi
    648     case "$arg" in
    649     -D*|-I*)
    650       set fnord "$@" "$arg"; shift ;;
    651     # Strip any option that makedepend may not understand.  Remove
    652     # the object too, otherwise makedepend will parse it as a source file.
    653     -arch)
    654       eat=yes ;;
    655     -*|$object)
    656       ;;
    657     *)
    658       set fnord "$@" "$arg"; shift ;;
    659     esac
    660   done
    661   obj_suffix=`echo "$object" | sed 's/^.*\././'`
    662   touch "$tmpdepfile"
    663   ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
    664   rm -f "$depfile"
    665   # makedepend may prepend the VPATH from the source file name to the object.
    666   # No need to regex-escape $object, excess matching of '.' is harmless.
    667   sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
    668   # Some versions of the HPUX 10.20 sed can't process the last invocation
    669   # correctly.  Breaking it into two sed invocations is a workaround.
    670   sed '1,2d' "$tmpdepfile" \
    671     | tr ' ' "$nl" \
    672     | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
    673     | sed -e 's/$/ :/' >> "$depfile"
    674   rm -f "$tmpdepfile" "$tmpdepfile".bak
    675   ;;
    676 
    677 cpp)
    678   # Important note: in order to support this mode, a compiler *must*
    679   # always write the preprocessed file to stdout.
    680   "$@" || exit $?
    681 
    682   # Remove the call to Libtool.
    683   if test "$libtool" = yes; then
    684     while test "X$1" != 'X--mode=compile'; do
    685       shift
    686     done
    687     shift
    688   fi
    689 
    690   # Remove '-o $object'.
    691   IFS=" "
    692   for arg
    693   do
    694     case $arg in
    695     -o)
    696       shift
    697       ;;
    698     $object)
    699       shift
    700       ;;
    701     *)
    702       set fnord "$@" "$arg"
    703       shift # fnord
    704       shift # $arg
    705       ;;
    706     esac
    707   done
    708 
    709   "$@" -E \
    710     | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
    711              -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
    712     | sed '$ s: \\$::' > "$tmpdepfile"
    713   rm -f "$depfile"
    714   echo "$object : \\" > "$depfile"
    715   cat < "$tmpdepfile" >> "$depfile"
    716   sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
    717   rm -f "$tmpdepfile"
    718   ;;
    719 
    720 msvisualcpp)
    721   # Important note: in order to support this mode, a compiler *must*
    722   # always write the preprocessed file to stdout.
    723   "$@" || exit $?
    724 
    725   # Remove the call to Libtool.
    726   if test "$libtool" = yes; then
    727     while test "X$1" != 'X--mode=compile'; do
    728       shift
    729     done
    730     shift
    731   fi
    732 
    733   IFS=" "
    734   for arg
    735   do
    736     case "$arg" in
    737     -o)
    738       shift
    739       ;;
    740     $object)
    741       shift
    742       ;;
    743     "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
    744         set fnord "$@"
    745         shift
    746         shift
    747         ;;
    748     *)
    749         set fnord "$@" "$arg"
    750         shift
    751         shift
    752         ;;
    753     esac
    754   done
    755   "$@" -E 2>/dev/null |
    756   sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
    757   rm -f "$depfile"
    758   echo "$object : \\" > "$depfile"
    759   sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
    760   echo "$tab" >> "$depfile"
    761   sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
    762   rm -f "$tmpdepfile"
    763   ;;
    764 
    765 msvcmsys)
    766   # This case exists only to let depend.m4 do its work.  It works by
    767   # looking at the text of this script.  This case will never be run,
    768   # since it is checked for above.
    769   exit 1
    770   ;;
    771 
    772 none)
    773   exec "$@"
    774   ;;
    775 
    776 *)
    777   echo "Unknown depmode $depmode" 1>&2
    778   exit 1
    779   ;;
    780 esac
    781 
    782 exit 0
    783 
    784 # Local Variables:
    785 # mode: shell-script
    786 # sh-indentation: 2
    787 # eval: (add-hook 'before-save-hook 'time-stamp nil t)
    788 # time-stamp-start: "scriptversion="
    789 # time-stamp-format: "%Y-%02m-%02d.%02H"
    790 # time-stamp-time-zone: "UTC0"
    791 # time-stamp-end: "; # UTC"
    792 # End: