|
|
1.1 root 1: #!/bin/sh -
2: #
3: # Copyright (c) 1987 Regents of the University of California.
4: # All rights reserved.
5: #
6: # Redistribution and use in source and binary forms are permitted
7: # provided that the above copyright notice and this paragraph are
8: # duplicated in all such forms and that any documentation,
9: # advertising materials, and other materials related to such
10: # distribution and use acknowledge that the software was developed
11: # by the University of California, Berkeley. The name of the
12: # University may not be used to endorse or promote products derived
13: # from this software without specific prior written permission.
14: # THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
15: # IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
16: # WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
17: #
18: # @(#)mkdep.sh 5.12 (Berkeley) 6/30/88
19: #
20: PATH=/bin:/usr/bin:/usr/ucb
21: export PATH
22:
23: MAKE=Makefile # default makefile name is "Makefile"
24:
25: while :
26: do case "$1" in
27: # -f allows you to select a makefile name
28: -f)
29: MAKE=$2
30: shift; shift ;;
31:
32: # the -p flag produces "program: program.c" style dependencies
33: # so .o's don't get produced
34: -p)
35: SED='s;\.o;;'
36: shift ;;
37: *)
38: break ;;
39: esac
40: done
41:
42: if [ $# = 0 ] ; then
43: echo 'usage: mkdep [-p] [-f makefile] [flags] file ...'
44: exit 1
45: fi
46:
47: if [ ! -w $MAKE ]; then
48: echo "mkdep: no writeable file \"$MAKE\""
49: exit 1
50: fi
51:
52: TMP=/tmp/mkdep$$
53:
54: trap 'rm -f $TMP ; exit 1' 1 2 3 13 15
55:
56: cp $MAKE ${MAKE}.bak
57:
58: sed -e '/DO NOT DELETE THIS LINE/,$d' < $MAKE > $TMP
59:
60: cat << _EOF_ >> $TMP
61: # DO NOT DELETE THIS LINE -- mkdep uses it.
62: # DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
63:
64: _EOF_
65:
66: # If your compiler doesn't have -M, add it. If you can't, the next two
67: # lines will try and replace the "cc -M". The real problem is that this
68: # hack can't deal with anything that requires a search path, and doesn't
69: # even try for anything using bracket (<>) syntax.
70: #
71: # egrep '^#include[ ]*".*"' /dev/null $* |
72: # sed -e 's/:[^"]*"\([^"]*\)".*/: \1/' -e 's/\.c/.o/' |
73:
74: cc -M $* |
75: sed "
76: s; \./; ;g
77: $SED" |
78: awk '{
79: if ($1 != prev) {
80: if (rec != "")
81: print rec;
82: rec = $0;
83: prev = $1;
84: }
85: else {
86: if (length(rec $2) > 78) {
87: print rec;
88: rec = $0;
89: }
90: else
91: rec = rec " " $2
92: }
93: }
94: END {
95: print rec
96: }' >> $TMP
97:
98: cat << _EOF_ >> $TMP
99:
100: # IF YOU PUT ANYTHING HERE IT WILL GO AWAY
101: _EOF_
102:
103: # copy to preserve permissions
104: cp $TMP $MAKE
105: rm -f ${MAKE}.bak $TMP
106: exit 0
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.