diff options
Diffstat (limited to 'aux-build/depcomp')
| -rwxr-xr-x | aux-build/depcomp | 522 | 
1 files changed, 522 insertions, 0 deletions
| diff --git a/aux-build/depcomp b/aux-build/depcomp new file mode 100755 index 0000000..11e2d3b --- /dev/null +++ b/aux-build/depcomp @@ -0,0 +1,522 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2004-05-31.23 + +# Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. + +case $1 in +  '') +     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2 +     exit 1; +     ;; +  -h | --h*) +    cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: +  depmode     Dependency tracking mode. +  source      Source file read by `PROGRAMS ARGS'. +  object      Object file output by `PROGRAMS ARGS'. +  DEPDIR      directory where to store dependencies. +  depfile     Dependency file to output. +  tmpdepfile  Temporary file to use when outputing dependencies. +  libtool     Whether libtool is used (yes/no). + +Report bugs to <bug-automake@gnu.org>. +EOF +    exit 0 +    ;; +  -v | --v*) +    echo "depcomp $scriptversion" +    exit 0 +    ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then +  echo "depcomp: Variables source, object and depmode must be set" 1>&2 +  exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | +  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags.  We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write.  Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then +  # HP compiler uses -M and no extra arg. +  gccflag=-M +  depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then +   # This is just like dashmstdout with a different argument. +   dashmflag=-xM +   depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff.  Hmm. +  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" +  stat=$? +  if test $stat -eq 0; then : +  else +    rm -f "$tmpdepfile" +    exit $stat +  fi +  mv "$tmpdepfile" "$depfile" +  ;; + +gcc) +## There are various ways to get dependency output from gcc.  Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +##   up in a subdir.  Having to rename by hand is ugly. +##   (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +##   -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +##   than renaming). +  if test -z "$gccflag"; then +    gccflag=-MD, +  fi +  "$@" -Wp,"$gccflag$tmpdepfile" +  stat=$? +  if test $stat -eq 0; then : +  else +    rm -f "$tmpdepfile" +    exit $stat +  fi +  rm -f "$depfile" +  echo "$object : \\" > "$depfile" +  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. +  sed -e 's/^[^:]*: / /' \ +      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header).  We avoid this by adding +## dummy dependencies for each header file.  Too bad gcc doesn't do +## this for us directly. +  tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'.  On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly.  Breaking it into two sed invocations is a workaround. +    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" +  rm -f "$tmpdepfile" +  ;; + +hp) +  # This case exists only to let depend.m4 do its work.  It works by +  # looking at the text of this script.  This case will never be run, +  # since it is checked for above. +  exit 1 +  ;; + +sgi) +  if test "$libtool" = yes; then +    "$@" "-Wp,-MDupdate,$tmpdepfile" +  else +    "$@" -MDupdate "$tmpdepfile" +  fi +  stat=$? +  if test $stat -eq 0; then : +  else +    rm -f "$tmpdepfile" +    exit $stat +  fi +  rm -f "$depfile" + +  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files +    echo "$object : \\" > "$depfile" + +    # Clip off the initial element (the dependent).  Don't try to be +    # clever and replace this with sed code, as IRIX sed won't handle +    # lines with more than a fixed number of characters (4096 in +    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines; +    # the IRIX cc adds comments like `#:fec' to the end of the +    # dependency line. +    tr ' ' ' +' < "$tmpdepfile" \ +    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ +    tr ' +' ' ' >> $depfile +    echo >> $depfile + +    # The second pass generates a dummy entry for each header file. +    tr ' ' ' +' < "$tmpdepfile" \ +   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ +   >> $depfile +  else +    # The sourcefile does not contain any dependencies, so just +    # store a dummy comment line, to avoid errors with the Makefile +    # "include basename.Plo" scheme. +    echo "#dummy" > "$depfile" +  fi +  rm -f "$tmpdepfile" +  ;; + +aix) +  # The C for AIX Compiler uses -M and outputs the dependencies +  # in a .u file.  In older versions, this file always lives in the +  # current directory.  Also, the AIX compiler puts `$object:' at the +  # start of each line; $object doesn't have directory information. +  # Version 6 uses the directory in both cases. +  stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` +  tmpdepfile="$stripped.u" +  if test "$libtool" = yes; then +    "$@" -Wc,-M +  else +    "$@" -M +  fi +  stat=$? + +  if test -f "$tmpdepfile"; then : +  else +    stripped=`echo "$stripped" | sed 's,^.*/,,'` +    tmpdepfile="$stripped.u" +  fi + +  if test $stat -eq 0; then : +  else +    rm -f "$tmpdepfile" +    exit $stat +  fi + +  if test -f "$tmpdepfile"; then +    outname="$stripped.o" +    # Each line is of the form `foo.o: dependent.h'. +    # Do two passes, one to just change these to +    # `$object: dependent.h' and one to simply `dependent.h:'. +    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" +    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" +  else +    # The sourcefile does not contain any dependencies, so just +    # store a dummy comment line, to avoid errors with the Makefile +    # "include basename.Plo" scheme. +    echo "#dummy" > "$depfile" +  fi +  rm -f "$tmpdepfile" +  ;; + +icc) +  # Intel's C compiler understands `-MD -MF file'.  However on +  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c +  # ICC 7.0 will fill foo.d with something like +  #    foo.o: sub/foo.c +  #    foo.o: sub/foo.h +  # which is wrong.  We want: +  #    sub/foo.o: sub/foo.c +  #    sub/foo.o: sub/foo.h +  #    sub/foo.c: +  #    sub/foo.h: +  # ICC 7.1 will output +  #    foo.o: sub/foo.c sub/foo.h +  # and will wrap long lines using \ : +  #    foo.o: sub/foo.c ... \ +  #     sub/foo.h ... \ +  #     ... + +  "$@" -MD -MF "$tmpdepfile" +  stat=$? +  if test $stat -eq 0; then : +  else +    rm -f "$tmpdepfile" +    exit $stat +  fi +  rm -f "$depfile" +  # Each line is of the form `foo.o: dependent.h', +  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. +  # Do two passes, one to just change these to +  # `$object: dependent.h' and one to simply `dependent.h:'. +  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" +  # Some versions of the HPUX 10.20 sed can't process this invocation +  # correctly.  Breaking it into two sed invocations is a workaround. +  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | +    sed -e 's/$/ :/' >> "$depfile" +  rm -f "$tmpdepfile" +  ;; + +tru64) +   # The Tru64 compiler uses -MD to generate dependencies as a side +   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. +   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put +   # dependencies in `foo.d' instead, so we check for that too. +   # Subdirectories are respected. +   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` +   test "x$dir" = "x$object" && dir= +   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + +   if test "$libtool" = yes; then +      # Dependencies are output in .lo.d with libtool 1.4. +      # With libtool 1.5 they are output both in $dir.libs/$base.o.d +      # and in $dir.libs/$base.o.d and $dir$base.o.d.  We process the +      # latter, because the former will be cleaned when $dir.libs is +      # erased. +      tmpdepfile1="$dir.libs/$base.lo.d" +      tmpdepfile2="$dir$base.o.d" +      tmpdepfile3="$dir.libs/$base.d" +      "$@" -Wc,-MD +   else +      tmpdepfile1="$dir$base.o.d" +      tmpdepfile2="$dir$base.d" +      tmpdepfile3="$dir$base.d" +      "$@" -MD +   fi + +   stat=$? +   if test $stat -eq 0; then : +   else +      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" +      exit $stat +   fi + +   if test -f "$tmpdepfile1"; then +      tmpdepfile="$tmpdepfile1" +   elif test -f "$tmpdepfile2"; then +      tmpdepfile="$tmpdepfile2" +   else +      tmpdepfile="$tmpdepfile3" +   fi +   if test -f "$tmpdepfile"; then +      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" +      # That's a tab and a space in the []. +      sed -e 's,^.*\.[a-z]*:[	 ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" +   else +      echo "#dummy" > "$depfile" +   fi +   rm -f "$tmpdepfile" +   ;; + +#nosideeffect) +  # This comment above is used by automake to tell side-effect +  # dependency tracking mechanisms from slower ones. + +dashmstdout) +  # Important note: in order to support this mode, a compiler *must* +  # always write the preprocessed file to stdout, regardless of -o. +  "$@" || exit $? + +  # Remove the call to Libtool. +  if test "$libtool" = yes; then +    while test $1 != '--mode=compile'; do +      shift +    done +    shift +  fi + +  # Remove `-o $object'. +  IFS=" " +  for arg +  do +    case $arg in +    -o) +      shift +      ;; +    $object) +      shift +      ;; +    *) +      set fnord "$@" "$arg" +      shift # fnord +      shift # $arg +      ;; +    esac +  done + +  test -z "$dashmflag" && dashmflag=-M +  # Require at least two characters before searching for `:' +  # in the target name.  This is to cope with DOS-style filenames: +  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. +  "$@" $dashmflag | +    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile" +  rm -f "$depfile" +  cat < "$tmpdepfile" > "$depfile" +  tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly.  Breaking it into two sed invocations is a workaround. +    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" +  rm -f "$tmpdepfile" +  ;; + +dashXmstdout) +  # This case only exists to satisfy depend.m4.  It is never actually +  # run, as this mode is specially recognized in the preamble. +  exit 1 +  ;; + +makedepend) +  "$@" || exit $? +  # Remove any Libtool call +  if test "$libtool" = yes; then +    while test $1 != '--mode=compile'; do +      shift +    done +    shift +  fi +  # X makedepend +  shift +  cleared=no +  for arg in "$@"; do +    case $cleared in +    no) +      set ""; shift +      cleared=yes ;; +    esac +    case "$arg" in +    -D*|-I*) +      set fnord "$@" "$arg"; shift ;; +    # Strip any option that makedepend may not understand.  Remove +    # the object too, otherwise makedepend will parse it as a source file. +    -*|$object) +      ;; +    *) +      set fnord "$@" "$arg"; shift ;; +    esac +  done +  obj_suffix="`echo $object | sed 's/^.*\././'`" +  touch "$tmpdepfile" +  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" +  rm -f "$depfile" +  cat < "$tmpdepfile" > "$depfile" +  sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly.  Breaking it into two sed invocations is a workaround. +    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" +  rm -f "$tmpdepfile" "$tmpdepfile".bak +  ;; + +cpp) +  # Important note: in order to support this mode, a compiler *must* +  # always write the preprocessed file to stdout. +  "$@" || exit $? + +  # Remove the call to Libtool. +  if test "$libtool" = yes; then +    while test $1 != '--mode=compile'; do +      shift +    done +    shift +  fi + +  # Remove `-o $object'. +  IFS=" " +  for arg +  do +    case $arg in +    -o) +      shift +      ;; +    $object) +      shift +      ;; +    *) +      set fnord "$@" "$arg" +      shift # fnord +      shift # $arg +      ;; +    esac +  done + +  "$@" -E | +    sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | +    sed '$ s: \\$::' > "$tmpdepfile" +  rm -f "$depfile" +  echo "$object : \\" > "$depfile" +  cat < "$tmpdepfile" >> "$depfile" +  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" +  rm -f "$tmpdepfile" +  ;; + +msvisualcpp) +  # Important note: in order to support this mode, a compiler *must* +  # always write the preprocessed file to stdout, regardless of -o, +  # because we must use -o when running libtool. +  "$@" || exit $? +  IFS=" " +  for arg +  do +    case "$arg" in +    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") +	set fnord "$@" +	shift +	shift +	;; +    *) +	set fnord "$@" "$arg" +	shift +	shift +	;; +    esac +  done +  "$@" -E | +  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" +  rm -f "$depfile" +  echo "$object : \\" > "$depfile" +  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::	\1 \\:p' >> "$depfile" +  echo "	" >> "$depfile" +  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" +  rm -f "$tmpdepfile" +  ;; + +none) +  exec "$@" +  ;; + +*) +  echo "Unknown depmode $depmode" 1>&2 +  exit 1 +  ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: | 
