12add0d91Sopenharmony_ci#!/usr/bin/env sh 22add0d91Sopenharmony_ci# 32add0d91Sopenharmony_ci# Install musl and musl-sanitized linux kernel headers 42add0d91Sopenharmony_ci# to musl-{$1} directory 52add0d91Sopenharmony_ci 62add0d91Sopenharmony_ciset -ex 72add0d91Sopenharmony_ci 82add0d91Sopenharmony_ciMUSL_VERSION=1.1.24 92add0d91Sopenharmony_ciMUSL="musl-${MUSL_VERSION}" 102add0d91Sopenharmony_ci 112add0d91Sopenharmony_ci# Download, configure, build, and install musl: 122add0d91Sopenharmony_cicurl --retry 5 https://www.musl-libc.org/releases/${MUSL}.tar.gz | tar xzf - 132add0d91Sopenharmony_ci 142add0d91Sopenharmony_cicd $MUSL 152add0d91Sopenharmony_cicase ${1} in 162add0d91Sopenharmony_ci aarch64) 172add0d91Sopenharmony_ci musl_arch=aarch64 182add0d91Sopenharmony_ci kernel_arch=arm64 192add0d91Sopenharmony_ci CC=aarch64-linux-gnu-gcc \ 202add0d91Sopenharmony_ci ./configure --prefix="/musl-${musl_arch}" --enable-wrapper=yes 212add0d91Sopenharmony_ci make install -j4 222add0d91Sopenharmony_ci ;; 232add0d91Sopenharmony_ci arm) 242add0d91Sopenharmony_ci musl_arch=arm 252add0d91Sopenharmony_ci kernel_arch=arm 262add0d91Sopenharmony_ci CC=arm-linux-gnueabihf-gcc CFLAGS="-march=armv6 -marm -mfpu=vfp" \ 272add0d91Sopenharmony_ci ./configure --prefix="/musl-${musl_arch}" --enable-wrapper=yes 282add0d91Sopenharmony_ci make install -j4 292add0d91Sopenharmony_ci ;; 302add0d91Sopenharmony_ci i686) 312add0d91Sopenharmony_ci # cross-compile musl for i686 using the system compiler on an x86_64 322add0d91Sopenharmony_ci # system. 332add0d91Sopenharmony_ci musl_arch=i686 342add0d91Sopenharmony_ci kernel_arch=i386 352add0d91Sopenharmony_ci # Specifically pass -m32 in CFLAGS and override CC when running 362add0d91Sopenharmony_ci # ./configure, since otherwise the script will fail to find a compiler. 372add0d91Sopenharmony_ci CC=gcc CFLAGS="-m32" \ 382add0d91Sopenharmony_ci ./configure --prefix="/musl-${musl_arch}" --disable-shared --target=i686 392add0d91Sopenharmony_ci # unset CROSS_COMPILE when running make; otherwise the makefile will 402add0d91Sopenharmony_ci # call the non-existent binary 'i686-ar'. 412add0d91Sopenharmony_ci make CROSS_COMPILE= install -j4 422add0d91Sopenharmony_ci ;; 432add0d91Sopenharmony_ci x86_64) 442add0d91Sopenharmony_ci musl_arch=x86_64 452add0d91Sopenharmony_ci kernel_arch=x86_64 462add0d91Sopenharmony_ci ./configure --prefix="/musl-${musl_arch}" 472add0d91Sopenharmony_ci make install -j4 482add0d91Sopenharmony_ci ;; 492add0d91Sopenharmony_ci mips64) 502add0d91Sopenharmony_ci musl_arch=mips64 512add0d91Sopenharmony_ci kernel_arch=mips 522add0d91Sopenharmony_ci CC=mips64-linux-gnuabi64-gcc CFLAGS="-march=mips64r2 -mabi=64" \ 532add0d91Sopenharmony_ci ./configure --prefix="/musl-${musl_arch}" --enable-wrapper=yes 542add0d91Sopenharmony_ci make install -j4 552add0d91Sopenharmony_ci ;; 562add0d91Sopenharmony_ci mips64el) 572add0d91Sopenharmony_ci musl_arch=mips64el 582add0d91Sopenharmony_ci kernel_arch=mips 592add0d91Sopenharmony_ci CC=mips64el-linux-gnuabi64-gcc CFLAGS="-march=mips64r2 -mabi=64" \ 602add0d91Sopenharmony_ci ./configure --prefix="/musl-${musl_arch}" --enable-wrapper=yes 612add0d91Sopenharmony_ci make install -j4 622add0d91Sopenharmony_ci ;; 632add0d91Sopenharmony_ci s390x) 642add0d91Sopenharmony_ci musl_arch=s390x 652add0d91Sopenharmony_ci kernel_arch=s390 662add0d91Sopenharmony_ci CC=s390x-linux-gnu-gcc \ 672add0d91Sopenharmony_ci ./configure --prefix="/musl-${musl_arch}" --enable-wrapper=yes 682add0d91Sopenharmony_ci make install -j4 692add0d91Sopenharmony_ci ;; 702add0d91Sopenharmony_ci *) 712add0d91Sopenharmony_ci echo "Unknown target arch: \"${1}\"" 722add0d91Sopenharmony_ci exit 1 732add0d91Sopenharmony_ci ;; 742add0d91Sopenharmony_ciesac 752add0d91Sopenharmony_ci 762add0d91Sopenharmony_ci 772add0d91Sopenharmony_ci# shellcheck disable=SC2103 782add0d91Sopenharmony_cicd .. 792add0d91Sopenharmony_cirm -rf $MUSL 802add0d91Sopenharmony_ci 812add0d91Sopenharmony_ci# Download, configure, build, and install musl-sanitized kernel headers: 822add0d91Sopenharmony_ciKERNEL_HEADER_VER="4.19.88" 832add0d91Sopenharmony_cicurl --retry 5 -L \ 842add0d91Sopenharmony_ci "https://github.com/sabotage-linux/kernel-headers/archive/v${KERNEL_HEADER_VER}.tar.gz" | \ 852add0d91Sopenharmony_ci tar xzf - 862add0d91Sopenharmony_ci( 872add0d91Sopenharmony_ci cd kernel-headers-${KERNEL_HEADER_VER} 882add0d91Sopenharmony_ci make ARCH="${kernel_arch}" prefix="/musl-${musl_arch}" install -j4 892add0d91Sopenharmony_ci) 902add0d91Sopenharmony_cirm -rf kernel-headers-${KERNEL_HEADER_VER} 91