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