Mercurial > hg > aboriginal
changeset 1007:48784ae8533e
Move CROSS_SMOKE_TEST implementation out of simple-cross-compiler.sh and into sources/more/cross-smoke-test.sh, called from build.sh. Clean up comments a bit while we're there.
author | Rob Landley <rob@landley.net> |
---|---|
date | Thu, 25 Mar 2010 18:54:30 -0500 |
parents | f99d25daec6a |
children | 2d5e356580b9 |
files | build.sh native-compiler.sh simple-cross-compiler.sh sources/more/cross-smoke-test.sh sources/targets/powerpc/settings |
diffstat | 5 files changed, 65 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/build.sh Thu Mar 25 15:19:10 2010 -0500 +++ b/build.sh Thu Mar 25 18:54:30 2010 -0500 @@ -39,21 +39,22 @@ # Do we need to build the simple cross compiler? -# This version has no thread support, no libgcc_s.so, doesn't include -# uClibc++, and is dynamically linked against the host's shared libraries. - if not_already simple-cross-compiler then # If we need to build cross compiler, assume root filesystem is stale. rm -rf "$BUILD/root-filesystem-$ARCH.tar.bz2" time ./simple-cross-compiler.sh "$ARCH" || exit 1 + + if [ ! -z "$CROSS_SMOKE_TEST" ] + then + sources/more/cross-smoke-test.sh "$ARCH" || exit 1 + fi fi -# Optionally, we can build a statically linked compiler via canadian cross. - -# 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. +# Optionally, we can build a more capable statically linked compiler via +# canadian cross. (It's more powerful than we need here, but if you're going +# to use the cross compiler in other contexts this is probably what you want.) if [ ! -z "$STATIC_CC_HOST" ] && not_already cross-compiler then @@ -67,6 +68,11 @@ BUILD_STATIC=1 FROM_ARCH="$STATIC_CC_HOST" STAGE_NAME=cross-compiler \ ./native-compiler.sh "$ARCH" || exit 1 + + if [ ! -z "$CROSS_SMOKE_TEST" ] + then + sources/more/cross-smoke-test.sh "$ARCH" || exit 1 + fi fi # Build a native compiler. It's statically linked by default so it can be
--- a/native-compiler.sh Thu Mar 25 15:19:10 2010 -0500 +++ b/native-compiler.sh Thu Mar 25 18:54:30 2010 -0500 @@ -1,10 +1,21 @@ #!/bin/bash -# Build a compiler for a given target +# Build a compiler for a given target, using one or more existing simple +# cross compilers. + +# This can be used to build a native compiler for an aribitrary target, or to +# build a more portable and capable cross compiler for an arbitrary host. -source sources/include.sh || exit 1 -read_arch_dir "$1" +# The new compiler is built --with-shared and has uClibc++ installed, and is +# statically linked against uClibc (for portability) unless BUILD_STATIC=none. + +source sources/include.sh && read_arch_dir "$1" || exit 1 check_for_base_arch || exit 0 + +# Building a cross compiler requires _two_ existing simple compilers: one for +# the host (to build the executables), and one for the target (to build +# the libraries). For native compilers both checks test for the same thing. + check_prerequisite "${ARCH}-cc" check_prerequisite "${FROM_ARCH}-cc"
--- a/simple-cross-compiler.sh Thu Mar 25 15:19:10 2010 -0500 +++ b/simple-cross-compiler.sh Thu Mar 25 18:54:30 2010 -0500 @@ -1,6 +1,14 @@ #!/bin/bash -# Build a cross compiler for the specified target. +# Build a simple cross compiler for the specified target. + +# This simple compiler has no thread support, no libgcc_s.so, doesn't include +# uClibc++, and is dynamically linked against the host's shared libraries. + +# Its stripped down nature makes it easy to build on an arbitrary host, and +# provides just enough capability to build a root filesystem, and to be used +# as a distcc accelerator from within that system. + # Get lots of predefined environment variables and shell functions. @@ -63,12 +71,7 @@ echo "Sanity test: building Hello World." "${ARCH}-gcc" -Os "${SOURCES}/toys/hello.c" -o "$WORK"/hello && -"${ARCH}-gcc" -Os -static "${SOURCES}/toys/hello.c" -o "$WORK"/hello && -if [ ! -z "$CROSS_SMOKE_TEST" ] && which qemu-"${QEMU_TEST}" > /dev/null -then - [ x"$(qemu-"${QEMU_TEST}" "${WORK}"/hello)" == x"Hello world!" ] && - echo Cross-toolchain seems to work. -fi +"${ARCH}-gcc" -Os -static "${SOURCES}/toys/hello.c" -o "$WORK"/hello || dienow [ $? -ne 0 ] && dienow
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sources/more/cross-smoke-test.sh Thu Mar 25 18:54:30 2010 -0500 @@ -0,0 +1,27 @@ +#!/bin/bash + +source sources/include.sh && read_arch_dir "$1" || exit 1 + +# Build statically linked hello world, if necessary + +if [ ! -e "$WORK/hello" ] +then + "${ARCH}-gcc" -Os -static "${SOURCES}/toys/hello.c" -o "$WORK"/hello + + if [ $? -ne 0 ] + then + echo "Compiler doesn't seem to work" >&2 + dienow + fi +fi + +# Attempt to run statically linked hello world + +RESULT="$(PATH="$OLDPATH" qemu-"$QEMU_TEST" "$WORK/hello")" +if [ "$RESULT" == "Hello world!" ] +then + echo "Cross toolchain seems to work." +else + echo "Can't run hello world" >&2 + dienow +fi