xref: /freebsd/usr.bin/mkdep/mkdep.gcc.sh (revision 2008043f386721d58158e37e0d7e50df8095942d)
1#!/bin/sh -
2#
3# SPDX-License-Identifier: BSD-3-Clause
4#
5# Copyright (c) 1991, 1993
6#	The Regents of the University of California.  All rights reserved.
7#
8# Redistribution and use in source and binary forms, with or without
9# modification, are permitted provided that the following conditions
10# are met:
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. Neither the name of the University nor the names of its contributors
17#    may be used to endorse or promote products derived from this software
18#    without specific prior written permission.
19#
20# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30# SUCH DAMAGE.
31#
32#	@(#)mkdep.gcc.sh	8.1 (Berkeley) 6/6/93
33
34D=.depend			# default dependency file is .depend
35append=0
36pflag=
37
38while :
39	do case "$1" in
40		# -a appends to the depend file
41		-a)
42			append=1
43			shift ;;
44
45		# -f allows you to select a makefile name
46		-f)
47			D=$2
48			shift; shift ;;
49
50		# the -p flag produces "program: program.c" style dependencies
51		# so .o's don't get produced
52		-p)
53			pflag=p
54			shift ;;
55		*)
56			break ;;
57	esac
58done
59
60case $# in 0)
61	echo 'usage: mkdep [-ap] [-f file] [flags] file ...' >&2
62	exit 1;;
63esac
64
65TMP=_mkdep$$
66trap 'rm -f $TMP ; trap 2 ; kill -2 $$' 1 2 3 13 15
67trap 'rm -f $TMP' 0
68
69# For C sources, mkdep must use exactly the same cpp and predefined flags
70# as the compiler would.  This is easily arranged by letting the compiler
71# pick the cpp.  mkdep must be told the cpp to use for exceptional cases.
72CC=${CC-"cc"}
73MKDEP_CPP=${MKDEP_CPP-"${CC} -E"}
74MKDEP_CPP_OPTS=${MKDEP_CPP_OPTS-"-M"};
75
76echo "# $@" > $TMP	# store arguments for debugging
77
78if $MKDEP_CPP $MKDEP_CPP_OPTS "$@" >> $TMP; then :
79else
80	echo 'mkdep: compile failed' >&2
81	exit 1
82fi
83
84case x$pflag in
85	x) case $append in
86		0) sed -e 's; \./; ;g' < $TMP >  $D;;
87		*) sed -e 's; \./; ;g' < $TMP >> $D;;
88	   esac
89	;;
90	*) case $append in
91		0) sed -e 's;\.o:;:;' -e 's; \./; ;g' < $TMP >  $D;;
92		*) sed -e 's;\.o:;:;' -e 's; \./; ;g' < $TMP >> $D;;
93	   esac
94	;;
95esac
96
97exit $?
98