silly people that don't want to install/run autoconf :-)
[asterisk/asterisk.git] / build_tools / mkdep
1 #!/bin/sh -
2 #
3 #       $OpenBSD: mkdep.gcc.sh,v 1.8 1998/09/02 06:40:07 deraadt Exp $
4 #       $NetBSD: mkdep.gcc.sh,v 1.9 1994/12/23 07:34:59 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.gcc.sh        8.1 (Berkeley) 6/6/93
38 #
39
40 D=.depend                       # default dependency file is .depend
41 append=0
42 pflag=
43 dflag=
44
45 while :
46         do case "$1" in
47                 # -a appends to the depend file
48                 -a)
49                         append=1
50                         shift ;;
51
52                 # -f allows you to select a makefile name
53                 -f)
54                         D=$2
55                         shift; shift ;;
56
57                 # the -p flag produces "program: program.c" style dependencies
58                 # so .o's don't get produced
59                 -p)
60                         pflag=p
61                         shift ;;
62
63                 # the -d flag produces double-colon rules instead of single-colon rules
64                 -d)
65                         dflag=d
66                         shift ;;
67
68                 *)
69                         break ;;
70         esac
71 done
72
73 if [ $# = 0 ] ; then
74         echo 'usage: mkdep [-p] [-d] [-f depend_file] [cc_flags] file ...'
75         exit 1
76 fi
77
78 DTMP=/tmp/mkdep$$
79 TMP=$DTMP/mkdep
80
81 um=`umask`
82 umask 022
83 mkdir $DTMP
84 if [ $? != 0 ] ; then
85         echo failed to create tmp dir $DTMP
86         exit 1
87 fi
88
89 umask $um
90 trap 'rm -rf $DTMP ; trap 2 ; kill -2 $$' 1 2 3 13 15
91
92 if [ x$pflag = xp ]; then
93         ${CC:-cc} -M "$@" 2>/dev/null | sed -e 's;\.o :; :;' -e 's; \./; ;g' > $TMP
94 elif [ x$dflag = xd ]; then
95         ${CC:-cc} -M "$@" 2>/dev/null | sed -e 's;\.o:;\.o::;' -e 's; \./; ;g' > $TMP
96 else
97         ${CC:-cc} -M "$@" 2>/dev/null | sed -e 's; \./; ;g' > $TMP
98 fi
99
100 if [ $? != 0 ]; then
101         echo 'mkdep: compile failed.'
102         rm -rf $DTMP
103         exit 1
104 fi
105
106 if [ $append = 1 ]; then
107         cat $TMP >> $D
108         if [ $? != 0 ]; then
109                 echo 'mkdep: append failed.'
110                 rm -rf $DTMP
111                 exit 1
112         fi
113 else
114         mv $TMP $D
115         if [ $? != 0 ]; then
116                 echo 'mkdep: rename failed.'
117                 rm -rf $DTMP
118                 exit 1
119         fi
120 fi
121
122 rm -rf $DTMP
123 exit 0