3 # $NetBSD: host-mkdep.in,v 1.21 2012/08/26 22:37:19 jmmv Exp $
5 # Copyright (c) 1991, 1993
6 # The Regents of the University of California. All rights reserved.
8 # Redistribution and use in source and binary forms, with or without
9 # modification, are permitted provided that the following conditions
11 # 1. Redistributions of source code must retain the above copyright
12 # notice, this list of conditions and the following disclaimer.
13 # 2. Redistributions in binary form must reproduce the above copyright
14 # notice, this list of conditions and the following disclaimer in the
15 # documentation and/or other materials provided with the distribution.
16 # 3. All advertising materials mentioning features or use of this software
17 # must display the following acknowledgement:
18 # This product includes software developed by the University of
19 # California, Berkeley and its contributors.
20 # 4. Neither the name of the University nor the names of its contributors
21 # may be used to endorse or promote products derived from this software
22 # without specific prior written permission.
24 # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
25 # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
26 # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
28 # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29 # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30 # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 # @(#)mkdep.old.compiler 8.1 (Berkeley) 6/6/93
52 echo "Usage: $0 [-adopq] [-s .suffixes] [-f .depend] -- [flags] file ..." >&2
58 if [ -n "$NEWEXT" ]; then
65 objlist="$objlist${objlist:+ }$PREFIX$file$suf"
68 objlist="$PREFIX$file"
72 # A getopt compatible command line parser in shell comands.
73 # (don't trust the shell builtin getopts to be in a known state on error)
74 while [ $# -gt 0 ]; do
76 [ "x$option" = "x$1" -o -z "$option" ] && break
79 option="${option%$optarg}"
84 -o) OPTIONAL=true; AWK_OPTIONAL='print ".OPTIONAL:" $0';;
88 -[fPs]) # Options with arguments
95 -f) OUTFILE="$optarg";;
96 -P) PREFIX="$optarg";;
97 -s) NEWEXT="$optarg";;
102 --) [ -z "$optarg" ] && shift
123 # Process argument list.
124 # This is tricky, because arguments may contain spaces and other
125 # escapes characters. The argument list is used like a tail queue.
126 # $cppargs has one x for each unprocessed argument, so when an
127 # argument is processed, it is shifted and the corresponding number
128 # of x's is removed. The advantage to counting is that suffix removal
129 # works without fork.
135 while [ -n "$cppargs" ]; do
137 -L) # takes an arg, but ignored
139 cppargs=${cppargs%xx}
142 -c|-[lLMOW]*) # takes no extra args
153 -[IDU]|-include|-isystem|-isysroot)
154 set -- "$@" "$1" "$2"
156 cppargs=${cppargs%xx}
159 -isystem-cxx|-cxx-isystem)
160 set -- "$@" "-isystem" "$2"
162 cppargs=${cppargs%xx}
165 -no-cpp-precomp) # This is a Darwin-specific option.
171 -nostdinc*) # This is a gcc/g++ ism; ignore if not gcc/g++
173 *-O2*) # Autoconf puts -O2 when gcc only
182 echo "$0: Unknown option: $1" 1>&2 # all other -options
187 SRCS="$SRCS $1" # source file
195 [ -z "$SRCS" ] && usage
200 trap 'rm -f $TMP; exit 1' 1 2 3 13 15
204 if [ ! -f "$f" ]; then
205 if ! $QUIET; then echo "$0: Ignoring $f" >&2; fi
208 while IFS=':'; read target dependents; do
212 if [ "$t1" = "$target" -a "$file" != "$target" ]; then
216 echo "$target:$dependents"
218 echo ".OPTIONAL:$dependents"
228 @CPP@ "$@" $f | @AWK@ '
230 # Be as tolerant as possible.
231 sub(/^#(line)? [ 0-9]*\"?/, "")
232 sub(/^#(pragma).*/, "")
237 if ($0 in seenfiles) next
238 if ($0 ~ /y.tab.c/) next
241 print "'"$objlist"'" ": " $0