source: trunk/dports/graphics/aalib/files/patch-depcomp.diff @ 21483

Last change on this file since 21483 was 21483, checked in by eridius@…, 13 years ago

Massive update to svn properties on files:
All patchfiles have svn:eol-style removed.
All files that are not in fact able to be executed have svn:executable removed
All binary files have svn:eol-style removed (and are probably corrupt)
All binary files have svn:mime-type set to application/octet-stream
All files which are not patchfiles or binary files have svn:eol-style set to native
All Portfiles have svn:eol-style set to native and svn:executable removed

File size: 12.4 KB
  • ./depcomp

    old new  
     1#! /bin/sh
     2
     3# depcomp - compile a program generating dependencies as side-effects
     4# Copyright 1999, 2000 Free Software Foundation, Inc.
     5
     6# This program is free software; you can redistribute it and/or modify
     7# it under the terms of the GNU General Public License as published by
     8# the Free Software Foundation; either version 2, or (at your option)
     9# any later version.
     10
     11# This program is distributed in the hope that it will be useful,
     12# but WITHOUT ANY WARRANTY; without even the implied warranty of
     13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     14# GNU General Public License for more details.
     15
     16# You should have received a copy of the GNU General Public License
     17# along with this program; if not, write to the Free Software
     18# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
     19# 02111-1307, USA.
     20
     21# As a special exception to the GNU General Public License, if you
     22# distribute this file as part of a program that contains a
     23# configuration script generated by Autoconf, you may include it under
     24# the same distribution terms that you use for the rest of that program.
     25
     26# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
     27
     28if test -z "$depmode" || test -z "$source" || test -z "$object"; then
     29  echo "depcomp: Variables source, object and depmode must be set" 1>&2
     30  exit 1
     31fi
     32# `libtool' can also be set to `yes' or `no'.
     33
     34if test -z "$depfile"; then
     35   base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'`
     36   dir=`echo "$object" | sed 's,/.*$,/,'`
     37   if test "$dir" = "$object"; then
     38      dir=
     39   fi
     40   # FIXME: should be _deps on DOS.
     41   depfile="$dir.deps/$base"
     42fi
     43
     44tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
     45
     46rm -f "$tmpdepfile"
     47
     48# Some modes work just like other modes, but use different flags.  We
     49# parameterize here, but still list the modes in the big case below,
     50# to make depend.m4 easier to write.  Note that we *cannot* use a case
     51# here, because this file can only contain one case statement.
     52if test "$depmode" = hp; then
     53  # HP compiler uses -M and no extra arg.
     54  gccflag=-M
     55  depmode=gcc
     56fi
     57
     58if test "$depmode" = dashXmstdout; then
     59   # This is just like dashmstdout with a different argument.
     60   dashmflag=-xM
     61   depmode=dashmstdout
     62fi
     63
     64case "$depmode" in
     65gcc3)
     66## gcc 3 implements dependency tracking that does exactly what
     67## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
     68## it if -MD -MP comes after the -MF stuff.  Hmm.
     69  "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
     70  stat=$?
     71  if test $stat -eq 0; then :
     72  else
     73    rm -f "$tmpdepfile"
     74    exit $stat
     75  fi
     76  mv "$tmpdepfile" "$depfile"
     77  ;;
     78
     79gcc)
     80## There are various ways to get dependency output from gcc.  Here's
     81## why we pick this rather obscure method:
     82## - Don't want to use -MD because we'd like the dependencies to end
     83##   up in a subdir.  Having to rename by hand is ugly.
     84##   (We might end up doing this anyway to support other compilers.)
     85## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
     86##   -MM, not -M (despite what the docs say).
     87## - Using -M directly means running the compiler twice (even worse
     88##   than renaming).
     89  if test -z "$gccflag"; then
     90    gccflag=-MD,
     91  fi
     92  "$@" -Wp,"$gccflag$tmpdepfile"
     93  stat=$?
     94  if test $stat -eq 0; then :
     95  else
     96    rm -f "$tmpdepfile"
     97    exit $stat
     98  fi
     99  rm -f "$depfile"
     100  echo "$object : \\" > "$depfile"
     101  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
     102## The second -e expression handles DOS-style file names with drive letters.
     103  sed -e 's/^[^:]*: / /' \
     104      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
     105## This next piece of magic avoids the `deleted header file' problem.
     106## The problem is that when a header file which appears in a .P file
     107## is deleted, the dependency causes make to die (because there is
     108## typically no way to rebuild the header).  We avoid this by adding
     109## dummy dependencies for each header file.  Too bad gcc doesn't do
     110## this for us directly.
     111  tr ' ' '
     112' < "$tmpdepfile" |
     113## Some versions of gcc put a space before the `:'.  On the theory
     114## that the space means something, we add a space to the output as
     115## well.
     116## Some versions of the HPUX 10.20 sed can't process this invocation
     117## correctly.  Breaking it into two sed invocations is a workaround.
     118    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
     119  rm -f "$tmpdepfile"
     120  ;;
     121
     122hp)
     123  # This case exists only to let depend.m4 do its work.  It works by
     124  # looking at the text of this script.  This case will never be run,
     125  # since it is checked for above.
     126  exit 1
     127  ;;
     128
     129sgi)
     130  if test "$libtool" = yes; then
     131    "$@" "-Wp,-MDupdate,$tmpdepfile"
     132  else
     133    "$@" -MDupdate "$tmpdepfile"
     134  fi
     135  stat=$?
     136  if test $stat -eq 0; then :
     137  else
     138    rm -f "$tmpdepfile"
     139    exit $stat
     140  fi
     141  rm -f "$depfile"
     142
     143  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
     144    echo "$object : \\" > "$depfile"
     145
     146    # Clip off the initial element (the dependent).  Don't try to be
     147    # clever and replace this with sed code, as IRIX sed won't handle
     148    # lines with more than a fixed number of characters (4096 in
     149    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
     150    # the IRIX cc adds comments like `#:fec' to the end of the
     151    # dependency line.
     152    tr ' ' '
     153' < "$tmpdepfile" \
     154    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
     155    tr '
     156' ' ' >> $depfile
     157    echo >> $depfile
     158
     159    # The second pass generates a dummy entry for each header file.
     160    tr ' ' '
     161' < "$tmpdepfile" \
     162   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
     163   >> $depfile
     164  else
     165    # The sourcefile does not contain any dependencies, so just
     166    # store a dummy comment line, to avoid errors with the Makefile
     167    # "include basename.Plo" scheme.
     168    echo "#dummy" > "$depfile"
     169  fi
     170  rm -f "$tmpdepfile"
     171  ;;
     172
     173aix)
     174  # The C for AIX Compiler uses -M and outputs the dependencies
     175  # in a .u file.  This file always lives in the current directory.
     176  # Also, the AIX compiler puts `$object:' at the start of each line;
     177  # $object doesn't have directory information.
     178  stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'`
     179  tmpdepfile="$stripped.u"
     180  outname="$stripped.o"
     181  if test "$libtool" = yes; then
     182    "$@" -Wc,-M
     183  else
     184    "$@" -M
     185  fi
     186
     187  stat=$?
     188  if test $stat -eq 0; then :
     189  else
     190    rm -f "$tmpdepfile"
     191    exit $stat
     192  fi
     193
     194  if test -f "$tmpdepfile"; then
     195    # Each line is of the form `foo.o: dependent.h'.
     196    # Do two passes, one to just change these to
     197    # `$object: dependent.h' and one to simply `dependent.h:'.
     198    sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
     199    sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
     200  else
     201    # The sourcefile does not contain any dependencies, so just
     202    # store a dummy comment line, to avoid errors with the Makefile
     203    # "include basename.Plo" scheme.
     204    echo "#dummy" > "$depfile"
     205  fi
     206  rm -f "$tmpdepfile"
     207  ;;
     208
     209tru64)
     210   # The Tru64 compiler uses -MD to generate dependencies as a side
     211   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
     212   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
     213   # dependencies in `foo.d' instead, so we check for that too.
     214   # Subdirectories are respected.
     215   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
     216   test "x$dir" = "x$object" && dir=
     217   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
     218
     219   if test "$libtool" = yes; then
     220      tmpdepfile1="$dir.libs/$base.lo.d"
     221      tmpdepfile2="$dir.libs/$base.d"
     222      "$@" -Wc,-MD
     223   else
     224      tmpdepfile1="$dir$base.o.d"
     225      tmpdepfile2="$dir$base.d"
     226      "$@" -MD
     227   fi
     228
     229   stat=$?
     230   if test $stat -eq 0; then :
     231   else
     232      rm -f "$tmpdepfile1" "$tmpdepfile2"
     233      exit $stat
     234   fi
     235
     236   if test -f "$tmpdepfile1"; then
     237      tmpdepfile="$tmpdepfile1"
     238   else
     239      tmpdepfile="$tmpdepfile2"
     240   fi
     241   if test -f "$tmpdepfile"; then
     242      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
     243      # That's a space and a tab in the [].
     244      sed -e 's,^.*\.[a-z]*:[   ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
     245   else
     246      echo "#dummy" > "$depfile"
     247   fi
     248   rm -f "$tmpdepfile"
     249   ;;
     250
     251#nosideeffect)
     252  # This comment above is used by automake to tell side-effect
     253  # dependency tracking mechanisms from slower ones.
     254
     255dashmstdout)
     256  # Important note: in order to support this mode, a compiler *must*
     257  # always write the proprocessed file to stdout, regardless of -o.
     258  "$@" || exit $?
     259
     260  # Remove the call to Libtool.
     261  if test "$libtool" = yes; then
     262    while test $1 != '--mode=compile'; do
     263      shift
     264    done
     265    shift
     266  fi
     267
     268  # Remove `-o $object'.  We will use -o /dev/null later,
     269  # however we can't do the remplacement now because
     270  # `-o $object' might simply not be used
     271  IFS=" "
     272  for arg
     273  do
     274    case $arg in
     275    -o)
     276      shift
     277      ;;
     278    $object)
     279      shift
     280      ;;
     281    *)
     282      set fnord "$@" "$arg"
     283      shift # fnord
     284      shift # $arg
     285      ;;
     286    esac
     287  done
     288
     289  test -z "$dashmflag" && dashmflag=-M
     290  "$@" -o /dev/null $dashmflag | sed 's:^[^:]*\:[       ]*:'"$object"'\: :' > "$tmpdepfile"
     291  rm -f "$depfile"
     292  cat < "$tmpdepfile" > "$depfile"
     293  tr ' ' '
     294' < "$tmpdepfile" | \
     295## Some versions of the HPUX 10.20 sed can't process this invocation
     296## correctly.  Breaking it into two sed invocations is a workaround.
     297    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
     298  rm -f "$tmpdepfile"
     299  ;;
     300
     301dashXmstdout)
     302  # This case only exists to satisfy depend.m4.  It is never actually
     303  # run, as this mode is specially recognized in the preamble.
     304  exit 1
     305  ;;
     306
     307makedepend)
     308  "$@" || exit $?
     309  # X makedepend
     310  shift
     311  cleared=no
     312  for arg in "$@"; do
     313    case $cleared in
     314    no)
     315      set ""; shift
     316      cleared=yes ;;
     317    esac
     318    case "$arg" in
     319    -D*|-I*)
     320      set fnord "$@" "$arg"; shift ;;
     321    -*)
     322      ;;
     323    *)
     324      set fnord "$@" "$arg"; shift ;;
     325    esac
     326  done
     327  obj_suffix="`echo $object | sed 's/^.*\././'`"
     328  touch "$tmpdepfile"
     329  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
     330  rm -f "$depfile"
     331  cat < "$tmpdepfile" > "$depfile"
     332  sed '1,2d' "$tmpdepfile" | tr ' ' '
     333' | \
     334## Some versions of the HPUX 10.20 sed can't process this invocation
     335## correctly.  Breaking it into two sed invocations is a workaround.
     336    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
     337  rm -f "$tmpdepfile" "$tmpdepfile".bak
     338  ;;
     339
     340cpp)
     341  # Important note: in order to support this mode, a compiler *must*
     342  # always write the proprocessed file to stdout.
     343  "$@" || exit $?
     344
     345  # Remove the call to Libtool.
     346  if test "$libtool" = yes; then
     347    while test $1 != '--mode=compile'; do
     348      shift
     349    done
     350    shift
     351  fi
     352
     353  # Remove `-o $object'.
     354  IFS=" "
     355  for arg
     356  do
     357    case $arg in
     358    -o)
     359      shift
     360      ;;
     361    $object)
     362      shift
     363      ;;
     364    *)
     365      set fnord "$@" "$arg"
     366      shift # fnord
     367      shift # $arg
     368      ;;
     369    esac
     370  done
     371
     372  "$@" -E |
     373    sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
     374    sed '$ s: \\$::' > "$tmpdepfile"
     375  rm -f "$depfile"
     376  echo "$object : \\" > "$depfile"
     377  cat < "$tmpdepfile" >> "$depfile"
     378  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
     379  rm -f "$tmpdepfile"
     380  ;;
     381
     382msvisualcpp)
     383  # Important note: in order to support this mode, a compiler *must*
     384  # always write the proprocessed file to stdout, regardless of -o,
     385  # because we must use -o when running libtool.
     386  "$@" || exit $?
     387  IFS=" "
     388  for arg
     389  do
     390    case "$arg" in
     391    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
     392        set fnord "$@"
     393        shift
     394        shift
     395        ;;
     396    *)
     397        set fnord "$@" "$arg"
     398        shift
     399        shift
     400        ;;
     401    esac
     402  done
     403  "$@" -E |
     404  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
     405  rm -f "$depfile"
     406  echo "$object : \\" > "$depfile"
     407  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::    \1 \\:p' >> "$depfile"
     408  echo "        " >> "$depfile"
     409  . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
     410  rm -f "$tmpdepfile"
     411  ;;
     412
     413none)
     414  exec "$@"
     415  ;;
     416
     417*)
     418  echo "Unknown depmode $depmode" 1>&2
     419  exit 1
     420  ;;
     421esac
     422
     423exit 0
Note: See TracBrowser for help on using the repository browser.