NAME
mk - remake the binary system and commands from source code
DESCRIPTION
All source code for the UNIX system is distributed in the
directory /usr/src. The directory tree rooted at /usr/src
includes source code for the operating system, libraries,
commands, miscellaneous data files necessary for the system
and procedures to transform this source code into an execut-
able system.
Within the /usr/src directory are the cmd, lib, uts, head,
and stand directories, as well as commands to remake the
parts of the system found under each of these sub-
directories. These commands are named :mk and :mkdir where
dir is the name of the directory to be recreated. Each of
these :mkdir commands rebuilds all or part of the directory
it is responsible for. The :mk command runs each of the
other commands in order and thus recreates the whole system.
The :mk command is distributed only to source code licen-
sees.
Each command, with its associated directory, is described
below.
:mklib
The lib directory contains the source code for the
system libraries. The most important of these is the C
library. Each library is in its own sub-directory. If
any arguments are specified on the :mklib command line
then only the given libraries are rebuilt. The argu-
ment \* causes it to rebuild all libraries found under
the lib directory.
:mkhead
The head directory contains the source code versions
of the headers found in the /usr/include directory.
The :mkhead command installs the headers given as
arguments. The argument \* causes it to install all
headers.
:mkuts
The uts directory contains the source code for the
UNIX Operating System. The :mkuts command takes no
arguments and invokes a series of makefiles that
recreates the operating system.
Associated with the operating system is a set of
headers that describe the user interface to the
operating system. The source for these headers is
found in a sub-directory within the uts directory
tree. The user-accessible versions of these headers
are found in the /usr/include/sys directory. The
:mksyshead command installs these headers into the
/usr/include/sys directory.
:mkstand
The stand directory contains stand-alone commands and
boot programs. The :mkstand command rebuilds and
installs these programs. Note that these stand-alone
programs are only applicable to the DEC processors and
are not built for any other machine.
:mkcmd
The cmd directory contains the source code for all the
commands available on the system. There are two types
of entries within the cmd directory: commands whose
source code consists of only one file with one of the
following suffixes: .l, .y, .c, .s, .sh, or a sub-
directory that contains the multiple source files that
comprise a particular command or subsystem. Each sub-
directory is assumed to have a makefile (see make(1S))
with the name command .mk that takes care of creating
everything associated with that directory and its
sub-directories.
The :mkcmd command transforms source code into an exe-
cutable command based on a set of predefined rules. If
the :mkcmd command encounters a sub-directory within
the cmd directory then it runs the makefile found in
that sub-directory. If no makefile is found then an
error is reported. For single-file commands, the
predefined rules are dependent on the file's suffix. C
programs (.c) are compiled by the C compiler and
loaded stripped with shared text. Assembly language
programs (.s) are assembled and loaded stripped. Yacc
programs (.y) and lex programs (.l) are processed by
yacc() and lex() respectively, before C compilation.
Shell programs (.sh) are copied to create the command.
Each of these operations leaves a command in the ./cmd
directory which is then installed into a user-
accessible directory by using /usr/sbin/install.
The arguments to :mkcmd are either command names or
subsystem names. Some subsystems distributed with the
UNIX system are: acct, graf, sgs, sccs, and text. Pre-
facing the :mkcmd command with an assignment to the
shell variable $ARGS causes the indicated components
of the subsystem to be rebuilt.
For example, the entire sccs subsystem can be rebuilt by:
/usr/src/:mkcmd sccs
while the delta component of sccs can be rebuilt by:
ARGS="delta" /usr/src/:mkcmd sccs
The log command, which is a part of the stat package, which
is itself a part of the graf package, can be rebuilt by:
ARGS="stat log" /usr/src/:mkcmd graf
The argument \* causes all commands and subsystems to be
rebuilt.
Makefiles throughout the system, and particularly in the cmd
directory, have a standard format. In particular, :mkcmd
depends on each makefile having target entries for install
and clobber. The install target should cause everything over
which the makefile has jurisdiction to be built and
installed by /usr/sbin/install. The clobber target should
cause a complete cleanup of all unnecessary files resulting
from the previous invocation. The commands that use the
CLOBBER environment variable are :mkcmd, :mklib, and :mkuts.
These commands all check the CLOBBER variable before execut-
ing make clobber. If this variable is set to OFF, then make
clobber is not performed. If the variable is not set or is
set to anything other than OFF, the make clobber is per-
formed.
An effort has been made to separate the creation of a com-
mand from source and its installation on the running system.
The command /usr/sbin/install is used by :mkcmd and most
makefiles to install commands in standard directories on the
system. The use of install allows maximum flexibility in the
administration of the system. The install command makes very
few assumptions about where a command is located, who owns
it, and what modes are in effect. All assumptions may be
overridden on invocation of the command, or more permanently
by redefining a few variables in install. The purpose of
install is to install a new version of a command in the same
place, with the same attributes as the prior version.
In addition, the use of a separate command to perform ins-
tallation allows for the creation of test systems in other
than standard places, easy movement of commands to balance
load, and independent maintenance of makefiles.
SEE ALSO
make(1S) install(1M),
|
Закладки на сайте Проследить за страницей |
Created 1996-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |