Annotation of src/usr.bin/mkdep/mkdep.sh, Revision 1.3
1.1 deraadt 1: #!/bin/sh -
2: #
1.3 ! deraadt 3: # $OpenBSD: mkdep.sh,v 1.2 1996/06/26 05:37:08 deraadt Exp $
1.1 deraadt 4: # $NetBSD: mkdep.sh,v 1.3 1994/12/23 07:35:02 jtc Exp $
5: #
6: # Copyright (c) 1991, 1993
7: # The Regents of the University of California. All rights reserved.
8: #
9: # Redistribution and use in source and binary forms, with or without
10: # modification, are permitted provided that the following conditions
11: # are met:
12: # 1. Redistributions of source code must retain the above copyright
13: # notice, this list of conditions and the following disclaimer.
14: # 2. Redistributions in binary form must reproduce the above copyright
15: # notice, this list of conditions and the following disclaimer in the
16: # documentation and/or other materials provided with the distribution.
17: # 3. All advertising materials mentioning features or use of this software
18: # must display the following acknowledgement:
19: # This product includes software developed by the University of
20: # California, Berkeley and its contributors.
21: # 4. Neither the name of the University nor the names of its contributors
22: # may be used to endorse or promote products derived from this software
23: # without specific prior written permission.
24: #
25: # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
26: # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27: # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
28: # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
29: # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
30: # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
31: # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
32: # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
33: # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
34: # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
35: # SUCH DAMAGE.
36: #
37: # @(#)mkdep.sh 8.1 (Berkeley) 6/6/93
38: #
39:
40: PATH=/bin:/usr/bin:/usr/ucb:/usr/old/bin
41: export PATH
42:
43: D=.depend # default dependency file is .depend
44: append=0
45:
46: while :
47: do case "$1" in
48: # -a appends to the depend file
49: -a)
50: append=1
51: shift ;;
52:
53: # -f allows you to select a makefile name
54: -f)
55: D=$2
56: shift; shift ;;
57:
58: # the -p flag produces "program: program.c" style dependencies
59: # so .o's don't get produced
60: -p)
61: SED='s;\.o ; ;'
62: shift ;;
63: *)
64: break ;;
65: esac
66: done
67:
68: if [ $# = 0 ] ; then
69: echo 'usage: mkdep [-p] [-f depend_file] [cc_flags] file ...'
70: exit 1
71: fi
72:
1.3 ! deraadt 73: DTMP=/tmp/_mkdep$$
! 74: TMP=$DTMP/mkdep
1.1 deraadt 75:
1.3 ! deraadt 76: um=`umask`
! 77: umask 022
! 78: if ! mkdir $DTMP ; then
! 79: echo failed to create tmp dir $DTMP
! 80: exit 1
! 81: fi
! 82: umask $um
! 83: trap 'rm -rf $DTMP ; exit 1' 1 2 3 13 15
1.1 deraadt 84:
85: cc -M $* |
86: sed "
87: s; \./; ;g
88: /\.c:$/d
89: $SED" |
90: awk '{
91: if ($1 != prev) {
92: if (rec != "")
93: print rec;
94: rec = $0;
95: prev = $1;
96: }
97: else {
98: if (length(rec $2) > 78) {
99: print rec;
100: rec = $0;
101: }
102: else
103: rec = rec " " $2
104: }
105: }
106: END {
107: print rec
108: }' > $TMP
109:
110: if [ $? != 0 ]; then
111: echo 'mkdep: compile failed.'
1.3 ! deraadt 112: rm -rf $DTMP
1.1 deraadt 113: exit 1
114: fi
115:
116: if [ $append = 1 ]; then
117: cat $TMP >> $D
1.3 ! deraadt 118: rm -rf $DTMP
1.1 deraadt 119: else
120: mv $TMP $D
121: fi
122: exit 0