diff options
Diffstat (limited to 'usr.bin/mkdep')
| -rw-r--r-- | usr.bin/mkdep/Makefile | 8 | ||||
| -rw-r--r-- | usr.bin/mkdep/mkdep.1 | 129 | ||||
| -rw-r--r-- | usr.bin/mkdep/mkdep.gcc.sh | 100 | ||||
| -rw-r--r-- | usr.bin/mkdep/mkdep.sh | 111 |
4 files changed, 348 insertions, 0 deletions
diff --git a/usr.bin/mkdep/Makefile b/usr.bin/mkdep/Makefile new file mode 100644 index 000000000000..463466ca840a --- /dev/null +++ b/usr.bin/mkdep/Makefile @@ -0,0 +1,8 @@ +# @(#)Makefile 8.1 (Berkeley) 6/6/93 +# $FreeBSD$ + +SCRIPTS= mkdep.gcc.sh +MAN= mkdep.1 +SCRIPTSNAME= mkdep + +.include <bsd.prog.mk> diff --git a/usr.bin/mkdep/mkdep.1 b/usr.bin/mkdep/mkdep.1 new file mode 100644 index 000000000000..5d86209a03af --- /dev/null +++ b/usr.bin/mkdep/mkdep.1 @@ -0,0 +1,129 @@ +.\" Copyright (c) 1987, 1990, 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.1 8.1 (Berkeley) 6/6/93 +.\" $FreeBSD$ +.\" +.Dd June 6, 1993 +.Dt MKDEP 1 +.Os +.Sh NAME +.Nm mkdep +.Nd construct Makefile dependency list +.Sh SYNOPSIS +.Nm +.Op Fl ap +.Op Fl f Ar file +.Op Ar flags +.Ar +.Sh DESCRIPTION +The +.Nm +utility takes a set of flags for the C compiler and a list +of C source files as arguments and constructs a set of include +file dependencies which are written into the file ``.depend''. +An example of its use in a Makefile might be: +.Bd -literal -offset indent +CFLAGS= -O -I../include +SRCS= file1.c file2.c + +depend: + mkdep ${CFLAGS} ${SRCS} +.Ed +.Pp +where the macro SRCS is the list of C source files and the macro +CFLAGS is the list of flags for the C compiler. +.Pp +The user has the ability to change the preprocessor and preprocessor options +used. +For instance, to use gcc as the preprocessor and to ignore system +headers, one would use +.Bd -literal -offset indent +depend: + env MKDEP_CPP="gcc -E" MKDEP_CPP_OPTS=-MM mkdep \\ + ${CFLAGS} ${SRCS} +.Ed +.Pp +The options are as follows: +.Bl -tag -width Ds +.It Fl a +Append to the output file, +so that multiple +.Nm Ns 's +may be run from a single Makefile. +.It Fl f +Write the include file dependencies to +.Ar file , +instead of the default ``.depend''. +.It Fl p +Cause +.Nm +to produce dependencies of the form: +.Bd -literal -offset indent +program: program.c +.Ed +.Pp +so that subsequent makes will produce +.Ar program +directly from its C module rather than using an intermediate +.Pa \&.o +module. +This is useful for programs whose source is contained in a single +module. +.El +.Sh ENVIRONMENT +.Bl -tag -width MKDEP_CPP_OPTS +.It Ev CC +Specifies the C compiler to use. +The specified compiler is expected to have +options consistent with the GNU C compiler. +.It Ev MKDEP_CPP +Specifies the preprocessor to use. +The default is "${CC} -E". +.It Ev MKDEP_CPP_OPTS +Specifies the non-CFLAGS options for the preprocessor. +The default is +"-M". +.El +.Sh FILES +.Bl -tag -width .depend -compact +.It Pa .depend +File containing list of dependencies. +.El +.Sh SEE ALSO +.Xr cc 1 , +.Xr cpp 1 , +.Xr make 1 +.Sh HISTORY +The +.Nm +command appeared in +.Bx 4.3 Tahoe . diff --git a/usr.bin/mkdep/mkdep.gcc.sh b/usr.bin/mkdep/mkdep.gcc.sh new file mode 100644 index 000000000000..ec00dcfbdf92 --- /dev/null +++ b/usr.bin/mkdep/mkdep.gcc.sh @@ -0,0 +1,100 @@ +#!/bin/sh - +# +# 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.gcc.sh 8.1 (Berkeley) 6/6/93 +# $FreeBSD$ + +D=.depend # default dependency file is .depend +append=0 +pflag= + +while : + do case "$1" in + # -a appends to the depend file + -a) + append=1 + shift ;; + + # -f allows you to select a makefile name + -f) + D=$2 + shift; shift ;; + + # the -p flag produces "program: program.c" style dependencies + # so .o's don't get produced + -p) + pflag=p + shift ;; + *) + break ;; + esac +done + +case $# in 0) + echo 'usage: mkdep [-ap] [-f file] [flags] file ...' >&2 + exit 1;; +esac + +TMP=_mkdep$$ +trap 'rm -f $TMP ; trap 2 ; kill -2 $$' 1 2 3 13 15 +trap 'rm -f $TMP' 0 + +# For C sources, mkdep must use exactly the same cpp and predefined flags +# as the compiler would. This is easily arranged by letting the compiler +# pick the cpp. mkdep must be told the cpp to use for exceptional cases. +CC=${CC-"cc"} +MKDEP_CPP=${MKDEP_CPP-"${CC} -E"} +MKDEP_CPP_OPTS=${MKDEP_CPP_OPTS-"-M"}; + +echo "# $@" > $TMP # store arguments for debugging + +if $MKDEP_CPP $MKDEP_CPP_OPTS "$@" >> $TMP; then : +else + echo 'mkdep: compile failed' >&2 + exit 1 +fi + +case x$pflag in + x) case $append in + 0) sed -e 's; \./; ;g' < $TMP > $D;; + *) sed -e 's; \./; ;g' < $TMP >> $D;; + esac + ;; + *) case $append in + 0) sed -e 's;\.o:;:;' -e 's; \./; ;g' < $TMP > $D;; + *) sed -e 's;\.o:;:;' -e 's; \./; ;g' < $TMP >> $D;; + esac + ;; +esac + +exit $? diff --git a/usr.bin/mkdep/mkdep.sh b/usr.bin/mkdep/mkdep.sh new file mode 100644 index 000000000000..b039fe62f6f3 --- /dev/null +++ b/usr.bin/mkdep/mkdep.sh @@ -0,0 +1,111 @@ +#!/bin/sh - +# +# 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.sh 8.1 (Berkeley) 6/6/93 +# + +PATH=/bin:/usr/bin:/usr/ucb:/usr/old/bin +export PATH + +D=.depend # default dependency file is .depend +append=0 + +while : + do case "$1" in + # -a appends to the depend file + -a) + append=1 + shift ;; + + # -f allows you to select a makefile name + -f) + D=$2 + shift; shift ;; + + # the -p flag produces "program: program.c" style dependencies + # so .o's don't get produced + -p) + SED='s;\.o ; ;' + shift ;; + *) + break ;; + esac +done + +if [ $# = 0 ] ; then + echo 'usage: mkdep [-p] [-f depend_file] [cc_flags] file ...' + exit 1 +fi + +TMP=/tmp/mkdep$$ + +trap 'rm -f $TMP ; trap 2 ; kill -2 $$' 1 2 3 13 15 + +cc -M $* | +sed " + s; \./; ;g + /\.c:$/d + $SED" | +awk '{ + if ($1 != prev) { + if (rec != "") + print rec; + rec = $0; + prev = $1; + } + else { + if (length(rec $2) > 78) { + print rec; + rec = $0; + } + else + rec = rec " " $2 + } +} +END { + print rec +}' > $TMP + +if [ $? != 0 ]; then + echo 'mkdep: compile failed.' + rm -f $TMP + exit 1 +fi + +if [ $append = 1 ]; then + cat $TMP >> $D + rm -f $TMP +else + mv $TMP $D +fi +exit 0 |
