Blame depcomp

Packit dd8086
#! /bin/sh
Packit dd8086
# depcomp - compile a program generating dependencies as side-effects
Packit dd8086
Packit dd8086
scriptversion=2013-05-30.07; # UTC
Packit dd8086
Packit dd8086
# Copyright (C) 1999-2014 Free Software Foundation, Inc.
Packit dd8086
Packit dd8086
# This program is free software; you can redistribute it and/or modify
Packit dd8086
# it under the terms of the GNU General Public License as published by
Packit dd8086
# the Free Software Foundation; either version 2, or (at your option)
Packit dd8086
# any later version.
Packit dd8086
Packit dd8086
# This program is distributed in the hope that it will be useful,
Packit dd8086
# but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit dd8086
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit dd8086
# GNU General Public License for more details.
Packit dd8086
Packit dd8086
# You should have received a copy of the GNU General Public License
Packit dd8086
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
Packit dd8086
Packit dd8086
# As a special exception to the GNU General Public License, if you
Packit dd8086
# distribute this file as part of a program that contains a
Packit dd8086
# configuration script generated by Autoconf, you may include it under
Packit dd8086
# the same distribution terms that you use for the rest of that program.
Packit dd8086
Packit dd8086
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
Packit dd8086
Packit dd8086
case $1 in
Packit dd8086
  '')
Packit dd8086
    echo "$0: No command.  Try '$0 --help' for more information." 1>&2
Packit dd8086
    exit 1;
Packit dd8086
    ;;
Packit dd8086
  -h | --h*)
Packit dd8086
    cat <<\EOF
Packit dd8086
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
Packit dd8086
Packit dd8086
Run PROGRAMS ARGS to compile a file, generating dependencies
Packit dd8086
as side-effects.
Packit dd8086
Packit dd8086
Environment variables:
Packit dd8086
  depmode     Dependency tracking mode.
Packit dd8086
  source      Source file read by 'PROGRAMS ARGS'.
Packit dd8086
  object      Object file output by 'PROGRAMS ARGS'.
Packit dd8086
  DEPDIR      directory where to store dependencies.
Packit dd8086
  depfile     Dependency file to output.
Packit dd8086
  tmpdepfile  Temporary file to use when outputting dependencies.
Packit dd8086
  libtool     Whether libtool is used (yes/no).
Packit dd8086
Packit dd8086
Report bugs to <bug-automake@gnu.org>.
Packit dd8086
EOF
Packit dd8086
    exit $?
Packit dd8086
    ;;
Packit dd8086
  -v | --v*)
Packit dd8086
    echo "depcomp $scriptversion"
Packit dd8086
    exit $?
Packit dd8086
    ;;
Packit dd8086
esac
Packit dd8086
Packit dd8086
# Get the directory component of the given path, and save it in the
Packit dd8086
# global variables '$dir'.  Note that this directory component will
Packit dd8086
# be either empty or ending with a '/' character.  This is deliberate.
Packit dd8086
set_dir_from ()
Packit dd8086
{
Packit dd8086
  case $1 in
Packit dd8086
    */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
Packit dd8086
      *) dir=;;
Packit dd8086
  esac
Packit dd8086
}
Packit dd8086
Packit dd8086
# Get the suffix-stripped basename of the given path, and save it the
Packit dd8086
# global variable '$base'.
Packit dd8086
set_base_from ()
Packit dd8086
{
Packit dd8086
  base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
Packit dd8086
}
Packit dd8086
Packit dd8086
# If no dependency file was actually created by the compiler invocation,
Packit dd8086
# we still have to create a dummy depfile, to avoid errors with the
Packit dd8086
# Makefile "include basename.Plo" scheme.
Packit dd8086
make_dummy_depfile ()
Packit dd8086
{
Packit dd8086
  echo "#dummy" > "$depfile"
Packit dd8086
}
Packit dd8086
Packit dd8086
# Factor out some common post-processing of the generated depfile.
Packit dd8086
# Requires the auxiliary global variable '$tmpdepfile' to be set.
Packit dd8086
aix_post_process_depfile ()
Packit dd8086
{
Packit dd8086
  # If the compiler actually managed to produce a dependency file,
Packit dd8086
  # post-process it.
Packit dd8086
  if test -f "$tmpdepfile"; then
Packit dd8086
    # Each line is of the form 'foo.o: dependency.h'.
Packit dd8086
    # Do two passes, one to just change these to
Packit dd8086
    #   $object: dependency.h
Packit dd8086
    # and one to simply output
Packit dd8086
    #   dependency.h:
Packit dd8086
    # which is needed to avoid the deleted-header problem.
Packit dd8086
    { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
Packit dd8086
      sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
Packit dd8086
    } > "$depfile"
Packit dd8086
    rm -f "$tmpdepfile"
Packit dd8086
  else
Packit dd8086
    make_dummy_depfile
Packit dd8086
  fi
Packit dd8086
}
Packit dd8086
Packit dd8086
# A tabulation character.
Packit dd8086
tab='	'
Packit dd8086
# A newline character.
Packit dd8086
nl='
Packit dd8086
'
Packit dd8086
# Character ranges might be problematic outside the C locale.
Packit dd8086
# These definitions help.
Packit dd8086
upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
Packit dd8086
lower=abcdefghijklmnopqrstuvwxyz
Packit dd8086
digits=0123456789
Packit dd8086
alpha=${upper}${lower}
Packit dd8086
Packit dd8086
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
Packit dd8086
  echo "depcomp: Variables source, object and depmode must be set" 1>&2
Packit dd8086
  exit 1
Packit dd8086
fi
Packit dd8086
Packit dd8086
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
Packit dd8086
depfile=${depfile-`echo "$object" |
Packit dd8086
  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
Packit dd8086
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
Packit dd8086
Packit dd8086
rm -f "$tmpdepfile"
Packit dd8086
Packit dd8086
# Avoid interferences from the environment.
Packit dd8086
gccflag= dashmflag=
Packit dd8086
Packit dd8086
# Some modes work just like other modes, but use different flags.  We
Packit dd8086
# parameterize here, but still list the modes in the big case below,
Packit dd8086
# to make depend.m4 easier to write.  Note that we *cannot* use a case
Packit dd8086
# here, because this file can only contain one case statement.
Packit dd8086
if test "$depmode" = hp; then
Packit dd8086
  # HP compiler uses -M and no extra arg.
Packit dd8086
  gccflag=-M
Packit dd8086
  depmode=gcc
Packit dd8086
fi
Packit dd8086
Packit dd8086
if test "$depmode" = dashXmstdout; then
Packit dd8086
  # This is just like dashmstdout with a different argument.
Packit dd8086
  dashmflag=-xM
Packit dd8086
  depmode=dashmstdout
Packit dd8086
fi
Packit dd8086
Packit dd8086
cygpath_u="cygpath -u -f -"
Packit dd8086
if test "$depmode" = msvcmsys; then
Packit dd8086
  # This is just like msvisualcpp but w/o cygpath translation.
Packit dd8086
  # Just convert the backslash-escaped backslashes to single forward
Packit dd8086
  # slashes to satisfy depend.m4
Packit dd8086
  cygpath_u='sed s,\\\\,/,g'
Packit dd8086
  depmode=msvisualcpp
Packit dd8086
fi
Packit dd8086
Packit dd8086
if test "$depmode" = msvc7msys; then
Packit dd8086
  # This is just like msvc7 but w/o cygpath translation.
Packit dd8086
  # Just convert the backslash-escaped backslashes to single forward
Packit dd8086
  # slashes to satisfy depend.m4
Packit dd8086
  cygpath_u='sed s,\\\\,/,g'
Packit dd8086
  depmode=msvc7
Packit dd8086
fi
Packit dd8086
Packit dd8086
if test "$depmode" = xlc; then
Packit dd8086
  # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
Packit dd8086
  gccflag=-qmakedep=gcc,-MF
Packit dd8086
  depmode=gcc
Packit dd8086
fi
Packit dd8086
Packit dd8086
case "$depmode" in
Packit dd8086
gcc3)
Packit dd8086
## gcc 3 implements dependency tracking that does exactly what
Packit dd8086
## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
Packit dd8086
## it if -MD -MP comes after the -MF stuff.  Hmm.
Packit dd8086
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
Packit dd8086
## the command line argument order; so add the flags where they
Packit dd8086
## appear in depend2.am.  Note that the slowdown incurred here
Packit dd8086
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
Packit dd8086
  for arg
Packit dd8086
  do
Packit dd8086
    case $arg in
Packit dd8086
    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
Packit dd8086
    *)  set fnord "$@" "$arg" ;;
Packit dd8086
    esac
Packit dd8086
    shift # fnord
Packit dd8086
    shift # $arg
Packit dd8086
  done
Packit dd8086
  "$@"
Packit dd8086
  stat=$?
Packit dd8086
  if test $stat -ne 0; then
Packit dd8086
    rm -f "$tmpdepfile"
Packit dd8086
    exit $stat
Packit dd8086
  fi
Packit dd8086
  mv "$tmpdepfile" "$depfile"
Packit dd8086
  ;;
Packit dd8086
Packit dd8086
gcc)
Packit dd8086
## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
Packit dd8086
## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
Packit dd8086
## (see the conditional assignment to $gccflag above).
Packit dd8086
## There are various ways to get dependency output from gcc.  Here's
Packit dd8086
## why we pick this rather obscure method:
Packit dd8086
## - Don't want to use -MD because we'd like the dependencies to end
Packit dd8086
##   up in a subdir.  Having to rename by hand is ugly.
Packit dd8086
##   (We might end up doing this anyway to support other compilers.)
Packit dd8086
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
Packit dd8086
##   -MM, not -M (despite what the docs say).  Also, it might not be
Packit dd8086
##   supported by the other compilers which use the 'gcc' depmode.
Packit dd8086
## - Using -M directly means running the compiler twice (even worse
Packit dd8086
##   than renaming).
Packit dd8086
  if test -z "$gccflag"; then
Packit dd8086
    gccflag=-MD,
Packit dd8086
  fi
Packit dd8086
  "$@" -Wp,"$gccflag$tmpdepfile"
Packit dd8086
  stat=$?
Packit dd8086
  if test $stat -ne 0; then
Packit dd8086
    rm -f "$tmpdepfile"
Packit dd8086
    exit $stat
Packit dd8086
  fi
Packit dd8086
  rm -f "$depfile"
Packit dd8086
  echo "$object : \\" > "$depfile"
Packit dd8086
  # The second -e expression handles DOS-style file names with drive
Packit dd8086
  # letters.
Packit dd8086
  sed -e 's/^[^:]*: / /' \
Packit dd8086
      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
Packit dd8086
## This next piece of magic avoids the "deleted header file" problem.
Packit dd8086
## The problem is that when a header file which appears in a .P file
Packit dd8086
## is deleted, the dependency causes make to die (because there is
Packit dd8086
## typically no way to rebuild the header).  We avoid this by adding
Packit dd8086
## dummy dependencies for each header file.  Too bad gcc doesn't do
Packit dd8086
## this for us directly.
Packit dd8086
## Some versions of gcc put a space before the ':'.  On the theory
Packit dd8086
## that the space means something, we add a space to the output as
Packit dd8086
## well.  hp depmode also adds that space, but also prefixes the VPATH
Packit dd8086
## to the object.  Take care to not repeat it in the output.
Packit dd8086
## Some versions of the HPUX 10.20 sed can't process this invocation
Packit dd8086
## correctly.  Breaking it into two sed invocations is a workaround.
Packit dd8086
  tr ' ' "$nl" < "$tmpdepfile" \
Packit dd8086
    | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
Packit dd8086
    | sed -e 's/$/ :/' >> "$depfile"
Packit dd8086
  rm -f "$tmpdepfile"
Packit dd8086
  ;;
Packit dd8086
Packit dd8086
hp)
Packit dd8086
  # This case exists only to let depend.m4 do its work.  It works by
Packit dd8086
  # looking at the text of this script.  This case will never be run,
Packit dd8086
  # since it is checked for above.
Packit dd8086
  exit 1
Packit dd8086
  ;;
Packit dd8086
Packit dd8086
sgi)
Packit dd8086
  if test "$libtool" = yes; then
Packit dd8086
    "$@" "-Wp,-MDupdate,$tmpdepfile"
Packit dd8086
  else
Packit dd8086
    "$@" -MDupdate "$tmpdepfile"
Packit dd8086
  fi
Packit dd8086
  stat=$?
Packit dd8086
  if test $stat -ne 0; then
Packit dd8086
    rm -f "$tmpdepfile"
Packit dd8086
    exit $stat
Packit dd8086
  fi
Packit dd8086
  rm -f "$depfile"
Packit dd8086
Packit dd8086
  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
Packit dd8086
    echo "$object : \\" > "$depfile"
Packit dd8086
    # Clip off the initial element (the dependent).  Don't try to be
Packit dd8086
    # clever and replace this with sed code, as IRIX sed won't handle
Packit dd8086
    # lines with more than a fixed number of characters (4096 in
Packit dd8086
    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
Packit dd8086
    # the IRIX cc adds comments like '#:fec' to the end of the
Packit dd8086
    # dependency line.
Packit dd8086
    tr ' ' "$nl" < "$tmpdepfile" \
Packit dd8086
      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
Packit dd8086
      | tr "$nl" ' ' >> "$depfile"
Packit dd8086
    echo >> "$depfile"
Packit dd8086
    # The second pass generates a dummy entry for each header file.
Packit dd8086
    tr ' ' "$nl" < "$tmpdepfile" \
Packit dd8086
      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
Packit dd8086
      >> "$depfile"
Packit dd8086
  else
Packit dd8086
    make_dummy_depfile
Packit dd8086
  fi
Packit dd8086
  rm -f "$tmpdepfile"
Packit dd8086
  ;;
Packit dd8086
Packit dd8086
xlc)
Packit dd8086
  # This case exists only to let depend.m4 do its work.  It works by
Packit dd8086
  # looking at the text of this script.  This case will never be run,
Packit dd8086
  # since it is checked for above.
Packit dd8086
  exit 1
Packit dd8086
  ;;
Packit dd8086
Packit dd8086
aix)
Packit dd8086
  # The C for AIX Compiler uses -M and outputs the dependencies
Packit dd8086
  # in a .u file.  In older versions, this file always lives in the
Packit dd8086
  # current directory.  Also, the AIX compiler puts '$object:' at the
Packit dd8086
  # start of each line; $object doesn't have directory information.
Packit dd8086
  # Version 6 uses the directory in both cases.
Packit dd8086
  set_dir_from "$object"
Packit dd8086
  set_base_from "$object"
Packit dd8086
  if test "$libtool" = yes; then
Packit dd8086
    tmpdepfile1=$dir$base.u
Packit dd8086
    tmpdepfile2=$base.u
Packit dd8086
    tmpdepfile3=$dir.libs/$base.u
Packit dd8086
    "$@" -Wc,-M
Packit dd8086
  else
Packit dd8086
    tmpdepfile1=$dir$base.u
Packit dd8086
    tmpdepfile2=$dir$base.u
Packit dd8086
    tmpdepfile3=$dir$base.u
Packit dd8086
    "$@" -M
Packit dd8086
  fi
Packit dd8086
  stat=$?
Packit dd8086
  if test $stat -ne 0; then
Packit dd8086
    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
Packit dd8086
    exit $stat
Packit dd8086
  fi
Packit dd8086
Packit dd8086
  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
Packit dd8086
  do
Packit dd8086
    test -f "$tmpdepfile" && break
Packit dd8086
  done
Packit dd8086
  aix_post_process_depfile
Packit dd8086
  ;;
Packit dd8086
Packit dd8086
tcc)
Packit dd8086
  # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
Packit dd8086
  # FIXME: That version still under development at the moment of writing.
Packit dd8086
  #        Make that this statement remains true also for stable, released
Packit dd8086
  #        versions.
Packit dd8086
  # It will wrap lines (doesn't matter whether long or short) with a
Packit dd8086
  # trailing '\', as in:
Packit dd8086
  #
Packit dd8086
  #   foo.o : \
Packit dd8086
  #    foo.c \
Packit dd8086
  #    foo.h \
Packit dd8086
  #
Packit dd8086
  # It will put a trailing '\' even on the last line, and will use leading
Packit dd8086
  # spaces rather than leading tabs (at least since its commit 0394caf7
Packit dd8086
  # "Emit spaces for -MD").
Packit dd8086
  "$@" -MD -MF "$tmpdepfile"
Packit dd8086
  stat=$?
Packit dd8086
  if test $stat -ne 0; then
Packit dd8086
    rm -f "$tmpdepfile"
Packit dd8086
    exit $stat
Packit dd8086
  fi
Packit dd8086
  rm -f "$depfile"
Packit dd8086
  # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
Packit dd8086
  # We have to change lines of the first kind to '$object: \'.
Packit dd8086
  sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
Packit dd8086
  # And for each line of the second kind, we have to emit a 'dep.h:'
Packit dd8086
  # dummy dependency, to avoid the deleted-header problem.
Packit dd8086
  sed -n -e 's|^  *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
Packit dd8086
  rm -f "$tmpdepfile"
Packit dd8086
  ;;
Packit dd8086
Packit dd8086
## The order of this option in the case statement is important, since the
Packit dd8086
## shell code in configure will try each of these formats in the order
Packit dd8086
## listed in this file.  A plain '-MD' option would be understood by many
Packit dd8086
## compilers, so we must ensure this comes after the gcc and icc options.
Packit dd8086
pgcc)
Packit dd8086
  # Portland's C compiler understands '-MD'.
Packit dd8086
  # Will always output deps to 'file.d' where file is the root name of the
Packit dd8086
  # source file under compilation, even if file resides in a subdirectory.
Packit dd8086
  # The object file name does not affect the name of the '.d' file.
Packit dd8086
  # pgcc 10.2 will output
Packit dd8086
  #    foo.o: sub/foo.c sub/foo.h
Packit dd8086
  # and will wrap long lines using '\' :
Packit dd8086
  #    foo.o: sub/foo.c ... \
Packit dd8086
  #     sub/foo.h ... \
Packit dd8086
  #     ...
Packit dd8086
  set_dir_from "$object"
Packit dd8086
  # Use the source, not the object, to determine the base name, since
Packit dd8086
  # that's sadly what pgcc will do too.
Packit dd8086
  set_base_from "$source"
Packit dd8086
  tmpdepfile=$base.d
Packit dd8086
Packit dd8086
  # For projects that build the same source file twice into different object
Packit dd8086
  # files, the pgcc approach of using the *source* file root name can cause
Packit dd8086
  # problems in parallel builds.  Use a locking strategy to avoid stomping on
Packit dd8086
  # the same $tmpdepfile.
Packit dd8086
  lockdir=$base.d-lock
Packit dd8086
  trap "
Packit dd8086
    echo '$0: caught signal, cleaning up...' >&2
Packit dd8086
    rmdir '$lockdir'
Packit dd8086
    exit 1
Packit dd8086
  " 1 2 13 15
Packit dd8086
  numtries=100
Packit dd8086
  i=$numtries
Packit dd8086
  while test $i -gt 0; do
Packit dd8086
    # mkdir is a portable test-and-set.
Packit dd8086
    if mkdir "$lockdir" 2>/dev/null; then
Packit dd8086
      # This process acquired the lock.
Packit dd8086
      "$@" -MD
Packit dd8086
      stat=$?
Packit dd8086
      # Release the lock.
Packit dd8086
      rmdir "$lockdir"
Packit dd8086
      break
Packit dd8086
    else
Packit dd8086
      # If the lock is being held by a different process, wait
Packit dd8086
      # until the winning process is done or we timeout.
Packit dd8086
      while test -d "$lockdir" && test $i -gt 0; do
Packit dd8086
        sleep 1
Packit dd8086
        i=`expr $i - 1`
Packit dd8086
      done
Packit dd8086
    fi
Packit dd8086
    i=`expr $i - 1`
Packit dd8086
  done
Packit dd8086
  trap - 1 2 13 15
Packit dd8086
  if test $i -le 0; then
Packit dd8086
    echo "$0: failed to acquire lock after $numtries attempts" >&2
Packit dd8086
    echo "$0: check lockdir '$lockdir'" >&2
Packit dd8086
    exit 1
Packit dd8086
  fi
Packit dd8086
Packit dd8086
  if test $stat -ne 0; then
Packit dd8086
    rm -f "$tmpdepfile"
Packit dd8086
    exit $stat
Packit dd8086
  fi
Packit dd8086
  rm -f "$depfile"
Packit dd8086
  # Each line is of the form `foo.o: dependent.h',
Packit dd8086
  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
Packit dd8086
  # Do two passes, one to just change these to
Packit dd8086
  # `$object: dependent.h' and one to simply `dependent.h:'.
Packit dd8086
  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
Packit dd8086
  # Some versions of the HPUX 10.20 sed can't process this invocation
Packit dd8086
  # correctly.  Breaking it into two sed invocations is a workaround.
Packit dd8086
  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
Packit dd8086
    | sed -e 's/$/ :/' >> "$depfile"
Packit dd8086
  rm -f "$tmpdepfile"
Packit dd8086
  ;;
Packit dd8086
Packit dd8086
hp2)
Packit dd8086
  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
Packit dd8086
  # compilers, which have integrated preprocessors.  The correct option
Packit dd8086
  # to use with these is +Maked; it writes dependencies to a file named
Packit dd8086
  # 'foo.d', which lands next to the object file, wherever that
Packit dd8086
  # happens to be.
Packit dd8086
  # Much of this is similar to the tru64 case; see comments there.
Packit dd8086
  set_dir_from  "$object"
Packit dd8086
  set_base_from "$object"
Packit dd8086
  if test "$libtool" = yes; then
Packit dd8086
    tmpdepfile1=$dir$base.d
Packit dd8086
    tmpdepfile2=$dir.libs/$base.d
Packit dd8086
    "$@" -Wc,+Maked
Packit dd8086
  else
Packit dd8086
    tmpdepfile1=$dir$base.d
Packit dd8086
    tmpdepfile2=$dir$base.d
Packit dd8086
    "$@" +Maked
Packit dd8086
  fi
Packit dd8086
  stat=$?
Packit dd8086
  if test $stat -ne 0; then
Packit dd8086
     rm -f "$tmpdepfile1" "$tmpdepfile2"
Packit dd8086
     exit $stat
Packit dd8086
  fi
Packit dd8086
Packit dd8086
  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
Packit dd8086
  do
Packit dd8086
    test -f "$tmpdepfile" && break
Packit dd8086
  done
Packit dd8086
  if test -f "$tmpdepfile"; then
Packit dd8086
    sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
Packit dd8086
    # Add 'dependent.h:' lines.
Packit dd8086
    sed -ne '2,${
Packit dd8086
               s/^ *//
Packit dd8086
               s/ \\*$//
Packit dd8086
               s/$/:/
Packit dd8086
               p
Packit dd8086
             }' "$tmpdepfile" >> "$depfile"
Packit dd8086
  else
Packit dd8086
    make_dummy_depfile
Packit dd8086
  fi
Packit dd8086
  rm -f "$tmpdepfile" "$tmpdepfile2"
Packit dd8086
  ;;
Packit dd8086
Packit dd8086
tru64)
Packit dd8086
  # The Tru64 compiler uses -MD to generate dependencies as a side
Packit dd8086
  # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
Packit dd8086
  # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
Packit dd8086
  # dependencies in 'foo.d' instead, so we check for that too.
Packit dd8086
  # Subdirectories are respected.
Packit dd8086
  set_dir_from  "$object"
Packit dd8086
  set_base_from "$object"
Packit dd8086
Packit dd8086
  if test "$libtool" = yes; then
Packit dd8086
    # Libtool generates 2 separate objects for the 2 libraries.  These
Packit dd8086
    # two compilations output dependencies in $dir.libs/$base.o.d and
Packit dd8086
    # in $dir$base.o.d.  We have to check for both files, because
Packit dd8086
    # one of the two compilations can be disabled.  We should prefer
Packit dd8086
    # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
Packit dd8086
    # automatically cleaned when .libs/ is deleted, while ignoring
Packit dd8086
    # the former would cause a distcleancheck panic.
Packit dd8086
    tmpdepfile1=$dir$base.o.d          # libtool 1.5
Packit dd8086
    tmpdepfile2=$dir.libs/$base.o.d    # Likewise.
Packit dd8086
    tmpdepfile3=$dir.libs/$base.d      # Compaq CCC V6.2-504
Packit dd8086
    "$@" -Wc,-MD
Packit dd8086
  else
Packit dd8086
    tmpdepfile1=$dir$base.d
Packit dd8086
    tmpdepfile2=$dir$base.d
Packit dd8086
    tmpdepfile3=$dir$base.d
Packit dd8086
    "$@" -MD
Packit dd8086
  fi
Packit dd8086
Packit dd8086
  stat=$?
Packit dd8086
  if test $stat -ne 0; then
Packit dd8086
    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
Packit dd8086
    exit $stat
Packit dd8086
  fi
Packit dd8086
Packit dd8086
  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
Packit dd8086
  do
Packit dd8086
    test -f "$tmpdepfile" && break
Packit dd8086
  done
Packit dd8086
  # Same post-processing that is required for AIX mode.
Packit dd8086
  aix_post_process_depfile
Packit dd8086
  ;;
Packit dd8086
Packit dd8086
msvc7)
Packit dd8086
  if test "$libtool" = yes; then
Packit dd8086
    showIncludes=-Wc,-showIncludes
Packit dd8086
  else
Packit dd8086
    showIncludes=-showIncludes
Packit dd8086
  fi
Packit dd8086
  "$@" $showIncludes > "$tmpdepfile"
Packit dd8086
  stat=$?
Packit dd8086
  grep -v '^Note: including file: ' "$tmpdepfile"
Packit dd8086
  if test $stat -ne 0; then
Packit dd8086
    rm -f "$tmpdepfile"
Packit dd8086
    exit $stat
Packit dd8086
  fi
Packit dd8086
  rm -f "$depfile"
Packit dd8086
  echo "$object : \\" > "$depfile"
Packit dd8086
  # The first sed program below extracts the file names and escapes
Packit dd8086
  # backslashes for cygpath.  The second sed program outputs the file
Packit dd8086
  # name when reading, but also accumulates all include files in the
Packit dd8086
  # hold buffer in order to output them again at the end.  This only
Packit dd8086
  # works with sed implementations that can handle large buffers.
Packit dd8086
  sed < "$tmpdepfile" -n '
Packit dd8086
/^Note: including file:  *\(.*\)/ {
Packit dd8086
  s//\1/
Packit dd8086
  s/\\/\\\\/g
Packit dd8086
  p
Packit dd8086
}' | $cygpath_u | sort -u | sed -n '
Packit dd8086
s/ /\\ /g
Packit dd8086
s/\(.*\)/'"$tab"'\1 \\/p
Packit dd8086
s/.\(.*\) \\/\1:/
Packit dd8086
H
Packit dd8086
$ {
Packit dd8086
  s/.*/'"$tab"'/
Packit dd8086
  G
Packit dd8086
  p
Packit dd8086
}' >> "$depfile"
Packit dd8086
  echo >> "$depfile" # make sure the fragment doesn't end with a backslash
Packit dd8086
  rm -f "$tmpdepfile"
Packit dd8086
  ;;
Packit dd8086
Packit dd8086
msvc7msys)
Packit dd8086
  # This case exists only to let depend.m4 do its work.  It works by
Packit dd8086
  # looking at the text of this script.  This case will never be run,
Packit dd8086
  # since it is checked for above.
Packit dd8086
  exit 1
Packit dd8086
  ;;
Packit dd8086
Packit dd8086
#nosideeffect)
Packit dd8086
  # This comment above is used by automake to tell side-effect
Packit dd8086
  # dependency tracking mechanisms from slower ones.
Packit dd8086
Packit dd8086
dashmstdout)
Packit dd8086
  # Important note: in order to support this mode, a compiler *must*
Packit dd8086
  # always write the preprocessed file to stdout, regardless of -o.
Packit dd8086
  "$@" || exit $?
Packit dd8086
Packit dd8086
  # Remove the call to Libtool.
Packit dd8086
  if test "$libtool" = yes; then
Packit dd8086
    while test "X$1" != 'X--mode=compile'; do
Packit dd8086
      shift
Packit dd8086
    done
Packit dd8086
    shift
Packit dd8086
  fi
Packit dd8086
Packit dd8086
  # Remove '-o $object'.
Packit dd8086
  IFS=" "
Packit dd8086
  for arg
Packit dd8086
  do
Packit dd8086
    case $arg in
Packit dd8086
    -o)
Packit dd8086
      shift
Packit dd8086
      ;;
Packit dd8086
    $object)
Packit dd8086
      shift
Packit dd8086
      ;;
Packit dd8086
    *)
Packit dd8086
      set fnord "$@" "$arg"
Packit dd8086
      shift # fnord
Packit dd8086
      shift # $arg
Packit dd8086
      ;;
Packit dd8086
    esac
Packit dd8086
  done
Packit dd8086
Packit dd8086
  test -z "$dashmflag" && dashmflag=-M
Packit dd8086
  # Require at least two characters before searching for ':'
Packit dd8086
  # in the target name.  This is to cope with DOS-style filenames:
Packit dd8086
  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
Packit dd8086
  "$@" $dashmflag |
Packit dd8086
    sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
Packit dd8086
  rm -f "$depfile"
Packit dd8086
  cat < "$tmpdepfile" > "$depfile"
Packit dd8086
  # Some versions of the HPUX 10.20 sed can't process this sed invocation
Packit dd8086
  # correctly.  Breaking it into two sed invocations is a workaround.
Packit dd8086
  tr ' ' "$nl" < "$tmpdepfile" \
Packit dd8086
    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
Packit dd8086
    | sed -e 's/$/ :/' >> "$depfile"
Packit dd8086
  rm -f "$tmpdepfile"
Packit dd8086
  ;;
Packit dd8086
Packit dd8086
dashXmstdout)
Packit dd8086
  # This case only exists to satisfy depend.m4.  It is never actually
Packit dd8086
  # run, as this mode is specially recognized in the preamble.
Packit dd8086
  exit 1
Packit dd8086
  ;;
Packit dd8086
Packit dd8086
makedepend)
Packit dd8086
  "$@" || exit $?
Packit dd8086
  # Remove any Libtool call
Packit dd8086
  if test "$libtool" = yes; then
Packit dd8086
    while test "X$1" != 'X--mode=compile'; do
Packit dd8086
      shift
Packit dd8086
    done
Packit dd8086
    shift
Packit dd8086
  fi
Packit dd8086
  # X makedepend
Packit dd8086
  shift
Packit dd8086
  cleared=no eat=no
Packit dd8086
  for arg
Packit dd8086
  do
Packit dd8086
    case $cleared in
Packit dd8086
    no)
Packit dd8086
      set ""; shift
Packit dd8086
      cleared=yes ;;
Packit dd8086
    esac
Packit dd8086
    if test $eat = yes; then
Packit dd8086
      eat=no
Packit dd8086
      continue
Packit dd8086
    fi
Packit dd8086
    case "$arg" in
Packit dd8086
    -D*|-I*)
Packit dd8086
      set fnord "$@" "$arg"; shift ;;
Packit dd8086
    # Strip any option that makedepend may not understand.  Remove
Packit dd8086
    # the object too, otherwise makedepend will parse it as a source file.
Packit dd8086
    -arch)
Packit dd8086
      eat=yes ;;
Packit dd8086
    -*|$object)
Packit dd8086
      ;;
Packit dd8086
    *)
Packit dd8086
      set fnord "$@" "$arg"; shift ;;
Packit dd8086
    esac
Packit dd8086
  done
Packit dd8086
  obj_suffix=`echo "$object" | sed 's/^.*\././'`
Packit dd8086
  touch "$tmpdepfile"
Packit dd8086
  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
Packit dd8086
  rm -f "$depfile"
Packit dd8086
  # makedepend may prepend the VPATH from the source file name to the object.
Packit dd8086
  # No need to regex-escape $object, excess matching of '.' is harmless.
Packit dd8086
  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
Packit dd8086
  # Some versions of the HPUX 10.20 sed can't process the last invocation
Packit dd8086
  # correctly.  Breaking it into two sed invocations is a workaround.
Packit dd8086
  sed '1,2d' "$tmpdepfile" \
Packit dd8086
    | tr ' ' "$nl" \
Packit dd8086
    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
Packit dd8086
    | sed -e 's/$/ :/' >> "$depfile"
Packit dd8086
  rm -f "$tmpdepfile" "$tmpdepfile".bak
Packit dd8086
  ;;
Packit dd8086
Packit dd8086
cpp)
Packit dd8086
  # Important note: in order to support this mode, a compiler *must*
Packit dd8086
  # always write the preprocessed file to stdout.
Packit dd8086
  "$@" || exit $?
Packit dd8086
Packit dd8086
  # Remove the call to Libtool.
Packit dd8086
  if test "$libtool" = yes; then
Packit dd8086
    while test "X$1" != 'X--mode=compile'; do
Packit dd8086
      shift
Packit dd8086
    done
Packit dd8086
    shift
Packit dd8086
  fi
Packit dd8086
Packit dd8086
  # Remove '-o $object'.
Packit dd8086
  IFS=" "
Packit dd8086
  for arg
Packit dd8086
  do
Packit dd8086
    case $arg in
Packit dd8086
    -o)
Packit dd8086
      shift
Packit dd8086
      ;;
Packit dd8086
    $object)
Packit dd8086
      shift
Packit dd8086
      ;;
Packit dd8086
    *)
Packit dd8086
      set fnord "$@" "$arg"
Packit dd8086
      shift # fnord
Packit dd8086
      shift # $arg
Packit dd8086
      ;;
Packit dd8086
    esac
Packit dd8086
  done
Packit dd8086
Packit dd8086
  "$@" -E \
Packit dd8086
    | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
Packit dd8086
             -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
Packit dd8086
    | sed '$ s: \\$::' > "$tmpdepfile"
Packit dd8086
  rm -f "$depfile"
Packit dd8086
  echo "$object : \\" > "$depfile"
Packit dd8086
  cat < "$tmpdepfile" >> "$depfile"
Packit dd8086
  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
Packit dd8086
  rm -f "$tmpdepfile"
Packit dd8086
  ;;
Packit dd8086
Packit dd8086
msvisualcpp)
Packit dd8086
  # Important note: in order to support this mode, a compiler *must*
Packit dd8086
  # always write the preprocessed file to stdout.
Packit dd8086
  "$@" || exit $?
Packit dd8086
Packit dd8086
  # Remove the call to Libtool.
Packit dd8086
  if test "$libtool" = yes; then
Packit dd8086
    while test "X$1" != 'X--mode=compile'; do
Packit dd8086
      shift
Packit dd8086
    done
Packit dd8086
    shift
Packit dd8086
  fi
Packit dd8086
Packit dd8086
  IFS=" "
Packit dd8086
  for arg
Packit dd8086
  do
Packit dd8086
    case "$arg" in
Packit dd8086
    -o)
Packit dd8086
      shift
Packit dd8086
      ;;
Packit dd8086
    $object)
Packit dd8086
      shift
Packit dd8086
      ;;
Packit dd8086
    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
Packit dd8086
        set fnord "$@"
Packit dd8086
        shift
Packit dd8086
        shift
Packit dd8086
        ;;
Packit dd8086
    *)
Packit dd8086
        set fnord "$@" "$arg"
Packit dd8086
        shift
Packit dd8086
        shift
Packit dd8086
        ;;
Packit dd8086
    esac
Packit dd8086
  done
Packit dd8086
  "$@" -E 2>/dev/null |
Packit dd8086
  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
Packit dd8086
  rm -f "$depfile"
Packit dd8086
  echo "$object : \\" > "$depfile"
Packit dd8086
  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
Packit dd8086
  echo "$tab" >> "$depfile"
Packit dd8086
  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
Packit dd8086
  rm -f "$tmpdepfile"
Packit dd8086
  ;;
Packit dd8086
Packit dd8086
msvcmsys)
Packit dd8086
  # This case exists only to let depend.m4 do its work.  It works by
Packit dd8086
  # looking at the text of this script.  This case will never be run,
Packit dd8086
  # since it is checked for above.
Packit dd8086
  exit 1
Packit dd8086
  ;;
Packit dd8086
Packit dd8086
none)
Packit dd8086
  exec "$@"
Packit dd8086
  ;;
Packit dd8086
Packit dd8086
*)
Packit dd8086
  echo "Unknown depmode $depmode" 1>&2
Packit dd8086
  exit 1
Packit dd8086
  ;;
Packit dd8086
esac
Packit dd8086
Packit dd8086
exit 0
Packit dd8086
Packit dd8086
# Local Variables:
Packit dd8086
# mode: shell-script
Packit dd8086
# sh-indentation: 2
Packit dd8086
# eval: (add-hook 'write-file-hooks 'time-stamp)
Packit dd8086
# time-stamp-start: "scriptversion="
Packit dd8086
# time-stamp-format: "%:y-%02m-%02d.%02H"
Packit dd8086
# time-stamp-time-zone: "UTC"
Packit dd8086
# time-stamp-end: "; # UTC"
Packit dd8086
# End: