[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.72

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

CVSweb <webmaster@jp.NetBSD.org>