/sqlite3cc

To get this branch, use:
bzr branch http://bzr.ed.am/sqlite3cc

« back to all changes in this revision

Viewing changes to build-aux/depcomp

  • Committer: edam
  • Date: 2010-07-27 15:12:55 UTC
  • Revision ID: edam@waxworlds.org-20100727151255-goaqgdz4kj13q7gz
- update TODO
- added some missing includes for <string>
- changed usage of database::exec() to not require return code!
- prevented transaction_guard destructor from throwing an exception

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#! /bin/sh
 
2
# depcomp - compile a program generating dependencies as side-effects
 
3
 
 
4
scriptversion=2009-04-28.21; # UTC
 
5
 
 
6
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free
 
7
# Software Foundation, Inc.
 
8
 
 
9
# This program is free software; you can redistribute it and/or modify
 
10
# it under the terms of the GNU General Public License as published by
 
11
# the Free Software Foundation; either version 2, or (at your option)
 
12
# any later version.
 
13
 
 
14
# This program is distributed in the hope that it will be useful,
 
15
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
16
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
17
# GNU General Public License for more details.
 
18
 
 
19
# You should have received a copy of the GNU General Public License
 
20
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
21
 
 
22
# As a special exception to the GNU General Public License, if you
 
23
# distribute this file as part of a program that contains a
 
24
# configuration script generated by Autoconf, you may include it under
 
25
# the same distribution terms that you use for the rest of that program.
 
26
 
 
27
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
 
28
 
 
29
case $1 in
 
30
  '')
 
31
     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
 
32
     exit 1;
 
33
     ;;
 
34
  -h | --h*)
 
35
    cat <<\EOF
 
36
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
 
37
 
 
38
Run PROGRAMS ARGS to compile a file, generating dependencies
 
39
as side-effects.
 
40
 
 
41
Environment variables:
 
42
  depmode     Dependency tracking mode.
 
43
  source      Source file read by `PROGRAMS ARGS'.
 
44
  object      Object file output by `PROGRAMS ARGS'.
 
45
  DEPDIR      directory where to store dependencies.
 
46
  depfile     Dependency file to output.
 
47
  tmpdepfile  Temporary file to use when outputing dependencies.
 
48
  libtool     Whether libtool is used (yes/no).
 
49
 
 
50
Report bugs to <bug-automake@gnu.org>.
 
51
EOF
 
52
    exit $?
 
53
    ;;
 
54
  -v | --v*)
 
55
    echo "depcomp $scriptversion"
 
56
    exit $?
 
57
    ;;
 
58
esac
 
59
 
 
60
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
 
61
  echo "depcomp: Variables source, object and depmode must be set" 1>&2
 
62
  exit 1
 
63
fi
 
64
 
 
65
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
 
66
depfile=${depfile-`echo "$object" |
 
67
  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
 
68
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
 
69
 
 
70
rm -f "$tmpdepfile"
 
71
 
 
72
# Some modes work just like other modes, but use different flags.  We
 
73
# parameterize here, but still list the modes in the big case below,
 
74
# to make depend.m4 easier to write.  Note that we *cannot* use a case
 
75
# here, because this file can only contain one case statement.
 
76
if test "$depmode" = hp; then
 
77
  # HP compiler uses -M and no extra arg.
 
78
  gccflag=-M
 
79
  depmode=gcc
 
80
fi
 
81
 
 
82
if test "$depmode" = dashXmstdout; then
 
83
   # This is just like dashmstdout with a different argument.
 
84
   dashmflag=-xM
 
85
   depmode=dashmstdout
 
86
fi
 
87
 
 
88
cygpath_u="cygpath -u -f -"
 
89
if test "$depmode" = msvcmsys; then
 
90
   # This is just like msvisualcpp but w/o cygpath translation.
 
91
   # Just convert the backslash-escaped backslashes to single forward
 
92
   # slashes to satisfy depend.m4
 
93
   cygpath_u="sed s,\\\\\\\\,/,g"
 
94
   depmode=msvisualcpp
 
95
fi
 
96
 
 
97
case "$depmode" in
 
98
gcc3)
 
99
## gcc 3 implements dependency tracking that does exactly what
 
100
## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
 
101
## it if -MD -MP comes after the -MF stuff.  Hmm.
 
102
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
 
103
## the command line argument order; so add the flags where they
 
104
## appear in depend2.am.  Note that the slowdown incurred here
 
105
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
 
106
  for arg
 
107
  do
 
108
    case $arg in
 
109
    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
 
110
    *)  set fnord "$@" "$arg" ;;
 
111
    esac
 
112
    shift # fnord
 
113
    shift # $arg
 
114
  done
 
115
  "$@"
 
116
  stat=$?
 
117
  if test $stat -eq 0; then :
 
118
  else
 
119
    rm -f "$tmpdepfile"
 
120
    exit $stat
 
121
  fi
 
122
  mv "$tmpdepfile" "$depfile"
 
123
  ;;
 
124
 
 
125
gcc)
 
126
## There are various ways to get dependency output from gcc.  Here's
 
127
## why we pick this rather obscure method:
 
128
## - Don't want to use -MD because we'd like the dependencies to end
 
129
##   up in a subdir.  Having to rename by hand is ugly.
 
130
##   (We might end up doing this anyway to support other compilers.)
 
131
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
 
132
##   -MM, not -M (despite what the docs say).
 
133
## - Using -M directly means running the compiler twice (even worse
 
134
##   than renaming).
 
135
  if test -z "$gccflag"; then
 
136
    gccflag=-MD,
 
137
  fi
 
138
  "$@" -Wp,"$gccflag$tmpdepfile"
 
139
  stat=$?
 
140
  if test $stat -eq 0; then :
 
141
  else
 
142
    rm -f "$tmpdepfile"
 
143
    exit $stat
 
144
  fi
 
145
  rm -f "$depfile"
 
146
  echo "$object : \\" > "$depfile"
 
147
  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
 
148
## The second -e expression handles DOS-style file names with drive letters.
 
149
  sed -e 's/^[^:]*: / /' \
 
150
      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
 
151
## This next piece of magic avoids the `deleted header file' problem.
 
152
## The problem is that when a header file which appears in a .P file
 
153
## is deleted, the dependency causes make to die (because there is
 
154
## typically no way to rebuild the header).  We avoid this by adding
 
155
## dummy dependencies for each header file.  Too bad gcc doesn't do
 
156
## this for us directly.
 
157
  tr ' ' '
 
158
' < "$tmpdepfile" |
 
159
## Some versions of gcc put a space before the `:'.  On the theory
 
160
## that the space means something, we add a space to the output as
 
161
## well.
 
162
## Some versions of the HPUX 10.20 sed can't process this invocation
 
163
## correctly.  Breaking it into two sed invocations is a workaround.
 
164
    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
 
165
  rm -f "$tmpdepfile"
 
166
  ;;
 
167
 
 
168
hp)
 
169
  # This case exists only to let depend.m4 do its work.  It works by
 
170
  # looking at the text of this script.  This case will never be run,
 
171
  # since it is checked for above.
 
172
  exit 1
 
173
  ;;
 
174
 
 
175
sgi)
 
176
  if test "$libtool" = yes; then
 
177
    "$@" "-Wp,-MDupdate,$tmpdepfile"
 
178
  else
 
179
    "$@" -MDupdate "$tmpdepfile"
 
180
  fi
 
181
  stat=$?
 
182
  if test $stat -eq 0; then :
 
183
  else
 
184
    rm -f "$tmpdepfile"
 
185
    exit $stat
 
186
  fi
 
187
  rm -f "$depfile"
 
188
 
 
189
  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
 
190
    echo "$object : \\" > "$depfile"
 
191
 
 
192
    # Clip off the initial element (the dependent).  Don't try to be
 
193
    # clever and replace this with sed code, as IRIX sed won't handle
 
194
    # lines with more than a fixed number of characters (4096 in
 
195
    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
 
196
    # the IRIX cc adds comments like `#:fec' to the end of the
 
197
    # dependency line.
 
198
    tr ' ' '
 
199
' < "$tmpdepfile" \
 
200
    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
 
201
    tr '
 
202
' ' ' >> "$depfile"
 
203
    echo >> "$depfile"
 
204
 
 
205
    # The second pass generates a dummy entry for each header file.
 
206
    tr ' ' '
 
207
' < "$tmpdepfile" \
 
208
   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
 
209
   >> "$depfile"
 
210
  else
 
211
    # The sourcefile does not contain any dependencies, so just
 
212
    # store a dummy comment line, to avoid errors with the Makefile
 
213
    # "include basename.Plo" scheme.
 
214
    echo "#dummy" > "$depfile"
 
215
  fi
 
216
  rm -f "$tmpdepfile"
 
217
  ;;
 
218
 
 
219
aix)
 
220
  # The C for AIX Compiler uses -M and outputs the dependencies
 
221
  # in a .u file.  In older versions, this file always lives in the
 
222
  # current directory.  Also, the AIX compiler puts `$object:' at the
 
223
  # start of each line; $object doesn't have directory information.
 
224
  # Version 6 uses the directory in both cases.
 
225
  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
 
226
  test "x$dir" = "x$object" && dir=
 
227
  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
 
228
  if test "$libtool" = yes; then
 
229
    tmpdepfile1=$dir$base.u
 
230
    tmpdepfile2=$base.u
 
231
    tmpdepfile3=$dir.libs/$base.u
 
232
    "$@" -Wc,-M
 
233
  else
 
234
    tmpdepfile1=$dir$base.u
 
235
    tmpdepfile2=$dir$base.u
 
236
    tmpdepfile3=$dir$base.u
 
237
    "$@" -M
 
238
  fi
 
239
  stat=$?
 
240
 
 
241
  if test $stat -eq 0; then :
 
242
  else
 
243
    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
 
244
    exit $stat
 
245
  fi
 
246
 
 
247
  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
 
248
  do
 
249
    test -f "$tmpdepfile" && break
 
250
  done
 
251
  if test -f "$tmpdepfile"; then
 
252
    # Each line is of the form `foo.o: dependent.h'.
 
253
    # Do two passes, one to just change these to
 
254
    # `$object: dependent.h' and one to simply `dependent.h:'.
 
255
    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
 
256
    # That's a tab and a space in the [].
 
257
    sed -e 's,^.*\.[a-z]*:[      ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
 
258
  else
 
259
    # The sourcefile does not contain any dependencies, so just
 
260
    # store a dummy comment line, to avoid errors with the Makefile
 
261
    # "include basename.Plo" scheme.
 
262
    echo "#dummy" > "$depfile"
 
263
  fi
 
264
  rm -f "$tmpdepfile"
 
265
  ;;
 
266
 
 
267
icc)
 
268
  # Intel's C compiler understands `-MD -MF file'.  However on
 
269
  #    icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
 
270
  # ICC 7.0 will fill foo.d with something like
 
271
  #    foo.o: sub/foo.c
 
272
  #    foo.o: sub/foo.h
 
273
  # which is wrong.  We want:
 
274
  #    sub/foo.o: sub/foo.c
 
275
  #    sub/foo.o: sub/foo.h
 
276
  #    sub/foo.c:
 
277
  #    sub/foo.h:
 
278
  # ICC 7.1 will output
 
279
  #    foo.o: sub/foo.c sub/foo.h
 
280
  # and will wrap long lines using \ :
 
281
  #    foo.o: sub/foo.c ... \
 
282
  #     sub/foo.h ... \
 
283
  #     ...
 
284
 
 
285
  "$@" -MD -MF "$tmpdepfile"
 
286
  stat=$?
 
287
  if test $stat -eq 0; then :
 
288
  else
 
289
    rm -f "$tmpdepfile"
 
290
    exit $stat
 
291
  fi
 
292
  rm -f "$depfile"
 
293
  # Each line is of the form `foo.o: dependent.h',
 
294
  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
 
295
  # Do two passes, one to just change these to
 
296
  # `$object: dependent.h' and one to simply `dependent.h:'.
 
297
  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
 
298
  # Some versions of the HPUX 10.20 sed can't process this invocation
 
299
  # correctly.  Breaking it into two sed invocations is a workaround.
 
300
  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
 
301
    sed -e 's/$/ :/' >> "$depfile"
 
302
  rm -f "$tmpdepfile"
 
303
  ;;
 
304
 
 
305
hp2)
 
306
  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
 
307
  # compilers, which have integrated preprocessors.  The correct option
 
308
  # to use with these is +Maked; it writes dependencies to a file named
 
309
  # 'foo.d', which lands next to the object file, wherever that
 
310
  # happens to be.
 
311
  # Much of this is similar to the tru64 case; see comments there.
 
312
  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
 
313
  test "x$dir" = "x$object" && dir=
 
314
  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
 
315
  if test "$libtool" = yes; then
 
316
    tmpdepfile1=$dir$base.d
 
317
    tmpdepfile2=$dir.libs/$base.d
 
318
    "$@" -Wc,+Maked
 
319
  else
 
320
    tmpdepfile1=$dir$base.d
 
321
    tmpdepfile2=$dir$base.d
 
322
    "$@" +Maked
 
323
  fi
 
324
  stat=$?
 
325
  if test $stat -eq 0; then :
 
326
  else
 
327
     rm -f "$tmpdepfile1" "$tmpdepfile2"
 
328
     exit $stat
 
329
  fi
 
330
 
 
331
  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
 
332
  do
 
333
    test -f "$tmpdepfile" && break
 
334
  done
 
335
  if test -f "$tmpdepfile"; then
 
336
    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
 
337
    # Add `dependent.h:' lines.
 
338
    sed -ne '2,${
 
339
               s/^ *//
 
340
               s/ \\*$//
 
341
               s/$/:/
 
342
               p
 
343
             }' "$tmpdepfile" >> "$depfile"
 
344
  else
 
345
    echo "#dummy" > "$depfile"
 
346
  fi
 
347
  rm -f "$tmpdepfile" "$tmpdepfile2"
 
348
  ;;
 
349
 
 
350
tru64)
 
351
   # The Tru64 compiler uses -MD to generate dependencies as a side
 
352
   # effect.  `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
 
353
   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
 
354
   # dependencies in `foo.d' instead, so we check for that too.
 
355
   # Subdirectories are respected.
 
356
   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
 
357
   test "x$dir" = "x$object" && dir=
 
358
   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
 
359
 
 
360
   if test "$libtool" = yes; then
 
361
      # With Tru64 cc, shared objects can also be used to make a
 
362
      # static library.  This mechanism is used in libtool 1.4 series to
 
363
      # handle both shared and static libraries in a single compilation.
 
364
      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
 
365
      #
 
366
      # With libtool 1.5 this exception was removed, and libtool now
 
367
      # generates 2 separate objects for the 2 libraries.  These two
 
368
      # compilations output dependencies in $dir.libs/$base.o.d and
 
369
      # in $dir$base.o.d.  We have to check for both files, because
 
370
      # one of the two compilations can be disabled.  We should prefer
 
371
      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
 
372
      # automatically cleaned when .libs/ is deleted, while ignoring
 
373
      # the former would cause a distcleancheck panic.
 
374
      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
 
375
      tmpdepfile2=$dir$base.o.d          # libtool 1.5
 
376
      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
 
377
      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
 
378
      "$@" -Wc,-MD
 
379
   else
 
380
      tmpdepfile1=$dir$base.o.d
 
381
      tmpdepfile2=$dir$base.d
 
382
      tmpdepfile3=$dir$base.d
 
383
      tmpdepfile4=$dir$base.d
 
384
      "$@" -MD
 
385
   fi
 
386
 
 
387
   stat=$?
 
388
   if test $stat -eq 0; then :
 
389
   else
 
390
      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
 
391
      exit $stat
 
392
   fi
 
393
 
 
394
   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
 
395
   do
 
396
     test -f "$tmpdepfile" && break
 
397
   done
 
398
   if test -f "$tmpdepfile"; then
 
399
      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
 
400
      # That's a tab and a space in the [].
 
401
      sed -e 's,^.*\.[a-z]*:[    ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
 
402
   else
 
403
      echo "#dummy" > "$depfile"
 
404
   fi
 
405
   rm -f "$tmpdepfile"
 
406
   ;;
 
407
 
 
408
#nosideeffect)
 
409
  # This comment above is used by automake to tell side-effect
 
410
  # dependency tracking mechanisms from slower ones.
 
411
 
 
412
dashmstdout)
 
413
  # Important note: in order to support this mode, a compiler *must*
 
414
  # always write the preprocessed file to stdout, regardless of -o.
 
415
  "$@" || exit $?
 
416
 
 
417
  # Remove the call to Libtool.
 
418
  if test "$libtool" = yes; then
 
419
    while test "X$1" != 'X--mode=compile'; do
 
420
      shift
 
421
    done
 
422
    shift
 
423
  fi
 
424
 
 
425
  # Remove `-o $object'.
 
426
  IFS=" "
 
427
  for arg
 
428
  do
 
429
    case $arg in
 
430
    -o)
 
431
      shift
 
432
      ;;
 
433
    $object)
 
434
      shift
 
435
      ;;
 
436
    *)
 
437
      set fnord "$@" "$arg"
 
438
      shift # fnord
 
439
      shift # $arg
 
440
      ;;
 
441
    esac
 
442
  done
 
443
 
 
444
  test -z "$dashmflag" && dashmflag=-M
 
445
  # Require at least two characters before searching for `:'
 
446
  # in the target name.  This is to cope with DOS-style filenames:
 
447
  # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
 
448
  "$@" $dashmflag |
 
449
    sed 's:^[  ]*[^: ][^:][^:]*\:[    ]*:'"$object"'\: :' > "$tmpdepfile"
 
450
  rm -f "$depfile"
 
451
  cat < "$tmpdepfile" > "$depfile"
 
452
  tr ' ' '
 
453
' < "$tmpdepfile" | \
 
454
## Some versions of the HPUX 10.20 sed can't process this invocation
 
455
## correctly.  Breaking it into two sed invocations is a workaround.
 
456
    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
 
457
  rm -f "$tmpdepfile"
 
458
  ;;
 
459
 
 
460
dashXmstdout)
 
461
  # This case only exists to satisfy depend.m4.  It is never actually
 
462
  # run, as this mode is specially recognized in the preamble.
 
463
  exit 1
 
464
  ;;
 
465
 
 
466
makedepend)
 
467
  "$@" || exit $?
 
468
  # Remove any Libtool call
 
469
  if test "$libtool" = yes; then
 
470
    while test "X$1" != 'X--mode=compile'; do
 
471
      shift
 
472
    done
 
473
    shift
 
474
  fi
 
475
  # X makedepend
 
476
  shift
 
477
  cleared=no eat=no
 
478
  for arg
 
479
  do
 
480
    case $cleared in
 
481
    no)
 
482
      set ""; shift
 
483
      cleared=yes ;;
 
484
    esac
 
485
    if test $eat = yes; then
 
486
      eat=no
 
487
      continue
 
488
    fi
 
489
    case "$arg" in
 
490
    -D*|-I*)
 
491
      set fnord "$@" "$arg"; shift ;;
 
492
    # Strip any option that makedepend may not understand.  Remove
 
493
    # the object too, otherwise makedepend will parse it as a source file.
 
494
    -arch)
 
495
      eat=yes ;;
 
496
    -*|$object)
 
497
      ;;
 
498
    *)
 
499
      set fnord "$@" "$arg"; shift ;;
 
500
    esac
 
501
  done
 
502
  obj_suffix=`echo "$object" | sed 's/^.*\././'`
 
503
  touch "$tmpdepfile"
 
504
  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
 
505
  rm -f "$depfile"
 
506
  cat < "$tmpdepfile" > "$depfile"
 
507
  sed '1,2d' "$tmpdepfile" | tr ' ' '
 
508
' | \
 
509
## Some versions of the HPUX 10.20 sed can't process this invocation
 
510
## correctly.  Breaking it into two sed invocations is a workaround.
 
511
    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
 
512
  rm -f "$tmpdepfile" "$tmpdepfile".bak
 
513
  ;;
 
514
 
 
515
cpp)
 
516
  # Important note: in order to support this mode, a compiler *must*
 
517
  # always write the preprocessed file to stdout.
 
518
  "$@" || exit $?
 
519
 
 
520
  # Remove the call to Libtool.
 
521
  if test "$libtool" = yes; then
 
522
    while test "X$1" != 'X--mode=compile'; do
 
523
      shift
 
524
    done
 
525
    shift
 
526
  fi
 
527
 
 
528
  # Remove `-o $object'.
 
529
  IFS=" "
 
530
  for arg
 
531
  do
 
532
    case $arg in
 
533
    -o)
 
534
      shift
 
535
      ;;
 
536
    $object)
 
537
      shift
 
538
      ;;
 
539
    *)
 
540
      set fnord "$@" "$arg"
 
541
      shift # fnord
 
542
      shift # $arg
 
543
      ;;
 
544
    esac
 
545
  done
 
546
 
 
547
  "$@" -E |
 
548
    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
 
549
       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
 
550
    sed '$ s: \\$::' > "$tmpdepfile"
 
551
  rm -f "$depfile"
 
552
  echo "$object : \\" > "$depfile"
 
553
  cat < "$tmpdepfile" >> "$depfile"
 
554
  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
 
555
  rm -f "$tmpdepfile"
 
556
  ;;
 
557
 
 
558
msvisualcpp)
 
559
  # Important note: in order to support this mode, a compiler *must*
 
560
  # always write the preprocessed file to stdout.
 
561
  "$@" || exit $?
 
562
 
 
563
  # Remove the call to Libtool.
 
564
  if test "$libtool" = yes; then
 
565
    while test "X$1" != 'X--mode=compile'; do
 
566
      shift
 
567
    done
 
568
    shift
 
569
  fi
 
570
 
 
571
  IFS=" "
 
572
  for arg
 
573
  do
 
574
    case "$arg" in
 
575
    -o)
 
576
      shift
 
577
      ;;
 
578
    $object)
 
579
      shift
 
580
      ;;
 
581
    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
 
582
        set fnord "$@"
 
583
        shift
 
584
        shift
 
585
        ;;
 
586
    *)
 
587
        set fnord "$@" "$arg"
 
588
        shift
 
589
        shift
 
590
        ;;
 
591
    esac
 
592
  done
 
593
  "$@" -E 2>/dev/null |
 
594
  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
 
595
  rm -f "$depfile"
 
596
  echo "$object : \\" > "$depfile"
 
597
  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::      \1 \\:p' >> "$depfile"
 
598
  echo "        " >> "$depfile"
 
599
  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
 
600
  rm -f "$tmpdepfile"
 
601
  ;;
 
602
 
 
603
msvcmsys)
 
604
  # This case exists only to let depend.m4 do its work.  It works by
 
605
  # looking at the text of this script.  This case will never be run,
 
606
  # since it is checked for above.
 
607
  exit 1
 
608
  ;;
 
609
 
 
610
none)
 
611
  exec "$@"
 
612
  ;;
 
613
 
 
614
*)
 
615
  echo "Unknown depmode $depmode" 1>&2
 
616
  exit 1
 
617
  ;;
 
618
esac
 
619
 
 
620
exit 0
 
621
 
 
622
# Local Variables:
 
623
# mode: shell-script
 
624
# sh-indentation: 2
 
625
# eval: (add-hook 'write-file-hooks 'time-stamp)
 
626
# time-stamp-start: "scriptversion="
 
627
# time-stamp-format: "%:y-%02m-%02d.%02H"
 
628
# time-stamp-time-zone: "UTC"
 
629
# time-stamp-end: "; # UTC"
 
630
# End: