modified build system + added musl_c build

This commit is contained in:
cowmonk 2025-11-15 00:59:38 -07:00
parent 72539d23c4
commit 00915846b7
7 changed files with 79 additions and 24 deletions

4
.gitignore vendored
View file

@ -1,2 +1,2 @@
./sources ./sources/
./build ./build/

View file

@ -1,9 +1,5 @@
include config.mk include config.mk
SOURCES_FILE=./sources.list
ARCH=$(shell uname -m)
FROOT="${ARCH}-musllvm"
all: all:
pull: pull:
@ -19,6 +15,7 @@ pull:
build: init build: init
./scripts/headers.sh ./scripts/headers.sh
./scripts/musl.sh
init: init:
@if [ ! -d ./build/${FROOT} ]; then \ @if [ ! -d ./build/${FROOT} ]; then \

View file

@ -1,6 +1,5 @@
# musllvm default flags # musllvm default flags
CC = cc SOURCES_FILE=./sources.list
CFLAGS = -O2 -pipe ARCH=$(shell uname -m)
FROOT="${ARCH}-musllvm"

View file

@ -1,12 +1,15 @@
#/bin/sh #!/bin/sh
set -eu
SOURCES_FILE=./sources.list
while IFS= read -r url; do \ while IFS= read -r url; do \
[ -z "$url" ] && continue; \ [ -z "$url" ] && continue; \
fname="$(printf '%s' "$url" | sed -E 's/[?#].*$//' | sed -E 's!.*/!!')"; \ 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"; \ printf "SKIP: %s (already exists)\n" "$fname"; \
else \ else \
printf "GET: %s -> %s\n" "$url" "$fname"; \ printf "GET: %s -> %s\n" "$url" "$fname"; \
curl -o "./sources/$fname" "$url" || { printf "ERROR: failed to download %s\n" "$url"; exit 1; }; \ curl -o "./sources/$fname" "$url" || { printf "ERROR: failed to download %s\n" "$url"; exit 1; }; \
fi; \ fi; \
done < ${SOURCES_FILE}; \ done < "$SOURCES_FILE"; \

View file

@ -1,27 +1,43 @@
#/bin/sh #!/bin/sh
set -eu
ARCH=$(uname -m) ARCH=$(uname -m)
FROOT="${ARCH}-musllvm" FROOT="$ARCH-musllvm"
LINUX_TAR=$(printf '%s' "$url" | sed -E 's/[?#].*$//' | sed -E 's!.*/!!' | grep -i linux) 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*}" LINUX_SOURCE="${LINUX_TAR%%.tar*}"
if command -v "clang" >/dev/null 2>&1 && command -v "lld" >/dev/null 2>&1; then if command -v "clang" >/dev/null 2>&1 && command -v "lld" >/dev/null 2>&1; then
export LLVM=1 export LLVM=1
export LLVM=IAS export LLVM_IAS=1
fi 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" 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 mrproper
make headers make headers
find usr/include \( -name .install -o -name ..install.cmd \) -exec rm -vf {} \; find usr/include -type f ! -name '*.h' -delete
cp -rv usr/include/* ../${FROOT}/include/ cp -rv usr/include/* ../"$FROOT"/include/
rm -v ../${FROOT}/include/Makefile rm -v ../"$FROOT"/include/Makefile
popd exit

38
scripts/musl.sh Executable file
View file

@ -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

View file

@ -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.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/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/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