#!/bin/bash
-# sudo apt install crossbuild-essential-i386
-# sudo apt install crossbuild-essential-arm64
+# sudo apt install crossbuild-essential-{i386,armel,arm64,mips,mips64}
set -e
cd -- "$(dirname -- "${BASH_SOURCE[0]}")"
function mk_musl() {
- local outdir="/usr/local/musl/${1}-linux-gnu"
+ local outdir="/usr/local/musl/${1}"
local build="musl-build-${1}"
rm -rf "${build}" && mkdir -p "${build}"
tar -xvf "musl-latest.tar.gz" --strip-components=1 -C "${build}"
mk_musl x86_64
mk_musl i686 i686-linux-gnu
+mk_musl arm arm-linux-gnueabi
mk_musl aarch64 aarch64-linux-gnu
+mk_musl mips mips-linux-gnu
+mk_musl mips64 mips64-linux-gnuabi64
# define CPU_ARCH "arm64"
#elif defined(__arm__) || defined(_M_ARM)
# define CPU_ARCH "arm"
+#elif defined(__mips__) && defined(__mips64)
+# define CPU_ARCH "mips64"
+#elif defined(__mips__) || defined(__mips)
+# define CPU_ARCH "mips"
#else
# error Unknown CPU architecture!
#endif
cd -- "$(dirname -- "${BASH_SOURCE[0]}")"
function mk_slunk() {
- local command="make -B CC=/usr/local/musl/${1}-linux-gnu/bin/musl-gcc STATIC=1 STRIP=1 FLTO=1"
+ local command="make -B CC=/usr/local/musl/${1}/bin/musl-gcc STATIC=1 STRIP=1 FLTO=1"
if [ ! -z "${2}" ]; then
command="${command} ${2}"
fi
$BASH -x -c "make clean"
-mk_slunk "x86_64" "MARCH=x86-64 MTUNE=nocona"
mk_slunk "i686" "MARCH=pentiumpro MTUNE=generic"
+mk_slunk "x86_64" "MARCH=x86-64 MTUNE=nocona"
+mk_slunk "arm"
mk_slunk "aarch64"
+mk_slunk "mips"
+mk_slunk "mips64"
printf "\033[1;32m\nBuild completed successfully.\033[0m\n\n"