Previous Chapter Next Section Table of Contents Glossary Index

Chapter 3. Building Clozure CL from its Source Code

3.1. Building Definitions

The following terms are used in subsequent sections; it may be helpful to refer to these definitions.

fasl files are the object files produced by compile-file. fasl files store the machine code associated with function definitions and the external representation of other lisp objects in a compact, machine-readable form. fasl is short for “FASt Loading”. Clozure CL uses different pathname types (extensions) to name fasl files on different platforms; see Table 3.1, “Platform-specific filename conventions”

The Lisp kernel is a C program with a fair amount of platform-specific assembly language code. Its basic job is to map a lisp heap image into memory, transfer control to some compiled lisp code that the image contains, handle any exceptions that occur during the execution of that lisp code, and provide various other forms of runtime support for that code. Clozure CL uses different filenames to name the lisp kernel files on different platforms; see Table 3.1, “Platform-specific filename conventions”.

A heap image is a file that can be quickly mapped into a process' address space. Conceptually, it's not too different from an executable file or shared library in the OS's native format (ELF orMach-O/dyld format); for historical reasons, Clozure CL's own heap images are in their own (fairly simple) format. The term full heap image refers to a heap image file that contains all of the code and data that comprise Clozure CL. Clozure CL uses different filenames to name the standard full heap image files on different platforms; see Table 3.1, “Platform-specific filename conventions”.

A bootstrapping image is a minimal heap image used in the process of building Clozure CL itself. The bootstrapping image contains just enough code to load the rest of Clozure CL from fasl files. It may help to think of the bootstrapping image as the egg and the full heap image as the chicken. Clozure CL uses different filenames to name the standard bootstrapping image files on different platforms; see Table 3.1, “Platform-specific filename conventions” .

Each supported platform (and possibly a few as-yet-unsupported ones) has a uniquely named subdirectory of ccl/lisp-kernel/; each such contains a Makefile and may contain some auxiliary files (linker scripts, etc.) that are used to build the lisp kernel on a particular platform.The platform-specific name of the kernel build directory is described in Table 3.1, “Platform-specific filename conventions”.

3.1.1. Platform-specific filename conventions

Table 3.1. Platform-specific filename conventions

Platform kernel full-image boot-image fasl extension kernel-build directory
DarwinPPC32 dppccl dppccl.image ppc-boot.image .dfsl darwinppc
LinuxPPC32 ppccl PPCCL ppc-boot .pfsl linuxppc
DarwinPPC64 dppccl64 dppccl64.image ppc-boot64.image .d64fsl darwinppc64
LinuxPPC64 ppccl64 PPCCL64 ppc-boot64 .p64fsl linuxppc64
LinuxX8664 lx86cl64 LX86CL64 x86-boot64 .lx64fsl linuxx8664
DarwinX8664 dx86cl64 dx86cl64.image x86-boot64.image .dx64fsl darwinx8664
FreeBSDX8664 fx86cl64 FX86CL64 fx86-boot64 .fx64fsl freebsdx8664


Previous Chapter Next Section Table of Contents Glossary Index