[BACK]Return to bsd.README CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / share / mk

Annotation of src/share/mk/bsd.README, Revision 1.62

1.62    ! simonb      1: #      $NetBSD: bsd.README,v 1.61 2000/03/07 20:55:05 veego Exp $
1.24      mikel       2: #      @(#)bsd.README  8.2 (Berkeley) 4/2/94
1.1       cgd         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
1.11      jtc         6: convention, named with the suffix ".mk".
1.1       cgd         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
1.36      ross       45: the "obj" directory stuff work right, not because we switched to a new version
1.1       cgd        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
1.21      christos   59: object, and ".so" denotes a shared (position-independent) object.
                     60:
1.45      lukem      61: The following variables that control how things are made/installed that
1.47      tv         62: are not set by default. These should not be set by Makefiles; they're for
                     63: the user to define in MAKECONF (see bsd.own.mk, below) or on the make(1)
                     64: command line:
1.21      christos   65:
1.45      lukem      66: BUILD          If defined, 'make install' checks that the targets in the
                     67:                source directories are up-to-date and remakes them if they
1.21      christos   68:                 are out of date, instead of blindly trying to install
                     69:                 out of date or non-existant targets.
                     70:
1.45      lukem      71: UPDATE                 If defined, 'make install' only installs targets that are
                     72:                more recently modified in the source directories that their
                     73:                installed counterparts.
1.52      simonb     74:
                     75: UNPRIVILEGED   If defined, don't set the owner/group/mode when installing
                     76:                files or directories.  This allows a non-root "make install".
1.45      lukem      77:
                     78: MKCATPAGES     If "no", don't build or install the catman pages.
                     79:
                     80: MKDOC          If "no", don't build or install the documentation.
                     81:
1.47      tv         82: MKINFO         If "no", don't build or install Info documentation from
                     83:                Texinfo source files.
1.45      lukem      84:
                     85: MKLINT         If "no", don't build or install the lint libraries.
                     86:
                     87: MKMAN          If "no", don't build or install the man or catman pages.
1.46      lukem      88:                Also acts as "MKCATPAGES=no"
1.45      lukem      89:
                     90: MKNLS          If "no", don't build or install the NLS files.
                     91:
1.55      sommerfe   92: MKOBJ          If "no", don't enable the rule which creates objdirs.
                     93:                "yes" by default.
                     94:
                     95: MKOBJDIRS      If "no", don't create objdirs during a "make build".
                     96:                "no" by default.
1.45      lukem      97:
                     98: MKPIC          If "no", don't build or install shared libraries.
                     99:
                    100: MKPICINSTALL   If "no", don't install the *_pic.a libraries.
                    101:
                    102: MKPROFILE      If "no", don't build or install the profiling libraries.
                    103:
1.48      lukem     104: MKSHARE                If "no", act as "MKCATPAGES=no MKDOC=no MKINFO=no MKMAN=no
                    105:                MKNLS=no".  I.e, don't build catman pages, documentation,
                    106:                Info documentation, man pages, NLS files, ...
1.1       cgd       107:
                    108: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
                    109:
                    110: The include file <sys.mk> has the default rules for all makes, in the BSD
                    111: environment or otherwise.  You probably don't want to touch this file.
                    112:
                    113: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
                    114:
                    115: The include file <bsd.man.mk> handles installing manual pages and their
                    116: links.
                    117:
1.21      christos  118: It has a two targets:
1.1       cgd       119:
                    120:        maninstall:
1.21      christos  121:                Install the manual page sources and their links.
                    122:        catinstall:
                    123:                Install the preformatted manual pages and their links.
1.1       cgd       124:
                    125: It sets/uses the following variables:
                    126:
                    127: MANDIR         Base path for manual installation.
                    128:
                    129: MANGRP         Manual group.
                    130:
                    131: MANOWN         Manual owner.
                    132:
                    133: MANMODE                Manual mode.
                    134:
                    135: MANSUBDIR      Subdirectory under the manual page section, i.e. "/vax"
                    136:                or "/tahoe" for machine specific manual pages.
                    137:
1.15      cgd       138: MAN            The manual pages to be installed (use a .1 - .9 suffix).
1.1       cgd       139:
1.15      cgd       140: MLINKS         List of manual page links (using a .1 - .9 suffix).  The
1.1       cgd       141:                linked-to file must come first, the linked file second,
                    142:                and there may be multiple pairs.  The files are soft-linked.
                    143:
                    144: The include file <bsd.man.mk> includes a file named "../Makefile.inc" if
                    145: it exists.
                    146:
                    147: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
                    148:
1.17      thorpej   149: The include file <bsd.own.mk> contains source tree configuration parameters,
                    150: such as the owners, groups, etc. for both manual pages and binaries, and
                    151: a few global "feature configuration" parameters.
1.1       cgd       152:
                    153: It has no targets.
                    154:
1.29      cjs       155: To get system-specific configuration parameters, bsd.own.mk will try to
                    156: include the file specified by the "MAKECONF" variable.  If MAKECONF is not
                    157: set, or no such file exists, the system make configuration file, /etc/mk.conf
                    158: is included.  These files may define any of the variables described below.
1.17      thorpej   159:
                    160: bsd.own.mk sets the following variables, if they are not already defined
                    161: (defaults are in brackets):
1.15      cgd       162:
                    163: BSDSRCDIR      The real path to the system sources, so that 'make obj'
                    164:                will work correctly. [/usr/src]
                    165:
                    166: BSDOBJDIR      The real path to the system 'obj' tree, so that 'make obj'
                    167:                will work correctly. [/usr/obj]
                    168:
1.34      lukem     169: BINGRP         Binary group. [wheel]
1.15      cgd       170:
1.34      lukem     171: BINOWN         Binary owner. [root]
1.15      cgd       172:
                    173: BINMODE                Binary mode. [555]
                    174:
                    175: NONBINMODE     Mode for non-executable files. [444]
                    176:
                    177: MANDIR         Base path for manual installation. [/usr/share/man/cat]
                    178:
1.34      lukem     179: MANGRP         Manual group. [wheel]
1.15      cgd       180:
1.34      lukem     181: MANOWN         Manual owner. [root]
1.15      cgd       182:
                    183: MANMODE                Manual mode. [${NONBINMODE}]
                    184:
1.21      christos  185: MANINSTALL     Manual installation type: maninstall, catinstall, or both
                    186:
1.15      cgd       187: LIBDIR         Base path for library installation. [/usr/lib]
                    188:
                    189: LINTLIBDIR     Base path for lint(1) library installation. [/usr/libdata/lint]
                    190:
                    191: LIBGRP         Library group. [${BINGRP}]
                    192:
                    193: LIBOWN         Library owner. [${BINOWN}]
                    194:
                    195: LIBMODE                Library mode. [${NONBINMODE}]
                    196:
                    197: DOCDIR         Base path for system documentation (e.g. PSD, USD, etc.)
                    198:                installation. [/usr/share/doc]
1.62    ! simonb    199:
        !           200: HTMLDOCDIR     Base path for html system documentation installation.
        !           201:                [/usr/share/doc/html]
1.15      cgd       202:
1.34      lukem     203: DOCGRP         Documentation group. [wheel]
1.15      cgd       204:
1.34      lukem     205: DOCOWN         Documentation owner. [root]
1.15      cgd       206:
                    207: DOCMODE                Documentation mode. [${NONBINMODE}]
                    208:
                    209: NLSDIR         Base path for National Language Support files installation.
                    210:                [/usr/share/nls]
1.1       cgd       211:
1.34      lukem     212: NLSGRP         National Language Support files group. [wheel]
1.1       cgd       213:
1.34      lukem     214: NLSOWN         National Language Support files owner. [root]
1.1       cgd       215:
1.15      cgd       216: NLSMODE                National Language Support files mode. [${NONBINMODE}]
1.1       cgd       217:
1.32      mikel     218: STRIPFLAG      The flag passed to the install program to cause the binary
1.1       cgd       219:                to be stripped.  This is to be used when building your
                    220:                own install script so that the entire system can be made
1.15      cgd       221:                stripped/not-stripped using a single knob. [-s]
1.1       cgd       222:
1.2       cgd       223: COPY           The flag passed to the install program to cause the binary
                    224:                to be copied rather than moved.  This is to be used when
                    225:                building our own install script so that the entire system
                    226:                can either be installed with copies, or with moves using
1.15      cgd       227:                a single knob. [-c]
                    228:
1.17      thorpej   229: Additionally, the following variables may be set by bsd.own.mk or in a
                    230: make configuration file to modify the behaviour of the system build
                    231: process (default values are in brackets along with comments, if set by
                    232: bsd.own.mk):
1.15      cgd       233:
1.50      thorpej   234: CRYPTOBASE     Select which cryptography code base to use when building
                    235:                cryptography support into the system.  See the
                    236:                bsd.crypto.mk section for more information.
                    237:
1.15      cgd       238: EXPORTABLE_SYSTEM
1.50      thorpej   239:                Forces CRYPTOBASE to the value "none" for compatibility
                    240:                with older NetBSD build environments.  See the bsd.crypto.mk
                    241:                section for more information.
1.2       cgd       242:
1.15      cgd       243: SKEY           Compile in support for S/key authentication. [yes, set
                    244:                unconditionally]
                    245:
                    246: KERBEROS       Compile in support for Kerberos 4 authentication.
                    247:
                    248: KERBEROS5      Compile in support for Kerberos 5 authentication.
                    249:
                    250: MANZ           Compress manual pages at installation time.
                    251:
                    252: SYS_INCLUDE    Copy or symlink kernel include files into /usr/include.
                    253:                Possible values are "symlinks" or "copies" (which is
                    254:                the same as the variable being unset).
1.1       cgd       255:
1.15      cgd       256: NOPROFILE      Do not build profiled versions of system libraries
1.1       cgd       257:
1.15      cgd       258: NOPIC          Do not build PIC versions of system libraries, and
                    259:                do not build shared libraries.  [set if ${MACHINE_ARCH}
1.45      lukem     260:                is "sparc64", unset otherwise.]
1.1       cgd       261:
1.40      perry     262: NOLINT         Do not build lint libraries.
1.33      jonathan  263:
1.50      thorpej   264: OBJECT_FMT     Object file format. [set to "ELF" on architectures that
                    265:                use ELF -- currently if ${MACHINE_ARCH} is "alpha",
                    266:                "mipsel", "mipseb", "powerpc", "sparc", "sparc64",
                    267:                and "i386", or set to "a.out" on other architectures].
1.33      jonathan  268:
1.1       cgd       269:
1.17      thorpej   270: bsd.own.mk is generally useful when building your own Makefiles so that
1.1       cgd       271: they use the same default owners etc. as the rest of the tree.
                    272:
                    273: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
                    274:
                    275: The include file <bsd.prog.mk> handles building programs from one or
                    276: more source files, along with their manual pages.  It has a limited number
                    277: of suffixes, consistent with the current needs of the BSD tree.
                    278:
1.16      jtc       279: It has eight targets:
1.1       cgd       280:
                    281:        all:
                    282:                build the program and its manual page
                    283:        clean:
                    284:                remove the program, any object files and the files a.out,
1.24      mikel     285:                Errs, errs, mklog, and ${PROG}.core.
1.1       cgd       286:        cleandir:
                    287:                remove all of the files removed by the target clean, as
                    288:                well as .depend, tags, and any manual pages.
1.42      lukem     289:                `distclean' is a synonym for `cleandir'.
1.1       cgd       290:        depend:
                    291:                make the dependencies for the source files, and store
                    292:                them in the file .depend.
1.16      jtc       293:        includes:
                    294:                install any header files.
1.1       cgd       295:        install:
                    296:                install the program and its manual pages; if the Makefile
                    297:                does not itself define the target install, the targets
                    298:                beforeinstall and afterinstall may also be used to cause
                    299:                actions immediately before and after the install target
                    300:                is executed.
                    301:        lint:
                    302:                run lint on the source files
                    303:        tags:
                    304:                create a tags file for the source files.
                    305:
                    306: It sets/uses the following variables:
                    307:
                    308: BINGRP         Binary group.
                    309:
                    310: BINOWN         Binary owner.
                    311:
                    312: BINMODE                Binary mode.
                    313:
                    314: CLEANFILES     Additional files to remove for the clean and cleandir targets.
                    315:
                    316: COPTS          Additional flags to the compiler when creating C objects.
1.35      lukem     317:
                    318: CPPFLAGS       Additional flags to the C pre-processor
1.1       cgd       319:
                    320: LDADD          Additional loader objects.  Usually used for libraries.
                    321:                For example, to load with the compatibility and utility
                    322:                libraries, use:
                    323:
1.5       jtc       324:                        LDADD+=-lutil -lcompat
1.1       cgd       325:
                    326: LDFLAGS                Additional loader flags.
                    327:
                    328: LINKS          The list of binary links; should be full pathnames, the
                    329:                linked-to file coming first, followed by the linked
                    330:                file.  The files are hard-linked.  For example, to link
                    331:                /bin/test and /bin/[, use:
                    332:
                    333:                        LINKS=  ${DESTDIR}/bin/test ${DESTDIR}/bin/[
1.19      perry     334:
                    335: SYMLINKS       The list of symbolic links; should be full pathnames.
1.20      perry     336:                 Syntax is identical to LINKS. Note that DESTDIR is not
                    337:                automatically included in the link.
1.1       cgd       338:
1.15      cgd       339: MAN            Manual pages (should end in .1 - .9).  If no MAN variable is
1.8       cgd       340:                defined, "MAN=${PROG}.1" is assumed.
1.1       cgd       341:
                    342: PROG           The name of the program to build.  If not supplied, nothing
                    343:                is built.
                    344:
1.21      christos  345: PROGNAME       The name that the above program will be installed as, if
                    346:                different from ${PROG}.
                    347:
1.37      tv        348: SRCS           List of source files to build the program.  If SRCS is not
1.1       cgd       349:                defined, it's assumed to be ${PROG}.c.
                    350:
                    351: DPADD          Additional dependencies for the program.  Usually used for
                    352:                libraries.  For example, to depend on the compatibility and
                    353:                utility libraries use:
                    354:
1.5       jtc       355:                        DPADD+=${LIBCOMPAT} ${LIBUTIL}
1.1       cgd       356:
                    357:                The following libraries are predefined for DPADD:
                    358:
1.21      christos  359:                LIBCRT0?=       ${DESTDIR}/usr/lib/crt0.o
                    360:                LIBC?=          ${DESTDIR}/usr/lib/libc.a
                    361:                LIBC_PIC?=      ${DESTDIR}/usr/lib/libc_pic.a
                    362:                LIBCOMPAT?=     ${DESTDIR}/usr/lib/libcompat.a
                    363:                LIBCRYPT?=      ${DESTDIR}/usr/lib/libcrypt.a
                    364:                LIBCURSES?=     ${DESTDIR}/usr/lib/libcurses.a
                    365:                LIBDBM?=        ${DESTDIR}/usr/lib/libdbm.a
                    366:                LIBDES?=        ${DESTDIR}/usr/lib/libdes.a
                    367:                LIBEDIT?=       ${DESTDIR}/usr/lib/libedit.a
                    368:                LIBGCC?=        ${DESTDIR}/usr/lib/libgcc.a
                    369:                LIBGNUMALLOC?=  ${DESTDIR}/usr/lib/libgnumalloc.a
1.49      itojun    370:                LIBIPSEC?=      ${DESTDIR}/usr/lib/libipsec.a
1.21      christos  371:                LIBKDB?=        ${DESTDIR}/usr/lib/libkdb.a
                    372:                LIBKRB?=        ${DESTDIR}/usr/lib/libkrb.a
                    373:                LIBKVM?=        ${DESTDIR}/usr/lib/libkvm.a
                    374:                LIBL?=          ${DESTDIR}/usr/lib/libl.a
                    375:                LIBM?=          ${DESTDIR}/usr/lib/libm.a
1.53      blymn     376:                LIBMENU?=       ${DESTDIR}/usr/lib/libmenu.a
1.21      christos  377:                LIBMP?=         ${DESTDIR}/usr/lib/libmp.a
1.25      christos  378:                LIBNTP?=        ${DESTDIR}/usr/lib/libntp.a
1.21      christos  379:                LIBPC?=         ${DESTDIR}/usr/lib/libpc.a
                    380:                LIBPCAP?=       ${DESTDIR}/usr/lib/libpcap.a
                    381:                LIBPLOT?=       ${DESTDIR}/usr/lib/libplot.a
1.26      kleink    382:                LIBPOSIX?=      ${DESTDIR}/usr/lib/libposix.a
1.21      christos  383:                LIBRESOLV?=     ${DESTDIR}/usr/lib/libresolv.a
                    384:                LIBRPCSVC?=     ${DESTDIR}/usr/lib/librpcsvc.a
                    385:                LIBSKEY?=       ${DESTDIR}/usr/lib/libskey.a
                    386:                LIBTERMCAP?=    ${DESTDIR}/usr/lib/libtermcap.a
                    387:                LIBTELNET?=     ${DESTDIR}/usr/lib/libtelnet.a
                    388:                LIBUTIL?=       ${DESTDIR}/usr/lib/libutil.a
                    389:                LIBWRAP?=       ${DESTDIR}/usr/lib/libwrap.a
                    390:                LIBY?=          ${DESTDIR}/usr/lib/liby.a
                    391:                LIBZ?=          ${DESTDIR}/usr/lib/libz.a
                    392:
1.1       cgd       393:
                    394: SHAREDSTRINGS  If defined, a new .c.o rule is used that results in shared
1.12      christos  395:                strings, using xstr(1). Note that this will not work with
                    396:                parallel makes.
1.1       cgd       397:
1.59      jlam      398: STRIPFLAG      The flag passed to the install program to cause the binary
1.1       cgd       399:                to be stripped.
                    400:
                    401: SUBDIR         A list of subdirectories that should be built as well.
                    402:                Each of the targets will execute the same target in the
                    403:                subdirectories.
                    404:
1.21      christos  405: SCRIPTS                A list of interpreter scripts [file.{sh,csh,pl,awk,...}].
                    406:                These are installed exactly like programs.
                    407:
                    408: SCRIPTSNAME    The name that the above program will be installed as, if
                    409:                different from ${SCRIPTS}. These can be further specialized
                    410:                by setting SCRIPTSNAME_<script>.
                    411:
                    412: FILES          A list of files to install. The installation is controlled
                    413:                by the FILESNAME, FILESOWN, FILESGRP, FILESMODE, FILESDIR
                    414:                variables that can be further specialized by FILES<VAR>_<file>
                    415:
1.1       cgd       416: The include file <bsd.prog.mk> includes the file named "../Makefile.inc"
                    417: if it exists, as well as the include file <bsd.man.mk>.
                    418:
                    419: Some simple examples:
                    420:
                    421: To build foo from foo.c with a manual page foo.1, use:
                    422:
                    423:        PROG=   foo
                    424:
                    425:        .include <bsd.prog.mk>
                    426:
                    427: To build foo from foo.c with a manual page foo.2, add the line:
                    428:
1.9       cgd       429:        MAN=    foo.2
1.1       cgd       430:
                    431: If foo does not have a manual page at all, add the line:
                    432:
                    433:        NOMAN=  noman
                    434:
                    435: If foo has multiple source files, add the line:
                    436:
                    437:        SRCS=   a.c b.c c.c d.c
                    438:
                    439: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
                    440:
                    441: The include file <bsd.subdir.mk> contains the default targets for building
1.16      jtc       442: subdirectories.  It has the same eight targets as <bsd.prog.mk>: all,
                    443: clean, cleandir, depend, includes, install, lint, and tags.  For all of
                    444: the directories listed in the variable SUBDIRS, the specified directory
                    445: will be visited and the target made.  There is also a default target which
                    446: allows the command "make subdir" where subdir is any directory listed in
                    447: the variable SUBDIRS.
1.21      christos  448:
                    449: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
                    450:
1.23      christos  451: The include file <bsd.links.mk> handles the LINKS and SYMLINKS variables
                    452: and is included from from bsd.lib.mk and bsd.prog.mk.
                    453:
                    454: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
                    455:
                    456: The include file <bsd.files.mk> handles the FILES variables and is included
                    457: from bsd.lib.mk and bsd.prog.mk.
1.21      christos  458:
                    459: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
                    460:
1.29      cjs       461: The include file <bsd.inc.mk> defines the includes target and uses two
                    462: variables:
1.21      christos  463:
1.29      cjs       464: INCS   The list of include files
1.21      christos  465:
1.29      cjs       466: INCSDIR        The location to install the include files.
1.39      cgd       467:
                    468: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
                    469:
                    470: The include file <bsd.kinc.mk> defines the many targets (includes,
                    471: subdirectories, etc.), and is used by kernel makefiles to handle
                    472: include file installation.  It is intended to be included alone, by
                    473: kernel Makefiles.  Please see bsd.kinc.mk for more details, and keep
                    474: the documentation in that file up to date.
1.13      christos  475:
                    476: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
                    477:
1.47      tv        478: The include file <bsd.info.mk> is used to generate and install GNU Info
                    479: documentation from respective Texinfo source files.  It defines three
                    480: implicit targets (.txi.info, .texi.info, and .texinfo.info), and uses the
                    481: following variables:
                    482:
                    483: TEXINFO                List of Texinfo source files.  Info documentation will
                    484:                consist of single files with the extension replaced by
                    485:                .info.
                    486:
                    487: INFOFLAGS      Flags to pass to makeinfo.  []
                    488:
                    489: INSTALL_INFO   Name of install-info program.  [install-info]
                    490:
                    491: MAKEINFO       Name of makeinfo program.  [makeinfo]
                    492:
                    493: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
                    494:
1.13      christos  495: The include file <bsd.sys.mk> is used by <bsd.prog.mk> and
1.14      cgd       496: <bsd.lib.mk>.  It contains overrides that are used when building
                    497: the NetBSD source tree.  For instance, if "PARALLEL" is defined by
                    498: the program/library Makefile, it includes a set of rules for lex and
                    499: yacc that allow multiple lex and yacc targets to be built in parallel.
1.1       cgd       500:
                    501: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
                    502:
                    503: The include file <bsd.lib.mk> has support for building libraries.  It has
1.16      jtc       504: the same eight targets as <bsd.prog.mk>: all, clean, cleandir, depend,
1.44      erh       505: includes, install, lint, and tags.  Additionally, it has a checkver target
                    506: which checks for installed shared object libraries whose version is greater
                    507: that the version of the source. It has a limited number of suffixes,
1.16      jtc       508: consistent with the current needs of the BSD tree.
1.1       cgd       509:
                    510: It sets/uses the following variables:
1.10      cgd       511:
                    512: LIB            The name of the library to build.
1.1       cgd       513:
                    514: LIBDIR         Target directory for libraries.
                    515:
                    516: LINTLIBDIR     Target directory for lint libraries.
                    517:
                    518: LIBGRP         Library group.
                    519:
                    520: LIBOWN         Library owner.
                    521:
                    522: LIBMODE                Library mode.
                    523:
                    524: LDADD          Additional loader objects.
                    525:
1.15      cgd       526: MAN            The manual pages to be installed (use a .1 - .9 suffix).
1.47      tv        527:
                    528: MKLINKLIB      If "no", act as "MKPICINSTALL=no MKPROFILE=no".
                    529:                Also:
                    530:                        - don't install the .a libraries
                    531:                        - don't install _pic.a libraries on PIC systems
                    532:                        - don't build .a libraries on PIC systems
                    533:                        - don't install the .so symlink on ELF systems
                    534:                I.e, only install the shared library (and the .so.major
                    535:                symlink on ELF).
1.54      simonb    536:
                    537: MKPICLIB       If "no", don't build _pic.a libraries, and build the
                    538:                shared object libraries from the .a libraries.  A
                    539:                symlink is installed in ${DESTDIR}/usr/lib for the
                    540:                _pic.a library pointing to the .a library.
1.44      erh       541:
                    542: NOCHECKVER_<library>
                    543: NOCHECKVER     If set, disables checking for installed shared object
                    544:                libraries with versions greater than the source.  A
                    545:                particular library name, without the "lib" prefix, may
                    546:                be appended to the variable name to disable the check for
                    547:                only that library.
1.1       cgd       548:
                    549: SRCS           List of source files to build the library.  Suffix types
                    550:                .s, .c, and .f are supported.  Note, .s files are preferred
                    551:                to .c files of the same name.  (This is not the default for
                    552:                versions of make.)
                    553:
                    554: The include file <bsd.lib.mk> includes the file named "../Makefile.inc"
                    555: if it exists, as well as the include file <bsd.man.mk>.
                    556:
                    557: It has rules for building profiled objects; profiled libraries are
                    558: built by default.
                    559:
1.4       cgd       560: Libraries are ranlib'd when made.
1.50      thorpej   561:
                    562: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
                    563:
                    564: The include file <bsd.crypto.mk> contains variables related to building
                    565: cryptography support into the system.
                    566:
                    567: It has no targets.
                    568:
                    569: In order to get system-specific crypto configuration parameters,
                    570: bsd.crypto.mk will include <bsd.own.mk>, which in turn will include
                    571: the configuration file specified by the "MAKECONF" variable.  See
                    572: the <bsd.own.mk> section for more information.
                    573:
                    574: bsd.crypto.mk requires the "SRCTOP" variable to be defined before
                    575: inclusion.  This variable contains the relative path to the top of
                    576: the source tree, with no trailing '/'.
                    577:
                    578: The variable "CRYPTOBASE" may be set by the user to select which
                    579: cryptography code base will be used when building the system.  If
                    580: CRYPTOBASE is set to "none", no cryptography support will be built
                    581: into the system.  CRYPTOBASE should be set to the name of the crypto
                    582: sub-tree in the SRCTOP directory.  If CRYPTOBASE is not set,
                    583: bsd.crypto.mk will use the following algorithm to set the variable:
                    584:
                    585:        .if exists(${SRCTOP}/crypto-us)
                    586:                CRYPTOBASE=crypto-us
                    587:        .elif exists(${SRCTOP}/crypto-intl)
                    588:                CRYPTOBASE=crypto-intl
                    589:        .else
                    590:                undef CRYPTOBASE
                    591:        .endif
                    592:
                    593: Note that it is legal for the user to set CRYPTOBASE to a relative
                    594: path outside of the source directory.  For example:
                    595:
1.57      drochner  596:        CRYPTOBASE= ../cryptosrc-intl/crypto-intl
1.50      thorpej   597:
                    598: If CRYPTOBASE is set and not set to "none", bsd.crypto.mk will use
                    599: CRYPTOBASE to set the "CRYPTOPATH" variable.  CRYPTOPATH is set to
                    600: the value "${SRCTOP}/${CRYPTOBASE}".
                    601:
                    602: Once CRYPTOPATH is set by bsd.crypto.mk, it checks to see if the
                    603: path actually exists.  If it does not exist, the variable is undefined.
                    604: Program and library Makefiles may key off the definition of CRYPTOPATH
                    605: to determine if cryptography support is to be included in that program.
                    606: For example, a typical program Makefile should do the following:
                    607:
                    608:        SRCTOP= ../..
                    609:        .include <bsd.crypto.mk>
                    610:
                    611:        PROG= login
                    612:        SRCS= login.c
                    613:        .
                    614:        .
                    615:        .
                    616:        .if defined(CRYPTOPATH)
1.51      mrg       617:        .sinclude "${CRYPTOPATH}/usr.bin/login/Makefile.frag"
1.50      thorpej   618:        .endif
                    619:
1.51      mrg       620: The Makefile.frag included (if it exists) will now influence the build
                    621: of the login(1) program, specifying additional source files, libraries,
                    622: and CPP flags.
1.50      thorpej   623:
                    624: The "EXPORTABLE_SYSTEM" variable, if set, causes CRYPTOBASE to be set
                    625: to "none".  This is for compatibilty with older NetBSD build environments.
1.56      sommerfe  626:
                    627: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
                    628:
                    629: The include file <bsd.obj.mk> defines targets related to the creation
                    630: and use of separated object and source directories.
                    631:
                    632: make(1) looks for the existance of a subdirectory (or a symlink to a
                    633: directory) of the source directory into which built targets should be
                    634: placed.  If an environment variable named MAKEOBJDIR is set, make(1)
                    635: uses its value as the name of the object directory; failing that, make
                    636: first looks for a subdirectory named "obj.${MACHINE}", and if that
                    637: doesn't exist, it looks for "obj".
                    638:
                    639: Object directories are not created automatically by make(1) if they
                    640: don't exist; you need to run a separate "make obj".  (This will happen
                    641: during a top-level build if "MKOBJDIRS" is set to a value other than
1.58      sommerfe  642: "no").  When the source directory is a subdirectory of ${BSDSRCDIR} --
                    643: and this is determined by a simple string prefix comparison -- object
                    644: directories are created in a separate object directory tree, and a
                    645: symlink to the object directory in that tree is created in the source
                    646: directory; otherwise, "make obj" assumes that you're not in the main
                    647: source tree and that it's not safe to use a separate object tree.
1.56      sommerfe  648:
                    649: Several variables used by <bsd.obj.mk> control exactly what
                    650: directories and links get created during a "make obj":
                    651:
                    652: MAKEOBJDIR     If set, this is the component name of the object
                    653:                directory.
                    654:
                    655: OBJMACHINE     If this is set but MAKEOBJDIR is not set, creates
                    656:                object directories or links named "obj.${MACHINE}";
                    657:                otherwise, just creates ones named "obj".
                    658:
                    659: USR_OBJMACHINE  If set, and the current directory is a subdirectory of
                    660:                ${BSDSRCDIR}, create object directory in the
                    661:                corresponding subdirectory of ${BSDOBJDIR}.${MACHINE};
                    662:                otherwise, create it in the corresponding subdirectory
                    663:                of ${BSDOBJDIR}
1.30      agc       664:
                    665: =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

CVSweb <webmaster@jp.NetBSD.org>