depcomp (251886) | depcomp (269851) |
---|---|
1#! /bin/sh 2# depcomp - compile a program generating dependencies as side-effects 3 | 1#! /bin/sh 2# depcomp - compile a program generating dependencies as side-effects 3 |
4scriptversion=2005-07-09.11 | 4scriptversion=2012-03-27.16; # UTC |
5 | 5 |
6# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. | 6# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, 7# 2011, 2012 Free Software Foundation, Inc. |
7 8# This program is free software; you can redistribute it and/or modify 9# it under the terms of the GNU General Public License as published by 10# the Free Software Foundation; either version 2, or (at your option) 11# any later version. 12 13# This program is distributed in the hope that it will be useful, 14# but WITHOUT ANY WARRANTY; without even the implied warranty of 15# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16# GNU General Public License for more details. 17 18# You should have received a copy of the GNU General Public License | 8 9# This program is free software; you can redistribute it and/or modify 10# it under the terms of the GNU General Public License as published by 11# the Free Software Foundation; either version 2, or (at your option) 12# any later version. 13 14# This program is distributed in the hope that it will be useful, 15# but WITHOUT ANY WARRANTY; without even the implied warranty of 16# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17# GNU General Public License for more details. 18 19# You should have received a copy of the GNU General Public License |
19# along with this program; if not, write to the Free Software 20# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 21# 02110-1301, USA. | 20# along with this program. If not, see <http://www.gnu.org/licenses/>. |
22 23# As a special exception to the GNU General Public License, if you 24# distribute this file as part of a program that contains a 25# configuration script generated by Autoconf, you may include it under 26# the same distribution terms that you use for the rest of that program. 27 28# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 29 30case $1 in 31 '') | 21 22# As a special exception to the GNU General Public License, if you 23# distribute this file as part of a program that contains a 24# configuration script generated by Autoconf, you may include it under 25# the same distribution terms that you use for the rest of that program. 26 27# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>. 28 29case $1 in 30 '') |
32 echo "$0: No command. Try \`$0 --help' for more information." 1>&2 | 31 echo "$0: No command. Try '$0 --help' for more information." 1>&2 |
33 exit 1; 34 ;; 35 -h | --h*) 36 cat <<\EOF 37Usage: depcomp [--help] [--version] PROGRAM [ARGS] 38 39Run PROGRAMS ARGS to compile a file, generating dependencies 40as side-effects. 41 42Environment variables: 43 depmode Dependency tracking mode. | 32 exit 1; 33 ;; 34 -h | --h*) 35 cat <<\EOF 36Usage: depcomp [--help] [--version] PROGRAM [ARGS] 37 38Run PROGRAMS ARGS to compile a file, generating dependencies 39as side-effects. 40 41Environment variables: 42 depmode Dependency tracking mode. |
44 source Source file read by `PROGRAMS ARGS'. 45 object Object file output by `PROGRAMS ARGS'. | 43 source Source file read by 'PROGRAMS ARGS'. 44 object Object file output by 'PROGRAMS ARGS'. |
46 DEPDIR directory where to store dependencies. 47 depfile Dependency file to output. | 45 DEPDIR directory where to store dependencies. 46 depfile Dependency file to output. |
48 tmpdepfile Temporary file to use when outputing dependencies. | 47 tmpdepfile Temporary file to use when outputting dependencies. |
49 libtool Whether libtool is used (yes/no). 50 51Report bugs to <bug-automake@gnu.org>. 52EOF 53 exit $? 54 ;; 55 -v | --v*) 56 echo "depcomp $scriptversion" 57 exit $? 58 ;; 59esac 60 | 48 libtool Whether libtool is used (yes/no). 49 50Report bugs to <bug-automake@gnu.org>. 51EOF 52 exit $? 53 ;; 54 -v | --v*) 55 echo "depcomp $scriptversion" 56 exit $? 57 ;; 58esac 59 |
60# A tabulation character. 61tab=' ' 62# A newline character. 63nl=' 64' 65 |
|
61if test -z "$depmode" || test -z "$source" || test -z "$object"; then 62 echo "depcomp: Variables source, object and depmode must be set" 1>&2 63 exit 1 64fi 65 66# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 67depfile=${depfile-`echo "$object" | 68 sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} --- 12 unchanged lines hidden (view full) --- 81fi 82 83if test "$depmode" = dashXmstdout; then 84 # This is just like dashmstdout with a different argument. 85 dashmflag=-xM 86 depmode=dashmstdout 87fi 88 | 66if test -z "$depmode" || test -z "$source" || test -z "$object"; then 67 echo "depcomp: Variables source, object and depmode must be set" 1>&2 68 exit 1 69fi 70 71# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. 72depfile=${depfile-`echo "$object" | 73 sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} --- 12 unchanged lines hidden (view full) --- 86fi 87 88if test "$depmode" = dashXmstdout; then 89 # This is just like dashmstdout with a different argument. 90 dashmflag=-xM 91 depmode=dashmstdout 92fi 93 |
94cygpath_u="cygpath -u -f -" 95if test "$depmode" = msvcmsys; then 96 # This is just like msvisualcpp but w/o cygpath translation. 97 # Just convert the backslash-escaped backslashes to single forward 98 # slashes to satisfy depend.m4 99 cygpath_u='sed s,\\\\,/,g' 100 depmode=msvisualcpp 101fi 102 103if test "$depmode" = msvc7msys; then 104 # This is just like msvc7 but w/o cygpath translation. 105 # Just convert the backslash-escaped backslashes to single forward 106 # slashes to satisfy depend.m4 107 cygpath_u='sed s,\\\\,/,g' 108 depmode=msvc7 109fi 110 111if test "$depmode" = xlc; then 112 # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations. 113 gccflag=-qmakedep=gcc,-MF 114 depmode=gcc 115fi 116 |
|
89case "$depmode" in 90gcc3) 91## gcc 3 implements dependency tracking that does exactly what 92## we want. Yay! Note: for some reason libtool 1.4 doesn't like 93## it if -MD -MP comes after the -MF stuff. Hmm. | 117case "$depmode" in 118gcc3) 119## gcc 3 implements dependency tracking that does exactly what 120## we want. Yay! Note: for some reason libtool 1.4 doesn't like 121## it if -MD -MP comes after the -MF stuff. Hmm. |
94 "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" | 122## Unfortunately, FreeBSD c89 acceptance of flags depends upon 123## the command line argument order; so add the flags where they 124## appear in depend2.am. Note that the slowdown incurred here 125## affects only configure: in makefiles, %FASTDEP% shortcuts this. 126 for arg 127 do 128 case $arg in 129 -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; 130 *) set fnord "$@" "$arg" ;; 131 esac 132 shift # fnord 133 shift # $arg 134 done 135 "$@" |
95 stat=$? 96 if test $stat -eq 0; then : 97 else 98 rm -f "$tmpdepfile" 99 exit $stat 100 fi 101 mv "$tmpdepfile" "$depfile" 102 ;; --- 19 unchanged lines hidden (view full) --- 122 exit $stat 123 fi 124 rm -f "$depfile" 125 echo "$object : \\" > "$depfile" 126 alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 127## The second -e expression handles DOS-style file names with drive letters. 128 sed -e 's/^[^:]*: / /' \ 129 -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" | 136 stat=$? 137 if test $stat -eq 0; then : 138 else 139 rm -f "$tmpdepfile" 140 exit $stat 141 fi 142 mv "$tmpdepfile" "$depfile" 143 ;; --- 19 unchanged lines hidden (view full) --- 163 exit $stat 164 fi 165 rm -f "$depfile" 166 echo "$object : \\" > "$depfile" 167 alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 168## The second -e expression handles DOS-style file names with drive letters. 169 sed -e 's/^[^:]*: / /' \ 170 -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" |
130## This next piece of magic avoids the `deleted header file' problem. | 171## This next piece of magic avoids the "deleted header file" problem. |
131## The problem is that when a header file which appears in a .P file 132## is deleted, the dependency causes make to die (because there is 133## typically no way to rebuild the header). We avoid this by adding 134## dummy dependencies for each header file. Too bad gcc doesn't do 135## this for us directly. | 172## The problem is that when a header file which appears in a .P file 173## is deleted, the dependency causes make to die (because there is 174## typically no way to rebuild the header). We avoid this by adding 175## dummy dependencies for each header file. Too bad gcc doesn't do 176## this for us directly. |
136 tr ' ' ' 137' < "$tmpdepfile" | 138## Some versions of gcc put a space before the `:'. On the theory | 177 tr ' ' "$nl" < "$tmpdepfile" | 178## Some versions of gcc put a space before the ':'. On the theory |
139## that the space means something, we add a space to the output as | 179## that the space means something, we add a space to the output as |
140## well. | 180## well. hp depmode also adds that space, but also prefixes the VPATH 181## to the object. Take care to not repeat it in the output. |
141## Some versions of the HPUX 10.20 sed can't process this invocation 142## correctly. Breaking it into two sed invocations is a workaround. | 182## Some versions of the HPUX 10.20 sed can't process this invocation 183## correctly. Breaking it into two sed invocations is a workaround. |
143 sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" | 184 sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ 185 | sed -e 's/$/ :/' >> "$depfile" |
144 rm -f "$tmpdepfile" 145 ;; 146 147hp) 148 # This case exists only to let depend.m4 do its work. It works by 149 # looking at the text of this script. This case will never be run, 150 # since it is checked for above. 151 exit 1 --- 15 unchanged lines hidden (view full) --- 167 168 if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 169 echo "$object : \\" > "$depfile" 170 171 # Clip off the initial element (the dependent). Don't try to be 172 # clever and replace this with sed code, as IRIX sed won't handle 173 # lines with more than a fixed number of characters (4096 in 174 # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; | 186 rm -f "$tmpdepfile" 187 ;; 188 189hp) 190 # This case exists only to let depend.m4 do its work. It works by 191 # looking at the text of this script. This case will never be run, 192 # since it is checked for above. 193 exit 1 --- 15 unchanged lines hidden (view full) --- 209 210 if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files 211 echo "$object : \\" > "$depfile" 212 213 # Clip off the initial element (the dependent). Don't try to be 214 # clever and replace this with sed code, as IRIX sed won't handle 215 # lines with more than a fixed number of characters (4096 in 216 # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; |
175 # the IRIX cc adds comments like `#:fec' to the end of the | 217 # the IRIX cc adds comments like '#:fec' to the end of the |
176 # dependency line. | 218 # dependency line. |
177 tr ' ' ' 178' < "$tmpdepfile" \ | 219 tr ' ' "$nl" < "$tmpdepfile" \ |
179 | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ | 220 | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ |
180 tr ' 181' ' ' >> $depfile 182 echo >> $depfile | 221 tr "$nl" ' ' >> "$depfile" 222 echo >> "$depfile" |
183 184 # The second pass generates a dummy entry for each header file. | 223 224 # The second pass generates a dummy entry for each header file. |
185 tr ' ' ' 186' < "$tmpdepfile" \ | 225 tr ' ' "$nl" < "$tmpdepfile" \ |
187 | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ | 226 | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ |
188 >> $depfile | 227 >> "$depfile" |
189 else 190 # The sourcefile does not contain any dependencies, so just 191 # store a dummy comment line, to avoid errors with the Makefile 192 # "include basename.Plo" scheme. 193 echo "#dummy" > "$depfile" 194 fi 195 rm -f "$tmpdepfile" 196 ;; 197 | 228 else 229 # The sourcefile does not contain any dependencies, so just 230 # store a dummy comment line, to avoid errors with the Makefile 231 # "include basename.Plo" scheme. 232 echo "#dummy" > "$depfile" 233 fi 234 rm -f "$tmpdepfile" 235 ;; 236 |
237xlc) 238 # This case exists only to let depend.m4 do its work. It works by 239 # looking at the text of this script. This case will never be run, 240 # since it is checked for above. 241 exit 1 242 ;; 243 |
|
198aix) 199 # The C for AIX Compiler uses -M and outputs the dependencies 200 # in a .u file. In older versions, this file always lives in the | 244aix) 245 # The C for AIX Compiler uses -M and outputs the dependencies 246 # in a .u file. In older versions, this file always lives in the |
201 # current directory. Also, the AIX compiler puts `$object:' at the | 247 # current directory. Also, the AIX compiler puts '$object:' at the |
202 # start of each line; $object doesn't have directory information. 203 # Version 6 uses the directory in both cases. | 248 # start of each line; $object doesn't have directory information. 249 # Version 6 uses the directory in both cases. |
204 stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` 205 tmpdepfile="$stripped.u" | 250 dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 251 test "x$dir" = "x$object" && dir= 252 base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` |
206 if test "$libtool" = yes; then | 253 if test "$libtool" = yes; then |
254 tmpdepfile1=$dir$base.u 255 tmpdepfile2=$base.u 256 tmpdepfile3=$dir.libs/$base.u |
|
207 "$@" -Wc,-M 208 else | 257 "$@" -Wc,-M 258 else |
259 tmpdepfile1=$dir$base.u 260 tmpdepfile2=$dir$base.u 261 tmpdepfile3=$dir$base.u |
|
209 "$@" -M 210 fi 211 stat=$? 212 | 262 "$@" -M 263 fi 264 stat=$? 265 |
213 if test -f "$tmpdepfile"; then : 214 else 215 stripped=`echo "$stripped" | sed 's,^.*/,,'` 216 tmpdepfile="$stripped.u" 217 fi 218 | |
219 if test $stat -eq 0; then : 220 else | 266 if test $stat -eq 0; then : 267 else |
221 rm -f "$tmpdepfile" | 268 rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" |
222 exit $stat 223 fi 224 | 269 exit $stat 270 fi 271 |
272 for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" 273 do 274 test -f "$tmpdepfile" && break 275 done |
|
225 if test -f "$tmpdepfile"; then | 276 if test -f "$tmpdepfile"; then |
226 outname="$stripped.o" 227 # Each line is of the form `foo.o: dependent.h'. | 277 # Each line is of the form 'foo.o: dependent.h'. |
228 # Do two passes, one to just change these to | 278 # Do two passes, one to just change these to |
229 # `$object: dependent.h' and one to simply `dependent.h:'. 230 sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" 231 sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" | 279 # '$object: dependent.h' and one to simply 'dependent.h:'. 280 sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" 281 sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" |
232 else 233 # The sourcefile does not contain any dependencies, so just 234 # store a dummy comment line, to avoid errors with the Makefile 235 # "include basename.Plo" scheme. 236 echo "#dummy" > "$depfile" 237 fi 238 rm -f "$tmpdepfile" 239 ;; 240 241icc) | 282 else 283 # The sourcefile does not contain any dependencies, so just 284 # store a dummy comment line, to avoid errors with the Makefile 285 # "include basename.Plo" scheme. 286 echo "#dummy" > "$depfile" 287 fi 288 rm -f "$tmpdepfile" 289 ;; 290 291icc) |
242 # Intel's C compiler understands `-MD -MF file'. However on 243 # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c | 292 # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'. 293 # However on 294 # $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c |
244 # ICC 7.0 will fill foo.d with something like 245 # foo.o: sub/foo.c 246 # foo.o: sub/foo.h | 295 # ICC 7.0 will fill foo.d with something like 296 # foo.o: sub/foo.c 297 # foo.o: sub/foo.h |
247 # which is wrong. We want: | 298 # which is wrong. We want |
248 # sub/foo.o: sub/foo.c 249 # sub/foo.o: sub/foo.h 250 # sub/foo.c: 251 # sub/foo.h: 252 # ICC 7.1 will output 253 # foo.o: sub/foo.c sub/foo.h | 299 # sub/foo.o: sub/foo.c 300 # sub/foo.o: sub/foo.h 301 # sub/foo.c: 302 # sub/foo.h: 303 # ICC 7.1 will output 304 # foo.o: sub/foo.c sub/foo.h |
254 # and will wrap long lines using \ : | 305 # and will wrap long lines using '\': |
255 # foo.o: sub/foo.c ... \ 256 # sub/foo.h ... \ 257 # ... | 306 # foo.o: sub/foo.c ... \ 307 # sub/foo.h ... \ 308 # ... |
258 | 309 # tcc 0.9.26 (FIXME still under development at the moment of writing) 310 # will emit a similar output, but also prepend the continuation lines 311 # with horizontal tabulation characters. |
259 "$@" -MD -MF "$tmpdepfile" 260 stat=$? 261 if test $stat -eq 0; then : 262 else 263 rm -f "$tmpdepfile" 264 exit $stat 265 fi 266 rm -f "$depfile" | 312 "$@" -MD -MF "$tmpdepfile" 313 stat=$? 314 if test $stat -eq 0; then : 315 else 316 rm -f "$tmpdepfile" 317 exit $stat 318 fi 319 rm -f "$depfile" |
267 # Each line is of the form `foo.o: dependent.h', 268 # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. | 320 # Each line is of the form 'foo.o: dependent.h', 321 # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'. |
269 # Do two passes, one to just change these to | 322 # Do two passes, one to just change these to |
270 # `$object: dependent.h' and one to simply `dependent.h:'. 271 sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" 272 # Some versions of the HPUX 10.20 sed can't process this invocation 273 # correctly. Breaking it into two sed invocations is a workaround. 274 sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | 275 sed -e 's/$/ :/' >> "$depfile" | 323 # '$object: dependent.h' and one to simply 'dependent.h:'. 324 sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \ 325 < "$tmpdepfile" > "$depfile" 326 sed ' 327 s/[ '"$tab"'][ '"$tab"']*/ /g 328 s/^ *// 329 s/ *\\*$// 330 s/^[^:]*: *// 331 /^$/d 332 /:$/d 333 s/$/ :/ 334 ' < "$tmpdepfile" >> "$depfile" |
276 rm -f "$tmpdepfile" 277 ;; 278 | 335 rm -f "$tmpdepfile" 336 ;; 337 |
338hp2) 339 # The "hp" stanza above does not work with aCC (C++) and HP's ia64 340 # compilers, which have integrated preprocessors. The correct option 341 # to use with these is +Maked; it writes dependencies to a file named 342 # 'foo.d', which lands next to the object file, wherever that 343 # happens to be. 344 # Much of this is similar to the tru64 case; see comments there. 345 dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 346 test "x$dir" = "x$object" && dir= 347 base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 348 if test "$libtool" = yes; then 349 tmpdepfile1=$dir$base.d 350 tmpdepfile2=$dir.libs/$base.d 351 "$@" -Wc,+Maked 352 else 353 tmpdepfile1=$dir$base.d 354 tmpdepfile2=$dir$base.d 355 "$@" +Maked 356 fi 357 stat=$? 358 if test $stat -eq 0; then : 359 else 360 rm -f "$tmpdepfile1" "$tmpdepfile2" 361 exit $stat 362 fi 363 364 for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" 365 do 366 test -f "$tmpdepfile" && break 367 done 368 if test -f "$tmpdepfile"; then 369 sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" 370 # Add 'dependent.h:' lines. 371 sed -ne '2,${ 372 s/^ *// 373 s/ \\*$// 374 s/$/:/ 375 p 376 }' "$tmpdepfile" >> "$depfile" 377 else 378 echo "#dummy" > "$depfile" 379 fi 380 rm -f "$tmpdepfile" "$tmpdepfile2" 381 ;; 382 |
|
279tru64) 280 # The Tru64 compiler uses -MD to generate dependencies as a side | 383tru64) 384 # The Tru64 compiler uses -MD to generate dependencies as a side |
281 # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. | 385 # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. |
282 # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put | 386 # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put |
283 # dependencies in `foo.d' instead, so we check for that too. | 387 # dependencies in 'foo.d' instead, so we check for that too. |
284 # Subdirectories are respected. 285 dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 286 test "x$dir" = "x$object" && dir= 287 base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 288 289 if test "$libtool" = yes; then 290 # With Tru64 cc, shared objects can also be used to make a | 388 # Subdirectories are respected. 389 dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` 390 test "x$dir" = "x$object" && dir= 391 base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 392 393 if test "$libtool" = yes; then 394 # With Tru64 cc, shared objects can also be used to make a |
291 # static library. This mecanism is used in libtool 1.4 series to | 395 # static library. This mechanism is used in libtool 1.4 series to |
292 # handle both shared and static libraries in a single compilation. 293 # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 294 # 295 # With libtool 1.5 this exception was removed, and libtool now 296 # generates 2 separate objects for the 2 libraries. These two | 396 # handle both shared and static libraries in a single compilation. 397 # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. 398 # 399 # With libtool 1.5 this exception was removed, and libtool now 400 # generates 2 separate objects for the 2 libraries. These two |
297 # compilations output dependencies in in $dir.libs/$base.o.d and | 401 # compilations output dependencies in $dir.libs/$base.o.d and |
298 # in $dir$base.o.d. We have to check for both files, because 299 # one of the two compilations can be disabled. We should prefer 300 # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 301 # automatically cleaned when .libs/ is deleted, while ignoring 302 # the former would cause a distcleancheck panic. 303 tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 304 tmpdepfile2=$dir$base.o.d # libtool 1.5 305 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 --- 15 unchanged lines hidden (view full) --- 321 fi 322 323 for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 324 do 325 test -f "$tmpdepfile" && break 326 done 327 if test -f "$tmpdepfile"; then 328 sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" | 402 # in $dir$base.o.d. We have to check for both files, because 403 # one of the two compilations can be disabled. We should prefer 404 # $dir$base.o.d over $dir.libs/$base.o.d because the latter is 405 # automatically cleaned when .libs/ is deleted, while ignoring 406 # the former would cause a distcleancheck panic. 407 tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 408 tmpdepfile2=$dir$base.o.d # libtool 1.5 409 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 --- 15 unchanged lines hidden (view full) --- 425 fi 426 427 for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" 428 do 429 test -f "$tmpdepfile" && break 430 done 431 if test -f "$tmpdepfile"; then 432 sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" |
329 # That's a tab and a space in the []. 330 sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" | 433 sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" |
331 else 332 echo "#dummy" > "$depfile" 333 fi 334 rm -f "$tmpdepfile" 335 ;; 336 | 434 else 435 echo "#dummy" > "$depfile" 436 fi 437 rm -f "$tmpdepfile" 438 ;; 439 |
440msvc7) 441 if test "$libtool" = yes; then 442 showIncludes=-Wc,-showIncludes 443 else 444 showIncludes=-showIncludes 445 fi 446 "$@" $showIncludes > "$tmpdepfile" 447 stat=$? 448 grep -v '^Note: including file: ' "$tmpdepfile" 449 if test "$stat" = 0; then : 450 else 451 rm -f "$tmpdepfile" 452 exit $stat 453 fi 454 rm -f "$depfile" 455 echo "$object : \\" > "$depfile" 456 # The first sed program below extracts the file names and escapes 457 # backslashes for cygpath. The second sed program outputs the file 458 # name when reading, but also accumulates all include files in the 459 # hold buffer in order to output them again at the end. This only 460 # works with sed implementations that can handle large buffers. 461 sed < "$tmpdepfile" -n ' 462/^Note: including file: *\(.*\)/ { 463 s//\1/ 464 s/\\/\\\\/g 465 p 466}' | $cygpath_u | sort -u | sed -n ' 467s/ /\\ /g 468s/\(.*\)/'"$tab"'\1 \\/p 469s/.\(.*\) \\/\1:/ 470H 471$ { 472 s/.*/'"$tab"'/ 473 G 474 p 475}' >> "$depfile" 476 rm -f "$tmpdepfile" 477 ;; 478 479msvc7msys) 480 # This case exists only to let depend.m4 do its work. It works by 481 # looking at the text of this script. This case will never be run, 482 # since it is checked for above. 483 exit 1 484 ;; 485 |
|
337#nosideeffect) 338 # This comment above is used by automake to tell side-effect 339 # dependency tracking mechanisms from slower ones. 340 341dashmstdout) 342 # Important note: in order to support this mode, a compiler *must* 343 # always write the preprocessed file to stdout, regardless of -o. 344 "$@" || exit $? 345 346 # Remove the call to Libtool. 347 if test "$libtool" = yes; then | 486#nosideeffect) 487 # This comment above is used by automake to tell side-effect 488 # dependency tracking mechanisms from slower ones. 489 490dashmstdout) 491 # Important note: in order to support this mode, a compiler *must* 492 # always write the preprocessed file to stdout, regardless of -o. 493 "$@" || exit $? 494 495 # Remove the call to Libtool. 496 if test "$libtool" = yes; then |
348 while test $1 != '--mode=compile'; do | 497 while test "X$1" != 'X--mode=compile'; do |
349 shift 350 done 351 shift 352 fi 353 | 498 shift 499 done 500 shift 501 fi 502 |
354 # Remove `-o $object'. | 503 # Remove '-o $object'. |
355 IFS=" " 356 for arg 357 do 358 case $arg in 359 -o) 360 shift 361 ;; 362 $object) 363 shift 364 ;; 365 *) 366 set fnord "$@" "$arg" 367 shift # fnord 368 shift # $arg 369 ;; 370 esac 371 done 372 373 test -z "$dashmflag" && dashmflag=-M | 504 IFS=" " 505 for arg 506 do 507 case $arg in 508 -o) 509 shift 510 ;; 511 $object) 512 shift 513 ;; 514 *) 515 set fnord "$@" "$arg" 516 shift # fnord 517 shift # $arg 518 ;; 519 esac 520 done 521 522 test -z "$dashmflag" && dashmflag=-M |
374 # Require at least two characters before searching for `:' | 523 # Require at least two characters before searching for ':' |
375 # in the target name. This is to cope with DOS-style filenames: | 524 # in the target name. This is to cope with DOS-style filenames: |
376 # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. | 525 # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. |
377 "$@" $dashmflag | | 526 "$@" $dashmflag | |
378 sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" | 527 sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile" |
379 rm -f "$depfile" 380 cat < "$tmpdepfile" > "$depfile" | 528 rm -f "$depfile" 529 cat < "$tmpdepfile" > "$depfile" |
381 tr ' ' ' 382' < "$tmpdepfile" | \ | 530 tr ' ' "$nl" < "$tmpdepfile" | \ |
383## Some versions of the HPUX 10.20 sed can't process this invocation 384## correctly. Breaking it into two sed invocations is a workaround. 385 sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 386 rm -f "$tmpdepfile" 387 ;; 388 389dashXmstdout) 390 # This case only exists to satisfy depend.m4. It is never actually 391 # run, as this mode is specially recognized in the preamble. 392 exit 1 393 ;; 394 395makedepend) 396 "$@" || exit $? 397 # Remove any Libtool call 398 if test "$libtool" = yes; then | 531## Some versions of the HPUX 10.20 sed can't process this invocation 532## correctly. Breaking it into two sed invocations is a workaround. 533 sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 534 rm -f "$tmpdepfile" 535 ;; 536 537dashXmstdout) 538 # This case only exists to satisfy depend.m4. It is never actually 539 # run, as this mode is specially recognized in the preamble. 540 exit 1 541 ;; 542 543makedepend) 544 "$@" || exit $? 545 # Remove any Libtool call 546 if test "$libtool" = yes; then |
399 while test $1 != '--mode=compile'; do | 547 while test "X$1" != 'X--mode=compile'; do |
400 shift 401 done 402 shift 403 fi 404 # X makedepend 405 shift | 548 shift 549 done 550 shift 551 fi 552 # X makedepend 553 shift |
406 cleared=no 407 for arg in "$@"; do | 554 cleared=no eat=no 555 for arg 556 do |
408 case $cleared in 409 no) 410 set ""; shift 411 cleared=yes ;; 412 esac | 557 case $cleared in 558 no) 559 set ""; shift 560 cleared=yes ;; 561 esac |
562 if test $eat = yes; then 563 eat=no 564 continue 565 fi |
|
413 case "$arg" in 414 -D*|-I*) 415 set fnord "$@" "$arg"; shift ;; 416 # Strip any option that makedepend may not understand. Remove 417 # the object too, otherwise makedepend will parse it as a source file. | 566 case "$arg" in 567 -D*|-I*) 568 set fnord "$@" "$arg"; shift ;; 569 # Strip any option that makedepend may not understand. Remove 570 # the object too, otherwise makedepend will parse it as a source file. |
571 -arch) 572 eat=yes ;; |
|
418 -*|$object) 419 ;; 420 *) 421 set fnord "$@" "$arg"; shift ;; 422 esac 423 done | 573 -*|$object) 574 ;; 575 *) 576 set fnord "$@" "$arg"; shift ;; 577 esac 578 done |
424 obj_suffix="`echo $object | sed 's/^.*\././'`" | 579 obj_suffix=`echo "$object" | sed 's/^.*\././'` |
425 touch "$tmpdepfile" 426 ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 427 rm -f "$depfile" | 580 touch "$tmpdepfile" 581 ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" 582 rm -f "$depfile" |
428 cat < "$tmpdepfile" > "$depfile" 429 sed '1,2d' "$tmpdepfile" | tr ' ' ' 430' | \ | 583 # makedepend may prepend the VPATH from the source file name to the object. 584 # No need to regex-escape $object, excess matching of '.' is harmless. 585 sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" 586 sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \ |
431## Some versions of the HPUX 10.20 sed can't process this invocation 432## correctly. Breaking it into two sed invocations is a workaround. 433 sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 434 rm -f "$tmpdepfile" "$tmpdepfile".bak 435 ;; 436 437cpp) 438 # Important note: in order to support this mode, a compiler *must* 439 # always write the preprocessed file to stdout. 440 "$@" || exit $? 441 442 # Remove the call to Libtool. 443 if test "$libtool" = yes; then | 587## Some versions of the HPUX 10.20 sed can't process this invocation 588## correctly. Breaking it into two sed invocations is a workaround. 589 sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" 590 rm -f "$tmpdepfile" "$tmpdepfile".bak 591 ;; 592 593cpp) 594 # Important note: in order to support this mode, a compiler *must* 595 # always write the preprocessed file to stdout. 596 "$@" || exit $? 597 598 # Remove the call to Libtool. 599 if test "$libtool" = yes; then |
444 while test $1 != '--mode=compile'; do | 600 while test "X$1" != 'X--mode=compile'; do |
445 shift 446 done 447 shift 448 fi 449 | 601 shift 602 done 603 shift 604 fi 605 |
450 # Remove `-o $object'. | 606 # Remove '-o $object'. |
451 IFS=" " 452 for arg 453 do 454 case $arg in 455 -o) 456 shift 457 ;; 458 $object) --- 15 unchanged lines hidden (view full) --- 474 echo "$object : \\" > "$depfile" 475 cat < "$tmpdepfile" >> "$depfile" 476 sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 477 rm -f "$tmpdepfile" 478 ;; 479 480msvisualcpp) 481 # Important note: in order to support this mode, a compiler *must* | 607 IFS=" " 608 for arg 609 do 610 case $arg in 611 -o) 612 shift 613 ;; 614 $object) --- 15 unchanged lines hidden (view full) --- 630 echo "$object : \\" > "$depfile" 631 cat < "$tmpdepfile" >> "$depfile" 632 sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" 633 rm -f "$tmpdepfile" 634 ;; 635 636msvisualcpp) 637 # Important note: in order to support this mode, a compiler *must* |
482 # always write the preprocessed file to stdout, regardless of -o, 483 # because we must use -o when running libtool. | 638 # always write the preprocessed file to stdout. |
484 "$@" || exit $? | 639 "$@" || exit $? |
640 641 # Remove the call to Libtool. 642 if test "$libtool" = yes; then 643 while test "X$1" != 'X--mode=compile'; do 644 shift 645 done 646 shift 647 fi 648 |
|
485 IFS=" " 486 for arg 487 do 488 case "$arg" in | 649 IFS=" " 650 for arg 651 do 652 case "$arg" in |
653 -o) 654 shift 655 ;; 656 $object) 657 shift 658 ;; |
|
489 "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 490 set fnord "$@" 491 shift 492 shift 493 ;; 494 *) 495 set fnord "$@" "$arg" 496 shift 497 shift 498 ;; 499 esac 500 done | 659 "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") 660 set fnord "$@" 661 shift 662 shift 663 ;; 664 *) 665 set fnord "$@" "$arg" 666 shift 667 shift 668 ;; 669 esac 670 done |
501 "$@" -E | 502 sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" | 671 "$@" -E 2>/dev/null | 672 sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" |
503 rm -f "$depfile" 504 echo "$object : \\" > "$depfile" | 673 rm -f "$depfile" 674 echo "$object : \\" > "$depfile" |
505 . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" 506 echo " " >> "$depfile" 507 . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" | 675 sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" 676 echo "$tab" >> "$depfile" 677 sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" |
508 rm -f "$tmpdepfile" 509 ;; 510 | 678 rm -f "$tmpdepfile" 679 ;; 680 |
681msvcmsys) 682 # This case exists only to let depend.m4 do its work. It works by 683 # looking at the text of this script. This case will never be run, 684 # since it is checked for above. 685 exit 1 686 ;; 687 |
|
511none) 512 exec "$@" 513 ;; 514 515*) 516 echo "Unknown depmode $depmode" 1>&2 517 exit 1 518 ;; 519esac 520 521exit 0 522 523# Local Variables: 524# mode: shell-script 525# sh-indentation: 2 526# eval: (add-hook 'write-file-hooks 'time-stamp) 527# time-stamp-start: "scriptversion=" 528# time-stamp-format: "%:y-%02m-%02d.%02H" | 688none) 689 exec "$@" 690 ;; 691 692*) 693 echo "Unknown depmode $depmode" 1>&2 694 exit 1 695 ;; 696esac 697 698exit 0 699 700# Local Variables: 701# mode: shell-script 702# sh-indentation: 2 703# eval: (add-hook 'write-file-hooks 'time-stamp) 704# time-stamp-start: "scriptversion=" 705# time-stamp-format: "%:y-%02m-%02d.%02H" |
529# time-stamp-end: "$" | 706# time-stamp-time-zone: "UTC" 707# time-stamp-end: "; # UTC" |
530# End: | 708# End: |