Annotation of src/share/mk/bsd.README, Revision 1.4
1.1 cgd 1: # @(#)bsd.README 5.1 (Berkeley) 5/11/90
2:
3: This is the README file for the new make "include" files for the BSD
4: source tree. The files are installed in /usr/share/mk, and are, by
5: convention, named with the suffix ".mk". Each ".mk" file has a
6: corresponding ".rd" file which is an explanation of the ".mk" file.
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:
89: MAN1 ... MAN8 The manual pages to be installed (use a .0 suffix).
90:
91: MLINKS List of manual page links (using a .1 - .8 suffix). The
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:
105: It sets/uses the following variables:
106:
107: BINGRP Binary group.
108:
109: BINOWN Binary owner.
110:
111: BINMODE Binary mode.
112:
113: STRIP The flag passed to the install program to cause the binary
114: to be stripped. This is to be used when building your
115: own install script so that the entire system can be made
116: stripped/not-stripped using a single nob.
117:
1.2 cgd 118: COPY The flag passed to the install program to cause the binary
119: to be copied rather than moved. This is to be used when
120: building our own install script so that the entire system
121: can either be installed with copies, or with moves using
122: a single nob.
123:
1.1 cgd 124: MANDIR Base path for manual installation.
125:
126: MANGRP Manual group.
127:
128: MANOWN Manual owner.
129:
130: MANMODE Manual mode.
131:
132: This file is generally useful when building your own Makefiles so that
133: they use the same default owners etc. as the rest of the tree.
134:
135: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
136:
137: The include file <bsd.prog.mk> handles building programs from one or
138: more source files, along with their manual pages. It has a limited number
139: of suffixes, consistent with the current needs of the BSD tree.
140:
141: It has seven targets:
142:
143: all:
144: build the program and its manual page
145: clean:
146: remove the program, any object files and the files a.out,
147: Errs, errs, mklog, and core.
148: cleandir:
149: remove all of the files removed by the target clean, as
150: well as .depend, tags, and any manual pages.
151: depend:
152: make the dependencies for the source files, and store
153: them in the file .depend.
154: install:
155: install the program and its manual pages; if the Makefile
156: does not itself define the target install, the targets
157: beforeinstall and afterinstall may also be used to cause
158: actions immediately before and after the install target
159: is executed.
160: lint:
161: run lint on the source files
162: tags:
163: create a tags file for the source files.
164:
165: It sets/uses the following variables:
166:
167: BINGRP Binary group.
168:
169: BINOWN Binary owner.
170:
171: BINMODE Binary mode.
172:
173: CLEANFILES Additional files to remove for the clean and cleandir targets.
174:
175: COPTS Additional flags to the compiler when creating C objects.
176:
177: HIDEGAME If HIDEGAME is defined, the binary is installed in
178: /usr/games/hide, and a symbolic link is created to
179: /usr/games/dm.
180:
181: LDADD Additional loader objects. Usually used for libraries.
182: For example, to load with the compatibility and utility
183: libraries, use:
184:
185: LDFILES=-lutil -lcompat
186:
187: LDFLAGS Additional loader flags.
188:
189: LINKS The list of binary links; should be full pathnames, the
190: linked-to file coming first, followed by the linked
191: file. The files are hard-linked. For example, to link
192: /bin/test and /bin/[, use:
193:
194: LINKS= ${DESTDIR}/bin/test ${DESTDIR}/bin/[
195:
196: MAN1...MAN8 Manual pages (should end in .0). If no MAN variable is
197: defined, "MAN1=${PROG}.0" is assumed.
198:
199: PROG The name of the program to build. If not supplied, nothing
200: is built.
201:
202: SRCS List of source files to build the program. If PROG is not
203: defined, it's assumed to be ${PROG}.c.
204:
205: DPADD Additional dependencies for the program. Usually used for
206: libraries. For example, to depend on the compatibility and
207: utility libraries use:
208:
209: SRCLIB=${LIBCOMPAT} ${LIBUTIL}
210:
211: The following libraries are predefined for DPADD:
212:
213: LIBC /lib/libc.a
214: LIBCOMPAT /usr/lib/libcompat.a
1.3 cgd 215: LIBCRYPT /usr/lib/libcrypt.a
1.1 cgd 216: LIBCURSES /usr/lib/libcurses.a
217: LIBDBM /usr/lib/libdbm.a
218: LIBDES /usr/lib/libdes.a
219: LIBL /usr/lib/libl.a
220: LIBKDB /usr/lib/libkdb.a
221: LIBKRB /usr/lib/libkrb.a
222: LIBM /usr/lib/libm.a
223: LIBMP /usr/lib/libmp.a
224: LIBPC /usr/lib/libpc.a
225: LIBPLOT /usr/lib/libplot.a
226: LIBRPC /usr/lib/sunrpc.a
227: LIBTERM /usr/lib/libterm.a
228: LIBUTIL /usr/lib/libutil.a
229:
230: SHAREDSTRINGS If defined, a new .c.o rule is used that results in shared
231: strings, using xstr(1).
232:
233: STRIP The flag passed to the install program to cause the binary
234: to be stripped.
235:
236: SUBDIR A list of subdirectories that should be built as well.
237: Each of the targets will execute the same target in the
238: subdirectories.
239:
240: The include file <bsd.prog.mk> includes the file named "../Makefile.inc"
241: if it exists, as well as the include file <bsd.man.mk>.
242:
243: Some simple examples:
244:
245: To build foo from foo.c with a manual page foo.1, use:
246:
247: PROG= foo
248:
249: .include <bsd.prog.mk>
250:
251: To build foo from foo.c with a manual page foo.2, add the line:
252:
253: MAN2= foo.0
254:
255: If foo does not have a manual page at all, add the line:
256:
257: NOMAN= noman
258:
259: If foo has multiple source files, add the line:
260:
261: SRCS= a.c b.c c.c d.c
262:
263: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
264:
265: The include file <bsd.subdir.mk> contains the default targets for building
266: subdirectories. It has the same seven targets as <bsd.prog.mk>: all, clean,
267: cleandir, depend, install, lint, and tags. For all of the directories
268: listed in the variable SUBDIRS, the specified directory will be visited
269: and the target made. There is also a default target which allows the
270: command "make subdir" where subdir is any directory listed in the variable
271: SUBDIRS.
272:
273: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
274:
275: The include file <bsd.lib.mk> has support for building libraries. It has
276: the same seven targets as <bsd.prog.mk>: all, clean, cleandir, depend,
277: install, lint, and tags. It has a limited number of suffixes, consistent
278: with the current needs of the BSD tree.
279:
280: It sets/uses the following variables:
281:
282: LIBDIR Target directory for libraries.
283:
284: LINTLIBDIR Target directory for lint libraries.
285:
286: LIBGRP Library group.
287:
288: LIBOWN Library owner.
289:
290: LIBMODE Library mode.
291:
292: LDADD Additional loader objects.
293:
294: MAN1 ... MAN8 The manual pages to be installed (use a .0 suffix).
295:
296: SRCS List of source files to build the library. Suffix types
297: .s, .c, and .f are supported. Note, .s files are preferred
298: to .c files of the same name. (This is not the default for
299: versions of make.)
300:
301: The include file <bsd.lib.mk> includes the file named "../Makefile.inc"
302: if it exists, as well as the include file <bsd.man.mk>.
303:
304: It has rules for building profiled objects; profiled libraries are
305: built by default.
306:
1.4 ! cgd 307: Libraries are ranlib'd when made.
CVSweb <webmaster@jp.NetBSD.org>