Mercurial > hg > aboriginal
diff simple-root-filesystem.sh @ 1116:2b68517f5b62
Break out simple-root-filesystem.sh and root-filesystem.sh (adding native-compiler.sh output), and use NO_NATIVE_COMPILER to determine which to use. Rename STATIC_CC_HOST to CROSS_HOST_ARCH.
author | Rob Landley <rob@landley.net> |
---|---|
date | Wed, 16 Jun 2010 08:11:51 -0500 |
parents | root-filesystem.sh@a0bc889b4269 |
children | e5f9681a8b3c |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/simple-root-filesystem.sh Wed Jun 16 08:11:51 2010 -0500 @@ -0,0 +1,76 @@ +#!/bin/bash + +# Build a basic busybox+uClibc root filesystem for a given target. + +source sources/include.sh || exit 1 +read_arch_dir "$1" +check_for_base_arch || exit 0 +check_prerequisite "${ARCH}-cc" + +# Announce start of stage. + +echo "=== Building $STAGE_NAME" + +# Determine which directory layout we're using + +if [ -z "$ROOT_NODIRS" ] +then + mkdir -p "$STAGE_DIR"/{tmp,proc,sys,dev,home,mnt} && + chmod a+rwxt "$STAGE_DIR/tmp" || dienow + for i in bin sbin lib etc + do + mkdir -p "$STAGE_DIR/usr/$i" && + ln -s "usr/$i" "$STAGE_DIR/$i" || dienow + done + ln -s share/man "$STAGE_DIR/usr/man" || dienow + + STAGE_DIR="$STAGE_DIR/usr" +else + mkdir -p "$STAGE_DIR/bin" || dienow +fi + +# Copy qemu setup script and so on. + +cp -r "${SOURCES}/native-root/." "$STAGE_DIR/" && +cp "$SRCDIR"/MANIFEST "$STAGE_DIR/src" || dienow + +# Build busybox and toybox + +build_section busybox +cp "$WORK"/config-busybox "$STAGE_DIR"/src || dienow +build_section toybox + +# Put statically and dynamically linked hello world programs on there for +# test purposes. + +"${ARCH}-cc" "${SOURCES}/toys/hello.c" -Os $CFLAGS -o "$STAGE_DIR/bin/hello-dynamic" || dienow + +if [ "$BUILD_STATIC" != none ] +then + "${ARCH}-cc" "${SOURCES}/toys/hello.c" -Os $CFLAGS -static -o "$STAGE_DIR/bin/hello-static" || dienow +fi + +# Do we need shared libraries? + +if [ "$BUILD_STATIC" != all ] +then + echo Copying compiler libraries... + mkdir -p "$STAGE_DIR/lib" || dienow + (path_search \ + "$("$ARCH-cc" --print-search-dirs | sed -n 's/^libraries: =*//p')" \ + "*.so*" 'cp -H "$DIR/$FILE" "$STAGE_DIR/lib/$FILE"' \ + || dienow) | dotprogress +fi + +# Clean up and package the result + +if [ -z "$SKIP_STRIP" ] +then + "${ARCH}-strip" "$STAGE_DIR"/{bin/*,sbin/*,libexec/gcc/*/*/*} + "${ARCH}-strip" --strip-unneeded "$STAGE_DIR"/lib/*.so +fi + +create_stage_tarball + +# Color back to normal +echo -e "\e[0mBuild complete"