src/README: improve notes on cross-compilation

This commit is contained in:
Matthew Flatt 2013-04-18 10:55:15 -06:00
parent d44ed9ab53
commit 99b1571708

View File

@ -271,20 +271,35 @@ file references within the installation are relative.
Cross-compilation requires at least two flags to `configure':
* `--host=OS', where OS is something like `i386-gnu-linux'
* `--host=OS', where OS is something like `i386-gnu-linux' to
indicate the target platform.
The `configure' script uses OS to find suitable compilation tools,
such as `OS-gcc' and `OS-strip'.
* `--enable-racket=RACKET', where RACKET is a path to a Racket
executable for the version being compiled that runs on the build
(i.e., you must compile on the build machine to cross-compile)
executable for the version being compiled that runs on the build
platform.
The `--enable-racket' flag is needed because building and installing
Racket requires running (an intermediate version of) Racket.
This flag is needed because building and installing Racket requires
running (an intermediate version of) Racket.
You may also need to set CC_FOR_BUILD to a compiler for the host
platform (for building binaries to execute during the build process).
If the target machine's stack grows up, you may have to supply
`--enable-stackup'; if the target machine is big-endian, you may have
to supply `--enable-bigendian'.
A third `configure' flag is typical:
* `--enable-sgc', which uses a simpler garbage collector for the
inermediate variant of Racket that is normally used only to build
the final variant (see CGC vs 3m below).
Otherwise, you may need to set CC_FOR_BUILD to a compiler for the
build platform, so that helper excutables can be created in the
process of building the intermediate Racket that is used to build
the final Racket.
Some less commonly needed `configure' flags:
* `--enable-stackup', if the target platform's stack grows up.
* `--enable-bigendian', if target platform is big-endian.
========================================================================
CGC versus 3m
@ -295,11 +310,12 @@ older, and it cooperates more easily with extensions written in C. The
3m variant is the default: it is more robust and usually provides better
overall performance.
The default build mode creates 3m binaries only. To create CGC binaries
The default build mode creates 3m binaries only (except for a CGC
binary that is used to build the 3m binary). To create CGC binaries
in addition, run `make cgc' in addition to `make', or run `make both'.
To install both variants, use `make install-both' instead of just `make
install'. Alternately, use just `make cgc' and `make install-cgc' to
build and install just the CGC variants.
To install both variants, use `make install-both' instead of just
`make install'. Alternately, use just `make cgc' and `make
install-cgc' to build and install just the CGC variants.
CGC variants are installed with a "cgc" suffix. To swap the default
build and install mode, supply `--enable-cgcdefault' to `configure'. In