home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2000 February
/
PCWorld_2000-02_cd.bin
/
live
/
usr
/
X11R6
/
bin
/
gccmakedep
< prev
next >
Wrap
Text File
|
1999-09-03
|
3KB
|
149 lines
#!/bin/sh
#
# makedepend which uses 'gcc -M'
#
# $XFree86: xc/config/util/gccmdep.cpp,v 3.3.4.2 1999/08/02 08:37:52 hohndel Exp $
#
# Based on mdepend.cpp and code supplied by Hongjiu Lu <hjl@nynexst.com>
#
TMP=${TMPDIR-/tmp}/mdep$$
CC="gcc"
RM="rm -f"
LN="ln -s"
MV="mv -f"
# Security: if $tmp exists exit immediately
rm -f ${TMP}
if [ -e ${TMP} ] ; then
echo "$0: ${TMP} exists already, exit." 1>&2
exit 1;
fi
if [ -n "`type -p mktemp`" ] ; then
TMP="`mktemp ${TMP}.XXXXXX`" || exit 1
fi
trap "$RM ${TMP}*; exit 1" 1 2 15
trap "$RM ${TMP}*; exit 0" 1 2 13
files=
makefile=
endmarker=
magic_string='# DO NOT DELETE'
append=n
args=
asmfiles=
while [ $# != 0 ]; do
if [ "$endmarker"x != x -a "$endmarker" = "$1" ]; then
endmarker=
else
case "$1" in
-D*|-I*)
args="$args '$1'"
;;
-g|-o)
;;
*)
if [ "$endmarker"x = x ]; then
case $1 in
# ignore these flags
-w|-o|-cc)
shift
;;
-v)
;;
-s)
magic_string="$2"
shift
;;
-f-)
makefile="-"
;;
-f)
makefile="$2"
shift
;;
--*)
endmarker=`echo $1 | sed 's/^\-\-//'`
if [ "$endmarker"x = x ]; then
endmarker="--"
fi
;;
-a)
append=y
;;
-*)
echo "Unknown option '$1' ignored" 1>&2
;;
*)
files="$files $1"
;;
esac
fi
;;
esac
fi
shift
done
if [ x"$files" = x ]; then
# Nothing to do
exit 0
fi
case "$makefile" in
'')
if [ -r makefile ]; then
makefile=makefile
elif [ -r Makefile ]; then
makefile=Makefile
else
echo 'no makefile or Makefile found' 1>&2
exit 1
fi
;;
esac
if [ X"$makefile" != X- ]; then
if [ x"$append" = xn ]; then
sed -e "/^$magic_string/,\$d" < $makefile > $TMP
echo "$magic_string" >> $TMP
else
cp $makefile $TMP
fi
fi
# need to link .s files to .S
for i in $files; do
case $i in
*.s)
dir=`dirname $i`
base=`basename $i .s`
(cd $dir; $RM ${base}.S; $LN ${base}.s ${base}.S)
asmfiles="$asmfiles ${base}.S"
;;
esac
done
CMD="$CC -M $args `echo $files | sed -e 's,\.s$,\.S,g' -e 's,\.s ,\.S ,g'` | sed -e 's,\.S$,\.s,g' -e 's,\.S ,\.s ,g'"
if [ X"$makefile" != X- ]; then
CMD="$CMD >> $TMP"
fi
eval $CMD
if [ X"$makefile" != X- ]; then
$RM ${makefile}.bak
$MV $makefile ${makefile}.bak
$MV $TMP $makefile
fi
if [ x"$asmfiles" != x ]; then
$RM $asmfiles
fi
$RM ${TMP}*
exit 0