Changeset 7f1d3e for util/depcomp


Ignore:
Timestamp:
Oct 16, 2008, 9:27:59 AM (17 years ago)
Author:
Frederik Heber <heber@…>
Children:
626e8a
Parents:
136e89
Message:

New tests that check that if subsequent arguments to certain cmd options are missing, it is admonished.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • util/depcomp

    r136e89 r7f1d3e  
    22# depcomp - compile a program generating dependencies as side-effects
    33
    4 scriptversion=2005-07-09.11
    5 
    6 # Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
     4scriptversion=2007-03-29.01
     5
     6# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software
     7# Foundation, Inc.
    78
    89# This program is free software; you can redistribute it and/or modify
     
    9293## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
    9394## it if -MD -MP comes after the -MF stuff.  Hmm.
    94   "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
     95## Unfortunately, FreeBSD c89 acceptance of flags depends upon
     96## the command line argument order; so add the flags where they
     97## appear in depend2.am.  Note that the slowdown incurred here
     98## affects only configure: in makefiles, %FASTDEP% shortcuts this.
     99  for arg
     100  do
     101    case $arg in
     102    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
     103    *)  set fnord "$@" "$arg" ;;
     104    esac
     105    shift # fnord
     106    shift # $arg
     107  done
     108  "$@"
    95109  stat=$?
    96110  if test $stat -eq 0; then :
     
    202216  # start of each line; $object doesn't have directory information.
    203217  # Version 6 uses the directory in both cases.
    204   stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
    205   tmpdepfile="$stripped.u"
     218  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
     219  test "x$dir" = "x$object" && dir=
     220  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
    206221  if test "$libtool" = yes; then
     222    tmpdepfile1=$dir$base.u
     223    tmpdepfile2=$base.u
     224    tmpdepfile3=$dir.libs/$base.u
    207225    "$@" -Wc,-M
    208226  else
     227    tmpdepfile1=$dir$base.u
     228    tmpdepfile2=$dir$base.u
     229    tmpdepfile3=$dir$base.u
    209230    "$@" -M
    210231  fi
    211232  stat=$?
    212233
    213   if test -f "$tmpdepfile"; then :
    214   else
    215     stripped=`echo "$stripped" | sed 's,^.*/,,'`
    216     tmpdepfile="$stripped.u"
    217   fi
    218 
    219234  if test $stat -eq 0; then :
    220235  else
    221     rm -f "$tmpdepfile"
     236    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
    222237    exit $stat
    223238  fi
    224239
     240  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
     241  do
     242    test -f "$tmpdepfile" && break
     243  done
    225244  if test -f "$tmpdepfile"; then
    226     outname="$stripped.o"
    227245    # Each line is of the form `foo.o: dependent.h'.
    228246    # Do two passes, one to just change these to
    229247    # `$object: dependent.h' and one to simply `dependent.h:'.
    230     sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
    231     sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
     248    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
     249    # That's a tab and a space in the [].
     250    sed -e 's,^.*\.[a-z]*:[      ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
    232251  else
    233252    # The sourcefile does not contain any dependencies, so just
     
    277296  ;;
    278297
     298hp2)
     299  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
     300  # compilers, which have integrated preprocessors.  The correct option
     301  # to use with these is +Maked; it writes dependencies to a file named
     302  # 'foo.d', which lands next to the object file, wherever that
     303  # happens to be.
     304  # Much of this is similar to the tru64 case; see comments there.
     305  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
     306  test "x$dir" = "x$object" && dir=
     307  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
     308  if test "$libtool" = yes; then
     309    tmpdepfile1=$dir$base.d
     310    tmpdepfile2=$dir.libs/$base.d
     311    "$@" -Wc,+Maked
     312  else
     313    tmpdepfile1=$dir$base.d
     314    tmpdepfile2=$dir$base.d
     315    "$@" +Maked
     316  fi
     317  stat=$?
     318  if test $stat -eq 0; then :
     319  else
     320     rm -f "$tmpdepfile1" "$tmpdepfile2"
     321     exit $stat
     322  fi
     323
     324  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
     325  do
     326    test -f "$tmpdepfile" && break
     327  done
     328  if test -f "$tmpdepfile"; then
     329    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
     330    # Add `dependent.h:' lines.
     331    sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
     332  else
     333    echo "#dummy" > "$depfile"
     334  fi
     335  rm -f "$tmpdepfile" "$tmpdepfile2"
     336  ;;
     337
    279338tru64)
    280339   # The Tru64 compiler uses -MD to generate dependencies as a side
     
    289348   if test "$libtool" = yes; then
    290349      # With Tru64 cc, shared objects can also be used to make a
    291       # static library.  This mecanism is used in libtool 1.4 series to
     350      # static library.  This mechanism is used in libtool 1.4 series to
    292351      # handle both shared and static libraries in a single compilation.
    293352      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
     
    295354      # With libtool 1.5 this exception was removed, and libtool now
    296355      # generates 2 separate objects for the 2 libraries.  These two
    297       # compilations output dependencies in in $dir.libs/$base.o.d and
     356      # compilations output dependencies in $dir.libs/$base.o.d and
    298357      # in $dir$base.o.d.  We have to check for both files, because
    299358      # one of the two compilations can be disabled.  We should prefer
Note: See TracChangeset for help on using the changeset viewer.