Both the kernel and final core build are normally done using shell script drivers:
Builds a kernel core for the current machine. The
version to build is indicated by an optional argument, which defaults to
“alpha”. The kernel.core
file is written either in the lisp/
directory in the build area, or in /usr/tmp/
. The directory which
already contains kernel.core
is chosen. You can create a dummy version
with e.g. “touch” to select the initial build location.
Builds a full core, with conditional loading of subsystems.
The version is the first argument, which defaults to “alpha”. Any additional
arguments are added to the *features*
list, which controls system
loading (among other things.) The lisp.core
file is written in the
current working directory.
These scripts load Lisp command files. When tools/worldbuild.lisp
is
loaded, it calls genesis with the correct arguments to build a kernel core.
Similarly, worldload.lisp
builds a full core. Adding certain symbols to *features*
before
loading worldload.lisp suppresses loading of different parts of the
system. These symbols are:
don’t load the compiler.
don’t load CLX.
don’t load CLM.
don’t load Hemlock.
don’t load PCL.
build a runtime code, implies all of the above, and then some.
Note: if you don’t load the compiler, you can’t (successfully) load the pretty-printer or pcl. And if you compiled hemlock with CLX loaded, you can’t load it without CLX also being loaded.
These features are only used during the worldload process; they are
not propagated to the generated lisp.core
file.