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"