Next: , Up: System Building   [Contents]


2.1 Compiling the C Startup Code

There is a circular dependancy between lisp/internals.h and lisp/lisp.map that causes bootstrapping problems. The easiest way to get around this problem is to make a fake lisp.nm file that has nothing in it but a version number:

        % echo "Map file for lisp version 0" > lisp.nm

and then run genesis with NIL for the list of files:

        * (load ".../compiler/generic/new-genesis") ; compile before loading
        * (lisp::genesis nil ".../lisp/lisp.nm" "/dev/null"
                ".../lisp/lisp.map" ".../lisp/lisp.h")

It will generate a whole bunch of warnings about things being undefined, but ignore that, because it will also generate a correct lisp.h. You can then compile lisp producing a correct lisp.map:

        % make

and then use tools/do-worldbuild and tools/mk-lisp to build kernel.core and lisp.core (see section building-cores.)