Mercurial > hg > aboriginal
view simple-cross-compiler.sh @ 1344:6a04a89a0d19
Add BUILD_NATIVE_ONLY and NO_CLEAN controls to buildall.sh. Also break out the hdb.img creation and do that single threaded for all targets, then reuse the scratch drives. (Avoids triggering timeout.sh due to disk thrashing on large FORK=1 builds.)
author | Rob Landley <rob@landley.net> |
---|---|
date | Sun, 03 Apr 2011 15:08:35 -0500 |
parents | 74541aac72f9 |
children | 9252453c40d0 |
line wrap: on
line source
#!/bin/bash # 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. source sources/include.sh || exit 1 # Parse the sources/targets/$1 directory read_arch_dir "$1" # If this target has a base architecture that's already been built, use that. check_for_base_arch || exit 0 # Ok, we have work to do. Announce start of stage. echo "=== Building $STAGE_NAME" export TOOLCHAIN_PREFIX="${ARCH}-" # Build binutils, gcc, and ccwrap build_section binutils build_section gcc build_section ccwrap # Build C Library build_section linux-headers build_section uClibc cat > "${STAGE_DIR}"/README << EOF && Cross compiler for $ARCH from http://aboriginal.impactlinux.com To use: Add the "bin" subdirectory to your \$PATH, and use "$ARCH-cc" as your compiler. The syntax used to build the Linux kernel is: make ARCH=${KARCH} CROSS_COMPILE=${ARCH}- EOF # Strip the binaries if [ -z "$SKIP_STRIP" ] then cd "$STAGE_DIR" for i in `find bin -type f` `find "$CROSS_TARGET" -type f` do strip "$i" 2> /dev/null done fi # A quick hello world program to test the cross compiler out. # Build hello.c dynamic, then static, to verify header/library paths. 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 || dienow # Does the hello world we just built actually run? if [ ! -z "$CROSS_SMOKE_TEST" ] then more/cross-smoke-test.sh "$ARCH" || exit 1 fi # Tar it up create_stage_tarball echo -e "\e[32mCross compiler toolchain build complete.\e[0m"