depcomp revision 75cbef56
13eed67faSmbalmer#! /bin/sh 23eed67faSmbalmer# depcomp - compile a program generating dependencies as side-effects 33eed67faSmbalmer 475cbef56Smrgscriptversion=2011-12-04.11; # UTC 53eed67faSmbalmer 675cbef56Smrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 775cbef56Smrg# 2011 Free Software Foundation, Inc. 83eed67faSmbalmer 93eed67faSmbalmer# This program is free software; you can redistribute it and/or modify 103eed67faSmbalmer# it under the terms of the GNU General Public License as published by 113eed67faSmbalmer# the Free Software Foundation; either version 2, or (at your option) 123eed67faSmbalmer# any later version. 133eed67faSmbalmer 143eed67faSmbalmer# This program is distributed in the hope that it will be useful, 153eed67faSmbalmer# but WITHOUT ANY WARRANTY; without even the implied warranty of 163eed67faSmbalmer# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 173eed67faSmbalmer# GNU General Public License for more details. 183eed67faSmbalmer 193eed67faSmbalmer# You should have received a copy of the GNU General Public License 20dc407927Smrg# along with this program. If not, see <http://www.gnu.org/licenses/>. 213eed67faSmbalmer 223eed67faSmbalmer# As a special exception to the GNU General Public License, if you 233eed67faSmbalmer# distribute this file as part of a program that contains a 243eed67faSmbalmer# configuration script generated by Autoconf, you may include it under 253eed67faSmbalmer# the same distribution terms that you use for the rest of that program. 263eed67faSmbalmer 273eed67faSmbalmer# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 283eed67faSmbalmer 293eed67faSmbalmercase $1 in 303eed67faSmbalmer '') 313eed67faSmbalmer echo "$0: No command. Try \`$0 --help' for more information." 1>&2 323eed67faSmbalmer exit 1; 333eed67faSmbalmer ;; 343eed67faSmbalmer -h | --h*) 353eed67faSmbalmer cat <<\EOF 363eed67faSmbalmerUsage: depcomp [--help] [--version] PROGRAM [ARGS] 373eed67faSmbalmer 383eed67faSmbalmerRun PROGRAMS ARGS to compile a file, generating dependencies 393eed67faSmbalmeras side-effects. 403eed67faSmbalmer 413eed67faSmbalmerEnvironment variables: 423eed67faSmbalmer depmode Dependency tracking mode. 433eed67faSmbalmer source Source file read by `PROGRAMS ARGS'. 443eed67faSmbalmer object Object file output by `PROGRAMS ARGS'. 453eed67faSmbalmer DEPDIR directory where to store dependencies. 463eed67faSmbalmer depfile Dependency file to output. 4775cbef56Smrg tmpdepfile Temporary file to use when outputting dependencies. 483eed67faSmbalmer libtool Whether libtool is used (yes/no). 493eed67faSmbalmer 503eed67faSmbalmerReport bugs to <bug-automake@gnu.org>. 513eed67faSmbalmerEOF 523eed67faSmbalmer exit $? 533eed67faSmbalmer ;; 543eed67faSmbalmer -v | --v*) 553eed67faSmbalmer echo "depcomp $scriptversion" 563eed67faSmbalmer exit $? 573eed67faSmbalmer ;; 583eed67faSmbalmeresac 593eed67faSmbalmer 603eed67faSmbalmerif test -z "$depmode" || test -z "$source" || test -z "$object"; then 613eed67faSmbalmer echo "depcomp: Variables source, object and depmode must be set" 1>&2 623eed67faSmbalmer exit 1 633eed67faSmbalmerfi 643eed67faSmbalmer 653eed67faSmbalmer# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 663eed67faSmbalmerdepfile=${depfile-`echo "$object" | 673eed67faSmbalmer sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 683eed67faSmbalmertmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 693eed67faSmbalmer 703eed67faSmbalmerrm -f "$tmpdepfile" 713eed67faSmbalmer 723eed67faSmbalmer# Some modes work just like other modes, but use different flags. We 733eed67faSmbalmer# parameterize here, but still list the modes in the big case below, 743eed67faSmbalmer# to make depend.m4 easier to write. Note that we *cannot* use a case 753eed67faSmbalmer# here, because this file can only contain one case statement. 763eed67faSmbalmerif test "$depmode" = hp; then 773eed67faSmbalmer # HP compiler uses -M and no extra arg. 783eed67faSmbalmer gccflag=-M 793eed67faSmbalmer depmode=gcc 803eed67faSmbalmerfi 813eed67faSmbalmer 823eed67faSmbalmerif test "$depmode" = dashXmstdout; then 833eed67faSmbalmer # This is just like dashmstdout with a different argument. 843eed67faSmbalmer dashmflag=-xM 853eed67faSmbalmer depmode=dashmstdout 863eed67faSmbalmerfi 873eed67faSmbalmer 88dc407927Smrgcygpath_u="cygpath -u -f -" 89dc407927Smrgif test "$depmode" = msvcmsys; then 90dc407927Smrg # This is just like msvisualcpp but w/o cygpath translation. 91dc407927Smrg # Just convert the backslash-escaped backslashes to single forward 92dc407927Smrg # slashes to satisfy depend.m4 9375cbef56Smrg cygpath_u='sed s,\\\\,/,g' 94dc407927Smrg depmode=msvisualcpp 95dc407927Smrgfi 96dc407927Smrg 9775cbef56Smrgif test "$depmode" = msvc7msys; then 9875cbef56Smrg # This is just like msvc7 but w/o cygpath translation. 9975cbef56Smrg # Just convert the backslash-escaped backslashes to single forward 10075cbef56Smrg # slashes to satisfy depend.m4 10175cbef56Smrg cygpath_u='sed s,\\\\,/,g' 10275cbef56Smrg depmode=msvc7 10375cbef56Smrgfi 10475cbef56Smrg 1053eed67faSmbalmercase "$depmode" in 1063eed67faSmbalmergcc3) 1073eed67faSmbalmer## gcc 3 implements dependency tracking that does exactly what 1083eed67faSmbalmer## we want. Yay! Note: for some reason libtool 1.4 doesn't like 1093eed67faSmbalmer## it if -MD -MP comes after the -MF stuff. Hmm. 110dc407927Smrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 111dc407927Smrg## the command line argument order; so add the flags where they 112dc407927Smrg## appear in depend2.am. Note that the slowdown incurred here 113dc407927Smrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 114dc407927Smrg for arg 115dc407927Smrg do 116dc407927Smrg case $arg in 117dc407927Smrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 118dc407927Smrg *) set fnord "$@" "$arg" ;; 119dc407927Smrg esac 120dc407927Smrg shift # fnord 121dc407927Smrg shift # $arg 122dc407927Smrg done 123dc407927Smrg "$@" 1243eed67faSmbalmer stat=$? 1253eed67faSmbalmer if test $stat -eq 0; then : 1263eed67faSmbalmer else 1273eed67faSmbalmer rm -f "$tmpdepfile" 1283eed67faSmbalmer exit $stat 1293eed67faSmbalmer fi 1303eed67faSmbalmer mv "$tmpdepfile" "$depfile" 1313eed67faSmbalmer ;; 1323eed67faSmbalmer 1333eed67faSmbalmergcc) 1343eed67faSmbalmer## There are various ways to get dependency output from gcc. Here's 1353eed67faSmbalmer## why we pick this rather obscure method: 1363eed67faSmbalmer## - Don't want to use -MD because we'd like the dependencies to end 1373eed67faSmbalmer## up in a subdir. Having to rename by hand is ugly. 1383eed67faSmbalmer## (We might end up doing this anyway to support other compilers.) 1393eed67faSmbalmer## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 1403eed67faSmbalmer## -MM, not -M (despite what the docs say). 1413eed67faSmbalmer## - Using -M directly means running the compiler twice (even worse 1423eed67faSmbalmer## than renaming). 1433eed67faSmbalmer if test -z "$gccflag"; then 1443eed67faSmbalmer gccflag=-MD, 1453eed67faSmbalmer fi 1463eed67faSmbalmer "$@" -Wp,"$gccflag$tmpdepfile" 1473eed67faSmbalmer stat=$? 1483eed67faSmbalmer if test $stat -eq 0; then : 1493eed67faSmbalmer else 1503eed67faSmbalmer rm -f "$tmpdepfile" 1513eed67faSmbalmer exit $stat 1523eed67faSmbalmer fi 1533eed67faSmbalmer rm -f "$depfile" 1543eed67faSmbalmer echo "$object : \\" > "$depfile" 1553eed67faSmbalmer alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 1563eed67faSmbalmer## The second -e expression handles DOS-style file names with drive letters. 1573eed67faSmbalmer sed -e 's/^[^:]*: / /' \ 1583eed67faSmbalmer -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 1593eed67faSmbalmer## This next piece of magic avoids the `deleted header file' problem. 1603eed67faSmbalmer## The problem is that when a header file which appears in a .P file 1613eed67faSmbalmer## is deleted, the dependency causes make to die (because there is 1623eed67faSmbalmer## typically no way to rebuild the header). We avoid this by adding 1633eed67faSmbalmer## dummy dependencies for each header file. Too bad gcc doesn't do 1643eed67faSmbalmer## this for us directly. 1653eed67faSmbalmer tr ' ' ' 1663eed67faSmbalmer' < "$tmpdepfile" | 1673eed67faSmbalmer## Some versions of gcc put a space before the `:'. On the theory 1683eed67faSmbalmer## that the space means something, we add a space to the output as 16975cbef56Smrg## well. hp depmode also adds that space, but also prefixes the VPATH 17075cbef56Smrg## to the object. Take care to not repeat it in the output. 1713eed67faSmbalmer## Some versions of the HPUX 10.20 sed can't process this invocation 1723eed67faSmbalmer## correctly. Breaking it into two sed invocations is a workaround. 17375cbef56Smrg sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ 17475cbef56Smrg | sed -e 's/$/ :/' >> "$depfile" 1753eed67faSmbalmer rm -f "$tmpdepfile" 1763eed67faSmbalmer ;; 1773eed67faSmbalmer 1783eed67faSmbalmerhp) 1793eed67faSmbalmer # This case exists only to let depend.m4 do its work. It works by 1803eed67faSmbalmer # looking at the text of this script. This case will never be run, 1813eed67faSmbalmer # since it is checked for above. 1823eed67faSmbalmer exit 1 1833eed67faSmbalmer ;; 1843eed67faSmbalmer 1853eed67faSmbalmersgi) 1863eed67faSmbalmer if test "$libtool" = yes; then 1873eed67faSmbalmer "$@" "-Wp,-MDupdate,$tmpdepfile" 1883eed67faSmbalmer else 1893eed67faSmbalmer "$@" -MDupdate "$tmpdepfile" 1903eed67faSmbalmer fi 1913eed67faSmbalmer stat=$? 1923eed67faSmbalmer if test $stat -eq 0; then : 1933eed67faSmbalmer else 1943eed67faSmbalmer rm -f "$tmpdepfile" 1953eed67faSmbalmer exit $stat 1963eed67faSmbalmer fi 1973eed67faSmbalmer rm -f "$depfile" 1983eed67faSmbalmer 1993eed67faSmbalmer if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 2003eed67faSmbalmer echo "$object : \\" > "$depfile" 2013eed67faSmbalmer 2023eed67faSmbalmer # Clip off the initial element (the dependent). Don't try to be 2033eed67faSmbalmer # clever and replace this with sed code, as IRIX sed won't handle 2043eed67faSmbalmer # lines with more than a fixed number of characters (4096 in 2053eed67faSmbalmer # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 2063eed67faSmbalmer # the IRIX cc adds comments like `#:fec' to the end of the 2073eed67faSmbalmer # dependency line. 2083eed67faSmbalmer tr ' ' ' 2093eed67faSmbalmer' < "$tmpdepfile" \ 2103eed67faSmbalmer | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 2113eed67faSmbalmer tr ' 212dc407927Smrg' ' ' >> "$depfile" 213dc407927Smrg echo >> "$depfile" 2143eed67faSmbalmer 2153eed67faSmbalmer # The second pass generates a dummy entry for each header file. 2163eed67faSmbalmer tr ' ' ' 2173eed67faSmbalmer' < "$tmpdepfile" \ 2183eed67faSmbalmer | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 219dc407927Smrg >> "$depfile" 2203eed67faSmbalmer else 2213eed67faSmbalmer # The sourcefile does not contain any dependencies, so just 2223eed67faSmbalmer # store a dummy comment line, to avoid errors with the Makefile 2233eed67faSmbalmer # "include basename.Plo" scheme. 2243eed67faSmbalmer echo "#dummy" > "$depfile" 2253eed67faSmbalmer fi 2263eed67faSmbalmer rm -f "$tmpdepfile" 2273eed67faSmbalmer ;; 2283eed67faSmbalmer 2293eed67faSmbalmeraix) 2303eed67faSmbalmer # The C for AIX Compiler uses -M and outputs the dependencies 2313eed67faSmbalmer # in a .u file. In older versions, this file always lives in the 2323eed67faSmbalmer # current directory. Also, the AIX compiler puts `$object:' at the 2333eed67faSmbalmer # start of each line; $object doesn't have directory information. 2343eed67faSmbalmer # Version 6 uses the directory in both cases. 235dc407927Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 236dc407927Smrg test "x$dir" = "x$object" && dir= 237dc407927Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 2383eed67faSmbalmer if test "$libtool" = yes; then 239dc407927Smrg tmpdepfile1=$dir$base.u 240dc407927Smrg tmpdepfile2=$base.u 241dc407927Smrg tmpdepfile3=$dir.libs/$base.u 2423eed67faSmbalmer "$@" -Wc,-M 2433eed67faSmbalmer else 244dc407927Smrg tmpdepfile1=$dir$base.u 245dc407927Smrg tmpdepfile2=$dir$base.u 246dc407927Smrg tmpdepfile3=$dir$base.u 2473eed67faSmbalmer "$@" -M 2483eed67faSmbalmer fi 2493eed67faSmbalmer stat=$? 2503eed67faSmbalmer 2513eed67faSmbalmer if test $stat -eq 0; then : 2523eed67faSmbalmer else 253dc407927Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 2543eed67faSmbalmer exit $stat 2553eed67faSmbalmer fi 2563eed67faSmbalmer 257dc407927Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 258dc407927Smrg do 259dc407927Smrg test -f "$tmpdepfile" && break 260dc407927Smrg done 2613eed67faSmbalmer if test -f "$tmpdepfile"; then 2623eed67faSmbalmer # Each line is of the form `foo.o: dependent.h'. 2633eed67faSmbalmer # Do two passes, one to just change these to 2643eed67faSmbalmer # `$object: dependent.h' and one to simply `dependent.h:'. 265dc407927Smrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 266dc407927Smrg # That's a tab and a space in the []. 267dc407927Smrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 2683eed67faSmbalmer else 2693eed67faSmbalmer # The sourcefile does not contain any dependencies, so just 2703eed67faSmbalmer # store a dummy comment line, to avoid errors with the Makefile 2713eed67faSmbalmer # "include basename.Plo" scheme. 2723eed67faSmbalmer echo "#dummy" > "$depfile" 2733eed67faSmbalmer fi 2743eed67faSmbalmer rm -f "$tmpdepfile" 2753eed67faSmbalmer ;; 2763eed67faSmbalmer 2773eed67faSmbalmericc) 2783eed67faSmbalmer # Intel's C compiler understands `-MD -MF file'. However on 2793eed67faSmbalmer # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 2803eed67faSmbalmer # ICC 7.0 will fill foo.d with something like 2813eed67faSmbalmer # foo.o: sub/foo.c 2823eed67faSmbalmer # foo.o: sub/foo.h 2833eed67faSmbalmer # which is wrong. We want: 2843eed67faSmbalmer # sub/foo.o: sub/foo.c 2853eed67faSmbalmer # sub/foo.o: sub/foo.h 2863eed67faSmbalmer # sub/foo.c: 2873eed67faSmbalmer # sub/foo.h: 2883eed67faSmbalmer # ICC 7.1 will output 2893eed67faSmbalmer # foo.o: sub/foo.c sub/foo.h 2903eed67faSmbalmer # and will wrap long lines using \ : 2913eed67faSmbalmer # foo.o: sub/foo.c ... \ 2923eed67faSmbalmer # sub/foo.h ... \ 2933eed67faSmbalmer # ... 2943eed67faSmbalmer 2953eed67faSmbalmer "$@" -MD -MF "$tmpdepfile" 2963eed67faSmbalmer stat=$? 2973eed67faSmbalmer if test $stat -eq 0; then : 2983eed67faSmbalmer else 2993eed67faSmbalmer rm -f "$tmpdepfile" 3003eed67faSmbalmer exit $stat 3013eed67faSmbalmer fi 3023eed67faSmbalmer rm -f "$depfile" 3033eed67faSmbalmer # Each line is of the form `foo.o: dependent.h', 3043eed67faSmbalmer # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 3053eed67faSmbalmer # Do two passes, one to just change these to 3063eed67faSmbalmer # `$object: dependent.h' and one to simply `dependent.h:'. 3073eed67faSmbalmer sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 3083eed67faSmbalmer # Some versions of the HPUX 10.20 sed can't process this invocation 3093eed67faSmbalmer # correctly. Breaking it into two sed invocations is a workaround. 3103eed67faSmbalmer sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 3113eed67faSmbalmer sed -e 's/$/ :/' >> "$depfile" 3123eed67faSmbalmer rm -f "$tmpdepfile" 3133eed67faSmbalmer ;; 3143eed67faSmbalmer 315dc407927Smrghp2) 316dc407927Smrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 317dc407927Smrg # compilers, which have integrated preprocessors. The correct option 318dc407927Smrg # to use with these is +Maked; it writes dependencies to a file named 319dc407927Smrg # 'foo.d', which lands next to the object file, wherever that 320dc407927Smrg # happens to be. 321dc407927Smrg # Much of this is similar to the tru64 case; see comments there. 322dc407927Smrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 323dc407927Smrg test "x$dir" = "x$object" && dir= 324dc407927Smrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 325dc407927Smrg if test "$libtool" = yes; then 326dc407927Smrg tmpdepfile1=$dir$base.d 327dc407927Smrg tmpdepfile2=$dir.libs/$base.d 328dc407927Smrg "$@" -Wc,+Maked 329dc407927Smrg else 330dc407927Smrg tmpdepfile1=$dir$base.d 331dc407927Smrg tmpdepfile2=$dir$base.d 332dc407927Smrg "$@" +Maked 333dc407927Smrg fi 334dc407927Smrg stat=$? 335dc407927Smrg if test $stat -eq 0; then : 336dc407927Smrg else 337dc407927Smrg rm -f "$tmpdepfile1" "$tmpdepfile2" 338dc407927Smrg exit $stat 339dc407927Smrg fi 340dc407927Smrg 341dc407927Smrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 342dc407927Smrg do 343dc407927Smrg test -f "$tmpdepfile" && break 344dc407927Smrg done 345dc407927Smrg if test -f "$tmpdepfile"; then 346dc407927Smrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 347dc407927Smrg # Add `dependent.h:' lines. 348dc407927Smrg sed -ne '2,${ 349dc407927Smrg s/^ *// 350dc407927Smrg s/ \\*$// 351dc407927Smrg s/$/:/ 352dc407927Smrg p 353dc407927Smrg }' "$tmpdepfile" >> "$depfile" 354dc407927Smrg else 355dc407927Smrg echo "#dummy" > "$depfile" 356dc407927Smrg fi 357dc407927Smrg rm -f "$tmpdepfile" "$tmpdepfile2" 358dc407927Smrg ;; 359dc407927Smrg 3603eed67faSmbalmertru64) 3613eed67faSmbalmer # The Tru64 compiler uses -MD to generate dependencies as a side 3623eed67faSmbalmer # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 3633eed67faSmbalmer # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 3643eed67faSmbalmer # dependencies in `foo.d' instead, so we check for that too. 3653eed67faSmbalmer # Subdirectories are respected. 3663eed67faSmbalmer dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 3673eed67faSmbalmer test "x$dir" = "x$object" && dir= 3683eed67faSmbalmer base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 3693eed67faSmbalmer 3703eed67faSmbalmer if test "$libtool" = yes; then 3713eed67faSmbalmer # With Tru64 cc, shared objects can also be used to make a 372dc407927Smrg # static library. This mechanism is used in libtool 1.4 series to 3733eed67faSmbalmer # handle both shared and static libraries in a single compilation. 3743eed67faSmbalmer # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 3753eed67faSmbalmer # 3763eed67faSmbalmer # With libtool 1.5 this exception was removed, and libtool now 3773eed67faSmbalmer # generates 2 separate objects for the 2 libraries. These two 378dc407927Smrg # compilations output dependencies in $dir.libs/$base.o.d and 3793eed67faSmbalmer # in $dir$base.o.d. We have to check for both files, because 3803eed67faSmbalmer # one of the two compilations can be disabled. We should prefer 3813eed67faSmbalmer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 3823eed67faSmbalmer # automatically cleaned when .libs/ is deleted, while ignoring 3833eed67faSmbalmer # the former would cause a distcleancheck panic. 3843eed67faSmbalmer tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 3853eed67faSmbalmer tmpdepfile2=$dir$base.o.d # libtool 1.5 3863eed67faSmbalmer tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 3873eed67faSmbalmer tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 3883eed67faSmbalmer "$@" -Wc,-MD 3893eed67faSmbalmer else 3903eed67faSmbalmer tmpdepfile1=$dir$base.o.d 3913eed67faSmbalmer tmpdepfile2=$dir$base.d 3923eed67faSmbalmer tmpdepfile3=$dir$base.d 3933eed67faSmbalmer tmpdepfile4=$dir$base.d 3943eed67faSmbalmer "$@" -MD 3953eed67faSmbalmer fi 3963eed67faSmbalmer 3973eed67faSmbalmer stat=$? 3983eed67faSmbalmer if test $stat -eq 0; then : 3993eed67faSmbalmer else 4003eed67faSmbalmer rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 4013eed67faSmbalmer exit $stat 4023eed67faSmbalmer fi 4033eed67faSmbalmer 4043eed67faSmbalmer for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 4053eed67faSmbalmer do 4063eed67faSmbalmer test -f "$tmpdepfile" && break 4073eed67faSmbalmer done 4083eed67faSmbalmer if test -f "$tmpdepfile"; then 4093eed67faSmbalmer sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 4103eed67faSmbalmer # That's a tab and a space in the []. 4113eed67faSmbalmer sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 4123eed67faSmbalmer else 4133eed67faSmbalmer echo "#dummy" > "$depfile" 4143eed67faSmbalmer fi 4153eed67faSmbalmer rm -f "$tmpdepfile" 4163eed67faSmbalmer ;; 4173eed67faSmbalmer 41875cbef56Smrgmsvc7) 41975cbef56Smrg if test "$libtool" = yes; then 42075cbef56Smrg showIncludes=-Wc,-showIncludes 42175cbef56Smrg else 42275cbef56Smrg showIncludes=-showIncludes 42375cbef56Smrg fi 42475cbef56Smrg "$@" $showIncludes > "$tmpdepfile" 42575cbef56Smrg stat=$? 42675cbef56Smrg grep -v '^Note: including file: ' "$tmpdepfile" 42775cbef56Smrg if test "$stat" = 0; then : 42875cbef56Smrg else 42975cbef56Smrg rm -f "$tmpdepfile" 43075cbef56Smrg exit $stat 43175cbef56Smrg fi 43275cbef56Smrg rm -f "$depfile" 43375cbef56Smrg echo "$object : \\" > "$depfile" 43475cbef56Smrg # The first sed program below extracts the file names and escapes 43575cbef56Smrg # backslashes for cygpath. The second sed program outputs the file 43675cbef56Smrg # name when reading, but also accumulates all include files in the 43775cbef56Smrg # hold buffer in order to output them again at the end. This only 43875cbef56Smrg # works with sed implementations that can handle large buffers. 43975cbef56Smrg sed < "$tmpdepfile" -n ' 44075cbef56Smrg/^Note: including file: *\(.*\)/ { 44175cbef56Smrg s//\1/ 44275cbef56Smrg s/\\/\\\\/g 44375cbef56Smrg p 44475cbef56Smrg}' | $cygpath_u | sort -u | sed -n ' 44575cbef56Smrgs/ /\\ /g 44675cbef56Smrgs/\(.*\)/ \1 \\/p 44775cbef56Smrgs/.\(.*\) \\/\1:/ 44875cbef56SmrgH 44975cbef56Smrg$ { 45075cbef56Smrg s/.*/ / 45175cbef56Smrg G 45275cbef56Smrg p 45375cbef56Smrg}' >> "$depfile" 45475cbef56Smrg rm -f "$tmpdepfile" 45575cbef56Smrg ;; 45675cbef56Smrg 45775cbef56Smrgmsvc7msys) 45875cbef56Smrg # This case exists only to let depend.m4 do its work. It works by 45975cbef56Smrg # looking at the text of this script. This case will never be run, 46075cbef56Smrg # since it is checked for above. 46175cbef56Smrg exit 1 46275cbef56Smrg ;; 46375cbef56Smrg 4643eed67faSmbalmer#nosideeffect) 4653eed67faSmbalmer # This comment above is used by automake to tell side-effect 4663eed67faSmbalmer # dependency tracking mechanisms from slower ones. 4673eed67faSmbalmer 4683eed67faSmbalmerdashmstdout) 4693eed67faSmbalmer # Important note: in order to support this mode, a compiler *must* 4703eed67faSmbalmer # always write the preprocessed file to stdout, regardless of -o. 4713eed67faSmbalmer "$@" || exit $? 4723eed67faSmbalmer 4733eed67faSmbalmer # Remove the call to Libtool. 4743eed67faSmbalmer if test "$libtool" = yes; then 475dc407927Smrg while test "X$1" != 'X--mode=compile'; do 4763eed67faSmbalmer shift 4773eed67faSmbalmer done 4783eed67faSmbalmer shift 4793eed67faSmbalmer fi 4803eed67faSmbalmer 4813eed67faSmbalmer # Remove `-o $object'. 4823eed67faSmbalmer IFS=" " 4833eed67faSmbalmer for arg 4843eed67faSmbalmer do 4853eed67faSmbalmer case $arg in 4863eed67faSmbalmer -o) 4873eed67faSmbalmer shift 4883eed67faSmbalmer ;; 4893eed67faSmbalmer $object) 4903eed67faSmbalmer shift 4913eed67faSmbalmer ;; 4923eed67faSmbalmer *) 4933eed67faSmbalmer set fnord "$@" "$arg" 4943eed67faSmbalmer shift # fnord 4953eed67faSmbalmer shift # $arg 4963eed67faSmbalmer ;; 4973eed67faSmbalmer esac 4983eed67faSmbalmer done 4993eed67faSmbalmer 5003eed67faSmbalmer test -z "$dashmflag" && dashmflag=-M 5013eed67faSmbalmer # Require at least two characters before searching for `:' 5023eed67faSmbalmer # in the target name. This is to cope with DOS-style filenames: 5033eed67faSmbalmer # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 5043eed67faSmbalmer "$@" $dashmflag | 5053eed67faSmbalmer sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 5063eed67faSmbalmer rm -f "$depfile" 5073eed67faSmbalmer cat < "$tmpdepfile" > "$depfile" 5083eed67faSmbalmer tr ' ' ' 5093eed67faSmbalmer' < "$tmpdepfile" | \ 5103eed67faSmbalmer## Some versions of the HPUX 10.20 sed can't process this invocation 5113eed67faSmbalmer## correctly. Breaking it into two sed invocations is a workaround. 5123eed67faSmbalmer sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 5133eed67faSmbalmer rm -f "$tmpdepfile" 5143eed67faSmbalmer ;; 5153eed67faSmbalmer 5163eed67faSmbalmerdashXmstdout) 5173eed67faSmbalmer # This case only exists to satisfy depend.m4. It is never actually 5183eed67faSmbalmer # run, as this mode is specially recognized in the preamble. 5193eed67faSmbalmer exit 1 5203eed67faSmbalmer ;; 5213eed67faSmbalmer 5223eed67faSmbalmermakedepend) 5233eed67faSmbalmer "$@" || exit $? 5243eed67faSmbalmer # Remove any Libtool call 5253eed67faSmbalmer if test "$libtool" = yes; then 526dc407927Smrg while test "X$1" != 'X--mode=compile'; do 5273eed67faSmbalmer shift 5283eed67faSmbalmer done 5293eed67faSmbalmer shift 5303eed67faSmbalmer fi 5313eed67faSmbalmer # X makedepend 5323eed67faSmbalmer shift 533dc407927Smrg cleared=no eat=no 534dc407927Smrg for arg 535dc407927Smrg do 5363eed67faSmbalmer case $cleared in 5373eed67faSmbalmer no) 5383eed67faSmbalmer set ""; shift 5393eed67faSmbalmer cleared=yes ;; 5403eed67faSmbalmer esac 541dc407927Smrg if test $eat = yes; then 542dc407927Smrg eat=no 543dc407927Smrg continue 544dc407927Smrg fi 5453eed67faSmbalmer case "$arg" in 5463eed67faSmbalmer -D*|-I*) 5473eed67faSmbalmer set fnord "$@" "$arg"; shift ;; 5483eed67faSmbalmer # Strip any option that makedepend may not understand. Remove 5493eed67faSmbalmer # the object too, otherwise makedepend will parse it as a source file. 550dc407927Smrg -arch) 551dc407927Smrg eat=yes ;; 5523eed67faSmbalmer -*|$object) 5533eed67faSmbalmer ;; 5543eed67faSmbalmer *) 5553eed67faSmbalmer set fnord "$@" "$arg"; shift ;; 5563eed67faSmbalmer esac 5573eed67faSmbalmer done 558dc407927Smrg obj_suffix=`echo "$object" | sed 's/^.*\././'` 5593eed67faSmbalmer touch "$tmpdepfile" 5603eed67faSmbalmer ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 5613eed67faSmbalmer rm -f "$depfile" 56275cbef56Smrg # makedepend may prepend the VPATH from the source file name to the object. 56375cbef56Smrg # No need to regex-escape $object, excess matching of '.' is harmless. 56475cbef56Smrg sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" 5653eed67faSmbalmer sed '1,2d' "$tmpdepfile" | tr ' ' ' 5663eed67faSmbalmer' | \ 5673eed67faSmbalmer## Some versions of the HPUX 10.20 sed can't process this invocation 5683eed67faSmbalmer## correctly. Breaking it into two sed invocations is a workaround. 5693eed67faSmbalmer sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 5703eed67faSmbalmer rm -f "$tmpdepfile" "$tmpdepfile".bak 5713eed67faSmbalmer ;; 5723eed67faSmbalmer 5733eed67faSmbalmercpp) 5743eed67faSmbalmer # Important note: in order to support this mode, a compiler *must* 5753eed67faSmbalmer # always write the preprocessed file to stdout. 5763eed67faSmbalmer "$@" || exit $? 5773eed67faSmbalmer 5783eed67faSmbalmer # Remove the call to Libtool. 5793eed67faSmbalmer if test "$libtool" = yes; then 580dc407927Smrg while test "X$1" != 'X--mode=compile'; do 5813eed67faSmbalmer shift 5823eed67faSmbalmer done 5833eed67faSmbalmer shift 5843eed67faSmbalmer fi 5853eed67faSmbalmer 5863eed67faSmbalmer # Remove `-o $object'. 5873eed67faSmbalmer IFS=" " 5883eed67faSmbalmer for arg 5893eed67faSmbalmer do 5903eed67faSmbalmer case $arg in 5913eed67faSmbalmer -o) 5923eed67faSmbalmer shift 5933eed67faSmbalmer ;; 5943eed67faSmbalmer $object) 5953eed67faSmbalmer shift 5963eed67faSmbalmer ;; 5973eed67faSmbalmer *) 5983eed67faSmbalmer set fnord "$@" "$arg" 5993eed67faSmbalmer shift # fnord 6003eed67faSmbalmer shift # $arg 6013eed67faSmbalmer ;; 6023eed67faSmbalmer esac 6033eed67faSmbalmer done 6043eed67faSmbalmer 6053eed67faSmbalmer "$@" -E | 6063eed67faSmbalmer sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 6073eed67faSmbalmer -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 6083eed67faSmbalmer sed '$ s: \\$::' > "$tmpdepfile" 6093eed67faSmbalmer rm -f "$depfile" 6103eed67faSmbalmer echo "$object : \\" > "$depfile" 6113eed67faSmbalmer cat < "$tmpdepfile" >> "$depfile" 6123eed67faSmbalmer sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 6133eed67faSmbalmer rm -f "$tmpdepfile" 6143eed67faSmbalmer ;; 6153eed67faSmbalmer 6163eed67faSmbalmermsvisualcpp) 6173eed67faSmbalmer # Important note: in order to support this mode, a compiler *must* 618dc407927Smrg # always write the preprocessed file to stdout. 6193eed67faSmbalmer "$@" || exit $? 620dc407927Smrg 621dc407927Smrg # Remove the call to Libtool. 622dc407927Smrg if test "$libtool" = yes; then 623dc407927Smrg while test "X$1" != 'X--mode=compile'; do 624dc407927Smrg shift 625dc407927Smrg done 626dc407927Smrg shift 627dc407927Smrg fi 628dc407927Smrg 6293eed67faSmbalmer IFS=" " 6303eed67faSmbalmer for arg 6313eed67faSmbalmer do 6323eed67faSmbalmer case "$arg" in 633dc407927Smrg -o) 634dc407927Smrg shift 635dc407927Smrg ;; 636dc407927Smrg $object) 637dc407927Smrg shift 638dc407927Smrg ;; 6393eed67faSmbalmer "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 6403eed67faSmbalmer set fnord "$@" 6413eed67faSmbalmer shift 6423eed67faSmbalmer shift 6433eed67faSmbalmer ;; 6443eed67faSmbalmer *) 6453eed67faSmbalmer set fnord "$@" "$arg" 6463eed67faSmbalmer shift 6473eed67faSmbalmer shift 6483eed67faSmbalmer ;; 6493eed67faSmbalmer esac 6503eed67faSmbalmer done 651dc407927Smrg "$@" -E 2>/dev/null | 652dc407927Smrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" 6533eed67faSmbalmer rm -f "$depfile" 6543eed67faSmbalmer echo "$object : \\" > "$depfile" 655dc407927Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 6563eed67faSmbalmer echo " " >> "$depfile" 657dc407927Smrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" 6583eed67faSmbalmer rm -f "$tmpdepfile" 6593eed67faSmbalmer ;; 6603eed67faSmbalmer 661dc407927Smrgmsvcmsys) 662dc407927Smrg # This case exists only to let depend.m4 do its work. It works by 663dc407927Smrg # looking at the text of this script. This case will never be run, 664dc407927Smrg # since it is checked for above. 665dc407927Smrg exit 1 666dc407927Smrg ;; 667dc407927Smrg 6683eed67faSmbalmernone) 6693eed67faSmbalmer exec "$@" 6703eed67faSmbalmer ;; 6713eed67faSmbalmer 6723eed67faSmbalmer*) 6733eed67faSmbalmer echo "Unknown depmode $depmode" 1>&2 6743eed67faSmbalmer exit 1 6753eed67faSmbalmer ;; 6763eed67faSmbalmeresac 6773eed67faSmbalmer 6783eed67faSmbalmerexit 0 6793eed67faSmbalmer 6803eed67faSmbalmer# Local Variables: 6813eed67faSmbalmer# mode: shell-script 6823eed67faSmbalmer# sh-indentation: 2 6833eed67faSmbalmer# eval: (add-hook 'write-file-hooks 'time-stamp) 6843eed67faSmbalmer# time-stamp-start: "scriptversion=" 6853eed67faSmbalmer# time-stamp-format: "%:y-%02m-%02d.%02H" 686dc407927Smrg# time-stamp-time-zone: "UTC" 687dc407927Smrg# time-stamp-end: "; # UTC" 6883eed67faSmbalmer# End: 689