depcomp revision 7e6fb56f
17e6fb56fSmrg#! /bin/sh 27e6fb56fSmrg# depcomp - compile a program generating dependencies as side-effects 37e6fb56fSmrg 47e6fb56fSmrgscriptversion=2009-04-28.21; # UTC 57e6fb56fSmrg 67e6fb56fSmrg# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free 77e6fb56fSmrg# Software Foundation, Inc. 87e6fb56fSmrg 97e6fb56fSmrg# This program is free software; you can redistribute it and/or modify 107e6fb56fSmrg# it under the terms of the GNU General Public License as published by 117e6fb56fSmrg# the Free Software Foundation; either version 2, or (at your option) 127e6fb56fSmrg# any later version. 137e6fb56fSmrg 147e6fb56fSmrg# This program is distributed in the hope that it will be useful, 157e6fb56fSmrg# but WITHOUT ANY WARRANTY; without even the implied warranty of 167e6fb56fSmrg# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 177e6fb56fSmrg# GNU General Public License for more details. 187e6fb56fSmrg 197e6fb56fSmrg# You should have received a copy of the GNU General Public License 207e6fb56fSmrg# along with this program. If not, see <http://www.gnu.org/licenses/>. 217e6fb56fSmrg 227e6fb56fSmrg# As a special exception to the GNU General Public License, if you 237e6fb56fSmrg# distribute this file as part of a program that contains a 247e6fb56fSmrg# configuration script generated by Autoconf, you may include it under 257e6fb56fSmrg# the same distribution terms that you use for the rest of that program. 267e6fb56fSmrg 277e6fb56fSmrg# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 287e6fb56fSmrg 297e6fb56fSmrgcase $1 in 307e6fb56fSmrg '') 317e6fb56fSmrg echo "$0: No command. Try \`$0 --help' for more information." 1>&2 327e6fb56fSmrg exit 1; 337e6fb56fSmrg ;; 347e6fb56fSmrg -h | --h*) 357e6fb56fSmrg cat <<\EOF 367e6fb56fSmrgUsage: depcomp [--help] [--version] PROGRAM [ARGS] 377e6fb56fSmrg 387e6fb56fSmrgRun PROGRAMS ARGS to compile a file, generating dependencies 397e6fb56fSmrgas side-effects. 407e6fb56fSmrg 417e6fb56fSmrgEnvironment variables: 427e6fb56fSmrg depmode Dependency tracking mode. 437e6fb56fSmrg source Source file read by `PROGRAMS ARGS'. 447e6fb56fSmrg object Object file output by `PROGRAMS ARGS'. 457e6fb56fSmrg DEPDIR directory where to store dependencies. 467e6fb56fSmrg depfile Dependency file to output. 477e6fb56fSmrg tmpdepfile Temporary file to use when outputing dependencies. 487e6fb56fSmrg libtool Whether libtool is used (yes/no). 497e6fb56fSmrg 507e6fb56fSmrgReport bugs to <bug-automake@gnu.org>. 517e6fb56fSmrgEOF 527e6fb56fSmrg exit $? 537e6fb56fSmrg ;; 547e6fb56fSmrg -v | --v*) 557e6fb56fSmrg echo "depcomp $scriptversion" 567e6fb56fSmrg exit $? 577e6fb56fSmrg ;; 587e6fb56fSmrgesac 597e6fb56fSmrg 607e6fb56fSmrgif test -z "$depmode" || test -z "$source" || test -z "$object"; then 617e6fb56fSmrg echo "depcomp: Variables source, object and depmode must be set" 1>&2 627e6fb56fSmrg exit 1 637e6fb56fSmrgfi 647e6fb56fSmrg 657e6fb56fSmrg# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 667e6fb56fSmrgdepfile=${depfile-`echo "$object" | 677e6fb56fSmrg sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} 687e6fb56fSmrgtmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} 697e6fb56fSmrg 707e6fb56fSmrgrm -f "$tmpdepfile" 717e6fb56fSmrg 727e6fb56fSmrg# Some modes work just like other modes, but use different flags. We 737e6fb56fSmrg# parameterize here, but still list the modes in the big case below, 747e6fb56fSmrg# to make depend.m4 easier to write. Note that we *cannot* use a case 757e6fb56fSmrg# here, because this file can only contain one case statement. 767e6fb56fSmrgif test "$depmode" = hp; then 777e6fb56fSmrg # HP compiler uses -M and no extra arg. 787e6fb56fSmrg gccflag=-M 797e6fb56fSmrg depmode=gcc 807e6fb56fSmrgfi 817e6fb56fSmrg 827e6fb56fSmrgif test "$depmode" = dashXmstdout; then 837e6fb56fSmrg # This is just like dashmstdout with a different argument. 847e6fb56fSmrg dashmflag=-xM 857e6fb56fSmrg depmode=dashmstdout 867e6fb56fSmrgfi 877e6fb56fSmrg 887e6fb56fSmrgcygpath_u="cygpath -u -f -" 897e6fb56fSmrgif test "$depmode" = msvcmsys; then 907e6fb56fSmrg # This is just like msvisualcpp but w/o cygpath translation. 917e6fb56fSmrg # Just convert the backslash-escaped backslashes to single forward 927e6fb56fSmrg # slashes to satisfy depend.m4 937e6fb56fSmrg cygpath_u="sed s,\\\\\\\\,/,g" 947e6fb56fSmrg depmode=msvisualcpp 957e6fb56fSmrgfi 967e6fb56fSmrg 977e6fb56fSmrgcase "$depmode" in 987e6fb56fSmrggcc3) 997e6fb56fSmrg## gcc 3 implements dependency tracking that does exactly what 1007e6fb56fSmrg## we want. Yay! Note: for some reason libtool 1.4 doesn't like 1017e6fb56fSmrg## it if -MD -MP comes after the -MF stuff. Hmm. 1027e6fb56fSmrg## Unfortunately, FreeBSD c89 acceptance of flags depends upon 1037e6fb56fSmrg## the command line argument order; so add the flags where they 1047e6fb56fSmrg## appear in depend2.am. Note that the slowdown incurred here 1057e6fb56fSmrg## affects only configure: in makefiles, %FASTDEP% shortcuts this. 1067e6fb56fSmrg for arg 1077e6fb56fSmrg do 1087e6fb56fSmrg case $arg in 1097e6fb56fSmrg -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 1107e6fb56fSmrg *) set fnord "$@" "$arg" ;; 1117e6fb56fSmrg esac 1127e6fb56fSmrg shift # fnord 1137e6fb56fSmrg shift # $arg 1147e6fb56fSmrg done 1157e6fb56fSmrg "$@" 1167e6fb56fSmrg stat=$? 1177e6fb56fSmrg if test $stat -eq 0; then : 1187e6fb56fSmrg else 1197e6fb56fSmrg rm -f "$tmpdepfile" 1207e6fb56fSmrg exit $stat 1217e6fb56fSmrg fi 1227e6fb56fSmrg mv "$tmpdepfile" "$depfile" 1237e6fb56fSmrg ;; 1247e6fb56fSmrg 1257e6fb56fSmrggcc) 1267e6fb56fSmrg## There are various ways to get dependency output from gcc. Here's 1277e6fb56fSmrg## why we pick this rather obscure method: 1287e6fb56fSmrg## - Don't want to use -MD because we'd like the dependencies to end 1297e6fb56fSmrg## up in a subdir. Having to rename by hand is ugly. 1307e6fb56fSmrg## (We might end up doing this anyway to support other compilers.) 1317e6fb56fSmrg## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like 1327e6fb56fSmrg## -MM, not -M (despite what the docs say). 1337e6fb56fSmrg## - Using -M directly means running the compiler twice (even worse 1347e6fb56fSmrg## than renaming). 1357e6fb56fSmrg if test -z "$gccflag"; then 1367e6fb56fSmrg gccflag=-MD, 1377e6fb56fSmrg fi 1387e6fb56fSmrg "$@" -Wp,"$gccflag$tmpdepfile" 1397e6fb56fSmrg stat=$? 1407e6fb56fSmrg if test $stat -eq 0; then : 1417e6fb56fSmrg else 1427e6fb56fSmrg rm -f "$tmpdepfile" 1437e6fb56fSmrg exit $stat 1447e6fb56fSmrg fi 1457e6fb56fSmrg rm -f "$depfile" 1467e6fb56fSmrg echo "$object : \\" > "$depfile" 1477e6fb56fSmrg alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 1487e6fb56fSmrg## The second -e expression handles DOS-style file names with drive letters. 1497e6fb56fSmrg sed -e 's/^[^:]*: / /' \ 1507e6fb56fSmrg -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" 1517e6fb56fSmrg## This next piece of magic avoids the `deleted header file' problem. 1527e6fb56fSmrg## The problem is that when a header file which appears in a .P file 1537e6fb56fSmrg## is deleted, the dependency causes make to die (because there is 1547e6fb56fSmrg## typically no way to rebuild the header). We avoid this by adding 1557e6fb56fSmrg## dummy dependencies for each header file. Too bad gcc doesn't do 1567e6fb56fSmrg## this for us directly. 1577e6fb56fSmrg tr ' ' ' 1587e6fb56fSmrg' < "$tmpdepfile" | 1597e6fb56fSmrg## Some versions of gcc put a space before the `:'. On the theory 1607e6fb56fSmrg## that the space means something, we add a space to the output as 1617e6fb56fSmrg## well. 1627e6fb56fSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 1637e6fb56fSmrg## correctly. Breaking it into two sed invocations is a workaround. 1647e6fb56fSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 1657e6fb56fSmrg rm -f "$tmpdepfile" 1667e6fb56fSmrg ;; 1677e6fb56fSmrg 1687e6fb56fSmrghp) 1697e6fb56fSmrg # This case exists only to let depend.m4 do its work. It works by 1707e6fb56fSmrg # looking at the text of this script. This case will never be run, 1717e6fb56fSmrg # since it is checked for above. 1727e6fb56fSmrg exit 1 1737e6fb56fSmrg ;; 1747e6fb56fSmrg 1757e6fb56fSmrgsgi) 1767e6fb56fSmrg if test "$libtool" = yes; then 1777e6fb56fSmrg "$@" "-Wp,-MDupdate,$tmpdepfile" 1787e6fb56fSmrg else 1797e6fb56fSmrg "$@" -MDupdate "$tmpdepfile" 1807e6fb56fSmrg fi 1817e6fb56fSmrg stat=$? 1827e6fb56fSmrg if test $stat -eq 0; then : 1837e6fb56fSmrg else 1847e6fb56fSmrg rm -f "$tmpdepfile" 1857e6fb56fSmrg exit $stat 1867e6fb56fSmrg fi 1877e6fb56fSmrg rm -f "$depfile" 1887e6fb56fSmrg 1897e6fb56fSmrg if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 1907e6fb56fSmrg echo "$object : \\" > "$depfile" 1917e6fb56fSmrg 1927e6fb56fSmrg # Clip off the initial element (the dependent). Don't try to be 1937e6fb56fSmrg # clever and replace this with sed code, as IRIX sed won't handle 1947e6fb56fSmrg # lines with more than a fixed number of characters (4096 in 1957e6fb56fSmrg # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; 1967e6fb56fSmrg # the IRIX cc adds comments like `#:fec' to the end of the 1977e6fb56fSmrg # dependency line. 1987e6fb56fSmrg tr ' ' ' 1997e6fb56fSmrg' < "$tmpdepfile" \ 2007e6fb56fSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ 2017e6fb56fSmrg tr ' 2027e6fb56fSmrg' ' ' >> "$depfile" 2037e6fb56fSmrg echo >> "$depfile" 2047e6fb56fSmrg 2057e6fb56fSmrg # The second pass generates a dummy entry for each header file. 2067e6fb56fSmrg tr ' ' ' 2077e6fb56fSmrg' < "$tmpdepfile" \ 2087e6fb56fSmrg | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ 2097e6fb56fSmrg >> "$depfile" 2107e6fb56fSmrg else 2117e6fb56fSmrg # The sourcefile does not contain any dependencies, so just 2127e6fb56fSmrg # store a dummy comment line, to avoid errors with the Makefile 2137e6fb56fSmrg # "include basename.Plo" scheme. 2147e6fb56fSmrg echo "#dummy" > "$depfile" 2157e6fb56fSmrg fi 2167e6fb56fSmrg rm -f "$tmpdepfile" 2177e6fb56fSmrg ;; 2187e6fb56fSmrg 2197e6fb56fSmrgaix) 2207e6fb56fSmrg # The C for AIX Compiler uses -M and outputs the dependencies 2217e6fb56fSmrg # in a .u file. In older versions, this file always lives in the 2227e6fb56fSmrg # current directory. Also, the AIX compiler puts `$object:' at the 2237e6fb56fSmrg # start of each line; $object doesn't have directory information. 2247e6fb56fSmrg # Version 6 uses the directory in both cases. 2257e6fb56fSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 2267e6fb56fSmrg test "x$dir" = "x$object" && dir= 2277e6fb56fSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 2287e6fb56fSmrg if test "$libtool" = yes; then 2297e6fb56fSmrg tmpdepfile1=$dir$base.u 2307e6fb56fSmrg tmpdepfile2=$base.u 2317e6fb56fSmrg tmpdepfile3=$dir.libs/$base.u 2327e6fb56fSmrg "$@" -Wc,-M 2337e6fb56fSmrg else 2347e6fb56fSmrg tmpdepfile1=$dir$base.u 2357e6fb56fSmrg tmpdepfile2=$dir$base.u 2367e6fb56fSmrg tmpdepfile3=$dir$base.u 2377e6fb56fSmrg "$@" -M 2387e6fb56fSmrg fi 2397e6fb56fSmrg stat=$? 2407e6fb56fSmrg 2417e6fb56fSmrg if test $stat -eq 0; then : 2427e6fb56fSmrg else 2437e6fb56fSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 2447e6fb56fSmrg exit $stat 2457e6fb56fSmrg fi 2467e6fb56fSmrg 2477e6fb56fSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 2487e6fb56fSmrg do 2497e6fb56fSmrg test -f "$tmpdepfile" && break 2507e6fb56fSmrg done 2517e6fb56fSmrg if test -f "$tmpdepfile"; then 2527e6fb56fSmrg # Each line is of the form `foo.o: dependent.h'. 2537e6fb56fSmrg # Do two passes, one to just change these to 2547e6fb56fSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 2557e6fb56fSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 2567e6fb56fSmrg # That's a tab and a space in the []. 2577e6fb56fSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 2587e6fb56fSmrg else 2597e6fb56fSmrg # The sourcefile does not contain any dependencies, so just 2607e6fb56fSmrg # store a dummy comment line, to avoid errors with the Makefile 2617e6fb56fSmrg # "include basename.Plo" scheme. 2627e6fb56fSmrg echo "#dummy" > "$depfile" 2637e6fb56fSmrg fi 2647e6fb56fSmrg rm -f "$tmpdepfile" 2657e6fb56fSmrg ;; 2667e6fb56fSmrg 2677e6fb56fSmrgicc) 2687e6fb56fSmrg # Intel's C compiler understands `-MD -MF file'. However on 2697e6fb56fSmrg # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c 2707e6fb56fSmrg # ICC 7.0 will fill foo.d with something like 2717e6fb56fSmrg # foo.o: sub/foo.c 2727e6fb56fSmrg # foo.o: sub/foo.h 2737e6fb56fSmrg # which is wrong. We want: 2747e6fb56fSmrg # sub/foo.o: sub/foo.c 2757e6fb56fSmrg # sub/foo.o: sub/foo.h 2767e6fb56fSmrg # sub/foo.c: 2777e6fb56fSmrg # sub/foo.h: 2787e6fb56fSmrg # ICC 7.1 will output 2797e6fb56fSmrg # foo.o: sub/foo.c sub/foo.h 2807e6fb56fSmrg # and will wrap long lines using \ : 2817e6fb56fSmrg # foo.o: sub/foo.c ... \ 2827e6fb56fSmrg # sub/foo.h ... \ 2837e6fb56fSmrg # ... 2847e6fb56fSmrg 2857e6fb56fSmrg "$@" -MD -MF "$tmpdepfile" 2867e6fb56fSmrg stat=$? 2877e6fb56fSmrg if test $stat -eq 0; then : 2887e6fb56fSmrg else 2897e6fb56fSmrg rm -f "$tmpdepfile" 2907e6fb56fSmrg exit $stat 2917e6fb56fSmrg fi 2927e6fb56fSmrg rm -f "$depfile" 2937e6fb56fSmrg # Each line is of the form `foo.o: dependent.h', 2947e6fb56fSmrg # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. 2957e6fb56fSmrg # Do two passes, one to just change these to 2967e6fb56fSmrg # `$object: dependent.h' and one to simply `dependent.h:'. 2977e6fb56fSmrg sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 2987e6fb56fSmrg # Some versions of the HPUX 10.20 sed can't process this invocation 2997e6fb56fSmrg # correctly. Breaking it into two sed invocations is a workaround. 3007e6fb56fSmrg sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 3017e6fb56fSmrg sed -e 's/$/ :/' >> "$depfile" 3027e6fb56fSmrg rm -f "$tmpdepfile" 3037e6fb56fSmrg ;; 3047e6fb56fSmrg 3057e6fb56fSmrghp2) 3067e6fb56fSmrg # The "hp" stanza above does not work with aCC (C++) and HP's ia64 3077e6fb56fSmrg # compilers, which have integrated preprocessors. The correct option 3087e6fb56fSmrg # to use with these is +Maked; it writes dependencies to a file named 3097e6fb56fSmrg # 'foo.d', which lands next to the object file, wherever that 3107e6fb56fSmrg # happens to be. 3117e6fb56fSmrg # Much of this is similar to the tru64 case; see comments there. 3127e6fb56fSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 3137e6fb56fSmrg test "x$dir" = "x$object" && dir= 3147e6fb56fSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 3157e6fb56fSmrg if test "$libtool" = yes; then 3167e6fb56fSmrg tmpdepfile1=$dir$base.d 3177e6fb56fSmrg tmpdepfile2=$dir.libs/$base.d 3187e6fb56fSmrg "$@" -Wc,+Maked 3197e6fb56fSmrg else 3207e6fb56fSmrg tmpdepfile1=$dir$base.d 3217e6fb56fSmrg tmpdepfile2=$dir$base.d 3227e6fb56fSmrg "$@" +Maked 3237e6fb56fSmrg fi 3247e6fb56fSmrg stat=$? 3257e6fb56fSmrg if test $stat -eq 0; then : 3267e6fb56fSmrg else 3277e6fb56fSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" 3287e6fb56fSmrg exit $stat 3297e6fb56fSmrg fi 3307e6fb56fSmrg 3317e6fb56fSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 3327e6fb56fSmrg do 3337e6fb56fSmrg test -f "$tmpdepfile" && break 3347e6fb56fSmrg done 3357e6fb56fSmrg if test -f "$tmpdepfile"; then 3367e6fb56fSmrg sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 3377e6fb56fSmrg # Add `dependent.h:' lines. 3387e6fb56fSmrg sed -ne '2,${ 3397e6fb56fSmrg s/^ *// 3407e6fb56fSmrg s/ \\*$// 3417e6fb56fSmrg s/$/:/ 3427e6fb56fSmrg p 3437e6fb56fSmrg }' "$tmpdepfile" >> "$depfile" 3447e6fb56fSmrg else 3457e6fb56fSmrg echo "#dummy" > "$depfile" 3467e6fb56fSmrg fi 3477e6fb56fSmrg rm -f "$tmpdepfile" "$tmpdepfile2" 3487e6fb56fSmrg ;; 3497e6fb56fSmrg 3507e6fb56fSmrgtru64) 3517e6fb56fSmrg # The Tru64 compiler uses -MD to generate dependencies as a side 3527e6fb56fSmrg # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. 3537e6fb56fSmrg # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put 3547e6fb56fSmrg # dependencies in `foo.d' instead, so we check for that too. 3557e6fb56fSmrg # Subdirectories are respected. 3567e6fb56fSmrg dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 3577e6fb56fSmrg test "x$dir" = "x$object" && dir= 3587e6fb56fSmrg base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 3597e6fb56fSmrg 3607e6fb56fSmrg if test "$libtool" = yes; then 3617e6fb56fSmrg # With Tru64 cc, shared objects can also be used to make a 3627e6fb56fSmrg # static library. This mechanism is used in libtool 1.4 series to 3637e6fb56fSmrg # handle both shared and static libraries in a single compilation. 3647e6fb56fSmrg # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 3657e6fb56fSmrg # 3667e6fb56fSmrg # With libtool 1.5 this exception was removed, and libtool now 3677e6fb56fSmrg # generates 2 separate objects for the 2 libraries. These two 3687e6fb56fSmrg # compilations output dependencies in $dir.libs/$base.o.d and 3697e6fb56fSmrg # in $dir$base.o.d. We have to check for both files, because 3707e6fb56fSmrg # one of the two compilations can be disabled. We should prefer 3717e6fb56fSmrg # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 3727e6fb56fSmrg # automatically cleaned when .libs/ is deleted, while ignoring 3737e6fb56fSmrg # the former would cause a distcleancheck panic. 3747e6fb56fSmrg tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 3757e6fb56fSmrg tmpdepfile2=$dir$base.o.d # libtool 1.5 3767e6fb56fSmrg tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 3777e6fb56fSmrg tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 3787e6fb56fSmrg "$@" -Wc,-MD 3797e6fb56fSmrg else 3807e6fb56fSmrg tmpdepfile1=$dir$base.o.d 3817e6fb56fSmrg tmpdepfile2=$dir$base.d 3827e6fb56fSmrg tmpdepfile3=$dir$base.d 3837e6fb56fSmrg tmpdepfile4=$dir$base.d 3847e6fb56fSmrg "$@" -MD 3857e6fb56fSmrg fi 3867e6fb56fSmrg 3877e6fb56fSmrg stat=$? 3887e6fb56fSmrg if test $stat -eq 0; then : 3897e6fb56fSmrg else 3907e6fb56fSmrg rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 3917e6fb56fSmrg exit $stat 3927e6fb56fSmrg fi 3937e6fb56fSmrg 3947e6fb56fSmrg for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 3957e6fb56fSmrg do 3967e6fb56fSmrg test -f "$tmpdepfile" && break 3977e6fb56fSmrg done 3987e6fb56fSmrg if test -f "$tmpdepfile"; then 3997e6fb56fSmrg sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 4007e6fb56fSmrg # That's a tab and a space in the []. 4017e6fb56fSmrg sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" 4027e6fb56fSmrg else 4037e6fb56fSmrg echo "#dummy" > "$depfile" 4047e6fb56fSmrg fi 4057e6fb56fSmrg rm -f "$tmpdepfile" 4067e6fb56fSmrg ;; 4077e6fb56fSmrg 4087e6fb56fSmrg#nosideeffect) 4097e6fb56fSmrg # This comment above is used by automake to tell side-effect 4107e6fb56fSmrg # dependency tracking mechanisms from slower ones. 4117e6fb56fSmrg 4127e6fb56fSmrgdashmstdout) 4137e6fb56fSmrg # Important note: in order to support this mode, a compiler *must* 4147e6fb56fSmrg # always write the preprocessed file to stdout, regardless of -o. 4157e6fb56fSmrg "$@" || exit $? 4167e6fb56fSmrg 4177e6fb56fSmrg # Remove the call to Libtool. 4187e6fb56fSmrg if test "$libtool" = yes; then 4197e6fb56fSmrg while test "X$1" != 'X--mode=compile'; do 4207e6fb56fSmrg shift 4217e6fb56fSmrg done 4227e6fb56fSmrg shift 4237e6fb56fSmrg fi 4247e6fb56fSmrg 4257e6fb56fSmrg # Remove `-o $object'. 4267e6fb56fSmrg IFS=" " 4277e6fb56fSmrg for arg 4287e6fb56fSmrg do 4297e6fb56fSmrg case $arg in 4307e6fb56fSmrg -o) 4317e6fb56fSmrg shift 4327e6fb56fSmrg ;; 4337e6fb56fSmrg $object) 4347e6fb56fSmrg shift 4357e6fb56fSmrg ;; 4367e6fb56fSmrg *) 4377e6fb56fSmrg set fnord "$@" "$arg" 4387e6fb56fSmrg shift # fnord 4397e6fb56fSmrg shift # $arg 4407e6fb56fSmrg ;; 4417e6fb56fSmrg esac 4427e6fb56fSmrg done 4437e6fb56fSmrg 4447e6fb56fSmrg test -z "$dashmflag" && dashmflag=-M 4457e6fb56fSmrg # Require at least two characters before searching for `:' 4467e6fb56fSmrg # in the target name. This is to cope with DOS-style filenames: 4477e6fb56fSmrg # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. 4487e6fb56fSmrg "$@" $dashmflag | 4497e6fb56fSmrg sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" 4507e6fb56fSmrg rm -f "$depfile" 4517e6fb56fSmrg cat < "$tmpdepfile" > "$depfile" 4527e6fb56fSmrg tr ' ' ' 4537e6fb56fSmrg' < "$tmpdepfile" | \ 4547e6fb56fSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 4557e6fb56fSmrg## correctly. Breaking it into two sed invocations is a workaround. 4567e6fb56fSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 4577e6fb56fSmrg rm -f "$tmpdepfile" 4587e6fb56fSmrg ;; 4597e6fb56fSmrg 4607e6fb56fSmrgdashXmstdout) 4617e6fb56fSmrg # This case only exists to satisfy depend.m4. It is never actually 4627e6fb56fSmrg # run, as this mode is specially recognized in the preamble. 4637e6fb56fSmrg exit 1 4647e6fb56fSmrg ;; 4657e6fb56fSmrg 4667e6fb56fSmrgmakedepend) 4677e6fb56fSmrg "$@" || exit $? 4687e6fb56fSmrg # Remove any Libtool call 4697e6fb56fSmrg if test "$libtool" = yes; then 4707e6fb56fSmrg while test "X$1" != 'X--mode=compile'; do 4717e6fb56fSmrg shift 4727e6fb56fSmrg done 4737e6fb56fSmrg shift 4747e6fb56fSmrg fi 4757e6fb56fSmrg # X makedepend 4767e6fb56fSmrg shift 4777e6fb56fSmrg cleared=no eat=no 4787e6fb56fSmrg for arg 4797e6fb56fSmrg do 4807e6fb56fSmrg case $cleared in 4817e6fb56fSmrg no) 4827e6fb56fSmrg set ""; shift 4837e6fb56fSmrg cleared=yes ;; 4847e6fb56fSmrg esac 4857e6fb56fSmrg if test $eat = yes; then 4867e6fb56fSmrg eat=no 4877e6fb56fSmrg continue 4887e6fb56fSmrg fi 4897e6fb56fSmrg case "$arg" in 4907e6fb56fSmrg -D*|-I*) 4917e6fb56fSmrg set fnord "$@" "$arg"; shift ;; 4927e6fb56fSmrg # Strip any option that makedepend may not understand. Remove 4937e6fb56fSmrg # the object too, otherwise makedepend will parse it as a source file. 4947e6fb56fSmrg -arch) 4957e6fb56fSmrg eat=yes ;; 4967e6fb56fSmrg -*|$object) 4977e6fb56fSmrg ;; 4987e6fb56fSmrg *) 4997e6fb56fSmrg set fnord "$@" "$arg"; shift ;; 5007e6fb56fSmrg esac 5017e6fb56fSmrg done 5027e6fb56fSmrg obj_suffix=`echo "$object" | sed 's/^.*\././'` 5037e6fb56fSmrg touch "$tmpdepfile" 5047e6fb56fSmrg ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 5057e6fb56fSmrg rm -f "$depfile" 5067e6fb56fSmrg cat < "$tmpdepfile" > "$depfile" 5077e6fb56fSmrg sed '1,2d' "$tmpdepfile" | tr ' ' ' 5087e6fb56fSmrg' | \ 5097e6fb56fSmrg## Some versions of the HPUX 10.20 sed can't process this invocation 5107e6fb56fSmrg## correctly. Breaking it into two sed invocations is a workaround. 5117e6fb56fSmrg sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 5127e6fb56fSmrg rm -f "$tmpdepfile" "$tmpdepfile".bak 5137e6fb56fSmrg ;; 5147e6fb56fSmrg 5157e6fb56fSmrgcpp) 5167e6fb56fSmrg # Important note: in order to support this mode, a compiler *must* 5177e6fb56fSmrg # always write the preprocessed file to stdout. 5187e6fb56fSmrg "$@" || exit $? 5197e6fb56fSmrg 5207e6fb56fSmrg # Remove the call to Libtool. 5217e6fb56fSmrg if test "$libtool" = yes; then 5227e6fb56fSmrg while test "X$1" != 'X--mode=compile'; do 5237e6fb56fSmrg shift 5247e6fb56fSmrg done 5257e6fb56fSmrg shift 5267e6fb56fSmrg fi 5277e6fb56fSmrg 5287e6fb56fSmrg # Remove `-o $object'. 5297e6fb56fSmrg IFS=" " 5307e6fb56fSmrg for arg 5317e6fb56fSmrg do 5327e6fb56fSmrg case $arg in 5337e6fb56fSmrg -o) 5347e6fb56fSmrg shift 5357e6fb56fSmrg ;; 5367e6fb56fSmrg $object) 5377e6fb56fSmrg shift 5387e6fb56fSmrg ;; 5397e6fb56fSmrg *) 5407e6fb56fSmrg set fnord "$@" "$arg" 5417e6fb56fSmrg shift # fnord 5427e6fb56fSmrg shift # $arg 5437e6fb56fSmrg ;; 5447e6fb56fSmrg esac 5457e6fb56fSmrg done 5467e6fb56fSmrg 5477e6fb56fSmrg "$@" -E | 5487e6fb56fSmrg sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ 5497e6fb56fSmrg -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | 5507e6fb56fSmrg sed '$ s: \\$::' > "$tmpdepfile" 5517e6fb56fSmrg rm -f "$depfile" 5527e6fb56fSmrg echo "$object : \\" > "$depfile" 5537e6fb56fSmrg cat < "$tmpdepfile" >> "$depfile" 5547e6fb56fSmrg sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 5557e6fb56fSmrg rm -f "$tmpdepfile" 5567e6fb56fSmrg ;; 5577e6fb56fSmrg 5587e6fb56fSmrgmsvisualcpp) 5597e6fb56fSmrg # Important note: in order to support this mode, a compiler *must* 5607e6fb56fSmrg # always write the preprocessed file to stdout. 5617e6fb56fSmrg "$@" || exit $? 5627e6fb56fSmrg 5637e6fb56fSmrg # Remove the call to Libtool. 5647e6fb56fSmrg if test "$libtool" = yes; then 5657e6fb56fSmrg while test "X$1" != 'X--mode=compile'; do 5667e6fb56fSmrg shift 5677e6fb56fSmrg done 5687e6fb56fSmrg shift 5697e6fb56fSmrg fi 5707e6fb56fSmrg 5717e6fb56fSmrg IFS=" " 5727e6fb56fSmrg for arg 5737e6fb56fSmrg do 5747e6fb56fSmrg case "$arg" in 5757e6fb56fSmrg -o) 5767e6fb56fSmrg shift 5777e6fb56fSmrg ;; 5787e6fb56fSmrg $object) 5797e6fb56fSmrg shift 5807e6fb56fSmrg ;; 5817e6fb56fSmrg "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 5827e6fb56fSmrg set fnord "$@" 5837e6fb56fSmrg shift 5847e6fb56fSmrg shift 5857e6fb56fSmrg ;; 5867e6fb56fSmrg *) 5877e6fb56fSmrg set fnord "$@" "$arg" 5887e6fb56fSmrg shift 5897e6fb56fSmrg shift 5907e6fb56fSmrg ;; 5917e6fb56fSmrg esac 5927e6fb56fSmrg done 5937e6fb56fSmrg "$@" -E 2>/dev/null | 5947e6fb56fSmrg sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" 5957e6fb56fSmrg rm -f "$depfile" 5967e6fb56fSmrg echo "$object : \\" > "$depfile" 5977e6fb56fSmrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 5987e6fb56fSmrg echo " " >> "$depfile" 5997e6fb56fSmrg sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" 6007e6fb56fSmrg rm -f "$tmpdepfile" 6017e6fb56fSmrg ;; 6027e6fb56fSmrg 6037e6fb56fSmrgmsvcmsys) 6047e6fb56fSmrg # This case exists only to let depend.m4 do its work. It works by 6057e6fb56fSmrg # looking at the text of this script. This case will never be run, 6067e6fb56fSmrg # since it is checked for above. 6077e6fb56fSmrg exit 1 6087e6fb56fSmrg ;; 6097e6fb56fSmrg 6107e6fb56fSmrgnone) 6117e6fb56fSmrg exec "$@" 6127e6fb56fSmrg ;; 6137e6fb56fSmrg 6147e6fb56fSmrg*) 6157e6fb56fSmrg echo "Unknown depmode $depmode" 1>&2 6167e6fb56fSmrg exit 1 6177e6fb56fSmrg ;; 6187e6fb56fSmrgesac 6197e6fb56fSmrg 6207e6fb56fSmrgexit 0 6217e6fb56fSmrg 6227e6fb56fSmrg# Local Variables: 6237e6fb56fSmrg# mode: shell-script 6247e6fb56fSmrg# sh-indentation: 2 6257e6fb56fSmrg# eval: (add-hook 'write-file-hooks 'time-stamp) 6267e6fb56fSmrg# time-stamp-start: "scriptversion=" 6277e6fb56fSmrg# time-stamp-format: "%:y-%02m-%02d.%02H" 6287e6fb56fSmrg# time-stamp-time-zone: "UTC" 6297e6fb56fSmrg# time-stamp-end: "; # UTC" 6307e6fb56fSmrg# End: 631