NetBSD/tools/host-mkdep/host-mkdep.in
2002-01-28 19:26:35 +00:00

114 lines
3.1 KiB
Bash

#!/bin/sh -
#
# $NetBSD: host-mkdep.in,v 1.2 2002/01/28 19:26:35 tv Exp $
#
# Copyright (c) 1991, 1993
# The Regents of the University of California. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. All advertising materials mentioning features or use of this software
# must display the following acknowledgement:
# This product includes software developed by the University of
# California, Berkeley and its contributors.
# 4. Neither the name of the University nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
#
# @(#)mkdep.old.compiler 8.1 (Berkeley) 6/6/93
#
APPEND=false
CPPFLAGS=
NEWEXT=.o
OUTFILE=.depend
SRCS=
while [ $# -gt 0 ]; do
case "$1" in
-a) APPEND=true; shift;;
-f) OUTFILE=$2; shift; shift;;
-p) NEWEXT=; shift;;
*) break;;
esac
done
if [ $# = 0 ] ; then
echo "usage: $0 [-a] [-p] [-f makefile] [flags] file ..."
exit 1
fi
while [ $# -gt 0 ]; do
case "$1" in
-L) shift; shift;; # takes an arg, but ignored
-c|-[lLMOW]*) shift;; # takes no extra args
-[IDU]*) CPPFLAGS="$CPPFLAGS $1"; shift;;
-[IDU]|-include)
CPPFLAGS="$CPPFLAGS $1 $2"; shift; shift;;
-*) echo "$0: unknown option: $1"; exit 1;; # all other -options
*) SRCS="$SRCS $1"; shift;; # source file
esac
done
TMP=/tmp/mkdep$$
rm -f $TMP
trap 'rm -f $TMP; exit 1' 1 2 3 13 15
for f in $SRCS; do
@CPP@ $CPPFLAGS $f | @AWK@ '
BEGIN {
objfile = "'$f'"
sub(/^.*\//, "", objfile)
sub(/\.(c|cc|m)$/, "'$NEWEXT'", objfile)
}
/^#/ {
# Be as tolerant as possible.
sub(/^#(line)? [ 0-9]*\"?/, "")
sub(/\".*$/, "")
sub(/ [ 0-9]*$/, "")
if ($0 in seenfiles) next
if ($0 ~ /y.tab.c/) next
seenfiles[$0] = 1
print objfile ": " $0
}
' >>$TMP
done
if $APPEND; then
cat $TMP >>$OUTFILE
else
cat $TMP >$OUTFILE
fi
rm -f $TMP
exit 0