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