Blame depcomp

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