aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/install.sh61
1 files changed, 61 insertions, 0 deletions
diff --git a/scripts/install.sh b/scripts/install.sh
index 961341e6..7f344986 100755
--- a/scripts/install.sh
+++ b/scripts/install.sh
@@ -23,11 +23,15 @@ do
# Use {,usr}/{bin,sbin} paths instead of all files in one directory?
[ "$1" == "--long" ] && LONG_PATH="bin/"
+ # Symlink host toolchain binaries to destination to create cross compile $PATH
+ [ "$1" == "--airlock" ] && AIRLOCK=1
+
shift
done
echo "Compile instlist..."
+NOBUILD=1 scripts/make.sh
$DEBUG $HOSTCC -I . scripts/install.c -o generated/instlist || exit 1
COMMANDS="$(generated/instlist $LONG_PATH)"
@@ -88,4 +92,61 @@ do
fi
done
+[ -z "$AIRLOCK" ] && exit 0
+
+# --airlock creates a single directory you can point the $PATH to for cross
+# compiling, which contains just toybox and symlinks to toolchain binaries.
+
+# This not only means you're building with a known set of tools (insulated from
+# variations in the host distro), but that everything else is NOT in your PATH
+# and thus various configure stages won't find things on thie host that won't
+# be there on the target (such as the distcc build noticing the host has
+# python and deciding to #include Python.h).
+
+# The following are commands toybox should provide, but doesn't yet.
+# For now symlink the host version. This list must go away by 1.0.
+
+PENDING="bunzip2 bzcat dd diff expr ftpd ftpget ftpput gunzip less ping route tar test tr vi wget zcat awk bzip2 fdisk gzip sh sha512sum unxz xzcat"
+
+# "gcc" should go away for llvm, but some things still hardwire it
+TOOLCHAIN="ar as nm cc make ld gcc objdump"
+
+if [ ! -z "$AIRLOCK" ]
+then
+
+ # Tools needed to build packages
+ for i in ar as nm cc make ld gcc objdump $PENDING $HOST_EXTRA
+ do
+ if [ ! -f "$i" ]
+ then
+ # Loop through each instance, populating fallback directories (used by
+ # things like distcc, which require multiple instances of the same binary
+ # in a known order in the $PATH).
+
+ X=0
+ FALLBACK="$PREFIX"
+ which -a "$i" | while read j
+ do
+ if [ ! -e "$FALLBACK/$i" ]
+ then
+ mkdir -p "$FALLBACK" &&
+ ln -sf "$j" "$FALLBACK/$i" || exit 1
+ fi
+
+ X=$[$X+1]
+ FALLBACK="$PREFIX/fallback-$X"
+ done
+
+ if [ ! -f "$PREFIX/$i" ]
+ then
+ echo "Toolchain component missing: $i" >&2
+ EXIT=1
+ fi
+ fi
+done
+
+
+
+fi
+
exit $EXIT