xref: /freebsd/usr.bin/mkdep/mkdep.gcc.sh (revision f6a3b357e9be4c6423c85eff9a847163a0d307c8)
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# $FreeBSD$
34
35D=.depend			# default dependency file is .depend
36append=0
37pflag=
38
39while :
40	do case "$1" in
41		# -a appends to the depend file
42		-a)
43			append=1
44			shift ;;
45
46		# -f allows you to select a makefile name
47		-f)
48			D=$2
49			shift; shift ;;
50
51		# the -p flag produces "program: program.c" style dependencies
52		# so .o's don't get produced
53		-p)
54			pflag=p
55			shift ;;
56		*)
57			break ;;
58	esac
59done
60
61case $# in 0)
62	echo 'usage: mkdep [-ap] [-f file] [flags] file ...' >&2
63	exit 1;;
64esac
65
66TMP=_mkdep$$
67trap 'rm -f $TMP ; trap 2 ; kill -2 $$' 1 2 3 13 15
68trap 'rm -f $TMP' 0
69
70# For C sources, mkdep must use exactly the same cpp and predefined flags
71# as the compiler would.  This is easily arranged by letting the compiler
72# pick the cpp.  mkdep must be told the cpp to use for exceptional cases.
73CC=${CC-"cc"}
74MKDEP_CPP=${MKDEP_CPP-"${CC} -E"}
75MKDEP_CPP_OPTS=${MKDEP_CPP_OPTS-"-M"};
76
77echo "# $@" > $TMP	# store arguments for debugging
78
79if $MKDEP_CPP $MKDEP_CPP_OPTS "$@" >> $TMP; then :
80else
81	echo 'mkdep: compile failed' >&2
82	exit 1
83fi
84
85case x$pflag in
86	x) case $append in
87		0) sed -e 's; \./; ;g' < $TMP >  $D;;
88		*) sed -e 's; \./; ;g' < $TMP >> $D;;
89	   esac
90	;;
91	*) case $append in
92		0) sed -e 's;\.o:;:;' -e 's; \./; ;g' < $TMP >  $D;;
93		*) sed -e 's;\.o:;:;' -e 's; \./; ;g' < $TMP >> $D;;
94	   esac
95	;;
96esac
97
98exit $?
99