85 lines
2 KiB
Groff
Executable file
85 lines
2 KiB
Groff
Executable file
.TH MKDEP 1 "February 1st, 2010"
|
|
.SH NAME
|
|
mkdep \- print dependencies in the Right Way for make(1)
|
|
.SH SYNOPSIS
|
|
.B mkdep
|
|
.I path
|
|
.br
|
|
.B mkdep
|
|
.I pp_command
|
|
.IR sourcefile " ... "
|
|
.SH DESCRIPTION
|
|
.B Mkdep
|
|
does what
|
|
.B cpp -M
|
|
should do, but no compiler gets it right, they all
|
|
strip the leading path of the \fI*.o\fP files.
|
|
.PP
|
|
The first synopsis form just creates the needed
|
|
.I .depend
|
|
files in all the subdirectories of
|
|
.IR path .
|
|
.PP
|
|
The second synopsis form does the hard work of emitting the
|
|
dependencies instructions for
|
|
.IR sourcefile
|
|
in the right format expected by
|
|
.IR make (1),
|
|
including the path information.
|
|
.PP
|
|
.B Mkdep
|
|
expects
|
|
.I pp_command
|
|
to be the correct invocation for the preprocessor
|
|
.\" FIXME: there are no cpp(1x) manpage presently...
|
|
.\" .IR cpp (1x)
|
|
command adequate for
|
|
.IR sourcefile ,
|
|
and also expects this command to emit lines of the form
|
|
.nf
|
|
.ta +1i +\w'# lineno "filename"'u+2m
|
|
# \fIlineno\fP "\fIfilename\fP"
|
|
.fi
|
|
for each files which is included by the named
|
|
.IR sourcefile .
|
|
.PP
|
|
For C, the typical idiom is to add in all your
|
|
.IR Makefile s:
|
|
.PP
|
|
.nf
|
|
.ta +0.2i +\w'depend:'u+1m +\w'mkdep "$(CC) -E $(CPPFLAGS)" *.c > .depend'u+2m
|
|
depend:
|
|
cd sub1 && $(MAKE) -$(MAKEFLAGS) $@
|
|
cd sub2 && $(MAKE) -$(MAKEFLAGS) $@
|
|
# repeat for each subdirectory
|
|
mkdep "$(CC) -E $(CPPFLAGS)" *.c > .depend
|
|
.PP
|
|
# Include generated dependencies.
|
|
include .depend
|
|
.PP
|
|
.fi
|
|
.SH "SEE ALSO"
|
|
.BR cc (1),
|
|
.BR make (1).
|
|
.SH BUGS
|
|
Since
|
|
.I Makefile
|
|
is read in full before any command is executed,
|
|
there is no way to prevent
|
|
.IR make (1)
|
|
to report an error if the
|
|
.I .depend
|
|
file was not created beforehand; hence the first form of
|
|
.IR mkdep
|
|
should be used \fBbefore\fP any attempt is done to use this feature in any
|
|
.IR Makefile .
|
|
.PP
|
|
The current version hardcodes the \fI.o\fP suffix, so it cannot be used for e.g.
|
|
.IR flex (1)
|
|
or
|
|
.IR yacc (1)
|
|
source files.
|
|
.SH AUTHOR
|
|
.I Mkdep.c
|
|
was written by Kees J. Bot and Jorrit N. Herder.
|
|
.\" This manual page by A. Leca.
|