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