- #!/bin/sh -
- #
- # Copyright (c) 1987 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
- #export PATH
- MAKE=Makefile # default makefile name is "Makefile"
- while :
- do case "$1" in
- # -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] [-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_
- awk=awk
- if [ -x /bin/nawk ] ; then
- awk=/bin/nawk
- fi
- # 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/.cc/.o/' |
- opts=""
- act="opts"
- for f in $*; do
- if [ "$f" == "--" ]; then
- act="files"
- continue
- fi
- if [ "$act" == "opts" ]; then
- opts="$opts $f"
- else
- g++ $opts -MM $f -MT ${f/%.c?/.o} |
- sed "
- s; ./; ;g
- $SED" >>$TMP
- fi
- done
- 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