- #!/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
- #
- PATH=/bin:/usr/bin:/usr/ucb:/usr/local:/usr/local/bin
- export PATH
- MAKE=Makefile # default makefile name is "Makefile"
- CC=cc # default C compiler is "cc"
- 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 ;;
- # 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] [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 -M $* |
- 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