1c0abf9e6Sopenharmony_ci#! /bin/sh
2c0abf9e6Sopenharmony_ci# depcomp - compile a program generating dependencies as side-effects
3c0abf9e6Sopenharmony_ci
4c0abf9e6Sopenharmony_ciscriptversion=2018-03-07.03; # UTC
5c0abf9e6Sopenharmony_ci
6c0abf9e6Sopenharmony_ci# Copyright (C) 1999-2021 Free Software Foundation, Inc.
7c0abf9e6Sopenharmony_ci
8c0abf9e6Sopenharmony_ci# This program is free software; you can redistribute it and/or modify
9c0abf9e6Sopenharmony_ci# it under the terms of the GNU General Public License as published by
10c0abf9e6Sopenharmony_ci# the Free Software Foundation; either version 2, or (at your option)
11c0abf9e6Sopenharmony_ci# any later version.
12c0abf9e6Sopenharmony_ci
13c0abf9e6Sopenharmony_ci# This program is distributed in the hope that it will be useful,
14c0abf9e6Sopenharmony_ci# but WITHOUT ANY WARRANTY; without even the implied warranty of
15c0abf9e6Sopenharmony_ci# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16c0abf9e6Sopenharmony_ci# GNU General Public License for more details.
17c0abf9e6Sopenharmony_ci
18c0abf9e6Sopenharmony_ci# You should have received a copy of the GNU General Public License
19c0abf9e6Sopenharmony_ci# along with this program.  If not, see <https://www.gnu.org/licenses/>.
20c0abf9e6Sopenharmony_ci
21c0abf9e6Sopenharmony_ci# As a special exception to the GNU General Public License, if you
22c0abf9e6Sopenharmony_ci# distribute this file as part of a program that contains a
23c0abf9e6Sopenharmony_ci# configuration script generated by Autoconf, you may include it under
24c0abf9e6Sopenharmony_ci# the same distribution terms that you use for the rest of that program.
25c0abf9e6Sopenharmony_ci
26c0abf9e6Sopenharmony_ci# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
27c0abf9e6Sopenharmony_ci
28c0abf9e6Sopenharmony_cicase $1 in
29c0abf9e6Sopenharmony_ci  '')
30c0abf9e6Sopenharmony_ci    echo "$0: No command.  Try '$0 --help' for more information." 1>&2
31c0abf9e6Sopenharmony_ci    exit 1;
32c0abf9e6Sopenharmony_ci    ;;
33c0abf9e6Sopenharmony_ci  -h | --h*)
34c0abf9e6Sopenharmony_ci    cat <<\EOF
35c0abf9e6Sopenharmony_ciUsage: depcomp [--help] [--version] PROGRAM [ARGS]
36c0abf9e6Sopenharmony_ci
37c0abf9e6Sopenharmony_ciRun PROGRAMS ARGS to compile a file, generating dependencies
38c0abf9e6Sopenharmony_cias side-effects.
39c0abf9e6Sopenharmony_ci
40c0abf9e6Sopenharmony_ciEnvironment variables:
41c0abf9e6Sopenharmony_ci  depmode     Dependency tracking mode.
42c0abf9e6Sopenharmony_ci  source      Source file read by 'PROGRAMS ARGS'.
43c0abf9e6Sopenharmony_ci  object      Object file output by 'PROGRAMS ARGS'.
44c0abf9e6Sopenharmony_ci  DEPDIR      directory where to store dependencies.
45c0abf9e6Sopenharmony_ci  depfile     Dependency file to output.
46c0abf9e6Sopenharmony_ci  tmpdepfile  Temporary file to use when outputting dependencies.
47c0abf9e6Sopenharmony_ci  libtool     Whether libtool is used (yes/no).
48c0abf9e6Sopenharmony_ci
49c0abf9e6Sopenharmony_ciReport bugs to <bug-automake@gnu.org>.
50c0abf9e6Sopenharmony_ciEOF
51c0abf9e6Sopenharmony_ci    exit $?
52c0abf9e6Sopenharmony_ci    ;;
53c0abf9e6Sopenharmony_ci  -v | --v*)
54c0abf9e6Sopenharmony_ci    echo "depcomp $scriptversion"
55c0abf9e6Sopenharmony_ci    exit $?
56c0abf9e6Sopenharmony_ci    ;;
57c0abf9e6Sopenharmony_ciesac
58c0abf9e6Sopenharmony_ci
59c0abf9e6Sopenharmony_ci# Get the directory component of the given path, and save it in the
60c0abf9e6Sopenharmony_ci# global variables '$dir'.  Note that this directory component will
61c0abf9e6Sopenharmony_ci# be either empty or ending with a '/' character.  This is deliberate.
62c0abf9e6Sopenharmony_ciset_dir_from ()
63c0abf9e6Sopenharmony_ci{
64c0abf9e6Sopenharmony_ci  case $1 in
65c0abf9e6Sopenharmony_ci    */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
66c0abf9e6Sopenharmony_ci      *) dir=;;
67c0abf9e6Sopenharmony_ci  esac
68c0abf9e6Sopenharmony_ci}
69c0abf9e6Sopenharmony_ci
70c0abf9e6Sopenharmony_ci# Get the suffix-stripped basename of the given path, and save it the
71c0abf9e6Sopenharmony_ci# global variable '$base'.
72c0abf9e6Sopenharmony_ciset_base_from ()
73c0abf9e6Sopenharmony_ci{
74c0abf9e6Sopenharmony_ci  base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
75c0abf9e6Sopenharmony_ci}
76c0abf9e6Sopenharmony_ci
77c0abf9e6Sopenharmony_ci# If no dependency file was actually created by the compiler invocation,
78c0abf9e6Sopenharmony_ci# we still have to create a dummy depfile, to avoid errors with the
79c0abf9e6Sopenharmony_ci# Makefile "include basename.Plo" scheme.
80c0abf9e6Sopenharmony_cimake_dummy_depfile ()
81c0abf9e6Sopenharmony_ci{
82c0abf9e6Sopenharmony_ci  echo "#dummy" > "$depfile"
83c0abf9e6Sopenharmony_ci}
84c0abf9e6Sopenharmony_ci
85c0abf9e6Sopenharmony_ci# Factor out some common post-processing of the generated depfile.
86c0abf9e6Sopenharmony_ci# Requires the auxiliary global variable '$tmpdepfile' to be set.
87c0abf9e6Sopenharmony_ciaix_post_process_depfile ()
88c0abf9e6Sopenharmony_ci{
89c0abf9e6Sopenharmony_ci  # If the compiler actually managed to produce a dependency file,
90c0abf9e6Sopenharmony_ci  # post-process it.
91c0abf9e6Sopenharmony_ci  if test -f "$tmpdepfile"; then
92c0abf9e6Sopenharmony_ci    # Each line is of the form 'foo.o: dependency.h'.
93c0abf9e6Sopenharmony_ci    # Do two passes, one to just change these to
94c0abf9e6Sopenharmony_ci    #   $object: dependency.h
95c0abf9e6Sopenharmony_ci    # and one to simply output
96c0abf9e6Sopenharmony_ci    #   dependency.h:
97c0abf9e6Sopenharmony_ci    # which is needed to avoid the deleted-header problem.
98c0abf9e6Sopenharmony_ci    { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
99c0abf9e6Sopenharmony_ci      sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
100c0abf9e6Sopenharmony_ci    } > "$depfile"
101c0abf9e6Sopenharmony_ci    rm -f "$tmpdepfile"
102c0abf9e6Sopenharmony_ci  else
103c0abf9e6Sopenharmony_ci    make_dummy_depfile
104c0abf9e6Sopenharmony_ci  fi
105c0abf9e6Sopenharmony_ci}
106c0abf9e6Sopenharmony_ci
107c0abf9e6Sopenharmony_ci# A tabulation character.
108c0abf9e6Sopenharmony_citab='	'
109c0abf9e6Sopenharmony_ci# A newline character.
110c0abf9e6Sopenharmony_cinl='
111c0abf9e6Sopenharmony_ci'
112c0abf9e6Sopenharmony_ci# Character ranges might be problematic outside the C locale.
113c0abf9e6Sopenharmony_ci# These definitions help.
114c0abf9e6Sopenharmony_ciupper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
115c0abf9e6Sopenharmony_cilower=abcdefghijklmnopqrstuvwxyz
116c0abf9e6Sopenharmony_cidigits=0123456789
117c0abf9e6Sopenharmony_cialpha=${upper}${lower}
118c0abf9e6Sopenharmony_ci
119c0abf9e6Sopenharmony_ciif test -z "$depmode" || test -z "$source" || test -z "$object"; then
120c0abf9e6Sopenharmony_ci  echo "depcomp: Variables source, object and depmode must be set" 1>&2
121c0abf9e6Sopenharmony_ci  exit 1
122c0abf9e6Sopenharmony_cifi
123c0abf9e6Sopenharmony_ci
124c0abf9e6Sopenharmony_ci# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
125c0abf9e6Sopenharmony_cidepfile=${depfile-`echo "$object" |
126c0abf9e6Sopenharmony_ci  sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
127c0abf9e6Sopenharmony_citmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
128c0abf9e6Sopenharmony_ci
129c0abf9e6Sopenharmony_cirm -f "$tmpdepfile"
130c0abf9e6Sopenharmony_ci
131c0abf9e6Sopenharmony_ci# Avoid interferences from the environment.
132c0abf9e6Sopenharmony_cigccflag= dashmflag=
133c0abf9e6Sopenharmony_ci
134c0abf9e6Sopenharmony_ci# Some modes work just like other modes, but use different flags.  We
135c0abf9e6Sopenharmony_ci# parameterize here, but still list the modes in the big case below,
136c0abf9e6Sopenharmony_ci# to make depend.m4 easier to write.  Note that we *cannot* use a case
137c0abf9e6Sopenharmony_ci# here, because this file can only contain one case statement.
138c0abf9e6Sopenharmony_ciif test "$depmode" = hp; then
139c0abf9e6Sopenharmony_ci  # HP compiler uses -M and no extra arg.
140c0abf9e6Sopenharmony_ci  gccflag=-M
141c0abf9e6Sopenharmony_ci  depmode=gcc
142c0abf9e6Sopenharmony_cifi
143c0abf9e6Sopenharmony_ci
144c0abf9e6Sopenharmony_ciif test "$depmode" = dashXmstdout; then
145c0abf9e6Sopenharmony_ci  # This is just like dashmstdout with a different argument.
146c0abf9e6Sopenharmony_ci  dashmflag=-xM
147c0abf9e6Sopenharmony_ci  depmode=dashmstdout
148c0abf9e6Sopenharmony_cifi
149c0abf9e6Sopenharmony_ci
150c0abf9e6Sopenharmony_cicygpath_u="cygpath -u -f -"
151c0abf9e6Sopenharmony_ciif test "$depmode" = msvcmsys; then
152c0abf9e6Sopenharmony_ci  # This is just like msvisualcpp but w/o cygpath translation.
153c0abf9e6Sopenharmony_ci  # Just convert the backslash-escaped backslashes to single forward
154c0abf9e6Sopenharmony_ci  # slashes to satisfy depend.m4
155c0abf9e6Sopenharmony_ci  cygpath_u='sed s,\\\\,/,g'
156c0abf9e6Sopenharmony_ci  depmode=msvisualcpp
157c0abf9e6Sopenharmony_cifi
158c0abf9e6Sopenharmony_ci
159c0abf9e6Sopenharmony_ciif test "$depmode" = msvc7msys; then
160c0abf9e6Sopenharmony_ci  # This is just like msvc7 but w/o cygpath translation.
161c0abf9e6Sopenharmony_ci  # Just convert the backslash-escaped backslashes to single forward
162c0abf9e6Sopenharmony_ci  # slashes to satisfy depend.m4
163c0abf9e6Sopenharmony_ci  cygpath_u='sed s,\\\\,/,g'
164c0abf9e6Sopenharmony_ci  depmode=msvc7
165c0abf9e6Sopenharmony_cifi
166c0abf9e6Sopenharmony_ci
167c0abf9e6Sopenharmony_ciif test "$depmode" = xlc; then
168c0abf9e6Sopenharmony_ci  # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
169c0abf9e6Sopenharmony_ci  gccflag=-qmakedep=gcc,-MF
170c0abf9e6Sopenharmony_ci  depmode=gcc
171c0abf9e6Sopenharmony_cifi
172c0abf9e6Sopenharmony_ci
173c0abf9e6Sopenharmony_cicase "$depmode" in
174c0abf9e6Sopenharmony_cigcc3)
175c0abf9e6Sopenharmony_ci## gcc 3 implements dependency tracking that does exactly what
176c0abf9e6Sopenharmony_ci## we want.  Yay!  Note: for some reason libtool 1.4 doesn't like
177c0abf9e6Sopenharmony_ci## it if -MD -MP comes after the -MF stuff.  Hmm.
178c0abf9e6Sopenharmony_ci## Unfortunately, FreeBSD c89 acceptance of flags depends upon
179c0abf9e6Sopenharmony_ci## the command line argument order; so add the flags where they
180c0abf9e6Sopenharmony_ci## appear in depend2.am.  Note that the slowdown incurred here
181c0abf9e6Sopenharmony_ci## affects only configure: in makefiles, %FASTDEP% shortcuts this.
182c0abf9e6Sopenharmony_ci  for arg
183c0abf9e6Sopenharmony_ci  do
184c0abf9e6Sopenharmony_ci    case $arg in
185c0abf9e6Sopenharmony_ci    -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
186c0abf9e6Sopenharmony_ci    *)  set fnord "$@" "$arg" ;;
187c0abf9e6Sopenharmony_ci    esac
188c0abf9e6Sopenharmony_ci    shift # fnord
189c0abf9e6Sopenharmony_ci    shift # $arg
190c0abf9e6Sopenharmony_ci  done
191c0abf9e6Sopenharmony_ci  "$@"
192c0abf9e6Sopenharmony_ci  stat=$?
193c0abf9e6Sopenharmony_ci  if test $stat -ne 0; then
194c0abf9e6Sopenharmony_ci    rm -f "$tmpdepfile"
195c0abf9e6Sopenharmony_ci    exit $stat
196c0abf9e6Sopenharmony_ci  fi
197c0abf9e6Sopenharmony_ci  mv "$tmpdepfile" "$depfile"
198c0abf9e6Sopenharmony_ci  ;;
199c0abf9e6Sopenharmony_ci
200c0abf9e6Sopenharmony_cigcc)
201c0abf9e6Sopenharmony_ci## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
202c0abf9e6Sopenharmony_ci## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
203c0abf9e6Sopenharmony_ci## (see the conditional assignment to $gccflag above).
204c0abf9e6Sopenharmony_ci## There are various ways to get dependency output from gcc.  Here's
205c0abf9e6Sopenharmony_ci## why we pick this rather obscure method:
206c0abf9e6Sopenharmony_ci## - Don't want to use -MD because we'd like the dependencies to end
207c0abf9e6Sopenharmony_ci##   up in a subdir.  Having to rename by hand is ugly.
208c0abf9e6Sopenharmony_ci##   (We might end up doing this anyway to support other compilers.)
209c0abf9e6Sopenharmony_ci## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
210c0abf9e6Sopenharmony_ci##   -MM, not -M (despite what the docs say).  Also, it might not be
211c0abf9e6Sopenharmony_ci##   supported by the other compilers which use the 'gcc' depmode.
212c0abf9e6Sopenharmony_ci## - Using -M directly means running the compiler twice (even worse
213c0abf9e6Sopenharmony_ci##   than renaming).
214c0abf9e6Sopenharmony_ci  if test -z "$gccflag"; then
215c0abf9e6Sopenharmony_ci    gccflag=-MD,
216c0abf9e6Sopenharmony_ci  fi
217c0abf9e6Sopenharmony_ci  "$@" -Wp,"$gccflag$tmpdepfile"
218c0abf9e6Sopenharmony_ci  stat=$?
219c0abf9e6Sopenharmony_ci  if test $stat -ne 0; then
220c0abf9e6Sopenharmony_ci    rm -f "$tmpdepfile"
221c0abf9e6Sopenharmony_ci    exit $stat
222c0abf9e6Sopenharmony_ci  fi
223c0abf9e6Sopenharmony_ci  rm -f "$depfile"
224c0abf9e6Sopenharmony_ci  echo "$object : \\" > "$depfile"
225c0abf9e6Sopenharmony_ci  # The second -e expression handles DOS-style file names with drive
226c0abf9e6Sopenharmony_ci  # letters.
227c0abf9e6Sopenharmony_ci  sed -e 's/^[^:]*: / /' \
228c0abf9e6Sopenharmony_ci      -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
229c0abf9e6Sopenharmony_ci## This next piece of magic avoids the "deleted header file" problem.
230c0abf9e6Sopenharmony_ci## The problem is that when a header file which appears in a .P file
231c0abf9e6Sopenharmony_ci## is deleted, the dependency causes make to die (because there is
232c0abf9e6Sopenharmony_ci## typically no way to rebuild the header).  We avoid this by adding
233c0abf9e6Sopenharmony_ci## dummy dependencies for each header file.  Too bad gcc doesn't do
234c0abf9e6Sopenharmony_ci## this for us directly.
235c0abf9e6Sopenharmony_ci## Some versions of gcc put a space before the ':'.  On the theory
236c0abf9e6Sopenharmony_ci## that the space means something, we add a space to the output as
237c0abf9e6Sopenharmony_ci## well.  hp depmode also adds that space, but also prefixes the VPATH
238c0abf9e6Sopenharmony_ci## to the object.  Take care to not repeat it in the output.
239c0abf9e6Sopenharmony_ci## Some versions of the HPUX 10.20 sed can't process this invocation
240c0abf9e6Sopenharmony_ci## correctly.  Breaking it into two sed invocations is a workaround.
241c0abf9e6Sopenharmony_ci  tr ' ' "$nl" < "$tmpdepfile" \
242c0abf9e6Sopenharmony_ci    | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
243c0abf9e6Sopenharmony_ci    | sed -e 's/$/ :/' >> "$depfile"
244c0abf9e6Sopenharmony_ci  rm -f "$tmpdepfile"
245c0abf9e6Sopenharmony_ci  ;;
246c0abf9e6Sopenharmony_ci
247c0abf9e6Sopenharmony_cihp)
248c0abf9e6Sopenharmony_ci  # This case exists only to let depend.m4 do its work.  It works by
249c0abf9e6Sopenharmony_ci  # looking at the text of this script.  This case will never be run,
250c0abf9e6Sopenharmony_ci  # since it is checked for above.
251c0abf9e6Sopenharmony_ci  exit 1
252c0abf9e6Sopenharmony_ci  ;;
253c0abf9e6Sopenharmony_ci
254c0abf9e6Sopenharmony_cisgi)
255c0abf9e6Sopenharmony_ci  if test "$libtool" = yes; then
256c0abf9e6Sopenharmony_ci    "$@" "-Wp,-MDupdate,$tmpdepfile"
257c0abf9e6Sopenharmony_ci  else
258c0abf9e6Sopenharmony_ci    "$@" -MDupdate "$tmpdepfile"
259c0abf9e6Sopenharmony_ci  fi
260c0abf9e6Sopenharmony_ci  stat=$?
261c0abf9e6Sopenharmony_ci  if test $stat -ne 0; then
262c0abf9e6Sopenharmony_ci    rm -f "$tmpdepfile"
263c0abf9e6Sopenharmony_ci    exit $stat
264c0abf9e6Sopenharmony_ci  fi
265c0abf9e6Sopenharmony_ci  rm -f "$depfile"
266c0abf9e6Sopenharmony_ci
267c0abf9e6Sopenharmony_ci  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
268c0abf9e6Sopenharmony_ci    echo "$object : \\" > "$depfile"
269c0abf9e6Sopenharmony_ci    # Clip off the initial element (the dependent).  Don't try to be
270c0abf9e6Sopenharmony_ci    # clever and replace this with sed code, as IRIX sed won't handle
271c0abf9e6Sopenharmony_ci    # lines with more than a fixed number of characters (4096 in
272c0abf9e6Sopenharmony_ci    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
273c0abf9e6Sopenharmony_ci    # the IRIX cc adds comments like '#:fec' to the end of the
274c0abf9e6Sopenharmony_ci    # dependency line.
275c0abf9e6Sopenharmony_ci    tr ' ' "$nl" < "$tmpdepfile" \
276c0abf9e6Sopenharmony_ci      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \
277c0abf9e6Sopenharmony_ci      | tr "$nl" ' ' >> "$depfile"
278c0abf9e6Sopenharmony_ci    echo >> "$depfile"
279c0abf9e6Sopenharmony_ci    # The second pass generates a dummy entry for each header file.
280c0abf9e6Sopenharmony_ci    tr ' ' "$nl" < "$tmpdepfile" \
281c0abf9e6Sopenharmony_ci      | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
282c0abf9e6Sopenharmony_ci      >> "$depfile"
283c0abf9e6Sopenharmony_ci  else
284c0abf9e6Sopenharmony_ci    make_dummy_depfile
285c0abf9e6Sopenharmony_ci  fi
286c0abf9e6Sopenharmony_ci  rm -f "$tmpdepfile"
287c0abf9e6Sopenharmony_ci  ;;
288c0abf9e6Sopenharmony_ci
289c0abf9e6Sopenharmony_cixlc)
290c0abf9e6Sopenharmony_ci  # This case exists only to let depend.m4 do its work.  It works by
291c0abf9e6Sopenharmony_ci  # looking at the text of this script.  This case will never be run,
292c0abf9e6Sopenharmony_ci  # since it is checked for above.
293c0abf9e6Sopenharmony_ci  exit 1
294c0abf9e6Sopenharmony_ci  ;;
295c0abf9e6Sopenharmony_ci
296c0abf9e6Sopenharmony_ciaix)
297c0abf9e6Sopenharmony_ci  # The C for AIX Compiler uses -M and outputs the dependencies
298c0abf9e6Sopenharmony_ci  # in a .u file.  In older versions, this file always lives in the
299c0abf9e6Sopenharmony_ci  # current directory.  Also, the AIX compiler puts '$object:' at the
300c0abf9e6Sopenharmony_ci  # start of each line; $object doesn't have directory information.
301c0abf9e6Sopenharmony_ci  # Version 6 uses the directory in both cases.
302c0abf9e6Sopenharmony_ci  set_dir_from "$object"
303c0abf9e6Sopenharmony_ci  set_base_from "$object"
304c0abf9e6Sopenharmony_ci  if test "$libtool" = yes; then
305c0abf9e6Sopenharmony_ci    tmpdepfile1=$dir$base.u
306c0abf9e6Sopenharmony_ci    tmpdepfile2=$base.u
307c0abf9e6Sopenharmony_ci    tmpdepfile3=$dir.libs/$base.u
308c0abf9e6Sopenharmony_ci    "$@" -Wc,-M
309c0abf9e6Sopenharmony_ci  else
310c0abf9e6Sopenharmony_ci    tmpdepfile1=$dir$base.u
311c0abf9e6Sopenharmony_ci    tmpdepfile2=$dir$base.u
312c0abf9e6Sopenharmony_ci    tmpdepfile3=$dir$base.u
313c0abf9e6Sopenharmony_ci    "$@" -M
314c0abf9e6Sopenharmony_ci  fi
315c0abf9e6Sopenharmony_ci  stat=$?
316c0abf9e6Sopenharmony_ci  if test $stat -ne 0; then
317c0abf9e6Sopenharmony_ci    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
318c0abf9e6Sopenharmony_ci    exit $stat
319c0abf9e6Sopenharmony_ci  fi
320c0abf9e6Sopenharmony_ci
321c0abf9e6Sopenharmony_ci  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
322c0abf9e6Sopenharmony_ci  do
323c0abf9e6Sopenharmony_ci    test -f "$tmpdepfile" && break
324c0abf9e6Sopenharmony_ci  done
325c0abf9e6Sopenharmony_ci  aix_post_process_depfile
326c0abf9e6Sopenharmony_ci  ;;
327c0abf9e6Sopenharmony_ci
328c0abf9e6Sopenharmony_citcc)
329c0abf9e6Sopenharmony_ci  # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
330c0abf9e6Sopenharmony_ci  # FIXME: That version still under development at the moment of writing.
331c0abf9e6Sopenharmony_ci  #        Make that this statement remains true also for stable, released
332c0abf9e6Sopenharmony_ci  #        versions.
333c0abf9e6Sopenharmony_ci  # It will wrap lines (doesn't matter whether long or short) with a
334c0abf9e6Sopenharmony_ci  # trailing '\', as in:
335c0abf9e6Sopenharmony_ci  #
336c0abf9e6Sopenharmony_ci  #   foo.o : \
337c0abf9e6Sopenharmony_ci  #    foo.c \
338c0abf9e6Sopenharmony_ci  #    foo.h \
339c0abf9e6Sopenharmony_ci  #
340c0abf9e6Sopenharmony_ci  # It will put a trailing '\' even on the last line, and will use leading
341c0abf9e6Sopenharmony_ci  # spaces rather than leading tabs (at least since its commit 0394caf7
342c0abf9e6Sopenharmony_ci  # "Emit spaces for -MD").
343c0abf9e6Sopenharmony_ci  "$@" -MD -MF "$tmpdepfile"
344c0abf9e6Sopenharmony_ci  stat=$?
345c0abf9e6Sopenharmony_ci  if test $stat -ne 0; then
346c0abf9e6Sopenharmony_ci    rm -f "$tmpdepfile"
347c0abf9e6Sopenharmony_ci    exit $stat
348c0abf9e6Sopenharmony_ci  fi
349c0abf9e6Sopenharmony_ci  rm -f "$depfile"
350c0abf9e6Sopenharmony_ci  # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
351c0abf9e6Sopenharmony_ci  # We have to change lines of the first kind to '$object: \'.
352c0abf9e6Sopenharmony_ci  sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
353c0abf9e6Sopenharmony_ci  # And for each line of the second kind, we have to emit a 'dep.h:'
354c0abf9e6Sopenharmony_ci  # dummy dependency, to avoid the deleted-header problem.
355c0abf9e6Sopenharmony_ci  sed -n -e 's|^  *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
356c0abf9e6Sopenharmony_ci  rm -f "$tmpdepfile"
357c0abf9e6Sopenharmony_ci  ;;
358c0abf9e6Sopenharmony_ci
359c0abf9e6Sopenharmony_ci## The order of this option in the case statement is important, since the
360c0abf9e6Sopenharmony_ci## shell code in configure will try each of these formats in the order
361c0abf9e6Sopenharmony_ci## listed in this file.  A plain '-MD' option would be understood by many
362c0abf9e6Sopenharmony_ci## compilers, so we must ensure this comes after the gcc and icc options.
363c0abf9e6Sopenharmony_cipgcc)
364c0abf9e6Sopenharmony_ci  # Portland's C compiler understands '-MD'.
365c0abf9e6Sopenharmony_ci  # Will always output deps to 'file.d' where file is the root name of the
366c0abf9e6Sopenharmony_ci  # source file under compilation, even if file resides in a subdirectory.
367c0abf9e6Sopenharmony_ci  # The object file name does not affect the name of the '.d' file.
368c0abf9e6Sopenharmony_ci  # pgcc 10.2 will output
369c0abf9e6Sopenharmony_ci  #    foo.o: sub/foo.c sub/foo.h
370c0abf9e6Sopenharmony_ci  # and will wrap long lines using '\' :
371c0abf9e6Sopenharmony_ci  #    foo.o: sub/foo.c ... \
372c0abf9e6Sopenharmony_ci  #     sub/foo.h ... \
373c0abf9e6Sopenharmony_ci  #     ...
374c0abf9e6Sopenharmony_ci  set_dir_from "$object"
375c0abf9e6Sopenharmony_ci  # Use the source, not the object, to determine the base name, since
376c0abf9e6Sopenharmony_ci  # that's sadly what pgcc will do too.
377c0abf9e6Sopenharmony_ci  set_base_from "$source"
378c0abf9e6Sopenharmony_ci  tmpdepfile=$base.d
379c0abf9e6Sopenharmony_ci
380c0abf9e6Sopenharmony_ci  # For projects that build the same source file twice into different object
381c0abf9e6Sopenharmony_ci  # files, the pgcc approach of using the *source* file root name can cause
382c0abf9e6Sopenharmony_ci  # problems in parallel builds.  Use a locking strategy to avoid stomping on
383c0abf9e6Sopenharmony_ci  # the same $tmpdepfile.
384c0abf9e6Sopenharmony_ci  lockdir=$base.d-lock
385c0abf9e6Sopenharmony_ci  trap "
386c0abf9e6Sopenharmony_ci    echo '$0: caught signal, cleaning up...' >&2
387c0abf9e6Sopenharmony_ci    rmdir '$lockdir'
388c0abf9e6Sopenharmony_ci    exit 1
389c0abf9e6Sopenharmony_ci  " 1 2 13 15
390c0abf9e6Sopenharmony_ci  numtries=100
391c0abf9e6Sopenharmony_ci  i=$numtries
392c0abf9e6Sopenharmony_ci  while test $i -gt 0; do
393c0abf9e6Sopenharmony_ci    # mkdir is a portable test-and-set.
394c0abf9e6Sopenharmony_ci    if mkdir "$lockdir" 2>/dev/null; then
395c0abf9e6Sopenharmony_ci      # This process acquired the lock.
396c0abf9e6Sopenharmony_ci      "$@" -MD
397c0abf9e6Sopenharmony_ci      stat=$?
398c0abf9e6Sopenharmony_ci      # Release the lock.
399c0abf9e6Sopenharmony_ci      rmdir "$lockdir"
400c0abf9e6Sopenharmony_ci      break
401c0abf9e6Sopenharmony_ci    else
402c0abf9e6Sopenharmony_ci      # If the lock is being held by a different process, wait
403c0abf9e6Sopenharmony_ci      # until the winning process is done or we timeout.
404c0abf9e6Sopenharmony_ci      while test -d "$lockdir" && test $i -gt 0; do
405c0abf9e6Sopenharmony_ci        sleep 1
406c0abf9e6Sopenharmony_ci        i=`expr $i - 1`
407c0abf9e6Sopenharmony_ci      done
408c0abf9e6Sopenharmony_ci    fi
409c0abf9e6Sopenharmony_ci    i=`expr $i - 1`
410c0abf9e6Sopenharmony_ci  done
411c0abf9e6Sopenharmony_ci  trap - 1 2 13 15
412c0abf9e6Sopenharmony_ci  if test $i -le 0; then
413c0abf9e6Sopenharmony_ci    echo "$0: failed to acquire lock after $numtries attempts" >&2
414c0abf9e6Sopenharmony_ci    echo "$0: check lockdir '$lockdir'" >&2
415c0abf9e6Sopenharmony_ci    exit 1
416c0abf9e6Sopenharmony_ci  fi
417c0abf9e6Sopenharmony_ci
418c0abf9e6Sopenharmony_ci  if test $stat -ne 0; then
419c0abf9e6Sopenharmony_ci    rm -f "$tmpdepfile"
420c0abf9e6Sopenharmony_ci    exit $stat
421c0abf9e6Sopenharmony_ci  fi
422c0abf9e6Sopenharmony_ci  rm -f "$depfile"
423c0abf9e6Sopenharmony_ci  # Each line is of the form `foo.o: dependent.h',
424c0abf9e6Sopenharmony_ci  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
425c0abf9e6Sopenharmony_ci  # Do two passes, one to just change these to
426c0abf9e6Sopenharmony_ci  # `$object: dependent.h' and one to simply `dependent.h:'.
427c0abf9e6Sopenharmony_ci  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
428c0abf9e6Sopenharmony_ci  # Some versions of the HPUX 10.20 sed can't process this invocation
429c0abf9e6Sopenharmony_ci  # correctly.  Breaking it into two sed invocations is a workaround.
430c0abf9e6Sopenharmony_ci  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
431c0abf9e6Sopenharmony_ci    | sed -e 's/$/ :/' >> "$depfile"
432c0abf9e6Sopenharmony_ci  rm -f "$tmpdepfile"
433c0abf9e6Sopenharmony_ci  ;;
434c0abf9e6Sopenharmony_ci
435c0abf9e6Sopenharmony_cihp2)
436c0abf9e6Sopenharmony_ci  # The "hp" stanza above does not work with aCC (C++) and HP's ia64
437c0abf9e6Sopenharmony_ci  # compilers, which have integrated preprocessors.  The correct option
438c0abf9e6Sopenharmony_ci  # to use with these is +Maked; it writes dependencies to a file named
439c0abf9e6Sopenharmony_ci  # 'foo.d', which lands next to the object file, wherever that
440c0abf9e6Sopenharmony_ci  # happens to be.
441c0abf9e6Sopenharmony_ci  # Much of this is similar to the tru64 case; see comments there.
442c0abf9e6Sopenharmony_ci  set_dir_from  "$object"
443c0abf9e6Sopenharmony_ci  set_base_from "$object"
444c0abf9e6Sopenharmony_ci  if test "$libtool" = yes; then
445c0abf9e6Sopenharmony_ci    tmpdepfile1=$dir$base.d
446c0abf9e6Sopenharmony_ci    tmpdepfile2=$dir.libs/$base.d
447c0abf9e6Sopenharmony_ci    "$@" -Wc,+Maked
448c0abf9e6Sopenharmony_ci  else
449c0abf9e6Sopenharmony_ci    tmpdepfile1=$dir$base.d
450c0abf9e6Sopenharmony_ci    tmpdepfile2=$dir$base.d
451c0abf9e6Sopenharmony_ci    "$@" +Maked
452c0abf9e6Sopenharmony_ci  fi
453c0abf9e6Sopenharmony_ci  stat=$?
454c0abf9e6Sopenharmony_ci  if test $stat -ne 0; then
455c0abf9e6Sopenharmony_ci     rm -f "$tmpdepfile1" "$tmpdepfile2"
456c0abf9e6Sopenharmony_ci     exit $stat
457c0abf9e6Sopenharmony_ci  fi
458c0abf9e6Sopenharmony_ci
459c0abf9e6Sopenharmony_ci  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
460c0abf9e6Sopenharmony_ci  do
461c0abf9e6Sopenharmony_ci    test -f "$tmpdepfile" && break
462c0abf9e6Sopenharmony_ci  done
463c0abf9e6Sopenharmony_ci  if test -f "$tmpdepfile"; then
464c0abf9e6Sopenharmony_ci    sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
465c0abf9e6Sopenharmony_ci    # Add 'dependent.h:' lines.
466c0abf9e6Sopenharmony_ci    sed -ne '2,${
467c0abf9e6Sopenharmony_ci               s/^ *//
468c0abf9e6Sopenharmony_ci               s/ \\*$//
469c0abf9e6Sopenharmony_ci               s/$/:/
470c0abf9e6Sopenharmony_ci               p
471c0abf9e6Sopenharmony_ci             }' "$tmpdepfile" >> "$depfile"
472c0abf9e6Sopenharmony_ci  else
473c0abf9e6Sopenharmony_ci    make_dummy_depfile
474c0abf9e6Sopenharmony_ci  fi
475c0abf9e6Sopenharmony_ci  rm -f "$tmpdepfile" "$tmpdepfile2"
476c0abf9e6Sopenharmony_ci  ;;
477c0abf9e6Sopenharmony_ci
478c0abf9e6Sopenharmony_citru64)
479c0abf9e6Sopenharmony_ci  # The Tru64 compiler uses -MD to generate dependencies as a side
480c0abf9e6Sopenharmony_ci  # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
481c0abf9e6Sopenharmony_ci  # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
482c0abf9e6Sopenharmony_ci  # dependencies in 'foo.d' instead, so we check for that too.
483c0abf9e6Sopenharmony_ci  # Subdirectories are respected.
484c0abf9e6Sopenharmony_ci  set_dir_from  "$object"
485c0abf9e6Sopenharmony_ci  set_base_from "$object"
486c0abf9e6Sopenharmony_ci
487c0abf9e6Sopenharmony_ci  if test "$libtool" = yes; then
488c0abf9e6Sopenharmony_ci    # Libtool generates 2 separate objects for the 2 libraries.  These
489c0abf9e6Sopenharmony_ci    # two compilations output dependencies in $dir.libs/$base.o.d and
490c0abf9e6Sopenharmony_ci    # in $dir$base.o.d.  We have to check for both files, because
491c0abf9e6Sopenharmony_ci    # one of the two compilations can be disabled.  We should prefer
492c0abf9e6Sopenharmony_ci    # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
493c0abf9e6Sopenharmony_ci    # automatically cleaned when .libs/ is deleted, while ignoring
494c0abf9e6Sopenharmony_ci    # the former would cause a distcleancheck panic.
495c0abf9e6Sopenharmony_ci    tmpdepfile1=$dir$base.o.d          # libtool 1.5
496c0abf9e6Sopenharmony_ci    tmpdepfile2=$dir.libs/$base.o.d    # Likewise.
497c0abf9e6Sopenharmony_ci    tmpdepfile3=$dir.libs/$base.d      # Compaq CCC V6.2-504
498c0abf9e6Sopenharmony_ci    "$@" -Wc,-MD
499c0abf9e6Sopenharmony_ci  else
500c0abf9e6Sopenharmony_ci    tmpdepfile1=$dir$base.d
501c0abf9e6Sopenharmony_ci    tmpdepfile2=$dir$base.d
502c0abf9e6Sopenharmony_ci    tmpdepfile3=$dir$base.d
503c0abf9e6Sopenharmony_ci    "$@" -MD
504c0abf9e6Sopenharmony_ci  fi
505c0abf9e6Sopenharmony_ci
506c0abf9e6Sopenharmony_ci  stat=$?
507c0abf9e6Sopenharmony_ci  if test $stat -ne 0; then
508c0abf9e6Sopenharmony_ci    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
509c0abf9e6Sopenharmony_ci    exit $stat
510c0abf9e6Sopenharmony_ci  fi
511c0abf9e6Sopenharmony_ci
512c0abf9e6Sopenharmony_ci  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
513c0abf9e6Sopenharmony_ci  do
514c0abf9e6Sopenharmony_ci    test -f "$tmpdepfile" && break
515c0abf9e6Sopenharmony_ci  done
516c0abf9e6Sopenharmony_ci  # Same post-processing that is required for AIX mode.
517c0abf9e6Sopenharmony_ci  aix_post_process_depfile
518c0abf9e6Sopenharmony_ci  ;;
519c0abf9e6Sopenharmony_ci
520c0abf9e6Sopenharmony_cimsvc7)
521c0abf9e6Sopenharmony_ci  if test "$libtool" = yes; then
522c0abf9e6Sopenharmony_ci    showIncludes=-Wc,-showIncludes
523c0abf9e6Sopenharmony_ci  else
524c0abf9e6Sopenharmony_ci    showIncludes=-showIncludes
525c0abf9e6Sopenharmony_ci  fi
526c0abf9e6Sopenharmony_ci  "$@" $showIncludes > "$tmpdepfile"
527c0abf9e6Sopenharmony_ci  stat=$?
528c0abf9e6Sopenharmony_ci  grep -v '^Note: including file: ' "$tmpdepfile"
529c0abf9e6Sopenharmony_ci  if test $stat -ne 0; then
530c0abf9e6Sopenharmony_ci    rm -f "$tmpdepfile"
531c0abf9e6Sopenharmony_ci    exit $stat
532c0abf9e6Sopenharmony_ci  fi
533c0abf9e6Sopenharmony_ci  rm -f "$depfile"
534c0abf9e6Sopenharmony_ci  echo "$object : \\" > "$depfile"
535c0abf9e6Sopenharmony_ci  # The first sed program below extracts the file names and escapes
536c0abf9e6Sopenharmony_ci  # backslashes for cygpath.  The second sed program outputs the file
537c0abf9e6Sopenharmony_ci  # name when reading, but also accumulates all include files in the
538c0abf9e6Sopenharmony_ci  # hold buffer in order to output them again at the end.  This only
539c0abf9e6Sopenharmony_ci  # works with sed implementations that can handle large buffers.
540c0abf9e6Sopenharmony_ci  sed < "$tmpdepfile" -n '
541c0abf9e6Sopenharmony_ci/^Note: including file:  *\(.*\)/ {
542c0abf9e6Sopenharmony_ci  s//\1/
543c0abf9e6Sopenharmony_ci  s/\\/\\\\/g
544c0abf9e6Sopenharmony_ci  p
545c0abf9e6Sopenharmony_ci}' | $cygpath_u | sort -u | sed -n '
546c0abf9e6Sopenharmony_cis/ /\\ /g
547c0abf9e6Sopenharmony_cis/\(.*\)/'"$tab"'\1 \\/p
548c0abf9e6Sopenharmony_cis/.\(.*\) \\/\1:/
549c0abf9e6Sopenharmony_ciH
550c0abf9e6Sopenharmony_ci$ {
551c0abf9e6Sopenharmony_ci  s/.*/'"$tab"'/
552c0abf9e6Sopenharmony_ci  G
553c0abf9e6Sopenharmony_ci  p
554c0abf9e6Sopenharmony_ci}' >> "$depfile"
555c0abf9e6Sopenharmony_ci  echo >> "$depfile" # make sure the fragment doesn't end with a backslash
556c0abf9e6Sopenharmony_ci  rm -f "$tmpdepfile"
557c0abf9e6Sopenharmony_ci  ;;
558c0abf9e6Sopenharmony_ci
559c0abf9e6Sopenharmony_cimsvc7msys)
560c0abf9e6Sopenharmony_ci  # This case exists only to let depend.m4 do its work.  It works by
561c0abf9e6Sopenharmony_ci  # looking at the text of this script.  This case will never be run,
562c0abf9e6Sopenharmony_ci  # since it is checked for above.
563c0abf9e6Sopenharmony_ci  exit 1
564c0abf9e6Sopenharmony_ci  ;;
565c0abf9e6Sopenharmony_ci
566c0abf9e6Sopenharmony_ci#nosideeffect)
567c0abf9e6Sopenharmony_ci  # This comment above is used by automake to tell side-effect
568c0abf9e6Sopenharmony_ci  # dependency tracking mechanisms from slower ones.
569c0abf9e6Sopenharmony_ci
570c0abf9e6Sopenharmony_cidashmstdout)
571c0abf9e6Sopenharmony_ci  # Important note: in order to support this mode, a compiler *must*
572c0abf9e6Sopenharmony_ci  # always write the preprocessed file to stdout, regardless of -o.
573c0abf9e6Sopenharmony_ci  "$@" || exit $?
574c0abf9e6Sopenharmony_ci
575c0abf9e6Sopenharmony_ci  # Remove the call to Libtool.
576c0abf9e6Sopenharmony_ci  if test "$libtool" = yes; then
577c0abf9e6Sopenharmony_ci    while test "X$1" != 'X--mode=compile'; do
578c0abf9e6Sopenharmony_ci      shift
579c0abf9e6Sopenharmony_ci    done
580c0abf9e6Sopenharmony_ci    shift
581c0abf9e6Sopenharmony_ci  fi
582c0abf9e6Sopenharmony_ci
583c0abf9e6Sopenharmony_ci  # Remove '-o $object'.
584c0abf9e6Sopenharmony_ci  IFS=" "
585c0abf9e6Sopenharmony_ci  for arg
586c0abf9e6Sopenharmony_ci  do
587c0abf9e6Sopenharmony_ci    case $arg in
588c0abf9e6Sopenharmony_ci    -o)
589c0abf9e6Sopenharmony_ci      shift
590c0abf9e6Sopenharmony_ci      ;;
591c0abf9e6Sopenharmony_ci    $object)
592c0abf9e6Sopenharmony_ci      shift
593c0abf9e6Sopenharmony_ci      ;;
594c0abf9e6Sopenharmony_ci    *)
595c0abf9e6Sopenharmony_ci      set fnord "$@" "$arg"
596c0abf9e6Sopenharmony_ci      shift # fnord
597c0abf9e6Sopenharmony_ci      shift # $arg
598c0abf9e6Sopenharmony_ci      ;;
599c0abf9e6Sopenharmony_ci    esac
600c0abf9e6Sopenharmony_ci  done
601c0abf9e6Sopenharmony_ci
602c0abf9e6Sopenharmony_ci  test -z "$dashmflag" && dashmflag=-M
603c0abf9e6Sopenharmony_ci  # Require at least two characters before searching for ':'
604c0abf9e6Sopenharmony_ci  # in the target name.  This is to cope with DOS-style filenames:
605c0abf9e6Sopenharmony_ci  # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
606c0abf9e6Sopenharmony_ci  "$@" $dashmflag |
607c0abf9e6Sopenharmony_ci    sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
608c0abf9e6Sopenharmony_ci  rm -f "$depfile"
609c0abf9e6Sopenharmony_ci  cat < "$tmpdepfile" > "$depfile"
610c0abf9e6Sopenharmony_ci  # Some versions of the HPUX 10.20 sed can't process this sed invocation
611c0abf9e6Sopenharmony_ci  # correctly.  Breaking it into two sed invocations is a workaround.
612c0abf9e6Sopenharmony_ci  tr ' ' "$nl" < "$tmpdepfile" \
613c0abf9e6Sopenharmony_ci    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
614c0abf9e6Sopenharmony_ci    | sed -e 's/$/ :/' >> "$depfile"
615c0abf9e6Sopenharmony_ci  rm -f "$tmpdepfile"
616c0abf9e6Sopenharmony_ci  ;;
617c0abf9e6Sopenharmony_ci
618c0abf9e6Sopenharmony_cidashXmstdout)
619c0abf9e6Sopenharmony_ci  # This case only exists to satisfy depend.m4.  It is never actually
620c0abf9e6Sopenharmony_ci  # run, as this mode is specially recognized in the preamble.
621c0abf9e6Sopenharmony_ci  exit 1
622c0abf9e6Sopenharmony_ci  ;;
623c0abf9e6Sopenharmony_ci
624c0abf9e6Sopenharmony_cimakedepend)
625c0abf9e6Sopenharmony_ci  "$@" || exit $?
626c0abf9e6Sopenharmony_ci  # Remove any Libtool call
627c0abf9e6Sopenharmony_ci  if test "$libtool" = yes; then
628c0abf9e6Sopenharmony_ci    while test "X$1" != 'X--mode=compile'; do
629c0abf9e6Sopenharmony_ci      shift
630c0abf9e6Sopenharmony_ci    done
631c0abf9e6Sopenharmony_ci    shift
632c0abf9e6Sopenharmony_ci  fi
633c0abf9e6Sopenharmony_ci  # X makedepend
634c0abf9e6Sopenharmony_ci  shift
635c0abf9e6Sopenharmony_ci  cleared=no eat=no
636c0abf9e6Sopenharmony_ci  for arg
637c0abf9e6Sopenharmony_ci  do
638c0abf9e6Sopenharmony_ci    case $cleared in
639c0abf9e6Sopenharmony_ci    no)
640c0abf9e6Sopenharmony_ci      set ""; shift
641c0abf9e6Sopenharmony_ci      cleared=yes ;;
642c0abf9e6Sopenharmony_ci    esac
643c0abf9e6Sopenharmony_ci    if test $eat = yes; then
644c0abf9e6Sopenharmony_ci      eat=no
645c0abf9e6Sopenharmony_ci      continue
646c0abf9e6Sopenharmony_ci    fi
647c0abf9e6Sopenharmony_ci    case "$arg" in
648c0abf9e6Sopenharmony_ci    -D*|-I*)
649c0abf9e6Sopenharmony_ci      set fnord "$@" "$arg"; shift ;;
650c0abf9e6Sopenharmony_ci    # Strip any option that makedepend may not understand.  Remove
651c0abf9e6Sopenharmony_ci    # the object too, otherwise makedepend will parse it as a source file.
652c0abf9e6Sopenharmony_ci    -arch)
653c0abf9e6Sopenharmony_ci      eat=yes ;;
654c0abf9e6Sopenharmony_ci    -*|$object)
655c0abf9e6Sopenharmony_ci      ;;
656c0abf9e6Sopenharmony_ci    *)
657c0abf9e6Sopenharmony_ci      set fnord "$@" "$arg"; shift ;;
658c0abf9e6Sopenharmony_ci    esac
659c0abf9e6Sopenharmony_ci  done
660c0abf9e6Sopenharmony_ci  obj_suffix=`echo "$object" | sed 's/^.*\././'`
661c0abf9e6Sopenharmony_ci  touch "$tmpdepfile"
662c0abf9e6Sopenharmony_ci  ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
663c0abf9e6Sopenharmony_ci  rm -f "$depfile"
664c0abf9e6Sopenharmony_ci  # makedepend may prepend the VPATH from the source file name to the object.
665c0abf9e6Sopenharmony_ci  # No need to regex-escape $object, excess matching of '.' is harmless.
666c0abf9e6Sopenharmony_ci  sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
667c0abf9e6Sopenharmony_ci  # Some versions of the HPUX 10.20 sed can't process the last invocation
668c0abf9e6Sopenharmony_ci  # correctly.  Breaking it into two sed invocations is a workaround.
669c0abf9e6Sopenharmony_ci  sed '1,2d' "$tmpdepfile" \
670c0abf9e6Sopenharmony_ci    | tr ' ' "$nl" \
671c0abf9e6Sopenharmony_ci    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
672c0abf9e6Sopenharmony_ci    | sed -e 's/$/ :/' >> "$depfile"
673c0abf9e6Sopenharmony_ci  rm -f "$tmpdepfile" "$tmpdepfile".bak
674c0abf9e6Sopenharmony_ci  ;;
675c0abf9e6Sopenharmony_ci
676c0abf9e6Sopenharmony_cicpp)
677c0abf9e6Sopenharmony_ci  # Important note: in order to support this mode, a compiler *must*
678c0abf9e6Sopenharmony_ci  # always write the preprocessed file to stdout.
679c0abf9e6Sopenharmony_ci  "$@" || exit $?
680c0abf9e6Sopenharmony_ci
681c0abf9e6Sopenharmony_ci  # Remove the call to Libtool.
682c0abf9e6Sopenharmony_ci  if test "$libtool" = yes; then
683c0abf9e6Sopenharmony_ci    while test "X$1" != 'X--mode=compile'; do
684c0abf9e6Sopenharmony_ci      shift
685c0abf9e6Sopenharmony_ci    done
686c0abf9e6Sopenharmony_ci    shift
687c0abf9e6Sopenharmony_ci  fi
688c0abf9e6Sopenharmony_ci
689c0abf9e6Sopenharmony_ci  # Remove '-o $object'.
690c0abf9e6Sopenharmony_ci  IFS=" "
691c0abf9e6Sopenharmony_ci  for arg
692c0abf9e6Sopenharmony_ci  do
693c0abf9e6Sopenharmony_ci    case $arg in
694c0abf9e6Sopenharmony_ci    -o)
695c0abf9e6Sopenharmony_ci      shift
696c0abf9e6Sopenharmony_ci      ;;
697c0abf9e6Sopenharmony_ci    $object)
698c0abf9e6Sopenharmony_ci      shift
699c0abf9e6Sopenharmony_ci      ;;
700c0abf9e6Sopenharmony_ci    *)
701c0abf9e6Sopenharmony_ci      set fnord "$@" "$arg"
702c0abf9e6Sopenharmony_ci      shift # fnord
703c0abf9e6Sopenharmony_ci      shift # $arg
704c0abf9e6Sopenharmony_ci      ;;
705c0abf9e6Sopenharmony_ci    esac
706c0abf9e6Sopenharmony_ci  done
707c0abf9e6Sopenharmony_ci
708c0abf9e6Sopenharmony_ci  "$@" -E \
709c0abf9e6Sopenharmony_ci    | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
710c0abf9e6Sopenharmony_ci             -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
711c0abf9e6Sopenharmony_ci    | sed '$ s: \\$::' > "$tmpdepfile"
712c0abf9e6Sopenharmony_ci  rm -f "$depfile"
713c0abf9e6Sopenharmony_ci  echo "$object : \\" > "$depfile"
714c0abf9e6Sopenharmony_ci  cat < "$tmpdepfile" >> "$depfile"
715c0abf9e6Sopenharmony_ci  sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
716c0abf9e6Sopenharmony_ci  rm -f "$tmpdepfile"
717c0abf9e6Sopenharmony_ci  ;;
718c0abf9e6Sopenharmony_ci
719c0abf9e6Sopenharmony_cimsvisualcpp)
720c0abf9e6Sopenharmony_ci  # Important note: in order to support this mode, a compiler *must*
721c0abf9e6Sopenharmony_ci  # always write the preprocessed file to stdout.
722c0abf9e6Sopenharmony_ci  "$@" || exit $?
723c0abf9e6Sopenharmony_ci
724c0abf9e6Sopenharmony_ci  # Remove the call to Libtool.
725c0abf9e6Sopenharmony_ci  if test "$libtool" = yes; then
726c0abf9e6Sopenharmony_ci    while test "X$1" != 'X--mode=compile'; do
727c0abf9e6Sopenharmony_ci      shift
728c0abf9e6Sopenharmony_ci    done
729c0abf9e6Sopenharmony_ci    shift
730c0abf9e6Sopenharmony_ci  fi
731c0abf9e6Sopenharmony_ci
732c0abf9e6Sopenharmony_ci  IFS=" "
733c0abf9e6Sopenharmony_ci  for arg
734c0abf9e6Sopenharmony_ci  do
735c0abf9e6Sopenharmony_ci    case "$arg" in
736c0abf9e6Sopenharmony_ci    -o)
737c0abf9e6Sopenharmony_ci      shift
738c0abf9e6Sopenharmony_ci      ;;
739c0abf9e6Sopenharmony_ci    $object)
740c0abf9e6Sopenharmony_ci      shift
741c0abf9e6Sopenharmony_ci      ;;
742c0abf9e6Sopenharmony_ci    "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
743c0abf9e6Sopenharmony_ci        set fnord "$@"
744c0abf9e6Sopenharmony_ci        shift
745c0abf9e6Sopenharmony_ci        shift
746c0abf9e6Sopenharmony_ci        ;;
747c0abf9e6Sopenharmony_ci    *)
748c0abf9e6Sopenharmony_ci        set fnord "$@" "$arg"
749c0abf9e6Sopenharmony_ci        shift
750c0abf9e6Sopenharmony_ci        shift
751c0abf9e6Sopenharmony_ci        ;;
752c0abf9e6Sopenharmony_ci    esac
753c0abf9e6Sopenharmony_ci  done
754c0abf9e6Sopenharmony_ci  "$@" -E 2>/dev/null |
755c0abf9e6Sopenharmony_ci  sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile"
756c0abf9e6Sopenharmony_ci  rm -f "$depfile"
757c0abf9e6Sopenharmony_ci  echo "$object : \\" > "$depfile"
758c0abf9e6Sopenharmony_ci  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile"
759c0abf9e6Sopenharmony_ci  echo "$tab" >> "$depfile"
760c0abf9e6Sopenharmony_ci  sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile"
761c0abf9e6Sopenharmony_ci  rm -f "$tmpdepfile"
762c0abf9e6Sopenharmony_ci  ;;
763c0abf9e6Sopenharmony_ci
764c0abf9e6Sopenharmony_cimsvcmsys)
765c0abf9e6Sopenharmony_ci  # This case exists only to let depend.m4 do its work.  It works by
766c0abf9e6Sopenharmony_ci  # looking at the text of this script.  This case will never be run,
767c0abf9e6Sopenharmony_ci  # since it is checked for above.
768c0abf9e6Sopenharmony_ci  exit 1
769c0abf9e6Sopenharmony_ci  ;;
770c0abf9e6Sopenharmony_ci
771c0abf9e6Sopenharmony_cinone)
772c0abf9e6Sopenharmony_ci  exec "$@"
773c0abf9e6Sopenharmony_ci  ;;
774c0abf9e6Sopenharmony_ci
775c0abf9e6Sopenharmony_ci*)
776c0abf9e6Sopenharmony_ci  echo "Unknown depmode $depmode" 1>&2
777c0abf9e6Sopenharmony_ci  exit 1
778c0abf9e6Sopenharmony_ci  ;;
779c0abf9e6Sopenharmony_ciesac
780c0abf9e6Sopenharmony_ci
781c0abf9e6Sopenharmony_ciexit 0
782c0abf9e6Sopenharmony_ci
783c0abf9e6Sopenharmony_ci# Local Variables:
784c0abf9e6Sopenharmony_ci# mode: shell-script
785c0abf9e6Sopenharmony_ci# sh-indentation: 2
786c0abf9e6Sopenharmony_ci# eval: (add-hook 'before-save-hook 'time-stamp)
787c0abf9e6Sopenharmony_ci# time-stamp-start: "scriptversion="
788c0abf9e6Sopenharmony_ci# time-stamp-format: "%:y-%02m-%02d.%02H"
789c0abf9e6Sopenharmony_ci# time-stamp-time-zone: "UTC0"
790c0abf9e6Sopenharmony_ci# time-stamp-end: "; # UTC"
791c0abf9e6Sopenharmony_ci# End:
792