# HG changeset patch # User Rob Landley # Date 1246834314 18000 # Node ID 037488e9889df14ceb71bf94087841d082cf0ec3 # Parent db06a8c1bfed8969e0e13872fca2453c51decc02 New build.sh that actually uses the new infrastructure, if STATIC_CROSS_COMPILER_HOST or BUILD_STATIC_NATIVE_COMPILER are set. diff -r db06a8c1bfed -r 037488e9889d build.sh --- a/build.sh Sun Jul 05 17:50:44 2009 -0500 +++ b/build.sh Sun Jul 05 17:51:54 2009 -0500 @@ -34,6 +34,46 @@ time ./cross-compiler.sh $1 || exit 1 fi +# Optionally, we can build a static compiler via canadian cross. This is +# built to run on the host system, but statically linked against uClibc +# instead of the host's libraries. This makes it more portable, and smaller +# than statically linking against glibc would make it. + +# We don't autodetect the host because i686 is more portable (running on +# both 64 and 32 bit hosts), but x86_64 is (slightly) faster on a 64 bit host. + +if [ ! -z "$STATIC_CROSS_COMPILER_HOST" ] +then + + # These are statically linked against uClibc on the host (for portability), + # built --with-shared, and have uClibc++ installed. + + # To build each of these we need two existing cross compilers: one for + # the host (to build the executables) and one for the target (to build + # the libraries). + + BUILD_STATIC=1 FROM_ARCH="$STATIC_CROSS_HOST" NATIVE_TOOLCHAIN=only \ + STAGE_NAME=cross-static ./root-filesystem.sh $1 + + # Replace the dynamic cross compiler with the static one. + + rm -rf "build/cross-compiler-$1" && + ln -s "cross-static-$1" "build/cross-compiler-$1" || exit 1 +fi + +# Optionally, we can build a static native compiler. (The one in +# root-filesystem is dynamically linked against uClibc, this one can +# presumably be untarred and run on any appropriate host system.) + +if [ ! -z "$BUILD_STATIC_NATIVE_COMPILER" ] +then + + # Build static native compilers for each target, possibly in parallel + + BUILD_STATIC=1 NATIVE_TOOLCHAIN=only STAGE_NAME=native-compiler \ + ./root-filesystem.sh $1 +fi + # Do we need to build the root filesystem? if [ -f "build/root-filesystem-$1.tar.bz2" ]