1
|
|
--*- Mode: text -*-
|
2
|
1
|
Building CMU CL
|
3
|
2
|
===============
|
4
|
3
|
|
... |
... |
@@ -13,13 +12,13 @@ General Requirements |
13
|
12
|
|
14
|
13
|
In order to build CMU CL, you will need:
|
15
|
14
|
|
16
|
|
-a) A working CMU CL binary. There is no way around this requirement!
|
|
15
|
+a. A working CMU CL binary. There is no way around this requirement!
|
17
|
16
|
|
18
|
17
|
This binary can either be for the platform you want to target, in
|
19
|
18
|
that case you can either recompile or cross-compile, or for another
|
20
|
19
|
supported platform, in that case you must cross-compile, obviously.
|
21
|
20
|
|
22
|
|
-b) A supported C compiler for the C runtime code.
|
|
21
|
+a. A supported C compiler for the C runtime code.
|
23
|
22
|
|
24
|
23
|
Most of the time, this means GNU gcc, though for some ports it
|
25
|
24
|
means the vendor-supplied C compiler. The compiler must be
|
... |
... |
@@ -28,13 +27,13 @@ b) A supported C compiler for the C runtime code. |
28
|
27
|
Note for FreeBSD 10 and above: The build requires gcc (Clang will
|
29
|
28
|
not work) and the lib32 compatiblity package.
|
30
|
29
|
|
31
|
|
-c) GNU make
|
|
30
|
+a. GNU make
|
32
|
31
|
|
33
|
32
|
This has to be available either as gmake or make in your PATH, or
|
34
|
33
|
the MAKE environment variable has to be set to point to the correct
|
35
|
34
|
binary.
|
36
|
35
|
|
37
|
|
-d) The CMU CL source code
|
|
36
|
+a. The CMU CL source code
|
38
|
37
|
|
39
|
38
|
Here you can either use one of the release source tarballs, or
|
40
|
39
|
check out the source code directly from the public CMUCL git
|
... |
... |
@@ -48,7 +47,7 @@ though recompilation against 2.x Motif probably works as well. |
48
|
47
|
Setting up a build environment
|
49
|
48
|
------------------------------
|
50
|
49
|
|
51
|
|
-1.) Create a base directory and change to it
|
|
50
|
+1. Create a base directory and change to it
|
52
|
51
|
|
53
|
52
|
mkdir cmucl ; cd cmucl
|
54
|
53
|
|
... |
... |
@@ -77,7 +76,7 @@ want to do that and in case you know, somehow, that the version of |
77
|
76
|
CMUCL you are building from will build the sources you have, here is a
|
78
|
77
|
quick guide.
|
79
|
78
|
|
80
|
|
-a) Simple builds
|
|
79
|
+1. Simple builds
|
81
|
80
|
|
82
|
81
|
Use this to build from a version of CMUCL that is very close to the
|
83
|
82
|
sources you are trying to build now:
|
... |
... |
@@ -93,7 +92,7 @@ a) Simple builds |
93
|
92
|
load-world.sh three times. See below for descriptions of these
|
94
|
93
|
scripts.
|
95
|
94
|
|
96
|
|
-b) Slightly more complicated builds
|
|
95
|
+1. Slightly more complicated builds
|
97
|
96
|
|
98
|
97
|
For slightly more complicated builds, you may need to use some
|
99
|
98
|
bootstrap files. See below for more information about these
|
... |
... |
@@ -109,7 +108,7 @@ b) Slightly more complicated builds |
109
|
108
|
As in a) above, three builds are done, and the result is in the
|
110
|
109
|
directory build-4.
|
111
|
110
|
|
112
|
|
-c) More complicated builds
|
|
111
|
+1. More complicated builds
|
113
|
112
|
|
114
|
113
|
If you have more complicated builds, this script probably will not
|
115
|
114
|
work, and definitely does not handle cross-compiles. In this case,
|
... |
... |
@@ -136,7 +135,7 @@ and cross-compilation. We'll first look at normal recompilation: |
136
|
135
|
|
137
|
136
|
The recompilation process basically consists of 4 phases/parts:
|
138
|
137
|
|
139
|
|
-a) Compiling the lisp files that make up the standard kernel.
|
|
138
|
+1. Compiling the lisp files that make up the standard kernel.
|
140
|
139
|
|
141
|
140
|
This happens in your current CMU CL process, using your current
|
142
|
141
|
CMU CL's normal file compiler. This phase currently consists of 3
|
... |
... |
@@ -148,7 +147,7 @@ a) Compiling the lisp files that make up the standard kernel. |
148
|
147
|
or "compiling up a world", based on the name of the first
|
149
|
148
|
sub-phase.
|
150
|
149
|
|
151
|
|
-b) Building a new kernel.core file out of the so created files
|
|
150
|
+1. Building a new kernel.core file out of the so created files
|
152
|
151
|
|
153
|
152
|
This process, which is generally called genesis, and which is
|
154
|
153
|
controlled by src/tools/worldbuild.lisp, uses the newly compiled
|
... |
... |
@@ -190,7 +189,7 @@ b) Building a new kernel.core file out of the so created files |
190
|
189
|
If it doesn't inform you of this, you can skip directly to the last
|
191
|
190
|
phase d).
|
192
|
191
|
|
193
|
|
-c) Recompiling the C runtime code, producing the "lisp" binary file
|
|
192
|
+1. Recompiling the C runtime code, producing the "lisp" binary file
|
194
|
193
|
|
195
|
194
|
This step is only needed if you haven't yet got a suitable lisp
|
196
|
195
|
binary, or if the internals.h file has changed during genesis (of
|
... |
... |
@@ -206,7 +205,7 @@ c) Recompiling the C runtime code, producing the "lisp" binary file |
206
|
205
|
the C sources and recompile because of this, you can do that before
|
207
|
206
|
Phase b), so that you don't have to perform that phase twice.
|
208
|
207
|
|
209
|
|
-d) Populating the kernel.core, and dumping a new lisp.core file.
|
|
208
|
+1. Populating the kernel.core, and dumping a new lisp.core file.
|
210
|
209
|
|
211
|
210
|
In this phase, which is controlled by src/tools/worldload.lisp, and
|
212
|
211
|
hence often called world-load, the kernel.core file is started up
|
... |
... |
@@ -218,11 +217,11 @@ We're not quite done yet. This produces just a basic lisp.core. |
218
|
217
|
To complete the build so that you something similar to what the
|
219
|
218
|
releases of CMUCL do, there are a few more steps:
|
220
|
219
|
|
221
|
|
-e) Build the utilities like Gray streams, simple streams, CLX, CLM,
|
|
220
|
+1. Build the utilities like Gray streams, simple streams, CLX, CLM,
|
222
|
221
|
and Hemlock. Use the bin/build-utils.sh script for this, as
|
223
|
222
|
described below
|
224
|
223
|
|
225
|
|
-f) Create tarfiles using the bin/make-dist.sh script, as
|
|
224
|
+1. Create tarfiles using the bin/make-dist.sh script, as
|
226
|
225
|
explained below.
|
227
|
226
|
|
228
|
227
|
With these tarfiles, you can install them anywhere. The contents of
|
... |
... |
@@ -504,7 +503,7 @@ binaries built from earlier sources can compile the sources containing |
504
|
503
|
that change. There are two forms of boostrapping that can be
|
505
|
504
|
required:
|
506
|
505
|
|
507
|
|
-a) Bootfiles
|
|
506
|
+1. Bootfiles
|
508
|
507
|
|
509
|
508
|
The maintainers try to make bootfiles available, that allow going
|
510
|
509
|
from an old release to the next release. These are located in the
|
... |
... |
@@ -525,7 +524,7 @@ a) Bootfiles |
525
|
524
|
Alternatively, the bootstrap file can just "load" the individual
|
526
|
525
|
bootfiles as needed.
|
527
|
526
|
|
528
|
|
-b) Cross-compiling
|
|
527
|
+1. Cross-compiling
|
529
|
528
|
|
530
|
529
|
Under some circumstances, bootstrap code will not be sufficient,
|
531
|
530
|
and a cross-compilation is needed. In that case you will have to
|