Initial import of the CDE 2.1.30 sources from the Open Group.
This commit is contained in:
228
cde/util/scripts/mdepend.cpp
Normal file
228
cde/util/scripts/mdepend.cpp
Normal file
@@ -0,0 +1,228 @@
|
||||
XCOMM!/bin/sh
|
||||
XCOMM
|
||||
XCOMM $XConsortium: mdepend.cpp,v 1.7 91/08/22 11:42:53 rws Exp $
|
||||
XCOMM
|
||||
XCOMM Do the equivalent of the 'makedepend' program, but do it right.
|
||||
XCOMM
|
||||
XCOMM Usage:
|
||||
XCOMM
|
||||
XCOMM makedepend [cpp-flags] [-w width] [-s magic-string] [-f makefile]
|
||||
XCOMM [-o object-suffix]
|
||||
XCOMM
|
||||
XCOMM Notes:
|
||||
XCOMM
|
||||
XCOMM The C compiler used can be overridden with the environment
|
||||
XCOMM variable "CC".
|
||||
XCOMM
|
||||
XCOMM The "-v" switch of the "makedepend" program is not supported.
|
||||
XCOMM
|
||||
XCOMM
|
||||
XCOMM This script should
|
||||
XCOMM work on both USG and BSD systems. However, when System V.4 comes out,
|
||||
XCOMM USG users will probably have to change "silent" to "-s" instead of
|
||||
XCOMM "-" (at least, that is what the documentation implies).
|
||||
XCOMM
|
||||
CC=PREPROC
|
||||
|
||||
silent='-'
|
||||
|
||||
TMP=/tmp/mdep$$
|
||||
CPPCMD=${TMP}a
|
||||
DEPENDLINES=${TMP}b
|
||||
TMPMAKEFILE=${TMP}c
|
||||
MAGICLINE=${TMP}d
|
||||
ARGS=${TMP}e
|
||||
|
||||
trap "rm -f ${TMP}*; exit 1" 1 2 15
|
||||
trap "rm -f ${TMP}*; exit 0" 1 2 13
|
||||
|
||||
echo " \c" > $CPPCMD
|
||||
if [ `wc -c < $CPPCMD` -eq 1 ]
|
||||
then
|
||||
c="\c"
|
||||
n=
|
||||
else
|
||||
c=
|
||||
n="-n"
|
||||
fi
|
||||
|
||||
echo $n "$c" >$ARGS
|
||||
|
||||
files=
|
||||
makefile=
|
||||
magic_string='# DO NOT DELETE'
|
||||
objsuffix='.o'
|
||||
width=78
|
||||
endmarker=""
|
||||
verbose=n
|
||||
|
||||
while [ $# != 0 ]
|
||||
do
|
||||
if [ "$endmarker"x != x -a "$endmarker" = "$1" ]; then
|
||||
endmarker=""
|
||||
else
|
||||
case "$1" in
|
||||
-D*|-I*)
|
||||
echo $n " '$1'$c" >> $ARGS
|
||||
;;
|
||||
|
||||
-g|-o)
|
||||
;;
|
||||
|
||||
*)
|
||||
if [ "$endmarker"x = x ]; then
|
||||
case "$1" in
|
||||
-w)
|
||||
width="$2"
|
||||
shift
|
||||
;;
|
||||
-s)
|
||||
magic_string="$2"
|
||||
shift
|
||||
;;
|
||||
-f)
|
||||
makefile="$2"
|
||||
shift
|
||||
;;
|
||||
-o)
|
||||
objsuffix="$2"
|
||||
shift
|
||||
;;
|
||||
|
||||
--*)
|
||||
echo "$1" | sed 's/^\-\-//' >${TMP}end
|
||||
endmarker="`cat ${TMP}end`"
|
||||
rm -f ${TMP}end
|
||||
if [ "$endmarker"x = x ]; then
|
||||
endmarker="--"
|
||||
fi
|
||||
;;
|
||||
-v)
|
||||
verbose="y"
|
||||
;;
|
||||
|
||||
-cc)
|
||||
CC="$2"
|
||||
shift
|
||||
;;
|
||||
|
||||
-*)
|
||||
echo "Unknown option '$1' ignored" 1>&2
|
||||
;;
|
||||
*)
|
||||
files="$files $1"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
shift
|
||||
done
|
||||
echo ' $*' >> $ARGS
|
||||
|
||||
echo "exec $CC `cat $ARGS`" > $CPPCMD
|
||||
chmod +x $CPPCMD
|
||||
rm $ARGS
|
||||
|
||||
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
|
||||
;;
|
||||
-)
|
||||
makefile=$TMPMAKEFILE
|
||||
;;
|
||||
esac
|
||||
|
||||
if [ "$verbose"x = "y"x ]; then
|
||||
cat $CPPCMD
|
||||
fi
|
||||
|
||||
echo '' > $DEPENDLINES
|
||||
for i in $files
|
||||
do
|
||||
$CPPCMD $i \
|
||||
| sed -n "/^#/s;^;$i ;p"
|
||||
done \
|
||||
| sed -e 's|/[^/.][^/]*/\.\.||g' -e 's|/\.[^.][^/]*/\.\.||g' \
|
||||
-e 's|"||g' -e 's| \./| |' \
|
||||
| awk '{
|
||||
if ($1 != $4 && $2 != "#ident")
|
||||
{
|
||||
ofile = substr ($1, 1, length ($1) - 2) "'"$objsuffix"'"
|
||||
print ofile, $4
|
||||
}
|
||||
}' \
|
||||
| sort -u \
|
||||
| awk '
|
||||
{
|
||||
newrec = rec " " $2
|
||||
if ($1 != old1)
|
||||
{
|
||||
old1 = $1
|
||||
if (rec != "")
|
||||
print rec
|
||||
rec = $1 ": " $2
|
||||
}
|
||||
else if (length (newrec) > '"$width"')
|
||||
{
|
||||
print rec
|
||||
rec = $1 ": " $2
|
||||
}
|
||||
else
|
||||
rec = newrec
|
||||
}
|
||||
END \
|
||||
{
|
||||
if (rec != "")
|
||||
print rec
|
||||
}' \
|
||||
| egrep -v '^[^:]*:[ ]*$' >> $DEPENDLINES
|
||||
|
||||
trap "" 1 2 13 15 # Now we are committed
|
||||
case "$makefile" in
|
||||
$TMPMAKEFILE)
|
||||
;;
|
||||
*)
|
||||
rm -f $makefile.bak
|
||||
cp $makefile $makefile.bak
|
||||
echo "Appending dependencies to $makefile"
|
||||
;;
|
||||
esac
|
||||
|
||||
XCOMM
|
||||
XCOMM Append the magic string and a blank line so that /^$magic_string/+1,\$d
|
||||
XCOMM can be used to delete everything from after the magic string to the end
|
||||
XCOMM of the file. Then, append a blank line again and then the dependencies.
|
||||
XCOMM
|
||||
cat >> $makefile << END_OF_APPEND
|
||||
|
||||
$magic_string
|
||||
|
||||
END_OF_APPEND
|
||||
ed $silent $makefile << END_OF_ED_SCRIPT
|
||||
/^$magic_string/+1,\$d
|
||||
w
|
||||
q
|
||||
END_OF_ED_SCRIPT
|
||||
echo '' >>$makefile
|
||||
cat $DEPENDLINES >>$makefile
|
||||
|
||||
case "$makefile" in
|
||||
$TMPMAKEFILE)
|
||||
cat $TMPMAKEFILE
|
||||
;;
|
||||
|
||||
esac
|
||||
|
||||
rm -f ${TMP}*
|
||||
exit 0
|
||||
Reference in New Issue
Block a user