Annotation of 43BSDReno/share/mk/bsd.README, revision 1.1

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.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.