depcomp revision 7c5f6000
1bccedf53Smrg#! /bin/sh 2bccedf53Smrg# depcomp - compile a program generating dependencies as side-effects 37c5f6000Smrg 47c5f6000Smrgscriptversion=2009-04-28.21; # UTC 57c5f6000Smrg 67c5f6000Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free 77c5f6000Smrg# Software Foundation, Inc. 8bccedf53Smrg 9bccedf53Smrg# This program is free software; you can redistribute it and/or modify 10bccedf53Smrg# it under the terms of the GNU General Public License as published by 11bccedf53Smrg# the Free Software Foundation; either version 2, or (at your option) 12bccedf53Smrg# any later version. 13bccedf53Smrg 14bccedf53Smrg# This program is distributed in the hope that it will be useful, 15bccedf53Smrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 16bccedf53Smrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17bccedf53Smrg# GNU General Public License for more details. 18bccedf53Smrg 19bccedf53Smrg# You should have received a copy of the GNU General Public License 207c5f6000Smrg# along with this program. If not, see <http://www.gnu.org/licenses/>. 21bccedf53Smrg 22bccedf53Smrg# As a special exception to the GNU General Public License, if you 23bccedf53Smrg# distribute this file as part of a program that contains a 24bccedf53Smrg# configuration script generated by Autoconf, you may include it under 25bccedf53Smrg# the same distribution terms that you use for the rest of that program. 26bccedf53Smrg 27bccedf53Smrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 28bccedf53Smrg 297c5f6000Smrgcase $1 in 307c5f6000Smrg '') 317c5f6000Smrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 327c5f6000Smrg exit 1; 337c5f6000Smrg ;; 347c5f6000Smrg -h | --h*) 357c5f6000Smrg cat <<\EOF 367c5f6000SmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 377c5f6000Smrg 387c5f6000SmrgRun PROGRAMS ARGS to compile a file, generating dependencies 397c5f6000Smrgas side-effects. 407c5f6000Smrg 417c5f6000SmrgEnvironment variables: 427c5f6000Smrg depmode Dependency tracking mode. 437c5f6000Smrg source Source file read by `PROGRAMS ARGS'. 447c5f6000Smrg object Object file output by `PROGRAMS ARGS'. 457c5f6000Smrg DEPDIR directory where to store dependencies. 467c5f6000Smrg depfile Dependency file to output. 477c5f6000Smrg tmpdepfile Temporary file to use when outputing dependencies. 487c5f6000Smrg libtool Whether libtool is used (yes/no). 497c5f6000Smrg 507c5f6000SmrgReport bugs to <bug-automake@gnu.org>. 517c5f6000SmrgEOF 527c5f6000Smrg exit $? 537c5f6000Smrg ;; 547c5f6000Smrg -v | --v*) 557c5f6000Smrg echo "depcomp $scriptversion" 567c5f6000Smrg exit $? 577c5f6000Smrg ;; 587c5f6000Smrgesac 597c5f6000Smrg 60bccedf53Smrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 61bccedf53Smrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 62bccedf53Smrg exit 1 63bccedf53Smrgfi 64bccedf53Smrg 657c5f6000Smrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 667c5f6000Smrgdepfile=${depfile-`echo "$object" | 677c5f6000Smrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 68bccedf53Smrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 69bccedf53Smrg 70bccedf53Smrgrm -f "$tmpdepfile" 71bccedf53Smrg 72bccedf53Smrg# Some modes work just like other modes, but use different flags. We 73bccedf53Smrg# parameterize here, but still list the modes in the big case below, 74bccedf53Smrg# to make depend.m4 easier to write. Note that we *cannot* use a case 75bccedf53Smrg# here, because this file can only contain one case statement. 76bccedf53Smrgif test "$depmode" = hp; then 77bccedf53Smrg # HP compiler uses -M and no extra arg. 78bccedf53Smrg gccflag=-M 79bccedf53Smrg depmode=gcc 80bccedf53Smrgfi 81bccedf53Smrg 82bccedf53Smrgif test "$depmode" = dashXmstdout; then 83bccedf53Smrg # This is just like dashmstdout with a different argument. 84bccedf53Smrg dashmflag=-xM 85bccedf53Smrg depmode=dashmstdout 86bccedf53Smrgfi 87bccedf53Smrg 887c5f6000Smrgcygpath_u="cygpath -u -f -" 897c5f6000Smrgif test "$depmode" = msvcmsys; then 907c5f6000Smrg # This is just like msvisualcpp but w/o cygpath translation. 917c5f6000Smrg # Just convert the backslash-escaped backslashes to single forward 927c5f6000Smrg # slashes to satisfy depend.m4 937c5f6000Smrg cygpath_u="sed s,\\\\\\\\,/,g" 947c5f6000Smrg depmode=msvisualcpp 957c5f6000Smrgfi 967c5f6000Smrg 97bccedf53Smrgcase "$depmode" in 98bccedf53Smrggcc3) 99bccedf53Smrg## gcc 3 implements dependency tracking that does exactly what 100bccedf53Smrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 101bccedf53Smrg## it if -MD -MP comes after the -MF stuff. Hmm. 1027c5f6000Smrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 1037c5f6000Smrg## the command line argument order; so add the flags where they 1047c5f6000Smrg## appear in depend2.am. Note that the slowdown incurred here 1057c5f6000Smrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 1067c5f6000Smrg for arg 1077c5f6000Smrg do 1087c5f6000Smrg case $arg in 1097c5f6000Smrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 1107c5f6000Smrg *) set fnord "$@" "$arg" ;; 1117c5f6000Smrg esac 1127c5f6000Smrg shift # fnord 1137c5f6000Smrg shift # $arg 1147c5f6000Smrg done 1157c5f6000Smrg "$@" 116bccedf53Smrg stat=$? 117bccedf53Smrg if test $stat -eq 0; then : 118bccedf53Smrg else 119bccedf53Smrg rm -f "$tmpdepfile" 120bccedf53Smrg exit $stat 121bccedf53Smrg fi 122bccedf53Smrg mv "$tmpdepfile" "$depfile" 123bccedf53Smrg ;; 124bccedf53Smrg 125bccedf53Smrggcc) 126bccedf53Smrg## There are various ways to get dependency output from gcc. Here's 127bccedf53Smrg## why we pick this rather obscure method: 128bccedf53Smrg## - Don't want to use -MD because we'd like the dependencies to end 129bccedf53Smrg## up in a subdir. Having to rename by hand is ugly. 130bccedf53Smrg## (We might end up doing this anyway to support other compilers.) 131bccedf53Smrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 132bccedf53Smrg## -MM, not -M (despite what the docs say). 133bccedf53Smrg## - Using -M directly means running the compiler twice (even worse 134bccedf53Smrg## than renaming). 135bccedf53Smrg if test -z "$gccflag"; then 136bccedf53Smrg gccflag=-MD, 137bccedf53Smrg fi 138bccedf53Smrg "$@" -Wp,"$gccflag$tmpdepfile" 139bccedf53Smrg stat=$? 140bccedf53Smrg if test $stat -eq 0; then : 141bccedf53Smrg else 142bccedf53Smrg rm -f "$tmpdepfile" 143bccedf53Smrg exit $stat 144bccedf53Smrg fi 145bccedf53Smrg rm -f "$depfile" 146bccedf53Smrg echo "$object : \\" > "$depfile" 147bccedf53Smrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 148bccedf53Smrg## The second -e expression handles DOS-style file names with drive letters. 149bccedf53Smrg sed -e 's/^[^:]*: / /' \ 150bccedf53Smrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 151bccedf53Smrg## This next piece of magic avoids the `deleted header file' problem. 152bccedf53Smrg## The problem is that when a header file which appears in a .P file 153bccedf53Smrg## is deleted, the dependency causes make to die (because there is 154bccedf53Smrg## typically no way to rebuild the header). We avoid this by adding 155bccedf53Smrg## dummy dependencies for each header file. Too bad gcc doesn't do 156bccedf53Smrg## this for us directly. 157bccedf53Smrg tr ' ' ' 158bccedf53Smrg' < "$tmpdepfile" | 159bccedf53Smrg## Some versions of gcc put a space before the `:'. On the theory 160bccedf53Smrg## that the space means something, we add a space to the output as 161bccedf53Smrg## well. 162bccedf53Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 163bccedf53Smrg## correctly. Breaking it into two sed invocations is a workaround. 164bccedf53Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 165bccedf53Smrg rm -f "$tmpdepfile" 166bccedf53Smrg ;; 167bccedf53Smrg 168bccedf53Smrghp) 169bccedf53Smrg # This case exists only to let depend.m4 do its work. It works by 170bccedf53Smrg # looking at the text of this script. This case will never be run, 171bccedf53Smrg # since it is checked for above. 172bccedf53Smrg exit 1 173bccedf53Smrg ;; 174bccedf53Smrg 175bccedf53Smrgsgi) 176bccedf53Smrg if test "$libtool" = yes; then 177bccedf53Smrg "$@" "-Wp,-MDupdate,$tmpdepfile" 178bccedf53Smrg else 179bccedf53Smrg "$@" -MDupdate "$tmpdepfile" 180bccedf53Smrg fi 181bccedf53Smrg stat=$? 182bccedf53Smrg if test $stat -eq 0; then : 183bccedf53Smrg else 184bccedf53Smrg rm -f "$tmpdepfile" 185bccedf53Smrg exit $stat 186bccedf53Smrg fi 187bccedf53Smrg rm -f "$depfile" 188bccedf53Smrg 189bccedf53Smrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 190bccedf53Smrg echo "$object : \\" > "$depfile" 191bccedf53Smrg 192bccedf53Smrg # Clip off the initial element (the dependent). Don't try to be 193bccedf53Smrg # clever and replace this with sed code, as IRIX sed won't handle 194bccedf53Smrg # lines with more than a fixed number of characters (4096 in 195bccedf53Smrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 196bccedf53Smrg # the IRIX cc adds comments like `#:fec' to the end of the 197bccedf53Smrg # dependency line. 198bccedf53Smrg tr ' ' ' 199bccedf53Smrg' < "$tmpdepfile" \ 200bccedf53Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 201bccedf53Smrg tr ' 2027c5f6000Smrg' ' ' >> "$depfile" 2037c5f6000Smrg echo >> "$depfile" 204bccedf53Smrg 205bccedf53Smrg # The second pass generates a dummy entry for each header file. 206bccedf53Smrg tr ' ' ' 207bccedf53Smrg' < "$tmpdepfile" \ 208bccedf53Smrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 2097c5f6000Smrg >> "$depfile" 210bccedf53Smrg else 211bccedf53Smrg # The sourcefile does not contain any dependencies, so just 212bccedf53Smrg # store a dummy comment line, to avoid errors with the Makefile 213bccedf53Smrg # "include basename.Plo" scheme. 214bccedf53Smrg echo "#dummy" > "$depfile" 215bccedf53Smrg fi 216bccedf53Smrg rm -f "$tmpdepfile" 217bccedf53Smrg ;; 218bccedf53Smrg 219bccedf53Smrgaix) 220bccedf53Smrg # The C for AIX Compiler uses -M and outputs the dependencies 221bccedf53Smrg # in a .u file. In older versions, this file always lives in the 222bccedf53Smrg # current directory. Also, the AIX compiler puts `$object:' at the 223bccedf53Smrg # start of each line; $object doesn't have directory information. 224bccedf53Smrg # Version 6 uses the directory in both cases. 2257c5f6000Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 2267c5f6000Smrg test "x$dir" = "x$object" && dir= 2277c5f6000Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 228bccedf53Smrg if test "$libtool" = yes; then 2297c5f6000Smrg tmpdepfile1=$dir$base.u 2307c5f6000Smrg tmpdepfile2=$base.u 2317c5f6000Smrg tmpdepfile3=$dir.libs/$base.u 232bccedf53Smrg "$@" -Wc,-M 233bccedf53Smrg else 2347c5f6000Smrg tmpdepfile1=$dir$base.u 2357c5f6000Smrg tmpdepfile2=$dir$base.u 2367c5f6000Smrg tmpdepfile3=$dir$base.u 237bccedf53Smrg "$@" -M 238bccedf53Smrg fi 239bccedf53Smrg stat=$? 240bccedf53Smrg 241bccedf53Smrg if test $stat -eq 0; then : 242bccedf53Smrg else 2437c5f6000Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 244bccedf53Smrg exit $stat 245bccedf53Smrg fi 246bccedf53Smrg 2477c5f6000Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 2487c5f6000Smrg do 2497c5f6000Smrg test -f "$tmpdepfile" && break 2507c5f6000Smrg done 251bccedf53Smrg if test -f "$tmpdepfile"; then 252bccedf53Smrg # Each line is of the form `foo.o: dependent.h'. 253bccedf53Smrg # Do two passes, one to just change these to 254bccedf53Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 2557c5f6000Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 2567c5f6000Smrg # That's a tab and a space in the []. 2577c5f6000Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 258bccedf53Smrg else 259bccedf53Smrg # The sourcefile does not contain any dependencies, so just 260bccedf53Smrg # store a dummy comment line, to avoid errors with the Makefile 261bccedf53Smrg # "include basename.Plo" scheme. 262bccedf53Smrg echo "#dummy" > "$depfile" 263bccedf53Smrg fi 264bccedf53Smrg rm -f "$tmpdepfile" 265bccedf53Smrg ;; 266bccedf53Smrg 267bccedf53Smrgicc) 268bccedf53Smrg # Intel's C compiler understands `-MD -MF file'. However on 269bccedf53Smrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 270bccedf53Smrg # ICC 7.0 will fill foo.d with something like 271bccedf53Smrg # foo.o: sub/foo.c 272bccedf53Smrg # foo.o: sub/foo.h 273bccedf53Smrg # which is wrong. We want: 274bccedf53Smrg # sub/foo.o: sub/foo.c 275bccedf53Smrg # sub/foo.o: sub/foo.h 276bccedf53Smrg # sub/foo.c: 277bccedf53Smrg # sub/foo.h: 278bccedf53Smrg # ICC 7.1 will output 279bccedf53Smrg # foo.o: sub/foo.c sub/foo.h 280bccedf53Smrg # and will wrap long lines using \ : 281bccedf53Smrg # foo.o: sub/foo.c ... \ 282bccedf53Smrg # sub/foo.h ... \ 283bccedf53Smrg # ... 284bccedf53Smrg 285bccedf53Smrg "$@" -MD -MF "$tmpdepfile" 286bccedf53Smrg stat=$? 287bccedf53Smrg if test $stat -eq 0; then : 288bccedf53Smrg else 289bccedf53Smrg rm -f "$tmpdepfile" 290bccedf53Smrg exit $stat 291bccedf53Smrg fi 292bccedf53Smrg rm -f "$depfile" 293bccedf53Smrg # Each line is of the form `foo.o: dependent.h', 294bccedf53Smrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 295bccedf53Smrg # Do two passes, one to just change these to 296bccedf53Smrg # `$object: dependent.h' and one to simply `dependent.h:'. 297bccedf53Smrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 298bccedf53Smrg # Some versions of the HPUX 10.20 sed can't process this invocation 299bccedf53Smrg # correctly. Breaking it into two sed invocations is a workaround. 300bccedf53Smrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 301bccedf53Smrg sed -e 's/$/ :/' >> "$depfile" 302bccedf53Smrg rm -f "$tmpdepfile" 303bccedf53Smrg ;; 304bccedf53Smrg 3057c5f6000Smrghp2) 3067c5f6000Smrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 3077c5f6000Smrg # compilers, which have integrated preprocessors. The correct option 3087c5f6000Smrg # to use with these is +Maked; it writes dependencies to a file named 3097c5f6000Smrg # 'foo.d', which lands next to the object file, wherever that 3107c5f6000Smrg # happens to be. 3117c5f6000Smrg # Much of this is similar to the tru64 case; see comments there. 3127c5f6000Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 3137c5f6000Smrg test "x$dir" = "x$object" && dir= 3147c5f6000Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 3157c5f6000Smrg if test "$libtool" = yes; then 3167c5f6000Smrg tmpdepfile1=$dir$base.d 3177c5f6000Smrg tmpdepfile2=$dir.libs/$base.d 3187c5f6000Smrg "$@" -Wc,+Maked 3197c5f6000Smrg else 3207c5f6000Smrg tmpdepfile1=$dir$base.d 3217c5f6000Smrg tmpdepfile2=$dir$base.d 3227c5f6000Smrg "$@" +Maked 3237c5f6000Smrg fi 3247c5f6000Smrg stat=$? 3257c5f6000Smrg if test $stat -eq 0; then : 3267c5f6000Smrg else 3277c5f6000Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" 3287c5f6000Smrg exit $stat 3297c5f6000Smrg fi 3307c5f6000Smrg 3317c5f6000Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 3327c5f6000Smrg do 3337c5f6000Smrg test -f "$tmpdepfile" && break 3347c5f6000Smrg done 3357c5f6000Smrg if test -f "$tmpdepfile"; then 3367c5f6000Smrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 3377c5f6000Smrg # Add `dependent.h:' lines. 3387c5f6000Smrg sed -ne '2,${ 3397c5f6000Smrg s/^ *// 3407c5f6000Smrg s/ \\*$// 3417c5f6000Smrg s/$/:/ 3427c5f6000Smrg p 3437c5f6000Smrg }' "$tmpdepfile" >> "$depfile" 3447c5f6000Smrg else 3457c5f6000Smrg echo "#dummy" > "$depfile" 3467c5f6000Smrg fi 3477c5f6000Smrg rm -f "$tmpdepfile" "$tmpdepfile2" 3487c5f6000Smrg ;; 3497c5f6000Smrg 350bccedf53Smrgtru64) 351bccedf53Smrg # The Tru64 compiler uses -MD to generate dependencies as a side 352bccedf53Smrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 353bccedf53Smrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 354bccedf53Smrg # dependencies in `foo.d' instead, so we check for that too. 355bccedf53Smrg # Subdirectories are respected. 356bccedf53Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 357bccedf53Smrg test "x$dir" = "x$object" && dir= 358bccedf53Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 359bccedf53Smrg 360bccedf53Smrg if test "$libtool" = yes; then 3617c5f6000Smrg # With Tru64 cc, shared objects can also be used to make a 3627c5f6000Smrg # static library. This mechanism is used in libtool 1.4 series to 3637c5f6000Smrg # handle both shared and static libraries in a single compilation. 3647c5f6000Smrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 3657c5f6000Smrg # 3667c5f6000Smrg # With libtool 1.5 this exception was removed, and libtool now 3677c5f6000Smrg # generates 2 separate objects for the 2 libraries. These two 3687c5f6000Smrg # compilations output dependencies in $dir.libs/$base.o.d and 3697c5f6000Smrg # in $dir$base.o.d. We have to check for both files, because 3707c5f6000Smrg # one of the two compilations can be disabled. We should prefer 3717c5f6000Smrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 3727c5f6000Smrg # automatically cleaned when .libs/ is deleted, while ignoring 3737c5f6000Smrg # the former would cause a distcleancheck panic. 3747c5f6000Smrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 3757c5f6000Smrg tmpdepfile2=$dir$base.o.d # libtool 1.5 3767c5f6000Smrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 3777c5f6000Smrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 378bccedf53Smrg "$@" -Wc,-MD 379bccedf53Smrg else 3807c5f6000Smrg tmpdepfile1=$dir$base.o.d 3817c5f6000Smrg tmpdepfile2=$dir$base.d 3827c5f6000Smrg tmpdepfile3=$dir$base.d 3837c5f6000Smrg tmpdepfile4=$dir$base.d 384bccedf53Smrg "$@" -MD 385bccedf53Smrg fi 386bccedf53Smrg 387bccedf53Smrg stat=$? 388bccedf53Smrg if test $stat -eq 0; then : 389bccedf53Smrg else 3907c5f6000Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 391bccedf53Smrg exit $stat 392bccedf53Smrg fi 393bccedf53Smrg 3947c5f6000Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 3957c5f6000Smrg do 3967c5f6000Smrg test -f "$tmpdepfile" && break 3977c5f6000Smrg done 398bccedf53Smrg if test -f "$tmpdepfile"; then 399bccedf53Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 400bccedf53Smrg # That's a tab and a space in the []. 401bccedf53Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 402bccedf53Smrg else 403bccedf53Smrg echo "#dummy" > "$depfile" 404bccedf53Smrg fi 405bccedf53Smrg rm -f "$tmpdepfile" 406bccedf53Smrg ;; 407bccedf53Smrg 408bccedf53Smrg#nosideeffect) 409bccedf53Smrg # This comment above is used by automake to tell side-effect 410bccedf53Smrg # dependency tracking mechanisms from slower ones. 411bccedf53Smrg 412bccedf53Smrgdashmstdout) 413bccedf53Smrg # Important note: in order to support this mode, a compiler *must* 414bccedf53Smrg # always write the preprocessed file to stdout, regardless of -o. 415bccedf53Smrg "$@" || exit $? 416bccedf53Smrg 417bccedf53Smrg # Remove the call to Libtool. 418bccedf53Smrg if test "$libtool" = yes; then 4197c5f6000Smrg while test "X$1" != 'X--mode=compile'; do 420bccedf53Smrg shift 421bccedf53Smrg done 422bccedf53Smrg shift 423bccedf53Smrg fi 424bccedf53Smrg 425bccedf53Smrg # Remove `-o $object'. 426bccedf53Smrg IFS=" " 427bccedf53Smrg for arg 428bccedf53Smrg do 429bccedf53Smrg case $arg in 430bccedf53Smrg -o) 431bccedf53Smrg shift 432bccedf53Smrg ;; 433bccedf53Smrg $object) 434bccedf53Smrg shift 435bccedf53Smrg ;; 436bccedf53Smrg *) 437bccedf53Smrg set fnord "$@" "$arg" 438bccedf53Smrg shift # fnord 439bccedf53Smrg shift # $arg 440bccedf53Smrg ;; 441bccedf53Smrg esac 442bccedf53Smrg done 443bccedf53Smrg 444bccedf53Smrg test -z "$dashmflag" && dashmflag=-M 445bccedf53Smrg # Require at least two characters before searching for `:' 446bccedf53Smrg # in the target name. This is to cope with DOS-style filenames: 447bccedf53Smrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 448bccedf53Smrg "$@" $dashmflag | 449bccedf53Smrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 450bccedf53Smrg rm -f "$depfile" 451bccedf53Smrg cat < "$tmpdepfile" > "$depfile" 452bccedf53Smrg tr ' ' ' 453bccedf53Smrg' < "$tmpdepfile" | \ 454bccedf53Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 455bccedf53Smrg## correctly. Breaking it into two sed invocations is a workaround. 456bccedf53Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 457bccedf53Smrg rm -f "$tmpdepfile" 458bccedf53Smrg ;; 459bccedf53Smrg 460bccedf53SmrgdashXmstdout) 461bccedf53Smrg # This case only exists to satisfy depend.m4. It is never actually 462bccedf53Smrg # run, as this mode is specially recognized in the preamble. 463bccedf53Smrg exit 1 464bccedf53Smrg ;; 465bccedf53Smrg 466bccedf53Smrgmakedepend) 467bccedf53Smrg "$@" || exit $? 468bccedf53Smrg # Remove any Libtool call 469bccedf53Smrg if test "$libtool" = yes; then 4707c5f6000Smrg while test "X$1" != 'X--mode=compile'; do 471bccedf53Smrg shift 472bccedf53Smrg done 473bccedf53Smrg shift 474bccedf53Smrg fi 475bccedf53Smrg # X makedepend 476bccedf53Smrg shift 4777c5f6000Smrg cleared=no eat=no 4787c5f6000Smrg for arg 4797c5f6000Smrg do 480bccedf53Smrg case $cleared in 481bccedf53Smrg no) 482bccedf53Smrg set ""; shift 483bccedf53Smrg cleared=yes ;; 484bccedf53Smrg esac 4857c5f6000Smrg if test $eat = yes; then 4867c5f6000Smrg eat=no 4877c5f6000Smrg continue 4887c5f6000Smrg fi 489bccedf53Smrg case "$arg" in 490bccedf53Smrg -D*|-I*) 491bccedf53Smrg set fnord "$@" "$arg"; shift ;; 492bccedf53Smrg # Strip any option that makedepend may not understand. Remove 493bccedf53Smrg # the object too, otherwise makedepend will parse it as a source file. 4947c5f6000Smrg -arch) 4957c5f6000Smrg eat=yes ;; 496bccedf53Smrg -*|$object) 497bccedf53Smrg ;; 498bccedf53Smrg *) 499bccedf53Smrg set fnord "$@" "$arg"; shift ;; 500bccedf53Smrg esac 501bccedf53Smrg done 5027c5f6000Smrg obj_suffix=`echo "$object" | sed 's/^.*\././'` 503bccedf53Smrg touch "$tmpdepfile" 504bccedf53Smrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 505bccedf53Smrg rm -f "$depfile" 506bccedf53Smrg cat < "$tmpdepfile" > "$depfile" 507bccedf53Smrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 508bccedf53Smrg' | \ 509bccedf53Smrg## Some versions of the HPUX 10.20 sed can't process this invocation 510bccedf53Smrg## correctly. Breaking it into two sed invocations is a workaround. 511bccedf53Smrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 512bccedf53Smrg rm -f "$tmpdepfile" "$tmpdepfile".bak 513bccedf53Smrg ;; 514bccedf53Smrg 515bccedf53Smrgcpp) 516bccedf53Smrg # Important note: in order to support this mode, a compiler *must* 517bccedf53Smrg # always write the preprocessed file to stdout. 518bccedf53Smrg "$@" || exit $? 519bccedf53Smrg 520bccedf53Smrg # Remove the call to Libtool. 521bccedf53Smrg if test "$libtool" = yes; then 5227c5f6000Smrg while test "X$1" != 'X--mode=compile'; do 523bccedf53Smrg shift 524bccedf53Smrg done 525bccedf53Smrg shift 526bccedf53Smrg fi 527bccedf53Smrg 528bccedf53Smrg # Remove `-o $object'. 529bccedf53Smrg IFS=" " 530bccedf53Smrg for arg 531bccedf53Smrg do 532bccedf53Smrg case $arg in 533bccedf53Smrg -o) 534bccedf53Smrg shift 535bccedf53Smrg ;; 536bccedf53Smrg $object) 537bccedf53Smrg shift 538bccedf53Smrg ;; 539bccedf53Smrg *) 540bccedf53Smrg set fnord "$@" "$arg" 541bccedf53Smrg shift # fnord 542bccedf53Smrg shift # $arg 543bccedf53Smrg ;; 544bccedf53Smrg esac 545bccedf53Smrg done 546bccedf53Smrg 547bccedf53Smrg "$@" -E | 5487c5f6000Smrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 5497c5f6000Smrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 550bccedf53Smrg sed '$ s: \\$::' > "$tmpdepfile" 551bccedf53Smrg rm -f "$depfile" 552bccedf53Smrg echo "$object : \\" > "$depfile" 553bccedf53Smrg cat < "$tmpdepfile" >> "$depfile" 554bccedf53Smrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 555bccedf53Smrg rm -f "$tmpdepfile" 556bccedf53Smrg ;; 557bccedf53Smrg 558bccedf53Smrgmsvisualcpp) 559bccedf53Smrg # Important note: in order to support this mode, a compiler *must* 5607c5f6000Smrg # always write the preprocessed file to stdout. 561bccedf53Smrg "$@" || exit $? 5627c5f6000Smrg 5637c5f6000Smrg # Remove the call to Libtool. 5647c5f6000Smrg if test "$libtool" = yes; then 5657c5f6000Smrg while test "X$1" != 'X--mode=compile'; do 5667c5f6000Smrg shift 5677c5f6000Smrg done 5687c5f6000Smrg shift 5697c5f6000Smrg fi 5707c5f6000Smrg 571bccedf53Smrg IFS=" " 572bccedf53Smrg for arg 573bccedf53Smrg do 574bccedf53Smrg case "$arg" in 5757c5f6000Smrg -o) 5767c5f6000Smrg shift 5777c5f6000Smrg ;; 5787c5f6000Smrg $object) 5797c5f6000Smrg shift 5807c5f6000Smrg ;; 581bccedf53Smrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 582bccedf53Smrg set fnord "$@" 583bccedf53Smrg shift 584bccedf53Smrg shift 585bccedf53Smrg ;; 586bccedf53Smrg *) 587bccedf53Smrg set fnord "$@" "$arg" 588bccedf53Smrg shift 589bccedf53Smrg shift 590bccedf53Smrg ;; 591bccedf53Smrg esac 592bccedf53Smrg done 5937c5f6000Smrg "$@" -E 2>/dev/null | 5947c5f6000Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" 595bccedf53Smrg rm -f "$depfile" 596bccedf53Smrg echo "$object : \\" > "$depfile" 5977c5f6000Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 598bccedf53Smrg echo " " >> "$depfile" 5997c5f6000Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" 600bccedf53Smrg rm -f "$tmpdepfile" 601bccedf53Smrg ;; 602bccedf53Smrg 6037c5f6000Smrgmsvcmsys) 6047c5f6000Smrg # This case exists only to let depend.m4 do its work. It works by 6057c5f6000Smrg # looking at the text of this script. This case will never be run, 6067c5f6000Smrg # since it is checked for above. 6077c5f6000Smrg exit 1 6087c5f6000Smrg ;; 6097c5f6000Smrg 610bccedf53Smrgnone) 611bccedf53Smrg exec "$@" 612bccedf53Smrg ;; 613bccedf53Smrg 614bccedf53Smrg*) 615bccedf53Smrg echo "Unknown depmode $depmode" 1>&2 616bccedf53Smrg exit 1 617bccedf53Smrg ;; 618bccedf53Smrgesac 619bccedf53Smrg 620bccedf53Smrgexit 0 6217c5f6000Smrg 6227c5f6000Smrg# Local Variables: 6237c5f6000Smrg# mode: shell-script 6247c5f6000Smrg# sh-indentation: 2 6257c5f6000Smrg# eval: (add-hook 'write-file-hooks 'time-stamp) 6267c5f6000Smrg# time-stamp-start: "scriptversion=" 6277c5f6000Smrg# time-stamp-format: "%:y-%02m-%02d.%02H" 6287c5f6000Smrg# time-stamp-time-zone: "UTC" 6297c5f6000Smrg# time-stamp-end: "; # UTC" 6307c5f6000Smrg# End: 631