~ubuntu-branches/ubuntu/saucy/gnome-settings-daemon/saucy-proposed

« back to all changes in this revision

Viewing changes to depcomp

  • Committer: Package Import Robot
  • Author(s): Jeremy Bicha, Tim Lunn, Jeremy Bicha, Rico Tzschichholz
  • Date: 2013-09-09 10:21:09 UTC
  • mfrom: (1.1.64)
  • Revision ID: package-import@ubuntu.com-20130909102109-t2zyyll79urcfz56
Tags: 3.8.5-0ubuntu1
[ Tim Lunn ]
* Refreshed patches
* debian/patches: 
  - fix_media_keys_on_unity.patch:
    Use legacy media keys keygrabber when running Unity
  - git_revert_remove_automount_helper.patch: bring back the automount
    helper, revert upstream commit and port to dbus session tracking.
  - fix_screenshots_on_unity.patch: bring back support for screenshots
    via gnome-screenshot when using unity.
  - ubuntu-lid-close-suspend.patch:
     Reimplement support for setting lid close suspend actions
  - ubuntu-fix-desktop-file.patch: Autostart in Unity too
  - fix_input_switching_on_unity.patch: Bring back support for input
    switching under Unity
  - 63_gnome_disable_background_plugin.patch: Disable loading
    of background plugin for GNOME session (LP: #1219148)

* Dropped obsolete patches:
  - power-check-null-devices.patch, Dropped: Applied in new version
  - 51_lock_screen_on_suspend.patch, Superseded by handling this key
    in gnome-screensaver. With that, g-screensaver mirrors what's
    done in g-shell, and avoids patching settings-daemon.
* gnome-settings-daemon.gsettings-override:
  - Update switch input source keys for 3.8

[ Jeremy Bicha ]
* New upstream release (LP: #1219486)
  - Two-finger scrolling enabled by default (LP: #1217166)
  - But use edge scrolling if two-finger scrolling isn't
    available (LP: #1221367)
  - Fix Super+Space switch-input-source shortcut in Unity (LP: #1201679)
* debian/control.in:
  - Bump minimum glib, gsettings-desktop-schemas, gnome-desktop3, gtk,
    libpulse, and libwacom
  - Build-depend on librsvg2-dev
  - This update needs changes to gnome-control-center so break older
    versions
* Refreshed patches
* revert_background_dropping.patch:
  - Don't drop the background plugin yet, GNOME Fallback & Unity
    still need it (when Nautilus isn't handling the desktop)
* Dropped obsolete patches:
  - bugzilla_segfault_dpms.patch: Applied in new version
  - 47_delay_pa_connect_to_idle.patch: Applied in new version
  - power-no-fallback-notifications.patch: Applied in new version
  - 60_unity_hide_status_icon.patch
  - 61_unity_use_application_indicator.patch
  - 63_unity_start_mounter.patch
  - logind_support.patch
  - and patches backported from 3.8
* Disabled patch that need to be rewritten or dropped:
  - 48_register_client_before_idle_callbacks.patch
* debian/patches/touchscreen_rotation.patch:
  - Updated with latest version from bugzilla
* debian/patches/git_revert_hardcoded_input_methods.patch:
  - Add patch from git (and also applied in Fedora 19) to not hardcode
    input methods based on the current locale

[ Rico Tzschichholz ]
* debian/patches:
  - 16_use_synchronous_notifications.patch: Refreshed

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=2012-03-27.16; # UTC
 
4
scriptversion=2013-05-30.07; # UTC
5
5
 
6
 
# Copyright (C) 1999-2012 Free Software Foundation, Inc.
 
6
# Copyright (C) 1999-2013 Free Software Foundation, Inc.
7
7
 
8
8
# This program is free software; you can redistribute it and/or modify
9
9
# it under the terms of the GNU General Public License as published by
27
27
 
28
28
case $1 in
29
29
  '')
30
 
     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
31
 
     exit 1;
32
 
     ;;
 
30
    echo "$0: No command.  Try '$0 --help' for more information." 1>&2
 
31
    exit 1;
 
32
    ;;
33
33
  -h | --h*)
34
34
    cat <<\EOF
35
35
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
56
56
    ;;
57
57
esac
58
58
 
 
59
# Get the directory component of the given path, and save it in the
 
60
# global variables '$dir'.  Note that this directory component will
 
61
# be either empty or ending with a '/' character.  This is deliberate.
 
62
set_dir_from ()
 
63
{
 
64
  case $1 in
 
65
    */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
 
66
      *) dir=;;
 
67
  esac
 
68
}
 
69
 
 
70
# Get the suffix-stripped basename of the given path, and save it the
 
71
# global variable '$base'.
 
72
set_base_from ()
 
73
{
 
74
  base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
 
75
}
 
76
 
 
77
# If no dependency file was actually created by the compiler invocation,
 
78
# we still have to create a dummy depfile, to avoid errors with the
 
79
# Makefile "include basename.Plo" scheme.
 
80
make_dummy_depfile ()
 
81
{
 
82
  echo "#dummy" > "$depfile"
 
83
}
 
84
 
 
85
# Factor out some common post-processing of the generated depfile.
 
86
# Requires the auxiliary global variable '$tmpdepfile' to be set.
 
87
aix_post_process_depfile ()
 
88
{
 
89
  # If the compiler actually managed to produce a dependency file,
 
90
  # post-process it.
 
91
  if test -f "$tmpdepfile"; then
 
92
    # Each line is of the form 'foo.o: dependency.h'.
 
93
    # Do two passes, one to just change these to
 
94
    #   $object: dependency.h
 
95
    # and one to simply output
 
96
    #   dependency.h:
 
97
    # which is needed to avoid the deleted-header problem.
 
98
    { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
 
99
      sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
 
100
    } > "$depfile"
 
101
    rm -f "$tmpdepfile"
 
102
  else
 
103
    make_dummy_depfile
 
104
  fi
 
105
}
 
106
 
59
107
# A tabulation character.
60
108
tab='   '
61
109
# A newline character.
62
110
nl='
63
111
'
 
112
# Character ranges might be problematic outside the C locale.
 
113
# These definitions help.
 
114
upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
 
115
lower=abcdefghijklmnopqrstuvwxyz
 
116
digits=0123456789
 
117
alpha=${upper}${lower}
64
118
 
65
119
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
66
120
  echo "depcomp: Variables source, object and depmode must be set" 1>&2
74
128
 
75
129
rm -f "$tmpdepfile"
76
130
 
 
131
# Avoid interferences from the environment.
 
132
gccflag= dashmflag=
 
133
 
77
134
# Some modes work just like other modes, but use different flags.  We
78
135
# parameterize here, but still list the modes in the big case below,
79
136
# to make depend.m4 easier to write.  Note that we *cannot* use a case
85
142
fi
86
143
 
87
144
if test "$depmode" = dashXmstdout; then
88
 
   # This is just like dashmstdout with a different argument.
89
 
   dashmflag=-xM
90
 
   depmode=dashmstdout
 
145
  # This is just like dashmstdout with a different argument.
 
146
  dashmflag=-xM
 
147
  depmode=dashmstdout
91
148
fi
92
149
 
93
150
cygpath_u="cygpath -u -f -"
94
151
if test "$depmode" = msvcmsys; then
95
 
   # This is just like msvisualcpp but w/o cygpath translation.
96
 
   # Just convert the backslash-escaped backslashes to single forward
97
 
   # slashes to satisfy depend.m4
98
 
   cygpath_u='sed s,\\\\,/,g'
99
 
   depmode=msvisualcpp
 
152
  # This is just like msvisualcpp but w/o cygpath translation.
 
153
  # Just convert the backslash-escaped backslashes to single forward
 
154
  # slashes to satisfy depend.m4
 
155
  cygpath_u='sed s,\\\\,/,g'
 
156
  depmode=msvisualcpp
100
157
fi
101
158
 
102
159
if test "$depmode" = msvc7msys; then
103
 
   # This is just like msvc7 but w/o cygpath translation.
104
 
   # Just convert the backslash-escaped backslashes to single forward
105
 
   # slashes to satisfy depend.m4
106
 
   cygpath_u='sed s,\\\\,/,g'
107
 
   depmode=msvc7
 
160
  # This is just like msvc7 but w/o cygpath translation.
 
161
  # Just convert the backslash-escaped backslashes to single forward
 
162
  # slashes to satisfy depend.m4
 
163
  cygpath_u='sed s,\\\\,/,g'
 
164
  depmode=msvc7
108
165
fi
109
166
 
110
167
if test "$depmode" = xlc; then
111
 
   # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations.
112
 
   gccflag=-qmakedep=gcc,-MF
113
 
   depmode=gcc
 
168
  # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
 
169
  gccflag=-qmakedep=gcc,-MF
 
170
  depmode=gcc
114
171
fi
115
172
 
116
173
case "$depmode" in
133
190
  done
134
191
  "$@"
135
192
  stat=$?
136
 
  if test $stat -eq 0; then :
137
 
  else
 
193
  if test $stat -ne 0; then
138
194
    rm -f "$tmpdepfile"
139
195
    exit $stat
140
196
  fi
142
198
  ;;
143
199
 
144
200
gcc)
 
201
## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
 
202
## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
 
203
## (see the conditional assignment to $gccflag above).
145
204
## There are various ways to get dependency output from gcc.  Here's
146
205
## why we pick this rather obscure method:
147
206
## - Don't want to use -MD because we'd like the dependencies to end
148
207
##   up in a subdir.  Having to rename by hand is ugly.
149
208
##   (We might end up doing this anyway to support other compilers.)
150
209
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
151
 
##   -MM, not -M (despite what the docs say).
 
210
##   -MM, not -M (despite what the docs say).  Also, it might not be
 
211
##   supported by the other compilers which use the 'gcc' depmode.
152
212
## - Using -M directly means running the compiler twice (even worse
153
213
##   than renaming).
154
214
  if test -z "$gccflag"; then
156
216
  fi
157
217
  "$@" -Wp,"$gccflag$tmpdepfile"
158
218
  stat=$?
159
 
  if test $stat -eq 0; then :
160
 
  else
 
219
  if test $stat -ne 0; then
161
220
    rm -f "$tmpdepfile"
162
221
    exit $stat
163
222
  fi
164
223
  rm -f "$depfile"
165
224
  echo "$object : \\" > "$depfile"
166
 
  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
167
 
## The second -e expression handles DOS-style file names with drive letters.
 
225
  # The second -e expression handles DOS-style file names with drive
 
226
  # letters.
168
227
  sed -e 's/^[^:]*: / /' \
169
228
      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
170
229
## This next piece of magic avoids the "deleted header file" problem.
173
232
## typically no way to rebuild the header).  We avoid this by adding
174
233
## dummy dependencies for each header file.  Too bad gcc doesn't do
175
234
## this for us directly.
176
 
  tr ' ' "$nl" < "$tmpdepfile" |
177
235
## Some versions of gcc put a space before the ':'.  On the theory
178
236
## that the space means something, we add a space to the output as
179
237
## well.  hp depmode also adds that space, but also prefixes the VPATH
180
238
## to the object.  Take care to not repeat it in the output.
181
239
## Some versions of the HPUX 10.20 sed can't process this invocation
182
240
## correctly.  Breaking it into two sed invocations is a workaround.
183
 
    sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
184
 
      | sed -e 's/$/ :/' >> "$depfile"
 
241
  tr ' ' "$nl" < "$tmpdepfile" \
 
242
    | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
 
243
    | sed -e 's/$/ :/' >> "$depfile"
185
244
  rm -f "$tmpdepfile"
186
245
  ;;
187
246
 
199
258
    "$@" -MDupdate "$tmpdepfile"
200
259
  fi
201
260
  stat=$?
202
 
  if test $stat -eq 0; then :
203
 
  else
 
261
  if test $stat -ne 0; then
204
262
    rm -f "$tmpdepfile"
205
263
    exit $stat
206
264
  fi
208
266
 
209
267
  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
210
268
    echo "$object : \\" > "$depfile"
211
 
 
212
269
    # Clip off the initial element (the dependent).  Don't try to be
213
270
    # clever and replace this with sed code, as IRIX sed won't handle
214
271
    # lines with more than a fixed number of characters (4096 in
216
273
    # the IRIX cc adds comments like '#:fec' to the end of the
217
274
    # dependency line.
218
275
    tr ' ' "$nl" < "$tmpdepfile" \
219
 
    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
220
 
    tr "$nl" ' ' >> "$depfile"
 
276
      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
 
277
      | tr "$nl" ' ' >> "$depfile"
221
278
    echo >> "$depfile"
222
 
 
223
279
    # The second pass generates a dummy entry for each header file.
224
280
    tr ' ' "$nl" < "$tmpdepfile" \
225
 
   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
226
 
   >> "$depfile"
 
281
      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
 
282
      >> "$depfile"
227
283
  else
228
 
    # The sourcefile does not contain any dependencies, so just
229
 
    # store a dummy comment line, to avoid errors with the Makefile
230
 
    # "include basename.Plo" scheme.
231
 
    echo "#dummy" > "$depfile"
 
284
    make_dummy_depfile
232
285
  fi
233
286
  rm -f "$tmpdepfile"
234
287
  ;;
246
299
  # current directory.  Also, the AIX compiler puts '$object:' at the
247
300
  # start of each line; $object doesn't have directory information.
248
301
  # Version 6 uses the directory in both cases.
249
 
  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
250
 
  test "x$dir" = "x$object" && dir=
251
 
  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
 
302
  set_dir_from "$object"
 
303
  set_base_from "$object"
252
304
  if test "$libtool" = yes; then
253
305
    tmpdepfile1=$dir$base.u
254
306
    tmpdepfile2=$base.u
261
313
    "$@" -M
262
314
  fi
263
315
  stat=$?
264
 
 
265
 
  if test $stat -eq 0; then :
266
 
  else
 
316
  if test $stat -ne 0; then
267
317
    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
268
318
    exit $stat
269
319
  fi
272
322
  do
273
323
    test -f "$tmpdepfile" && break
274
324
  done
275
 
  if test -f "$tmpdepfile"; then
276
 
    # Each line is of the form 'foo.o: dependent.h'.
277
 
    # Do two passes, one to just change these to
278
 
    # '$object: dependent.h' and one to simply 'dependent.h:'.
279
 
    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
280
 
    sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
281
 
  else
282
 
    # The sourcefile does not contain any dependencies, so just
283
 
    # store a dummy comment line, to avoid errors with the Makefile
284
 
    # "include basename.Plo" scheme.
285
 
    echo "#dummy" > "$depfile"
 
325
  aix_post_process_depfile
 
326
  ;;
 
327
 
 
328
tcc)
 
329
  # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
 
330
  # FIXME: That version still under development at the moment of writing.
 
331
  #        Make that this statement remains true also for stable, released
 
332
  #        versions.
 
333
  # It will wrap lines (doesn't matter whether long or short) with a
 
334
  # trailing '\', as in:
 
335
  #
 
336
  #   foo.o : \
 
337
  #    foo.c \
 
338
  #    foo.h \
 
339
  #
 
340
  # It will put a trailing '\' even on the last line, and will use leading
 
341
  # spaces rather than leading tabs (at least since its commit 0394caf7
 
342
  # "Emit spaces for -MD").
 
343
  "$@" -MD -MF "$tmpdepfile"
 
344
  stat=$?
 
345
  if test $stat -ne 0; then
 
346
    rm -f "$tmpdepfile"
 
347
    exit $stat
286
348
  fi
 
349
  rm -f "$depfile"
 
350
  # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
 
351
  # We have to change lines of the first kind to '$object: \'.
 
352
  sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
 
353
  # And for each line of the second kind, we have to emit a 'dep.h:'
 
354
  # dummy dependency, to avoid the deleted-header problem.
 
355
  sed -n -e 's|^  *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
287
356
  rm -f "$tmpdepfile"
288
357
  ;;
289
358
 
290
 
icc)
291
 
  # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'.
292
 
  # However on
293
 
  #    $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c
294
 
  # ICC 7.0 will fill foo.d with something like
295
 
  #    foo.o: sub/foo.c
296
 
  #    foo.o: sub/foo.h
297
 
  # which is wrong.  We want
298
 
  #    sub/foo.o: sub/foo.c
299
 
  #    sub/foo.o: sub/foo.h
300
 
  #    sub/foo.c:
301
 
  #    sub/foo.h:
302
 
  # ICC 7.1 will output
 
359
## The order of this option in the case statement is important, since the
 
360
## shell code in configure will try each of these formats in the order
 
361
## listed in this file.  A plain '-MD' option would be understood by many
 
362
## compilers, so we must ensure this comes after the gcc and icc options.
 
363
pgcc)
 
364
  # Portland's C compiler understands '-MD'.
 
365
  # Will always output deps to 'file.d' where file is the root name of the
 
366
  # source file under compilation, even if file resides in a subdirectory.
 
367
  # The object file name does not affect the name of the '.d' file.
 
368
  # pgcc 10.2 will output
303
369
  #    foo.o: sub/foo.c sub/foo.h
304
 
  # and will wrap long lines using '\':
 
370
  # and will wrap long lines using '\' :
305
371
  #    foo.o: sub/foo.c ... \
306
372
  #     sub/foo.h ... \
307
373
  #     ...
308
 
  # tcc 0.9.26 (FIXME still under development at the moment of writing)
309
 
  # will emit a similar output, but also prepend the continuation lines
310
 
  # with horizontal tabulation characters.
311
 
  "$@" -MD -MF "$tmpdepfile"
312
 
  stat=$?
313
 
  if test $stat -eq 0; then :
314
 
  else
 
374
  set_dir_from "$object"
 
375
  # Use the source, not the object, to determine the base name, since
 
376
  # that's sadly what pgcc will do too.
 
377
  set_base_from "$source"
 
378
  tmpdepfile=$base.d
 
379
 
 
380
  # For projects that build the same source file twice into different object
 
381
  # files, the pgcc approach of using the *source* file root name can cause
 
382
  # problems in parallel builds.  Use a locking strategy to avoid stomping on
 
383
  # the same $tmpdepfile.
 
384
  lockdir=$base.d-lock
 
385
  trap "
 
386
    echo '$0: caught signal, cleaning up...' >&2
 
387
    rmdir '$lockdir'
 
388
    exit 1
 
389
  " 1 2 13 15
 
390
  numtries=100
 
391
  i=$numtries
 
392
  while test $i -gt 0; do
 
393
    # mkdir is a portable test-and-set.
 
394
    if mkdir "$lockdir" 2>/dev/null; then
 
395
      # This process acquired the lock.
 
396
      "$@" -MD
 
397
      stat=$?
 
398
      # Release the lock.
 
399
      rmdir "$lockdir"
 
400
      break
 
401
    else
 
402
      # If the lock is being held by a different process, wait
 
403
      # until the winning process is done or we timeout.
 
404
      while test -d "$lockdir" && test $i -gt 0; do
 
405
        sleep 1
 
406
        i=`expr $i - 1`
 
407
      done
 
408
    fi
 
409
    i=`expr $i - 1`
 
410
  done
 
411
  trap - 1 2 13 15
 
412
  if test $i -le 0; then
 
413
    echo "$0: failed to acquire lock after $numtries attempts" >&2
 
414
    echo "$0: check lockdir '$lockdir'" >&2
 
415
    exit 1
 
416
  fi
 
417
 
 
418
  if test $stat -ne 0; then
315
419
    rm -f "$tmpdepfile"
316
420
    exit $stat
317
421
  fi
318
422
  rm -f "$depfile"
319
 
  # Each line is of the form 'foo.o: dependent.h',
320
 
  # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
 
423
  # Each line is of the form `foo.o: dependent.h',
 
424
  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
321
425
  # Do two passes, one to just change these to
322
 
  # '$object: dependent.h' and one to simply 'dependent.h:'.
323
 
  sed -e "s/^[ $tab][ $tab]*/  /" -e "s,^[^:]*:,$object :," \
324
 
    < "$tmpdepfile" > "$depfile"
325
 
  sed '
326
 
    s/[ '"$tab"'][ '"$tab"']*/ /g
327
 
    s/^ *//
328
 
    s/ *\\*$//
329
 
    s/^[^:]*: *//
330
 
    /^$/d
331
 
    /:$/d
332
 
    s/$/ :/
333
 
  ' < "$tmpdepfile" >> "$depfile"
 
426
  # `$object: dependent.h' and one to simply `dependent.h:'.
 
427
  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
 
428
  # Some versions of the HPUX 10.20 sed can't process this invocation
 
429
  # correctly.  Breaking it into two sed invocations is a workaround.
 
430
  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
 
431
    | sed -e 's/$/ :/' >> "$depfile"
334
432
  rm -f "$tmpdepfile"
335
433
  ;;
336
434
 
341
439
  # 'foo.d', which lands next to the object file, wherever that
342
440
  # happens to be.
343
441
  # Much of this is similar to the tru64 case; see comments there.
344
 
  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
345
 
  test "x$dir" = "x$object" && dir=
346
 
  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
 
442
  set_dir_from  "$object"
 
443
  set_base_from "$object"
347
444
  if test "$libtool" = yes; then
348
445
    tmpdepfile1=$dir$base.d
349
446
    tmpdepfile2=$dir.libs/$base.d
354
451
    "$@" +Maked
355
452
  fi
356
453
  stat=$?
357
 
  if test $stat -eq 0; then :
358
 
  else
 
454
  if test $stat -ne 0; then
359
455
     rm -f "$tmpdepfile1" "$tmpdepfile2"
360
456
     exit $stat
361
457
  fi
365
461
    test -f "$tmpdepfile" && break
366
462
  done
367
463
  if test -f "$tmpdepfile"; then
368
 
    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
 
464
    sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
369
465
    # Add 'dependent.h:' lines.
370
466
    sed -ne '2,${
371
 
               s/^ *//
372
 
               s/ \\*$//
373
 
               s/$/:/
374
 
               p
375
 
             }' "$tmpdepfile" >> "$depfile"
 
467
               s/^ *//
 
468
               s/ \\*$//
 
469
               s/$/:/
 
470
               p
 
471
             }' "$tmpdepfile" >> "$depfile"
376
472
  else
377
 
    echo "#dummy" > "$depfile"
 
473
    make_dummy_depfile
378
474
  fi
379
475
  rm -f "$tmpdepfile" "$tmpdepfile2"
380
476
  ;;
381
477
 
382
478
tru64)
383
 
   # The Tru64 compiler uses -MD to generate dependencies as a side
384
 
   # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
385
 
   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
386
 
   # dependencies in 'foo.d' instead, so we check for that too.
387
 
   # Subdirectories are respected.
388
 
   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
389
 
   test "x$dir" = "x$object" && dir=
390
 
   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
391
 
 
392
 
   if test "$libtool" = yes; then
393
 
      # With Tru64 cc, shared objects can also be used to make a
394
 
      # static library.  This mechanism is used in libtool 1.4 series to
395
 
      # handle both shared and static libraries in a single compilation.
396
 
      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
397
 
      #
398
 
      # With libtool 1.5 this exception was removed, and libtool now
399
 
      # generates 2 separate objects for the 2 libraries.  These two
400
 
      # compilations output dependencies in $dir.libs/$base.o.d and
401
 
      # in $dir$base.o.d.  We have to check for both files, because
402
 
      # one of the two compilations can be disabled.  We should prefer
403
 
      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
404
 
      # automatically cleaned when .libs/ is deleted, while ignoring
405
 
      # the former would cause a distcleancheck panic.
406
 
      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
407
 
      tmpdepfile2=$dir$base.o.d          # libtool 1.5
408
 
      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
409
 
      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
410
 
      "$@" -Wc,-MD
411
 
   else
412
 
      tmpdepfile1=$dir$base.o.d
413
 
      tmpdepfile2=$dir$base.d
414
 
      tmpdepfile3=$dir$base.d
415
 
      tmpdepfile4=$dir$base.d
416
 
      "$@" -MD
417
 
   fi
418
 
 
419
 
   stat=$?
420
 
   if test $stat -eq 0; then :
421
 
   else
422
 
      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
423
 
      exit $stat
424
 
   fi
425
 
 
426
 
   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
427
 
   do
428
 
     test -f "$tmpdepfile" && break
429
 
   done
430
 
   if test -f "$tmpdepfile"; then
431
 
      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
432
 
      sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
433
 
   else
434
 
      echo "#dummy" > "$depfile"
435
 
   fi
436
 
   rm -f "$tmpdepfile"
437
 
   ;;
 
479
  # The Tru64 compiler uses -MD to generate dependencies as a side
 
480
  # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
 
481
  # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
 
482
  # dependencies in 'foo.d' instead, so we check for that too.
 
483
  # Subdirectories are respected.
 
484
  set_dir_from  "$object"
 
485
  set_base_from "$object"
 
486
 
 
487
  if test "$libtool" = yes; then
 
488
    # Libtool generates 2 separate objects for the 2 libraries.  These
 
489
    # two compilations output dependencies in $dir.libs/$base.o.d and
 
490
    # in $dir$base.o.d.  We have to check for both files, because
 
491
    # one of the two compilations can be disabled.  We should prefer
 
492
    # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
 
493
    # automatically cleaned when .libs/ is deleted, while ignoring
 
494
    # the former would cause a distcleancheck panic.
 
495
    tmpdepfile1=$dir$base.o.d          # libtool 1.5
 
496
    tmpdepfile2=$dir.libs/$base.o.d    # Likewise.
 
497
    tmpdepfile3=$dir.libs/$base.d      # Compaq CCC V6.2-504
 
498
    "$@" -Wc,-MD
 
499
  else
 
500
    tmpdepfile1=$dir$base.d
 
501
    tmpdepfile2=$dir$base.d
 
502
    tmpdepfile3=$dir$base.d
 
503
    "$@" -MD
 
504
  fi
 
505
 
 
506
  stat=$?
 
507
  if test $stat -ne 0; then
 
508
    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
 
509
    exit $stat
 
510
  fi
 
511
 
 
512
  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
 
513
  do
 
514
    test -f "$tmpdepfile" && break
 
515
  done
 
516
  # Same post-processing that is required for AIX mode.
 
517
  aix_post_process_depfile
 
518
  ;;
438
519
 
439
520
msvc7)
440
521
  if test "$libtool" = yes; then
445
526
  "$@" $showIncludes > "$tmpdepfile"
446
527
  stat=$?
447
528
  grep -v '^Note: including file: ' "$tmpdepfile"
448
 
  if test "$stat" = 0; then :
449
 
  else
 
529
  if test $stat -ne 0; then
450
530
    rm -f "$tmpdepfile"
451
531
    exit $stat
452
532
  fi
472
552
  G
473
553
  p
474
554
}' >> "$depfile"
 
555
  echo >> "$depfile" # make sure the fragment doesn't end with a backslash
475
556
  rm -f "$tmpdepfile"
476
557
  ;;
477
558
 
523
604
  # in the target name.  This is to cope with DOS-style filenames:
524
605
  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
525
606
  "$@" $dashmflag |
526
 
    sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
 
607
    sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
527
608
  rm -f "$depfile"
528
609
  cat < "$tmpdepfile" > "$depfile"
529
 
  tr ' ' "$nl" < "$tmpdepfile" | \
530
 
## Some versions of the HPUX 10.20 sed can't process this invocation
531
 
## correctly.  Breaking it into two sed invocations is a workaround.
532
 
    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
 
610
  # Some versions of the HPUX 10.20 sed can't process this sed invocation
 
611
  # correctly.  Breaking it into two sed invocations is a workaround.
 
612
  tr ' ' "$nl" < "$tmpdepfile" \
 
613
    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
 
614
    | sed -e 's/$/ :/' >> "$depfile"
533
615
  rm -f "$tmpdepfile"
534
616
  ;;
535
617
 
582
664
  # makedepend may prepend the VPATH from the source file name to the object.
583
665
  # No need to regex-escape $object, excess matching of '.' is harmless.
584
666
  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
585
 
  sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
586
 
## Some versions of the HPUX 10.20 sed can't process this invocation
587
 
## correctly.  Breaking it into two sed invocations is a workaround.
588
 
    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
 
667
  # Some versions of the HPUX 10.20 sed can't process the last invocation
 
668
  # correctly.  Breaking it into two sed invocations is a workaround.
 
669
  sed '1,2d' "$tmpdepfile" \
 
670
    | tr ' ' "$nl" \
 
671
    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
 
672
    | sed -e 's/$/ :/' >> "$depfile"
589
673
  rm -f "$tmpdepfile" "$tmpdepfile".bak
590
674
  ;;
591
675
 
621
705
    esac
622
706
  done
623
707
 
624
 
  "$@" -E |
625
 
    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
626
 
       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
627
 
    sed '$ s: \\$::' > "$tmpdepfile"
 
708
  "$@" -E \
 
709
    | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
 
710
             -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
 
711
    | sed '$ s: \\$::' > "$tmpdepfile"
628
712
  rm -f "$depfile"
629
713
  echo "$object : \\" > "$depfile"
630
714
  cat < "$tmpdepfile" >> "$depfile"
656
740
      shift
657
741
      ;;
658
742
    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
659
 
        set fnord "$@"
660
 
        shift
661
 
        shift
662
 
        ;;
 
743
        set fnord "$@"
 
744
        shift
 
745
        shift
 
746
        ;;
663
747
    *)
664
 
        set fnord "$@" "$arg"
665
 
        shift
666
 
        shift
667
 
        ;;
 
748
        set fnord "$@" "$arg"
 
749
        shift
 
750
        shift
 
751
        ;;
668
752
    esac
669
753
  done
670
754
  "$@" -E 2>/dev/null |