386BSD 0.1 development
authorWilliam F. Jolitz <wjolitz@soda.berkeley.edu>
Fri, 11 May 1990 19:35:17 +0000 (11:35 -0800)
committerWilliam F. Jolitz <wjolitz@soda.berkeley.edu>
Fri, 11 May 1990 19:35:17 +0000 (11:35 -0800)
Work on file usr/othersrc/share/mk/bsd.README

Co-Authored-By: Lynne Greer Jolitz <ljolitz@cardio.ucsf.edu>
Synthesized-from: 386BSD-0.1

usr/othersrc/share/mk/bsd.README [new file with mode: 0644]

diff --git a/usr/othersrc/share/mk/bsd.README b/usr/othersrc/share/mk/bsd.README
new file mode 100644 (file)
index 0000000..1e0c814
--- /dev/null
@@ -0,0 +1,300 @@
+#      @(#)bsd.README  5.1 (Berkeley) 5/11/90
+
+This is the README file for the new make "include" files for the BSD
+source tree.  The files are installed in /usr/share/mk, and are, by
+convention, named with the suffix ".mk".  Each ".mk" file has a
+corresponding ".rd" file which is an explanation of the ".mk" file.
+
+Note, this file is not intended to replace reading through the .mk
+files for anything tricky.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+RANDOM THINGS WORTH KNOWING:
+
+The files are simply C-style #include files, and pretty much behave like
+you'd expect.  The syntax is slightly different in that a single '.' is
+used instead of the hash mark, i.e. ".include <bsd.prog.mk>".
+
+One difference that will save you lots of debugging time is that inclusion
+of the file is normally done at the *end* of the Makefile.  The reason for
+this is because .mk files often modify variables and behavior based on the
+values of variables set in the Makefile.  To make this work, remember that
+the FIRST target found is the target that is used, i.e. if the Makefile has:
+
+       a:
+               echo a
+       a:
+               echo a number two
+
+the command "make a" will echo "a".  To make things confusing, the SECOND
+variable assignment is the overriding one, i.e. if the Makefile has:
+
+       a=      foo
+       a=      bar
+
+       b:
+               echo ${a}
+
+the command "make b" will echo "bar".  This is for compatibility with the
+way the V7 make behaved.
+
+It's fairly difficult to make the BSD .mk files work when you're building
+multiple programs in a single directory.  It's a lot easier split up the
+programs than to deal with the problem.  Most of the agony comes from making
+the "obj" directory stuff work right, not because we switch to a new version
+of make.  So, don't get mad at us, figure out a better way to handle multiple
+architectures so we can quit using the symbolic link stuff.  (Imake doesn't
+count.)
+
+The file .depend in the source directory is expected to contain dependencies
+for the source files.  This file is read automatically by make after reading
+the Makefile.
+
+The variable DESTDIR works as before.  It's not set anywhere but will change
+the tree where the file gets installed.
+
+The profiled libraries are no longer built in a different directory than
+the regular libraries.  A new suffix, ".po", is used to denote a profiled
+object.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+The include file <sys.mk> has the default rules for all makes, in the BSD
+environment or otherwise.  You probably don't want to touch this file.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+The include file <bsd.man.mk> handles installing manual pages and their
+links.
+
+It has a single target:
+
+       maninstall:
+               Install the manual pages and their links.
+
+It sets/uses the following variables:
+
+MANDIR         Base path for manual installation.
+
+MANGRP         Manual group.
+
+MANOWN         Manual owner.
+
+MANMODE                Manual mode.
+
+MANSUBDIR      Subdirectory under the manual page section, i.e. "/vax"
+               or "/tahoe" for machine specific manual pages.
+
+MAN1 ... MAN8  The manual pages to be installed (use a .0 suffix).
+
+MLINKS         List of manual page links (using a .1 - .8 suffix).  The
+               linked-to file must come first, the linked file second,
+               and there may be multiple pairs.  The files are soft-linked.
+
+The include file <bsd.man.mk> includes a file named "../Makefile.inc" if
+it exists.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+The include file <bsd.own.mk> contains the owners, groups, etc. for both
+manual pages and binaries.
+
+It has no targets.
+
+It sets/uses the following variables:
+
+BINGRP         Binary group.
+
+BINOWN         Binary owner.
+
+BINMODE                Binary mode.
+
+STRIP          The flag passed to the install program to cause the binary
+               to be stripped.  This is to be used when building your
+               own install script so that the entire system can be made
+               stripped/not-stripped using a single nob.
+
+MANDIR         Base path for manual installation.
+
+MANGRP         Manual group.
+
+MANOWN         Manual owner.
+
+MANMODE                Manual mode.
+
+This file is generally useful when building your own Makefiles so that
+they use the same default owners etc. as the rest of the tree.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+The include file <bsd.prog.mk> handles building programs from one or
+more source files, along with their manual pages.  It has a limited number
+of suffixes, consistent with the current needs of the BSD tree.
+
+It has seven targets:
+
+       all:
+               build the program and its manual page
+       clean:
+               remove the program, any object files and the files a.out,
+               Errs, errs, mklog, and core.
+       cleandir:
+               remove all of the files removed by the target clean, as
+               well as .depend, tags, and any manual pages.
+       depend:
+               make the dependencies for the source files, and store
+               them in the file .depend.
+       install:
+               install the program and its manual pages; if the Makefile
+               does not itself define the target install, the targets
+               beforeinstall and afterinstall may also be used to cause
+               actions immediately before and after the install target
+               is executed.
+       lint:
+               run lint on the source files
+       tags:
+               create a tags file for the source files.
+
+It sets/uses the following variables:
+
+BINGRP         Binary group.
+
+BINOWN         Binary owner.
+
+BINMODE                Binary mode.
+
+CLEANFILES     Additional files to remove for the clean and cleandir targets.
+
+COPTS          Additional flags to the compiler when creating C objects.
+
+HIDEGAME       If HIDEGAME is defined, the binary is installed in
+               /usr/games/hide, and a symbolic link is created to
+               /usr/games/dm.
+
+LDADD          Additional loader objects.  Usually used for libraries.
+               For example, to load with the compatibility and utility
+               libraries, use:
+
+                       LDFILES=-lutil -lcompat
+
+LDFLAGS                Additional loader flags.
+
+LINKS          The list of binary links; should be full pathnames, the
+               linked-to file coming first, followed by the linked
+               file.  The files are hard-linked.  For example, to link
+               /bin/test and /bin/[, use:
+
+                       LINKS=  ${DESTDIR}/bin/test ${DESTDIR}/bin/[
+
+MAN1...MAN8    Manual pages (should end in .0).  If no MAN variable is
+               defined, "MAN1=${PROG}.0" is assumed.
+
+PROG           The name of the program to build.  If not supplied, nothing
+               is built.
+
+SRCS           List of source files to build the program.  If PROG is not
+               defined, it's assumed to be ${PROG}.c.
+
+DPADD          Additional dependencies for the program.  Usually used for
+               libraries.  For example, to depend on the compatibility and
+               utility libraries use:
+
+                       SRCLIB=${LIBCOMPAT} ${LIBUTIL}
+
+               The following libraries are predefined for DPADD:
+
+                       LIBC            /lib/libc.a
+                       LIBCOMPAT       /usr/lib/libcompat.a
+                       LIBCURSES       /usr/lib/libcurses.a
+                       LIBDBM          /usr/lib/libdbm.a
+                       LIBDES          /usr/lib/libdes.a
+                       LIBL            /usr/lib/libl.a
+                       LIBKDB          /usr/lib/libkdb.a
+                       LIBKRB          /usr/lib/libkrb.a
+                       LIBM            /usr/lib/libm.a
+                       LIBMP           /usr/lib/libmp.a
+                       LIBPC           /usr/lib/libpc.a
+                       LIBPLOT         /usr/lib/libplot.a
+                       LIBRPC          /usr/lib/sunrpc.a
+                       LIBTERM         /usr/lib/libterm.a
+                       LIBUTIL         /usr/lib/libutil.a
+
+SHAREDSTRINGS  If defined, a new .c.o rule is used that results in shared
+               strings, using xstr(1).
+
+STRIP          The flag passed to the install program to cause the binary
+               to be stripped.
+
+SUBDIR         A list of subdirectories that should be built as well.
+               Each of the targets will execute the same target in the
+               subdirectories.
+
+The include file <bsd.prog.mk> includes the file named "../Makefile.inc"
+if it exists, as well as the include file <bsd.man.mk>.
+
+Some simple examples:
+
+To build foo from foo.c with a manual page foo.1, use:
+
+       PROG=   foo
+
+       .include <bsd.prog.mk>
+
+To build foo from foo.c with a manual page foo.2, add the line:
+
+       MAN2=   foo.0
+
+If foo does not have a manual page at all, add the line:
+
+       NOMAN=  noman
+
+If foo has multiple source files, add the line:
+
+       SRCS=   a.c b.c c.c d.c
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+The include file <bsd.subdir.mk> contains the default targets for building
+subdirectories.  It has the same seven targets as <bsd.prog.mk>: all, clean,
+cleandir, depend, install, lint, and tags.  For all of the directories
+listed in the variable SUBDIRS, the specified directory will be visited
+and the target made.  There is also a default target which allows the
+command "make subdir" where subdir is any directory listed in the variable
+SUBDIRS.
+
+=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+The include file <bsd.lib.mk> has support for building libraries.  It has
+the same seven targets as <bsd.prog.mk>: all, clean, cleandir, depend,
+install, lint, and tags.  It has a limited number of suffixes, consistent
+with the current needs of the BSD tree.
+
+It sets/uses the following variables:
+
+LIBDIR         Target directory for libraries.
+
+LINTLIBDIR     Target directory for lint libraries.
+
+LIBGRP         Library group.
+
+LIBOWN         Library owner.
+
+LIBMODE                Library mode.
+
+LDADD          Additional loader objects.
+
+MAN1 ... MAN8  The manual pages to be installed (use a .0 suffix).
+
+SRCS           List of source files to build the library.  Suffix types
+               .s, .c, and .f are supported.  Note, .s files are preferred
+               to .c files of the same name.  (This is not the default for
+               versions of make.)
+
+The include file <bsd.lib.mk> includes the file named "../Makefile.inc"
+if it exists, as well as the include file <bsd.man.mk>.
+
+It has rules for building profiled objects; profiled libraries are
+built by default.
+
+Libraries are ranlib'd before installation.