PageRenderTime 30ms CodeModel.GetById 13ms app.highlight 10ms RepoModel.GetById 2ms app.codeStats 0ms

/contrib/bind9/make/mkdep.in

https://bitbucket.org/freebsd/freebsd-head/
Autoconf | 187 lines | 90 code | 20 blank | 77 comment | 18 complexity | efdf4ff0388ed5a24999950a9dc7c254 MD5 | raw file
  1#!/bin/sh -
  2
  3##
  4## Modified to handle -vpath <path> option by Michael Graff, ISC.
  5## The purpose of this is to allow this script to run outside of the
  6## source directory, for instance when running configure with
  7##   ../bind9-mainline/configure
  8## and still have "make depend" work.
  9##
 10
 11## ++Copyright++ 1987
 12## -
 13## Copyright (c) 1987 Regents of the University of California.
 14## All rights reserved.
 15##
 16## Redistribution and use in source and binary forms, with or without
 17## modification, are permitted provided that the following conditions
 18## are met:
 19## 1. Redistributions of source code must retain the above copyright
 20##    notice, this list of conditions and the following disclaimer.
 21## 2. Redistributions in binary form must reproduce the above copyright
 22##    notice, this list of conditions and the following disclaimer in the
 23##    documentation and/or other materials provided with the distribution.
 24## 3. All advertising materials mentioning features or use of this software
 25##    must display the following acknowledgement:
 26## This product includes software developed by the University of
 27## California, Berkeley and its contributors.
 28## 4. Neither the name of the University nor the names of its contributors
 29##    may be used to endorse or promote products derived from this software
 30##    without specific prior written permission.
 31## THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 32## ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 33## IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 34## ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 35## FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 36## DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 37## OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 38## HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 39## LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 40## OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 41## SUCH DAMAGE.
 42## -
 43## Portions Copyright (c) 1993 by Digital Equipment Corporation.
 44##
 45## Permission to use, copy, modify, and distribute this software for any
 46## purpose with or without fee is hereby granted, provided that the above
 47## copyright notice and this permission notice appear in all copies, and that
 48## the name of Digital Equipment Corporation not be used in advertising or
 49## publicity pertaining to distribution of the document or software without
 50## specific, written prior permission.
 51##
 52## THE SOFTWARE IS PROVIDED "AS IS" AND DIGITAL EQUIPMENT CORP. DISCLAIMS ALL
 53## WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES
 54## OF MERCHANTABILITY AND FITNESS.   IN NO EVENT SHALL DIGITAL EQUIPMENT
 55## CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
 56## DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
 57## PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
 58## ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 59## SOFTWARE.
 60## -
 61## --Copyright--
 62
 63#
 64#	@(#)mkdep.sh	5.12 (Berkeley) 6/30/88
 65#
 66
 67MAKE=Makefile			# default makefile name is "Makefile"
 68
 69while :
 70	do case "$1" in
 71		# -vpath allows one to select a virtual path for .c files
 72		-vpath)
 73			VPATH=$2;
 74			shift; shift ;;
 75		# -f allows you to select a makefile name
 76		-f)
 77			MAKE=$2
 78			shift; shift ;;
 79
 80		# the -p flag produces "program: program.c" style dependencies
 81		# so .o's don't get produced
 82		-p)
 83			SED='s;\.o;;'
 84			shift ;;
 85		*)
 86			break ;;
 87	esac
 88done
 89
 90if [ $# = 0 ] ; then
 91	echo 'usage: mkdep [-vpath path] [-p] [-f makefile] [flags] file ...'
 92	exit 1
 93fi
 94
 95if [ ! -w $MAKE ]; then
 96	echo "mkdep: no writeable file \"$MAKE\""
 97	exit 1
 98fi
 99
100TMP=mkdep$$
101
102trap 'rm -f $TMP ; exit 1' 1 2 3 13 15
103
104cp $MAKE ${MAKE}.bak
105
106sed -e '/DO NOT DELETE THIS LINE/,$d' < $MAKE > $TMP
107
108cat << _EOF_ >> $TMP
109# DO NOT DELETE THIS LINE -- mkdep uses it.
110# DO NOT PUT ANYTHING AFTER THIS LINE, IT WILL GO AWAY.
111
112_EOF_
113
114# If your compiler doesn't have -M, add it.  If you can't, the next two
115# lines will try and replace the "cc -M".  The real problem is that this
116# hack can't deal with anything that requires a search path, and doesn't
117# even try for anything using bracket (<>) syntax.
118#
119# egrep '^#include[ 	]*".*"' /dev/null $* |
120# sed -e 's/:[^"]*"\([^"]*\)".*/: \1/' -e 's/\.c/.o/' |
121
122if [ X"${VPATH}" != X ] ; then
123    for arg in $* ; do
124	case "$arg" in
125	    -*)
126		newargs="$newargs $arg"
127		;;
128	    *)
129		newargs="$newargs $VPATH/$arg"
130		;;
131	esac
132    done
133else
134    newargs="$*";
135fi
136
137MKDEPPROG="@MKDEPPROG@"
138if [ X"${MKDEPPROG}" != X ]; then
139    @SHELL@ -c "${MKDEPPROG} ${newargs}"
140else
141    @MKDEPCC@ @MKDEPCFLAGS@ ${newargs} |
142    sed "
143	s; \\./; ;g
144	s; \\\\; ;g
145	@LIBTOOL_MKDEP_SED@
146	$SED" |
147    awk '$1 ~ /:$/ {
148		if (rec != "")
149			 print rec;
150		if (NF == 1)
151			rec = $1;
152		else
153			rec = $1 " " $2;
154		for (i = 3; i <= NF; i++) {
155			if (length(rec $i) > 76) {
156				print rec " \\";
157				rec = "    " $i;
158			} else {
159				rec = rec " " $i;
160			}
161		}
162		next;
163	}
164	{
165		for (i = 1; i <= NF; i++) {
166			if (length(rec $i) > 76) {
167				print rec, "\\";
168				rec =  "    " $i;
169			} else {
170				rec = rec " " $i;
171			}
172		}
173	}
174    END {
175	print rec
176    }' >> $TMP
177fi
178
179cat << _EOF_ >> $TMP
180
181# IF YOU PUT ANYTHING HERE IT WILL GO AWAY
182_EOF_
183
184# copy to preserve permissions
185cp $TMP $MAKE
186rm -f ${MAKE}.bak $TMP
187exit 0