Annotation of src/share/mk/bsd.README, Revision 1.4
1.4 ! niklas 1: # $NetBSD: bsd.README,v 1.15 1996/01/22 22:46:06 cgd Exp $
1.1 deraadt 2: # @(#)bsd.README 5.1 (Berkeley) 5/11/90
3:
4: This is the README file for the new make "include" files for the BSD
5: source tree. The files are installed in /usr/share/mk, and are, by
6: convention, named with the suffix ".mk".
7:
8: Note, this file is not intended to replace reading through the .mk
9: files for anything tricky.
10:
11: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
12:
13: RANDOM THINGS WORTH KNOWING:
14:
15: The files are simply C-style #include files, and pretty much behave like
16: you'd expect. The syntax is slightly different in that a single '.' is
17: used instead of the hash mark, i.e. ".include <bsd.prog.mk>".
18:
19: One difference that will save you lots of debugging time is that inclusion
20: of the file is normally done at the *end* of the Makefile. The reason for
21: this is because .mk files often modify variables and behavior based on the
22: values of variables set in the Makefile. To make this work, remember that
23: the FIRST target found is the target that is used, i.e. if the Makefile has:
24:
25: a:
26: echo a
27: a:
28: echo a number two
29:
30: the command "make a" will echo "a". To make things confusing, the SECOND
31: variable assignment is the overriding one, i.e. if the Makefile has:
32:
33: a= foo
34: a= bar
35:
36: b:
37: echo ${a}
38:
39: the command "make b" will echo "bar". This is for compatibility with the
40: way the V7 make behaved.
41:
42: It's fairly difficult to make the BSD .mk files work when you're building
43: multiple programs in a single directory. It's a lot easier split up the
44: programs than to deal with the problem. Most of the agony comes from making
45: the "obj" directory stuff work right, not because we switch to a new version
46: of make. So, don't get mad at us, figure out a better way to handle multiple
47: architectures so we can quit using the symbolic link stuff. (Imake doesn't
48: count.)
49:
50: The file .depend in the source directory is expected to contain dependencies
51: for the source files. This file is read automatically by make after reading
52: the Makefile.
53:
54: The variable DESTDIR works as before. It's not set anywhere but will change
55: the tree where the file gets installed.
56:
57: The profiled libraries are no longer built in a different directory than
58: the regular libraries. A new suffix, ".po", is used to denote a profiled
59: object.
60:
61: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
62:
63: The include file <sys.mk> has the default rules for all makes, in the BSD
64: environment or otherwise. You probably don't want to touch this file.
65:
66: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
67:
68: The include file <bsd.man.mk> handles installing manual pages and their
69: links.
70:
71: It has a single target:
72:
73: maninstall:
74: Install the manual pages and their links.
75:
76: It sets/uses the following variables:
77:
78: MANDIR Base path for manual installation.
79:
80: MANGRP Manual group.
81:
82: MANOWN Manual owner.
83:
84: MANMODE Manual mode.
85:
86: MANSUBDIR Subdirectory under the manual page section, i.e. "/vax"
87: or "/tahoe" for machine specific manual pages.
88:
1.4 ! niklas 89: MAN The manual pages to be installed (use a .1 - .9 suffix).
1.1 deraadt 90:
1.4 ! niklas 91: MLINKS List of manual page links (using a .1 - .9 suffix). The
1.1 deraadt 92: linked-to file must come first, the linked file second,
93: and there may be multiple pairs. The files are soft-linked.
94:
95: The include file <bsd.man.mk> includes a file named "../Makefile.inc" if
96: it exists.
97:
98: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
99:
100: The include file <bsd.own.mk> contains the owners, groups, etc. for both
101: manual pages and binaries.
102:
103: It has no targets.
104:
1.4 ! niklas 105: It sets the following variables, if they are not already defined (defaults
! 106: are in brackets):
! 107:
! 108: BSDSRCDIR The real path to the system sources, so that 'make obj'
! 109: will work correctly. [/usr/src]
! 110:
! 111: BSDOBJDIR The real path to the system 'obj' tree, so that 'make obj'
! 112: will work correctly. [/usr/obj]
! 113:
! 114: BINGRP Binary group. [bin]
! 115:
! 116: BINOWN Binary owner. [bin]
! 117:
! 118: BINMODE Binary mode. [555]
! 119:
! 120: NONBINMODE Mode for non-executable files. [444]
! 121:
! 122: MANDIR Base path for manual installation. [/usr/share/man/cat]
! 123:
! 124: MANGRP Manual group. [bin]
! 125:
! 126: MANOWN Manual owner. [bin]
! 127:
! 128: MANMODE Manual mode. [${NONBINMODE}]
! 129:
! 130: LIBDIR Base path for library installation. [/usr/lib]
! 131:
! 132: LINTLIBDIR Base path for lint(1) library installation. [/usr/libdata/lint]
! 133:
! 134: LIBGRP Library group. [${BINGRP}]
! 135:
! 136: LIBOWN Library owner. [${BINOWN}]
! 137:
! 138: LIBMODE Library mode. [${NONBINMODE}]
! 139:
! 140: DOCDIR Base path for system documentation (e.g. PSD, USD, etc.)
! 141: installation. [/usr/share/doc]
! 142:
! 143: DOCGRP Documentation group. [bin]
! 144:
! 145: DOCOWN Documentation owner. [bin]
! 146:
! 147: DOCMODE Documentation mode. [${NONBINMODE}]
! 148:
! 149: NLSDIR Base path for National Language Support files installation.
! 150: [/usr/share/nls]
1.1 deraadt 151:
1.4 ! niklas 152: NLSGRP National Language Support files group. [bin]
1.1 deraadt 153:
1.4 ! niklas 154: NLSOWN National Language Support files owner. [bin]
1.1 deraadt 155:
1.4 ! niklas 156: NLSMODE National Language Support files mode. [${NONBINMODE}]
1.1 deraadt 157:
158: STRIP The flag passed to the install program to cause the binary
159: to be stripped. This is to be used when building your
160: own install script so that the entire system can be made
1.4 ! niklas 161: stripped/not-stripped using a single knob. [-s]
1.1 deraadt 162:
163: COPY The flag passed to the install program to cause the binary
164: to be copied rather than moved. This is to be used when
165: building our own install script so that the entire system
166: can either be installed with copies, or with moves using
1.4 ! niklas 167: a single knob. [-c]
! 168:
! 169: Additionally, the following variables may be set to modify the behaviour
! 170: of the system build process (default values are in brackets along with
! 171: comments, if set by bsd.own.mk):
! 172:
! 173: EXPORTABLE_SYSTEM
! 174: Do not build /usr/src/domestic, even if it is present.
1.1 deraadt 175:
1.4 ! niklas 176: SKEY Compile in support for S/key authentication. [yes, set
! 177: unconditionally]
! 178:
! 179: KERBEROS Compile in support for Kerberos 4 authentication.
! 180:
! 181: KERBEROS5 Compile in support for Kerberos 5 authentication.
! 182:
! 183: MANZ Compress manual pages at installation time.
! 184:
! 185: SYS_INCLUDE Copy or symlink kernel include files into /usr/include.
! 186: Possible values are "symlinks" or "copies" (which is
! 187: the same as the variable being unset).
1.1 deraadt 188:
1.4 ! niklas 189: NOPROFILE Do not build profiled versions of system libraries
1.1 deraadt 190:
1.4 ! niklas 191: NOPIC Do not build PIC versions of system libraries, and
! 192: do not build shared libraries. [set if ${MACHINE_ARCH}
! 193: is "mips", "vax", or "alpha", unset otherwise.]
1.1 deraadt 194:
1.4 ! niklas 195: NOLINT Do not build lint libraries. [set, set unconditionally]
1.1 deraadt 196:
197: This file is generally useful when building your own Makefiles so that
198: they use the same default owners etc. as the rest of the tree.
199:
200: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
201:
202: The include file <bsd.prog.mk> handles building programs from one or
203: more source files, along with their manual pages. It has a limited number
204: of suffixes, consistent with the current needs of the BSD tree.
205:
206: It has seven targets:
207:
208: all:
209: build the program and its manual page
210: clean:
211: remove the program, any object files and the files a.out,
212: Errs, errs, mklog, and core.
213: cleandir:
214: remove all of the files removed by the target clean, as
215: well as .depend, tags, and any manual pages.
216: depend:
217: make the dependencies for the source files, and store
218: them in the file .depend.
219: install:
220: install the program and its manual pages; if the Makefile
221: does not itself define the target install, the targets
222: beforeinstall and afterinstall may also be used to cause
223: actions immediately before and after the install target
224: is executed.
225: lint:
226: run lint on the source files
227: tags:
228: create a tags file for the source files.
229:
230: It sets/uses the following variables:
231:
232: BINGRP Binary group.
233:
234: BINOWN Binary owner.
235:
236: BINMODE Binary mode.
237:
238: CLEANFILES Additional files to remove for the clean and cleandir targets.
239:
240: COPTS Additional flags to the compiler when creating C objects.
241:
242: HIDEGAME If HIDEGAME is defined, the binary is installed in
243: /usr/games/hide, and a symbolic link is created to
244: /usr/games/dm.
245:
246: LDADD Additional loader objects. Usually used for libraries.
247: For example, to load with the compatibility and utility
248: libraries, use:
249:
250: LDADD+=-lutil -lcompat
251:
252: LDFLAGS Additional loader flags.
253:
254: LINKS The list of binary links; should be full pathnames, the
255: linked-to file coming first, followed by the linked
256: file. The files are hard-linked. For example, to link
257: /bin/test and /bin/[, use:
258:
259: LINKS= ${DESTDIR}/bin/test ${DESTDIR}/bin/[
260:
1.4 ! niklas 261: MAN Manual pages (should end in .1 - .9). If no MAN variable is
1.1 deraadt 262: defined, "MAN=${PROG}.1" is assumed.
263:
264: PROG The name of the program to build. If not supplied, nothing
265: is built.
266:
267: SRCS List of source files to build the program. If PROG is not
268: defined, it's assumed to be ${PROG}.c.
269:
270: DPADD Additional dependencies for the program. Usually used for
271: libraries. For example, to depend on the compatibility and
272: utility libraries use:
273:
274: DPADD+=${LIBCOMPAT} ${LIBUTIL}
275:
276: The following libraries are predefined for DPADD:
277:
278: LIBC /lib/libc.a
279: LIBCOMPAT /usr/lib/libcompat.a
280: LIBCRYPT /usr/lib/libcrypt.a
281: LIBCURSES /usr/lib/libcurses.a
282: LIBDBM /usr/lib/libdbm.a
283: LIBDES /usr/lib/libdes.a
284: LIBL /usr/lib/libl.a
285: LIBKDB /usr/lib/libkdb.a
286: LIBKRB /usr/lib/libkrb.a
287: LIBKVM /usr/lib/libkvm.a
288: LIBM /usr/lib/libm.a
289: LIBMP /usr/lib/libmp.a
290: LIBPC /usr/lib/libpc.a
291: LIBPLOT /usr/lib/libplot.a
292: LIBRPC /usr/lib/sunrpc.a
293: LIBTERM /usr/lib/libterm.a
294: LIBUTIL /usr/lib/libutil.a
295:
296: SHAREDSTRINGS If defined, a new .c.o rule is used that results in shared
297: strings, using xstr(1). Note that this will not work with
298: parallel makes.
299:
300: STRIP The flag passed to the install program to cause the binary
301: to be stripped.
302:
303: SUBDIR A list of subdirectories that should be built as well.
304: Each of the targets will execute the same target in the
305: subdirectories.
306:
307: The include file <bsd.prog.mk> includes the file named "../Makefile.inc"
308: if it exists, as well as the include file <bsd.man.mk>.
309:
310: Some simple examples:
311:
312: To build foo from foo.c with a manual page foo.1, use:
313:
314: PROG= foo
315:
316: .include <bsd.prog.mk>
317:
318: To build foo from foo.c with a manual page foo.2, add the line:
319:
320: MAN= foo.2
321:
322: If foo does not have a manual page at all, add the line:
323:
324: NOMAN= noman
325:
326: If foo has multiple source files, add the line:
327:
328: SRCS= a.c b.c c.c d.c
329:
330: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
331:
332: The include file <bsd.subdir.mk> contains the default targets for building
333: subdirectories. It has the same seven targets as <bsd.prog.mk>: all, clean,
334: cleandir, depend, install, lint, and tags. For all of the directories
335: listed in the variable SUBDIRS, the specified directory will be visited
336: and the target made. There is also a default target which allows the
337: command "make subdir" where subdir is any directory listed in the variable
338: SUBDIRS.
1.2 deraadt 339:
340: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
341:
342: The include file <bsd.sys.mk> is used by <bsd.prog.mk> and
1.3 deraadt 343: <bsd.lib.mk>. It contains overrides that are used when building
344: the NetBSD source tree. For instance, if "PARALLEL" is defined by
345: the program/library Makefile, it includes a set of rules for lex and
346: yacc that allow multiple lex and yacc targets to be built in parallel.
1.1 deraadt 347:
348: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
349:
350: The include file <bsd.lib.mk> has support for building libraries. It has
351: the same seven targets as <bsd.prog.mk>: all, clean, cleandir, depend,
352: install, lint, and tags. It has a limited number of suffixes, consistent
353: with the current needs of the BSD tree.
354:
355: It sets/uses the following variables:
356:
357: LIB The name of the library to build.
358:
359: LIBDIR Target directory for libraries.
360:
361: LINTLIBDIR Target directory for lint libraries.
362:
363: LIBGRP Library group.
364:
365: LIBOWN Library owner.
366:
367: LIBMODE Library mode.
368:
369: LDADD Additional loader objects.
370:
1.4 ! niklas 371: MAN The manual pages to be installed (use a .1 - .9 suffix).
1.1 deraadt 372:
373: SRCS List of source files to build the library. Suffix types
374: .s, .c, and .f are supported. Note, .s files are preferred
375: to .c files of the same name. (This is not the default for
376: versions of make.)
377:
378: The include file <bsd.lib.mk> includes the file named "../Makefile.inc"
379: if it exists, as well as the include file <bsd.man.mk>.
380:
381: It has rules for building profiled objects; profiled libraries are
382: built by default.
383:
384: Libraries are ranlib'd when made.