STYLE.MAKEFILE(5) | MidnightBSD File Formats Manual | STYLE.MAKEFILE(5) |
style.Makefile
—
FreeBSD
Makefile file style guide
This file specifies the preferred style for makefiles in the FreeBSD source tree.
.PATH
:
comes next if needed, and is spelled “.PATH:
”, with a single ASCII space after a colon. Do not use the
VPATH variable.<bsd.prog.mk>
and there is
a single source file named the same as the
PROG.<bsd.prog.mk>
and the
manual page is named the same as the PROG, and is in
section 1.=
”, i.e.,
no space between the variable name and the =
. Keep
values sorted alphabetically, if possible.+=
to set variables that are only set
once (or to set variables for the first time).WARNS?=
”, so that it may be
overridden on the command line or in
make.conf(5).NO_WERROR= yes
” should not be used,
it defeats the purpose of WARNS. It should only be
used on the command line and in special circumstances.CFLAGS+=
”.-D
's before -I
's
in CFLAGS is preferred for alphabetical ordering and
to make -D
's easier to see. The
-D
's often affect conditional compilation, and
-I
's tend to be quite long. Split long
CFLAGS settings between the
-D
's and -I
's.-g
and
-Wall
) in CFLAGS.=
and the value in order
to start the value in column 9. An ASCII space is allowed for variable
names that extend beyond column 9. A lack of whitespace is also allowed
for very long variable names..include
<bsd.*.mk>
goes last.defined
(),
do not provide any fake value.The desire to express a logical grouping often means not obeying some of the above.
The simplest program Makefile is:
# $FreeBSD$ PROG= foo .include <bsd.prog.mk>
The simplest library Makefile is:
# $FreeBSD$ LIB= foo SHLIB_MAJOR= 1 MAN= libfoo.3 SRCS= foo.c .include <bsd.lib.mk>
This manual page is inspired from the same source as style(9) manual page in FreeBSD.
There are few hard and fast style rules here. The style of many things is too dependent on the context of the whole makefile, or the lines surrounding it.
November 18, 2021 | midnightbsd-3.1 |