You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
2.4 KiB
112 lines
2.4 KiB
#!/bin/sh - |
|
# |
|
# Copyright (c) 1994, 1996 |
|
# The Regents of the University of California. All rights reserved. |
|
# |
|
# Redistribution and use in source and binary forms are permitted |
|
# provided that this notice is preserved and that due credit is given |
|
# to the University of California at Berkeley. The name of the University |
|
# may not be used to endorse or promote products derived from this |
|
# software without specific prior written permission. This software |
|
# is provided ``as is'' without express or implied warranty. |
|
# |
|
# @(#)mkdep.sh 5.11 (Berkeley) 5/5/88 |
|
# |
|
|
|
MAKE=Makefile # default makefile name is "Makefile" |
|
CC=cc # default C compiler is "cc" |
|
DEPENDENCY_CFLAG=-M # default dependency-generation flag is -M |
|
|
|
while : |
|
do case "$1" in |
|
# -c allows you to specify the C compiler |
|
-c) |
|
CC=$2 |
|
shift; shift ;; |
|
|
|
# -f allows you to select a makefile name |
|
-f) |
|
MAKE=$2 |
|
shift; shift ;; |
|
|
|
# -m allows you to specify the dependency-generation flag |
|
-m) |
|
DEPENDENCY_CFLAG=$2 |
|
shift; shift ;; |
|
|
|
# the -p flag produces "program: program.c" style dependencies |
|
# so .o's don't get produced |
|
-p) |
|
SED='s;\.o;;' |
|
shift ;; |
|
*) |
|
break ;; |
|
esac |
|
done |
|
|
|
if [ $# = 0 ] ; then |
|
echo 'usage: mkdep [-p] [-c cc] [-f makefile] [-m dependency-cflag] [flags] file ...' |
|
exit 1 |
|
fi |
|
|
|
if [ ! -w $MAKE ]; then |
|
echo "mkdep: no writeable file \"$MAKE\"" |
|
exit 1 |
|
fi |
|
|
|
TMP=/tmp/mkdep$$ |
|
|
|
trap 'rm -f $TMP ; exit 1' 1 2 3 13 15 |
|
|
|
cp $MAKE ${MAKE}.bak |
|
|
|
sed -e '/DO NOT DELETE THIS LINE/,$d' < $MAKE > $TMP |
|
|
|
cat << _EOF_ >> $TMP |
|
# DO NOT DELETE THIS LINE -- mkdep uses it. |
|
# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY. |
|
|
|
_EOF_ |
|
|
|
# If your compiler doesn't have -M, add it. If you can't, the next two |
|
# lines will try and replace the "cc -M". The real problem is that this |
|
# hack can't deal with anything that requires a search path, and doesn't |
|
# even try for anything using bracket (<>) syntax. |
|
# |
|
# egrep '^#include[ ]*".*"' /dev/null $* | |
|
# sed -e 's/:[^"]*"\([^"]*\)".*/: \1/' -e 's/\.c/.o/' | |
|
|
|
# XXX this doesn't work with things like "-DDECLWAITSTATUS=union\ wait" |
|
$CC $DEPENDENCY_CFLAG $* | |
|
sed " |
|
s; \./; ;g |
|
$SED" | |
|
awk '{ |
|
if ($1 != prev) { |
|
if (rec != "") |
|
print rec; |
|
rec = $0; |
|
prev = $1; |
|
} |
|
else { |
|
if (length(rec $2) > 78) { |
|
print rec; |
|
rec = $0; |
|
} |
|
else |
|
rec = rec " " $2 |
|
} |
|
} |
|
END { |
|
print rec |
|
}' >> $TMP |
|
|
|
cat << _EOF_ >> $TMP |
|
|
|
# IF YOU PUT ANYTHING HERE IT WILL GO AWAY |
|
_EOF_ |
|
|
|
# copy to preserve permissions |
|
cp $TMP $MAKE |
|
rm -f ${MAKE}.bak $TMP |
|
exit 0
|
|
|