| #!/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 the above copyright notice and this paragraph are | |
| # duplicated in all such forms and that any documentation, | |
| # advertising materials, and other materials related to such | |
| # distribution and use acknowledge that the software was developed | |
| # by the University of California, 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'' AND WITHOUT ANY EXPRESS OR | |
| # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED | |
| # WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. | |
| # | |
| # @(#)mkdep.sh 5.12 (Berkeley) 6/30/88 | |
| # | |
| 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_ | |
| # 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/' | | |
| gcc -MM $* | | |
| sed " | |
| s; \./; ;g | |
| $SED" >> $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 | |