summaryrefslogtreecommitdiff
path: root/libc/ci/install-musl.sh
diff options
context:
space:
mode:
Diffstat (limited to 'libc/ci/install-musl.sh')
-rw-r--r--libc/ci/install-musl.sh69
1 files changed, 69 insertions, 0 deletions
diff --git a/libc/ci/install-musl.sh b/libc/ci/install-musl.sh
new file mode 100644
index 0000000..ab98c4f
--- /dev/null
+++ b/libc/ci/install-musl.sh
@@ -0,0 +1,69 @@
+#!/usr/bin/env sh
+#
+# Install musl and musl-sanitized linux kernel headers
+# to musl-{$1} directory
+
+set -ex
+
+MUSL_VERSION=1.1.22
+MUSL="musl-${MUSL_VERSION}"
+
+# Download, configure, build, and install musl:
+curl --retry 5 https://www.musl-libc.org/releases/${MUSL}.tar.gz | tar xzf -
+
+cd $MUSL
+case ${1} in
+ aarch64)
+ musl_arch=aarch64
+ kernel_arch=arm64
+ CC=aarch64-linux-gnu-gcc \
+ ./configure --prefix="/musl-${musl_arch}" --enable-wrapper=yes
+ make install -j4
+ ;;
+ arm)
+ musl_arch=arm
+ kernel_arch=arm
+ CC=arm-linux-gnueabihf-gcc CFLAGS="-march=armv6 -marm -mfpu=vfp" \
+ ./configure --prefix="/musl-${musl_arch}" --enable-wrapper=yes
+ make install -j4
+ ;;
+ i686)
+ # cross-compile musl for i686 using the system compiler on an x86_64
+ # system.
+ musl_arch=i686
+ kernel_arch=i386
+ # Specifically pass -m32 in CFLAGS and override CC when running
+ # ./configure, since otherwise the script will fail to find a compiler.
+ CC=gcc CFLAGS="-m32" \
+ ./configure --prefix="/musl-${musl_arch}" --disable-shared --target=i686
+ # unset CROSS_COMPILE when running make; otherwise the makefile will
+ # call the non-existent binary 'i686-ar'.
+ make CROSS_COMPILE= install -j4
+ ;;
+ x86_64)
+ musl_arch=x86_64
+ kernel_arch=x86_64
+ ./configure --prefix="/musl-${musl_arch}"
+ make install -j4
+ ;;
+ *)
+ echo "Unknown target arch: \"${1}\""
+ exit 1
+ ;;
+esac
+
+
+# shellcheck disable=SC2103
+cd ..
+rm -rf $MUSL
+
+# Download, configure, build, and install musl-sanitized kernel headers:
+KERNEL_HEADER_VER="4.4.2-2"
+curl --retry 5 -L \
+ "https://github.com/sabotage-linux/kernel-headers/archive/v${KERNEL_HEADER_VER}.tar.gz" | \
+ tar xzf -
+(
+ cd kernel-headers-${KERNEL_HEADER_VER}
+ make ARCH="${kernel_arch}" prefix="/musl-${musl_arch}" install -j4
+)
+rm -rf kernel-headers-${KERNEL_HEADER_VER}