diff options
| author | Fumitoshi UKAI <ukai@debian.or.jp> | 2002-07-10 14:21:11 +0000 | 
|---|---|---|
| committer | Fumitoshi UKAI <ukai@debian.or.jp> | 2002-07-10 14:21:11 +0000 | 
| commit | bb118b7356439a930be13962ced5f36aab9f74bf (patch) | |
| tree | 5a9fad8dd6dc7f236bfc8e6b22c04cad0b837928 /gc/depcomp | |
| parent | delete old ftp site (diff) | |
| download | w3m-bb118b7356439a930be13962ced5f36aab9f74bf.tar.gz w3m-bb118b7356439a930be13962ced5f36aab9f74bf.zip | |
import gc6.1alpha5
Diffstat (limited to '')
| -rwxr-xr-x | gc/depcomp | 436 | 
1 files changed, 436 insertions, 0 deletions
| diff --git a/gc/depcomp b/gc/depcomp new file mode 100755 index 0000000..3480ce4 --- /dev/null +++ b/gc/depcomp @@ -0,0 +1,436 @@ +#! /bin/sh + +# depcomp - compile a program generating dependencies as side-effects +# Copyright 1999, 2000 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>. + +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 +# `libtool' can also be set to `yes' or `no'. + +if test -z "$depfile"; then +   base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` +   dir=`echo "$object" | sed 's,/.*$,/,'` +   if test "$dir" = "$object"; then +      dir= +   fi +   # FIXME: should be _deps on DOS. +   depfile="$dir.deps/$base" +fi + +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.  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. +  stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'` +  tmpdepfile="$stripped.u" +  outname="$stripped.o" +  if test "$libtool" = yes; then +    "$@" -Wc,-M +  else +    "$@" -M +  fi + +  stat=$? +  if test $stat -eq 0; then : +  else +    rm -f "$tmpdepfile" +    exit $stat +  fi + +  if test -f "$tmpdepfile"; then +    # 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" +  ;; + +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. + +   base=`echo "$object" | sed -e 's/\.o$//' -e 's/\.lo$//'` +   tmpdepfile1="$base.o.d" +   tmpdepfile2="$base.d" +   if test "$libtool" = yes; then +      "$@" -Wc,-MD +   else +      "$@" -MD +   fi + +   stat=$? +   if test $stat -eq 0; then : +   else +      rm -f "$tmpdepfile1" "$tmpdepfile2" +      exit $stat +   fi + +   if test -f "$tmpdepfile1"; then +      tmpdepfile="$tmpdepfile1" +   else +      tmpdepfile="$tmpdepfile2" +   fi +   if test -f "$tmpdepfile"; then +      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" +      # That's a space and a tab 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 proprocessed file to stdout, regardless of -o, +  # because we must use -o when running libtool. +  test -z "$dashmflag" && dashmflag=-M +  ( IFS=" " +    case " $* " in +    *" --mode=compile "*) # this is libtool, let us make it quiet +      for arg +      do # cycle over the arguments +        case "$arg" in +	"--mode=compile") +	  # insert --quiet before "--mode=compile" +	  set fnord "$@" --quiet +	  shift # fnord +	  ;; +	esac +	set fnord "$@" "$arg" +	shift # fnord +	shift # "$arg" +      done +      ;; +    esac +    "$@" $dashmflag | sed 's:^[^:]*\:[ 	]*:'"$object"'\: :' > "$tmpdepfile" +  ) & +  proc=$! +  "$@" +  stat=$? +  wait "$proc" +  if test "$stat" != 0; then exit $stat; fi +  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) +  # 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;; +	-*) +	  ;; +	*) +	  set fnord "$@" "$arg"; shift;; +      esac +    done +    obj_suffix="`echo $object | sed 's/^.*\././'`" +    touch "$tmpdepfile" +    ${MAKEDEPEND-makedepend} 2>/dev/null -o"$obj_suffix" -f"$tmpdepfile" "$@" +  ) & +  proc=$! +  "$@" +  stat=$? +  wait "$proc" +  if test "$stat" != 0; then exit $stat; fi +  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 proprocessed file to stdout, regardless of -o, +  # because we must use -o when running libtool. +  ( IFS=" " +    case " $* " in +    *" --mode=compile "*) +      for arg +      do # cycle over the arguments +        case $arg in +	"--mode=compile") +	  # insert --quiet before "--mode=compile" +	  set fnord "$@" --quiet +	  shift # fnord +	  ;; +	esac +	set fnord "$@" "$arg" +	shift # fnord +	shift # "$arg" +      done +      ;; +    esac +    "$@" -E | +    sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | +    sed '$ s: \\$::' > "$tmpdepfile" +  ) & +  proc=$! +  "$@" +  stat=$? +  wait "$proc" +  if test "$stat" != 0; then exit $stat; fi +  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 proprocessed file to stdout, regardless of -o, +  # because we must use -o when running libtool. +  ( IFS=" " +    case " $* " in +    *" --mode=compile "*) +      for arg +      do # cycle over the arguments +        case $arg in +	"--mode=compile") +	  # insert --quiet before "--mode=compile" +	  set fnord "$@" --quiet +	  shift # fnord +	  ;; +	esac +	set fnord "$@" "$arg" +	shift # fnord +	shift # "$arg" +      done +      ;; +    esac +    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" +  ) & +  proc=$! +  "$@" +  stat=$? +  wait "$proc" +  if test "$stat" != 0; then exit $stat; fi +  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 | 
