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