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