1 |
|
#! /bin/sh |
2 |
|
# depcomp - compile a program generating dependencies as side-effects |
3 |
|
|
4 |
< |
scriptversion=2006-10-15.18 |
4 |
> |
scriptversion=2009-04-28.21; # UTC |
5 |
|
|
6 |
< |
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software |
7 |
< |
# Foundation, Inc. |
6 |
> |
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free |
7 |
> |
# Software Foundation, Inc. |
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 |
17 |
|
# GNU General Public License for more details. |
18 |
|
|
19 |
|
# You should have received a copy of the GNU General Public License |
20 |
< |
# along with this program; if not, write to the Free Software |
21 |
< |
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
22 |
< |
# 02110-1301, USA. |
20 |
> |
# along with this program. If not, see <http://www.gnu.org/licenses/>. |
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 |
85 |
|
depmode=dashmstdout |
86 |
|
fi |
87 |
|
|
88 |
+ |
cygpath_u="cygpath -u -f -" |
89 |
+ |
if test "$depmode" = msvcmsys; then |
90 |
+ |
# This is just like msvisualcpp but w/o cygpath translation. |
91 |
+ |
# Just convert the backslash-escaped backslashes to single forward |
92 |
+ |
# slashes to satisfy depend.m4 |
93 |
+ |
cygpath_u="sed s,\\\\\\\\,/,g" |
94 |
+ |
depmode=msvisualcpp |
95 |
+ |
fi |
96 |
+ |
|
97 |
|
case "$depmode" in |
98 |
|
gcc3) |
99 |
|
## gcc 3 implements dependency tracking that does exactly what |
199 |
|
' < "$tmpdepfile" \ |
200 |
|
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ |
201 |
|
tr ' |
202 |
< |
' ' ' >> $depfile |
203 |
< |
echo >> $depfile |
202 |
> |
' ' ' >> "$depfile" |
203 |
> |
echo >> "$depfile" |
204 |
|
|
205 |
|
# The second pass generates a dummy entry for each header file. |
206 |
|
tr ' ' ' |
207 |
|
' < "$tmpdepfile" \ |
208 |
|
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ |
209 |
< |
>> $depfile |
209 |
> |
>> "$depfile" |
210 |
|
else |
211 |
|
# The sourcefile does not contain any dependencies, so just |
212 |
|
# store a dummy comment line, to avoid errors with the Makefile |
222 |
|
# current directory. Also, the AIX compiler puts `$object:' at the |
223 |
|
# start of each line; $object doesn't have directory information. |
224 |
|
# Version 6 uses the directory in both cases. |
225 |
< |
stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` |
226 |
< |
tmpdepfile="$stripped.u" |
225 |
> |
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` |
226 |
> |
test "x$dir" = "x$object" && dir= |
227 |
> |
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` |
228 |
|
if test "$libtool" = yes; then |
229 |
+ |
tmpdepfile1=$dir$base.u |
230 |
+ |
tmpdepfile2=$base.u |
231 |
+ |
tmpdepfile3=$dir.libs/$base.u |
232 |
|
"$@" -Wc,-M |
233 |
|
else |
234 |
+ |
tmpdepfile1=$dir$base.u |
235 |
+ |
tmpdepfile2=$dir$base.u |
236 |
+ |
tmpdepfile3=$dir$base.u |
237 |
|
"$@" -M |
238 |
|
fi |
239 |
|
stat=$? |
240 |
|
|
227 |
– |
if test -f "$tmpdepfile"; then : |
228 |
– |
else |
229 |
– |
stripped=`echo "$stripped" | sed 's,^.*/,,'` |
230 |
– |
tmpdepfile="$stripped.u" |
231 |
– |
fi |
232 |
– |
|
241 |
|
if test $stat -eq 0; then : |
242 |
|
else |
243 |
< |
rm -f "$tmpdepfile" |
243 |
> |
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" |
244 |
|
exit $stat |
245 |
|
fi |
246 |
|
|
247 |
+ |
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" |
248 |
+ |
do |
249 |
+ |
test -f "$tmpdepfile" && break |
250 |
+ |
done |
251 |
|
if test -f "$tmpdepfile"; then |
240 |
– |
outname="$stripped.o" |
252 |
|
# Each line is of the form `foo.o: dependent.h'. |
253 |
|
# Do two passes, one to just change these to |
254 |
|
# `$object: dependent.h' and one to simply `dependent.h:'. |
255 |
< |
sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" |
256 |
< |
sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" |
255 |
> |
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" |
256 |
> |
# That's a tab and a space in the []. |
257 |
> |
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" |
258 |
|
else |
259 |
|
# The sourcefile does not contain any dependencies, so just |
260 |
|
# store a dummy comment line, to avoid errors with the Makefile |
335 |
|
if test -f "$tmpdepfile"; then |
336 |
|
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" |
337 |
|
# Add `dependent.h:' lines. |
338 |
< |
sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" |
338 |
> |
sed -ne '2,${ |
339 |
> |
s/^ *// |
340 |
> |
s/ \\*$// |
341 |
> |
s/$/:/ |
342 |
> |
p |
343 |
> |
}' "$tmpdepfile" >> "$depfile" |
344 |
|
else |
345 |
|
echo "#dummy" > "$depfile" |
346 |
|
fi |
416 |
|
|
417 |
|
# Remove the call to Libtool. |
418 |
|
if test "$libtool" = yes; then |
419 |
< |
while test $1 != '--mode=compile'; do |
419 |
> |
while test "X$1" != 'X--mode=compile'; do |
420 |
|
shift |
421 |
|
done |
422 |
|
shift |
467 |
|
"$@" || exit $? |
468 |
|
# Remove any Libtool call |
469 |
|
if test "$libtool" = yes; then |
470 |
< |
while test $1 != '--mode=compile'; do |
470 |
> |
while test "X$1" != 'X--mode=compile'; do |
471 |
|
shift |
472 |
|
done |
473 |
|
shift |
474 |
|
fi |
475 |
|
# X makedepend |
476 |
|
shift |
477 |
< |
cleared=no |
478 |
< |
for arg in "$@"; do |
477 |
> |
cleared=no eat=no |
478 |
> |
for arg |
479 |
> |
do |
480 |
|
case $cleared in |
481 |
|
no) |
482 |
|
set ""; shift |
483 |
|
cleared=yes ;; |
484 |
|
esac |
485 |
+ |
if test $eat = yes; then |
486 |
+ |
eat=no |
487 |
+ |
continue |
488 |
+ |
fi |
489 |
|
case "$arg" in |
490 |
|
-D*|-I*) |
491 |
|
set fnord "$@" "$arg"; shift ;; |
492 |
|
# Strip any option that makedepend may not understand. Remove |
493 |
|
# the object too, otherwise makedepend will parse it as a source file. |
494 |
+ |
-arch) |
495 |
+ |
eat=yes ;; |
496 |
|
-*|$object) |
497 |
|
;; |
498 |
|
*) |
499 |
|
set fnord "$@" "$arg"; shift ;; |
500 |
|
esac |
501 |
|
done |
502 |
< |
obj_suffix="`echo $object | sed 's/^.*\././'`" |
502 |
> |
obj_suffix=`echo "$object" | sed 's/^.*\././'` |
503 |
|
touch "$tmpdepfile" |
504 |
|
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" |
505 |
|
rm -f "$depfile" |
519 |
|
|
520 |
|
# Remove the call to Libtool. |
521 |
|
if test "$libtool" = yes; then |
522 |
< |
while test $1 != '--mode=compile'; do |
522 |
> |
while test "X$1" != 'X--mode=compile'; do |
523 |
|
shift |
524 |
|
done |
525 |
|
shift |
557 |
|
|
558 |
|
msvisualcpp) |
559 |
|
# Important note: in order to support this mode, a compiler *must* |
560 |
< |
# always write the preprocessed file to stdout, regardless of -o, |
537 |
< |
# because we must use -o when running libtool. |
560 |
> |
# always write the preprocessed file to stdout. |
561 |
|
"$@" || exit $? |
562 |
+ |
|
563 |
+ |
# Remove the call to Libtool. |
564 |
+ |
if test "$libtool" = yes; then |
565 |
+ |
while test "X$1" != 'X--mode=compile'; do |
566 |
+ |
shift |
567 |
+ |
done |
568 |
+ |
shift |
569 |
+ |
fi |
570 |
+ |
|
571 |
|
IFS=" " |
572 |
|
for arg |
573 |
|
do |
574 |
|
case "$arg" in |
575 |
+ |
-o) |
576 |
+ |
shift |
577 |
+ |
;; |
578 |
+ |
$object) |
579 |
+ |
shift |
580 |
+ |
;; |
581 |
|
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") |
582 |
|
set fnord "$@" |
583 |
|
shift |
590 |
|
;; |
591 |
|
esac |
592 |
|
done |
593 |
< |
"$@" -E | |
594 |
< |
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" |
593 |
> |
"$@" -E 2>/dev/null | |
594 |
> |
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" |
595 |
|
rm -f "$depfile" |
596 |
|
echo "$object : \\" > "$depfile" |
597 |
< |
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" |
597 |
> |
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" |
598 |
|
echo " " >> "$depfile" |
599 |
< |
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" |
599 |
> |
sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" |
600 |
|
rm -f "$tmpdepfile" |
601 |
|
;; |
602 |
|
|
603 |
+ |
msvcmsys) |
604 |
+ |
# This case exists only to let depend.m4 do its work. It works by |
605 |
+ |
# looking at the text of this script. This case will never be run, |
606 |
+ |
# since it is checked for above. |
607 |
+ |
exit 1 |
608 |
+ |
;; |
609 |
+ |
|
610 |
|
none) |
611 |
|
exec "$@" |
612 |
|
;; |
625 |
|
# eval: (add-hook 'write-file-hooks 'time-stamp) |
626 |
|
# time-stamp-start: "scriptversion=" |
627 |
|
# time-stamp-format: "%:y-%02m-%02d.%02H" |
628 |
< |
# time-stamp-end: "$" |
628 |
> |
# time-stamp-time-zone: "UTC" |
629 |
> |
# time-stamp-end: "; # UTC" |
630 |
|
# End: |