commit 00915846b7cb76589c5599c545cb3585b0464ec0
parent 72539d23c43c656fbec456d8729bc2d61e68f22f
Author: cowmonk <cowmonk@based.pt>
Date: Sat, 15 Nov 2025 00:59:38 -0700
modified build system + added musl_c build
Diffstat:
7 files changed, 79 insertions(+), 24 deletions(-)
diff --git a/.gitignore b/.gitignore
@@ -1,2 +1,2 @@
-./sources
-./build
+./sources/
+./build/
diff --git a/Makefile b/Makefile
@@ -1,9 +1,5 @@
include config.mk
-SOURCES_FILE=./sources.list
-ARCH=$(shell uname -m)
-FROOT="${ARCH}-musllvm"
-
all:
pull:
@@ -19,6 +15,7 @@ pull:
build: init
./scripts/headers.sh
+ ./scripts/musl.sh
init:
@if [ ! -d ./build/${FROOT} ]; then \
diff --git a/config.mk b/config.mk
@@ -1,6 +1,5 @@
# musllvm default flags
-CC = cc
-CFLAGS = -O2 -pipe
-
-
+SOURCES_FILE=./sources.list
+ARCH=$(shell uname -m)
+FROOT="${ARCH}-musllvm"
diff --git a/scripts/check.sh b/scripts/check.sh
@@ -1,12 +1,15 @@
-#/bin/sh
+#!/bin/sh
+set -eu
+
+SOURCES_FILE=./sources.list
while IFS= read -r url; do \
[ -z "$url" ] && continue; \
fname="$(printf '%s' "$url" | sed -E 's/[?#].*$//' | sed -E 's!.*/!!')"; \
-if [ -e "$(OUTDIR)/$fname" ]; then \
+if [ -e "./sources/$fname" ]; then \
printf "SKIP: %s (already exists)\n" "$fname"; \
else \
printf "GET: %s -> %s\n" "$url" "$fname"; \
curl -o "./sources/$fname" "$url" || { printf "ERROR: failed to download %s\n" "$url"; exit 1; }; \
fi; \
-done < ${SOURCES_FILE}; \
+done < "$SOURCES_FILE"; \
diff --git a/scripts/headers.sh b/scripts/headers.sh
@@ -1,27 +1,43 @@
-#/bin/sh
+#!/bin/sh
+set -eu
ARCH=$(uname -m)
-FROOT="${ARCH}-musllvm"
-LINUX_TAR=$(printf '%s' "$url" | sed -E 's/[?#].*$//' | sed -E 's!.*/!!' | grep -i linux)
+FROOT="$ARCH-musllvm"
+LINUX_TAR=$(ls ./sources/linux-*.tar.* 2>/dev/null | head -n 1 | xargs basename)
+if [ -z "$LINUX_TAR" ]; then
+ echo "ERR: No Linux tarball found in sources directory"
+ exit 1
+fi
LINUX_SOURCE="${LINUX_TAR%%.tar*}"
if command -v "clang" >/dev/null 2>&1 && command -v "lld" >/dev/null 2>&1; then
export LLVM=1
- export LLVM=IAS
+ export LLVM_IAS=1
fi
-tar -xpf ./sources/${LINUX_TAR} ./build
+if [ -z ./build/"$LINUX_SOURCE" ]; then
+ echo "Extracting Linux tarball to ./build/"
+ tar -xpf ./sources/"$LINUX_TAR" -C ./build
+else
+ echo "Linux source already extracted."
+fi
-mkdir -pv ./build/${FROOT}/include
+echo "Creating target include directory"
+mkdir -pv ./build/"$FROOT"/include
echo "Building Headers"
-pushd ./build/${LINUX_SOURCE}
+if [ -d ./build/"$FROOT"/include/linux ]; then
+ echo "Headers already built, skipping..."
+ exit
+fi
+
+cd ./build/"$LINUX_SOURCE"
make mrproper
make headers
-find usr/include \( -name .install -o -name ..install.cmd \) -exec rm -vf {} \;
-cp -rv usr/include/* ../${FROOT}/include/
-rm -v ../${FROOT}/include/Makefile
+find usr/include -type f ! -name '*.h' -delete
+cp -rv usr/include/* ../"$FROOT"/include/
+rm -v ../"$FROOT"/include/Makefile
-popd
+exit
diff --git a/scripts/musl.sh b/scripts/musl.sh
@@ -0,0 +1,38 @@
+#!/bin/sh
+set -eu
+
+ARCH=$(uname -m)
+FROOT="$ARCH-musllvm"
+MUSL_TAR=$(ls ./sources/musl-*.tar.* 2>/dev/null | head -n 1 | xargs basename)
+if [ -z "$MUSL_TAR" ]; then
+ echo "ERR: No Musl tarball found in sources directory"
+ exit 1
+fi
+MUSL_SOURCE="${MUSL_TAR%%.tar.*}"
+
+if command -v "clang" >/dev/null 2>&1 && command -v "lld" >/dev/null 2>&1; then
+ export CC="clang"
+else
+ export CC="cc"
+fi
+
+if [ ! -d ./build/"MUSL_SOURCE" ]; then
+ echo "Extracting Musl tarball to ./build/"
+ tar -xpf ./sources/"$MUSL_TAR" -C ./build
+else
+ echo "Musl source already extracted."
+fi
+
+echo "Buliding musl"
+if [ -f ./build/"$FROOT"/include/libc.so ]; then
+ echo "Musl already built, skipping..."
+ exit
+fi
+
+cd ./build/"$MUSL_SOURCE"
+
+./configure \
+ --prefix=/ \
+
+make -j$(nproc)
+DESTDIR=$FROOT make install
diff --git a/sources.list b/sources.list
@@ -9,3 +9,5 @@ https://github.com/llvm/llvm-project/releases/download/llvmorg-21.1.2/clang-21.1
https://github.com/llvm/llvm-project/releases/download/llvmorg-21.1.2/compiler-rt-21.1.2.src.tar.xz
https://github.com/llvm/llvm-project/releases/download/llvmorg-21.1.5/lld-21.1.5.src.tar.xz
https://github.com/llvm/llvm-project/releases/download/llvmorg-21.1.5/libunwind-21.1.5.src.tar.xz
+https://github.com/llvm/llvm-project/releases/download/llvmorg-21.1.5/libcxx-21.1.5.src.tar.xz
+https://github.com/llvm/llvm-project/releases/download/llvmorg-21.1.5/libcxxabi-21.1.5.src.tar.xz