~ubuntu-branches/ubuntu/natty/desktop-switcher/natty

« back to all changes in this revision

Viewing changes to depcomp

  • Committer: Bazaar Package Importer
  • Author(s): Steve Kowalik
  • Date: 2009-09-09 16:32:56 UTC
  • mfrom: (1.1.5 upstream)
  • Revision ID: james.westby@ubuntu.com-20090909163256-ipg3b37wmztcrbao
Tags: 0.5.4-0ubuntu1
New upstream release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
#! /bin/sh
2
2
# depcomp - compile a program generating dependencies as side-effects
3
3
 
4
 
scriptversion=2005-07-09.11
 
4
scriptversion=2007-03-29.01
5
5
 
6
 
# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
 
6
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software
 
7
# Foundation, Inc.
7
8
 
8
9
# This program is free software; you can redistribute it and/or modify
9
10
# it under the terms of the GNU General Public License as published by
91
92
## gcc 3 implements dependency tracking that does exactly what
92
93
## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
93
94
## 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
  "$@"
95
109
  stat=$?
96
110
  if test $stat -eq 0; then :
97
111
  else
201
215
  # current directory.  Also, the AIX compiler puts `$object:' at the
202
216
  # start of each line; $object doesn't have directory information.
203
217
  # 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$//'`
206
221
  if test "$libtool" = yes; then
 
222
    tmpdepfile1=$dir$base.u
 
223
    tmpdepfile2=$base.u
 
224
    tmpdepfile3=$dir.libs/$base.u
207
225
    "$@" -Wc,-M
208
226
  else
 
227
    tmpdepfile1=$dir$base.u
 
228
    tmpdepfile2=$dir$base.u
 
229
    tmpdepfile3=$dir$base.u
209
230
    "$@" -M
210
231
  fi
211
232
  stat=$?
212
233
 
213
 
  if test -f "$tmpdepfile"; then :
214
 
  else
215
 
    stripped=`echo "$stripped" | sed 's,^.*/,,'`
216
 
    tmpdepfile="$stripped.u"
217
 
  fi
218
 
 
219
234
  if test $stat -eq 0; then :
220
235
  else
221
 
    rm -f "$tmpdepfile"
 
236
    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
222
237
    exit $stat
223
238
  fi
224
239
 
 
240
  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
 
241
  do
 
242
    test -f "$tmpdepfile" && break
 
243
  done
225
244
  if test -f "$tmpdepfile"; then
226
 
    outname="$stripped.o"
227
245
    # Each line is of the form `foo.o: dependent.h'.
228
246
    # Do two passes, one to just change these to
229
247
    # `$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"
232
251
  else
233
252
    # The sourcefile does not contain any dependencies, so just
234
253
    # store a dummy comment line, to avoid errors with the Makefile
276
295
  rm -f "$tmpdepfile"
277
296
  ;;
278
297
 
 
298
hp2)
 
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
 
279
338
tru64)
280
339
   # The Tru64 compiler uses -MD to generate dependencies as a side
281
340
   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
288
347
 
289
348
   if test "$libtool" = yes; then
290
349
      # 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
292
351
      # handle both shared and static libraries in a single compilation.
293
352
      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
294
353
      #
295
354
      # With libtool 1.5 this exception was removed, and libtool now
296
355
      # 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
298
357
      # in $dir$base.o.d.  We have to check for both files, because
299
358
      # one of the two compilations can be disabled.  We should prefer
300
359
      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is