Annotation of src/usr.bin/mkdep/mkdep.old.compiler, Revision 1.1
1.1 ! deraadt 1: #!/bin/sh -
! 2: #
! 3: # $NetBSD: mkdep.old.compiler,v 1.2 1994/12/23 07:35:00 jtc Exp $
! 4: #
! 5: # Copyright (c) 1991, 1993
! 6: # The Regents of the University of California. All rights reserved.
! 7: #
! 8: # Redistribution and use in source and binary forms, with or without
! 9: # modification, are permitted provided that the following conditions
! 10: # are met:
! 11: # 1. Redistributions of source code must retain the above copyright
! 12: # notice, this list of conditions and the following disclaimer.
! 13: # 2. Redistributions in binary form must reproduce the above copyright
! 14: # notice, this list of conditions and the following disclaimer in the
! 15: # documentation and/or other materials provided with the distribution.
! 16: # 3. All advertising materials mentioning features or use of this software
! 17: # must display the following acknowledgement:
! 18: # This product includes software developed by the University of
! 19: # California, Berkeley and its contributors.
! 20: # 4. Neither the name of the University nor the names of its contributors
! 21: # may be used to endorse or promote products derived from this software
! 22: # without specific prior written permission.
! 23: #
! 24: # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
! 25: # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
! 26: # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
! 27: # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
! 28: # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
! 29: # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
! 30: # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
! 31: # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
! 32: # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
! 33: # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
! 34: # SUCH DAMAGE.
! 35: #
! 36: # @(#)mkdep.old.compiler 8.1 (Berkeley) 6/6/93
! 37: #
! 38:
! 39: # This is a version of mkdep that works pretty well
! 40: # with compilers that don't have -M.
! 41: MAKE=Makefile # default makefile name is "Makefile"
! 42:
! 43: PATH=/bin:/usr/bin:/usr/ucb:/lib:/usr/lib
! 44:
! 45: INCL=
! 46:
! 47: while :
! 48: do case "$1" in
! 49: # -f allows you to select a makefile name
! 50: -f)
! 51: MAKE=$2
! 52: shift; shift ;;
! 53:
! 54: # the -p flag produces "program: program.c" style dependencies
! 55: # so .o's don't get produced
! 56: -p)
! 57: SED='s;\.o;;'
! 58: shift ;;
! 59: *)
! 60: break ;;
! 61: esac
! 62: done
! 63:
! 64: if [ $# = 0 ] ; then
! 65: echo 'usage: mkdep [-p] [-f makefile] [flags] file ...'
! 66: exit 1
! 67: fi
! 68:
! 69: if [ ! -w $MAKE ]; then
! 70: echo "mkdep: no writeable file \"$MAKE\""
! 71: exit 1
! 72: fi
! 73:
! 74: TMP=/tmp/mkdep$$
! 75:
! 76: trap 'rm -f $TMP ; exit 1' 1 2 3 13 15
! 77:
! 78: cp $MAKE ${MAKE}.bak
! 79: sed -e '/DO NOT DELETE THIS LINE/,$d' < $MAKE > $TMP
! 80:
! 81: cat << _EOF_ >> $TMP
! 82: # DO NOT DELETE THIS LINE -- mkdep uses it.
! 83: # DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
! 84:
! 85: _EOF_
! 86:
! 87:
! 88: for i do
! 89: case "$i" in
! 90: -c|-M|-O)
! 91: ;;
! 92: -I*)
! 93: INCL="$INCL $i";;
! 94: -D*|-U*)
! 95: FLAGS="$FLAGS $i";;
! 96: *)
! 97: # assume source file
! 98: # put '$dep' in front of dependencies
! 99: dep=`echo "$i" | sed -e 's,/,\\\\/,g' -e 's/\.c$/.o/'`
! 100:
! 101: # Find includes, remove leading numerics, remove ./,
! 102: # remove double quotes, and remove trailing numerics.
! 103: # Sort that, discarding duplicates, and add '$dep'.
! 104: cpp $INCL $FLAGS "$i" | sed -e '
! 105: /^#/!d
! 106: s/# [0-9]* //
! 107: s,"./,",
! 108: s/"\(.*\)"/\1/
! 109: s/ [ 0-9]*$//' |
! 110: sort -u | sed -e "s/^/$dep: /";;
! 111: esac
! 112: done |
! 113: sed "
! 114: s; \./; ;g
! 115: /\.c:$/d
! 116: $SED" |
! 117: awk '{
! 118: if ($1 != prev) {
! 119: if (rec != "")
! 120: print rec;
! 121: rec = $0;
! 122: prev = $1;
! 123: }
! 124: else {
! 125: if (length(rec $2) > 78) {
! 126: print rec;
! 127: rec = $0;
! 128: }
! 129: else
! 130: rec = rec " " $2
! 131: }
! 132: }
! 133: END {
! 134: print rec
! 135: }' >> $TMP
! 136:
! 137: cat << _EOF_ >> $TMP
! 138:
! 139: # IF YOU PUT ANYTHING HERE IT WILL GO AWAY
! 140: _EOF_
! 141:
! 142: # copy to preserve permissions
! 143: cp $TMP $MAKE
! 144: rm -f $TMP
! 145: exit 0