version = "1.2.5" desc = "An implementation of the standard C library for Linux-based systems." deps = ["filesystem", "libc-dev", "fortify-headers", "pthread-stubs", "libucontext"] makedeps = ["filesystem", "libc-dev", "fortify-headers", "pthread-stubs", "libucontext"] libgcc_version="13.2.1_git20240309-r0" source = [ { url = "https://musl.libc.org/releases/musl-$version.tar.gz" }, { url = "https://git.adelielinux.org/adelie/gcompat/-/archive/current/gcompat-1.1.0.tar.gz" }, { url = "https://mirrors.ustc.edu.cn/alpine/latest-stable/main/x86_64/libgcc-$libgcc_version.apk"}, { url = "https://mirrors.ustc.edu.cn/alpine/latest-stable/main/x86_64/libstdc++-$libgcc_version.apk"}, { url = "__stack_chk_fail_local.c" }, { url = "getconf.c" }, { url = "iconv.c" }, { url = "getent.c" }, { url = "styp.patch" }, { url = "res_init.patch" }, { url = "handle_aux_at_base.patch" }, ] ext = ''' cd gcompat-* patch -Np1 -i "$srcdir"/res_init.patch cd .. tar xpf libgcc-* tar xpf libstdc++-* cd musl-$version for i in $source;do echo "### $i" case $i in res_init.patch) ;; *patch) patch -Nbp1 -i "$srcdir"/$i;; esac done ''' build = ''' unset LDFLAGS unset CXXFLAGS unset CFLAGS cd "$srcdir"/gcompat-* sed -i 's/__count/_count/g' libgcompat/pthread.c make DESTDIR="$pkgdir" LINKER_PATH=/lib/ld-musl-x86_64.so.1 LOADER_NAME=ld-linux-x86-64.so.2 WITH_LIBUCONTEXT=1 install if [ ! -z "$OTARGETS" ]; then for OTARGET in $OTARGETS; do mkdir -p "$srcdir"/build-$OTARGET cd "$srcdir"/build-$OTARGET mkdir -p "$pkgdir"/$OTARGET/bin "$pkgdir"/$OTARGET/lib ln -srf "$pkgdir"/$OTARGET/ "$pkgdir"/$OTARGET/usr $OTARGET-$CC -c "$srcdir"/__stack_chk_fail_local.c -o __stack_chk_fail_local.o $OTARGET-ar r libssp_nonshared.a __stack_chk_fail_local.o cp libssp_nonshared.a "$pkgdir"/$OTARGET/lib "$srcdir"/musl-$version/configure \ --target=$OTARGET \ --prefix=/$OTARGET \ --libdir=/$OTARGET/lib \ --libexecdir=/$OTARGET/lib \ --syslibdir=/$OTARGET/lib \ --sysconfdir=/etc \ --mandir=/share/man \ --localstatedir=/var make make DESTDIR="$pkgdir" install done fi mkdir -p "$srcdir"/build cd "$srcdir"/build mkdir -p "$pkgdir"/bin "$pkgdir"/lib $CC -c "$srcdir"/__stack_chk_fail_local.c -o __stack_chk_fail_local.o ar r libssp_nonshared.a __stack_chk_fail_local.o cp libssp_nonshared.a "$pkgdir"/lib "$srcdir"/musl-$version/configure \ --prefix= \ --libdir=/lib \ --libexecdir=/lib \ --syslibdir=/lib \ --sysconfdir=/etc \ --mandir=/share/man \ --localstatedir=/var make make DESTDIR="$pkgdir" install mkdir -p "$pkgdir"/etc/ cat >> "$pkgdir"/etc/ld-musl-$ARCH.path << EOF /lib /lib/$ARCH-unknown-linux-musl EOF ln -s /lib/libc.so "$pkgdir"/bin/ldd for i in getconf getent iconv ; do $CC "$srcdir"/$i.c -o "$pkgdir"/bin/$i done cp "$srcdir"/usr/lib/libgcc*so* "$pkgdir"/lib/ cp "$srcdir"/usr/lib/libstdc++*so* "$pkgdir"/lib/ '''