Blame depcomp

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