modified build system + added musl_c build
This commit is contained in:
parent
72539d23c4
commit
00915846b7
7 changed files with 79 additions and 24 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
|
@ -1,2 +1,2 @@
|
||||||
./sources
|
./sources/
|
||||||
./build
|
./build/
|
||||||
|
|
|
||||||
5
Makefile
5
Makefile
|
|
@ -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 \
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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"; \
|
||||||
|
|
|
||||||
|
|
@ -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
38
scripts/musl.sh
Executable 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
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue