2
# $OpenLDAP: pkg/ldap/build/mkdep,v 1.32.2.3 2008/02/11 23:26:37 kurt Exp $
3
## This work is part of OpenLDAP Software <http://www.openldap.org/>.
5
## Copyright 1998-2008 The OpenLDAP Foundation.
6
## All rights reserved.
8
## Redistribution and use in source and binary forms, with or without
9
## modification, are permitted only as authorized by the OpenLDAP
12
## A copy of this license is available in the file LICENSE in the
13
## top-level directory of the distribution or, alternatively, at
14
## <http://www.OpenLDAP.org/license.html>.
16
## Portions Copyright (c) 1987 Regents of the University of California.
17
## All rights reserved.
19
## Redistribution and use in source and binary forms are permitted
20
## provided that the above copyright notice and this paragraph are
21
## duplicated in all such forms and that any documentation,
22
## advertising materials, and other materials related to such
23
## distribution and use acknowledge that the software was developed
24
## by the University of California, Berkeley. The name of the
25
## University may not be used to endorse or promote products derived
26
## from this software without specific prior written permission.
27
## THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
28
## IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
29
## WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
31
# @(#)mkdep.sh 5.12 (Berkeley) 6/30/88
33
# We now use whatever path is already set by the invoker
34
#PATH=/bin:/usr/bin:/usr/ucb
37
set -e # exit immediately if any errors occur
39
MAKE=Makefile # default makefile name is "Makefile"
40
NOSLASH="no" # by default, / dependencies are included
44
: ${CC=cc} # use cc by default
46
# We generally set these via the command line options
47
: ${MKDEP_CC=$CC} # select default compiler to generate dependencies
48
: ${MKDEP_CFLAGS="-M"} # cc -M usually produces dependencies
52
# the -s flag removes dependencies to files that begin with /
57
# -f allows you to select a makefile name
62
# -d allows you to select a VPATH directory
67
# -c allows you to override the compiler used to generate dependencies
72
# -m allows you to override the compiler flags used to generate
78
# the -p flag produces "program: program.c" style dependencies
79
# so .o's don't get produced
84
# the -l flag produces libtool compatible dependencies
86
SED='sed -e s;\.o:;.lo:;'
97
echo 'usage: mkdep [-p] [-s] [-c cc] [-m flags] [-f makefile] [-d srcdir] [cppflags] file ...'
101
if test ! -w $MAKE ; then
102
echo "mkdep: no writeable file \"$MAKE\""
108
trap 'rm -f $TMP.sed $TMP ; exit 1' 1 2 3 13 15
112
sed -e '/DO NOT DELETE THIS LINE/,$d' < $MAKE > $TMP
115
# DO NOT DELETE THIS LINE -- mkdep uses it.
116
# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
120
# If your compiler doesn't have -M, you may be able to use -E instead.
121
# The preprocessor must generate lines of the form
122
# #.* [0-9]* "dependent file" .*
123
# This script will parse out the "dependent file"s to generate the
126
if test "x$SRCDIR" = "x" ; then
133
elif test -f $SRCDIR/$i ; then
134
files="$files $SRCDIR/$i"
140
MKDEP_CFLAGS="$MKDEP_CFLAGS -I$SRCDIR"
147
# command: $MKDEP_CC $MKDEP_CFLAGS $files
152
case $MKDEP_CFLAGS in
153
# Using regular preprocessor output
159
-*) FLAGS="$FLAGS $i" ;;
160
*) FILES="$FILES $i" ;;
164
$MKDEP_CC $MKDEP_CFLAGS $FLAGS $i | grep '^#.*"' > $TMP.sed
168
n = split(file, parts, "/")
169
filenm = substr(parts[n], 0, length(parts[n])-1) "o"
172
dep = split($3, parts, "\"")
174
if (dep ~ "^\./.*") dep = substr(dep, 3, length(dep)-2)
175
if (( noslash == "yes") && (dep ~ /^\// )) continue
176
if (deps[dep] == 0) printf "%s: %s\n", filenm, dep
178
}' noslash="$NOSLASH" $TMP.sed >> $TMP
183
# Using -M or some other specific dependency-generating option
184
$MKDEP_CC $MKDEP_CFLAGS $files | \
185
sed -e 's; \./; ;g' -e 's/ :/:/' | \
187
# do not pipe to awk. SGI awk wants a filename as argument.
188
# (or '-', but I do not know if all other awks support that.)
192
dep=substr($0, length(filenm)+1)
198
if ( length(filenm) < 2 ) next
199
if ( filenm ~ /:.*:$/ ) next
200
split(dep, depends, " ")
203
if ( length(dfile) < 2 ) continue
204
if ( dfile ~ /:/ ) continue
205
if (( noslash == "yes") && (dfile ~ /^\// )) continue
206
rec = filenm " " dfile
210
' noslash="$NOSLASH" $TMP.sed >> $TMP
217
# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
220
# copy to preserve permissions
222
rm -f ${MAKE}.bak $TMP.sed $TMP