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's address space. Conceptually, it's not too different from an executable file or shared library in the OS's native format (ELF or Mach-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.image ppc-boot .pfsl linuxppc
DarwinPPC64 dppccl64 dppccl64.image ppc-boot64.image .d64fsl darwinppc64
LinuxPPC64 ppccl64 ppccl64.image ppc-boot64 .p64fsl linuxppc64
LinuxX8664 lx86cl64 lx86cl64.image x86-boot64 .lx64fsl linuxx8664
LinuxX8632 lx86cl lx86cl.image x86-boot32 .lx32fsl linuxx8632
DarwinX8664 dx86cl64 dx86cl64.image x86-boot64.image .dx64fsl darwinx8664
DarwinX8632 dx86cl dx86cl.image x86-boot32.image .dx32fsl darwinx8632
FreeBSDX8664 fx86cl64 fx86cl64.image fx86-boot64 .fx64fsl freebsdx8664
FreeBSDX8632 fx86cl fx86cl.image fx86-boot32 .fx32fsl freebsdx8632
SolarisX64 sx86cl64 sx86cl64.image sx86-boot64 .sx64fsl solarisx64
SolarisX86 sx86cl sx86cl.image sx86-boot32 .sx32fsl solarisx86
Win64 wx86cl64.exe sx86cl64.image wx86-boot64.image .wx64fsl win64
Win32 wx86cl.exe wx86cl.image wx86-boot32.image .wx32fsl win32


Previous Chapter Next Section Table of Contents Glossary Index