From 99b1571708fc999ec70a78a2b2a60a9e08da4040 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 18 Apr 2013 10:55:15 -0600 Subject: [PATCH] src/README: improve notes on cross-compilation --- src/README | 44 ++++++++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/src/README b/src/README index 9314232615..42309d2679 100644 --- a/src/README +++ b/src/README @@ -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