mirror of
https://github.com/mhx/dwarfs.git
synced 2025-09-12 13:59:46 -04:00
wip: cleanup
This commit is contained in:
parent
d4f3f746b2
commit
16f89674bb
@ -2,9 +2,17 @@
|
||||
ARG ARCH=amd64
|
||||
FROM $ARCH/alpine:latest
|
||||
|
||||
ARG ARCH
|
||||
ARG TARGET_ARCHS=$ARCH
|
||||
ARG TOOLCHAIN_OPTIMIZE=s
|
||||
|
||||
RUN apk update
|
||||
RUN apk upgrade
|
||||
RUN apk add --no-cache \
|
||||
RUN qemu_pkgs=""; \
|
||||
for arch in $(echo $TARGET_ARCHS | tr ',' ' '); do \
|
||||
qemu_pkgs="$qemu_pkgs qemu-$arch"; \
|
||||
done; \
|
||||
apk add --no-cache \
|
||||
bash-completion \
|
||||
build-base \
|
||||
wget \
|
||||
@ -36,19 +44,33 @@ RUN apk add --no-cache \
|
||||
strace \
|
||||
gdb \
|
||||
gmp-dev \
|
||||
zlib-static \
|
||||
zstd-static \
|
||||
zlib-dev \
|
||||
zstd-dev \
|
||||
mpfr-dev \
|
||||
mpc1-dev \
|
||||
isl-dev \
|
||||
texinfo \
|
||||
linux-headers \
|
||||
rsync \
|
||||
qemu-riscv64 \
|
||||
qemu-i386
|
||||
$qemu_pkgs
|
||||
|
||||
COPY fetch.sh /usr/local/bin/fetch.sh
|
||||
|
||||
# Install mold
|
||||
COPY install-mold.sh /usr/local/bin/install-mold.sh
|
||||
RUN bash /usr/local/bin/install-mold.sh
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
bash /usr/local/bin/install-mold.sh
|
||||
|
||||
# Install bloaty
|
||||
COPY install-bloaty.sh /usr/local/bin/install-bloaty.sh
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
if [ "$ARCH" == "amd64" ]; then \
|
||||
bash /usr/local/bin/install-bloaty.sh; \
|
||||
else \
|
||||
echo "Skipping bloaty installation for $ARCH."; \
|
||||
fi
|
||||
|
||||
RUN apk del linux-headers
|
||||
|
||||
@ -56,51 +78,112 @@ RUN apk del linux-headers
|
||||
#COPY install-libstdcxx.sh /usr/local/bin/install-libstdcxx.sh
|
||||
#RUN bash /usr/local/bin/install-libstdcxx.sh
|
||||
COPY install-toolchain.sh /usr/local/bin/install-toolchain.sh
|
||||
RUN bash /usr/local/bin/install-toolchain.sh prepare
|
||||
RUN bash /usr/local/bin/install-toolchain.sh build riscv64 s
|
||||
RUN bash /usr/local/bin/install-toolchain.sh build i386 s
|
||||
RUN bash /usr/local/bin/install-toolchain.sh cleanup
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
bash /usr/local/bin/install-toolchain.sh $TARGET_ARCHS $TOOLCHAIN_OPTIMIZE
|
||||
|
||||
RUN apk del zlib-dev
|
||||
RUN apk del zlib-dev zstd-dev
|
||||
|
||||
# Clear the config cache after a toolchain update
|
||||
RUN --mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
rm -rf /root/.cfgcache/*
|
||||
|
||||
# Install all static libraries
|
||||
COPY install-static-libs.sh /usr/local/bin/install-static-libs.sh
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:libucontext
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:libunwind
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:nlohmann
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:date
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:utfcpp
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:boost
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:jemalloc
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:mimalloc
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:double-conversion
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:fmt
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:fuse
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:fuse3
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:glog
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:benchmark
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:xxhash
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:bzip2
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:brotli
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:lz4
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:xz
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:zstd
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:openssl
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:libressl
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:libevent
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:libarchive
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:flac
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:libdwarf
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:cpptrace
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:range-v3
|
||||
RUN bash /usr/local/bin/install-static-libs.sh riscv64,i386 :alpine:parallel-hashmap
|
||||
|
||||
# RUN bash /usr/local/bin/install-static-libs.sh gcc clang-19 :alpine
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:libucontext
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:libunwind
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:nlohmann
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:date
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:utfcpp
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:boost
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:jemalloc
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:mimalloc
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:double-conversion
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:fmt
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:fuse
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:fuse3
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:glog
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:benchmark
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:xxhash
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:bzip2
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:brotli
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:lz4
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:xz
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:zstd
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:openssl
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:libressl
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:libevent
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:libarchive
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:flac
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:libdwarf
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:cpptrace
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:range-v3
|
||||
RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
--mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine:parallel-hashmap
|
||||
# RUN --mount=type=cache,id=ccache,target=/root/.ccache --mount=type=cache,id=pkgcache,target=/root/.pkgcache \
|
||||
# --mount=type=cache,id=cfgcache,target=/root/.cfgcache \
|
||||
# bash /usr/local/bin/install-static-libs.sh $TARGET_ARCHS :alpine
|
||||
|
||||
# Install UPX
|
||||
ARG ARCH
|
||||
# UPX isn't supported on RISC-V/S390 (yet), so skip this
|
||||
RUN if ! [[ "$ARCH" =~ "^(riscv|s390)" ]]; then \
|
||||
RUN if ! [ "$ARCH" == "amd64" ] || [ "$ARCH" == "arm64v8" ]; then \
|
||||
wget -O - https://github.com/upx/upx/releases/download/v5.0.2/upx-5.0.2-$(bash -c "echo \${0//v8/}" $ARCH)_linux.tar.xz | tar -xJf - -C /usr/local/bin --strip-components=1 --wildcards "*/upx"; \
|
||||
else \
|
||||
echo "Skipping UPX installation for $ARCH architecture while it is not supported."; \
|
||||
|
@ -2,8 +2,7 @@ IMAGE_UBUNTU="dwarfs-buildenv"
|
||||
IMAGE_DEBIAN="dwarfs-buildenv-debian"
|
||||
IMAGE_ALPINE="dwarfs-buildenv-alpine"
|
||||
IMAGE_ALPINE_RISCV="dwarfs-buildenv-alpine-riscv64"
|
||||
IMAGE_ALPINE_XX_RISCV="dwarfs-buildenv-alpine-xx-riscv64"
|
||||
IMAGE_ALPINE_XX_I386="dwarfs-buildenv-alpine-xx-i386"
|
||||
IMAGE_ALPINE_XX="dwarfs-buildenv-alpine-xx"
|
||||
IMAGE_UBUNTU2204="dwarfs-buildenv-ubuntu2204"
|
||||
IMAGE_FEDORA="dwarfs-buildenv-fedora"
|
||||
IMAGE_ARCH="dwarfs-buildenv-arch"
|
||||
@ -41,17 +40,11 @@ build_alpine:
|
||||
run_alpine:
|
||||
@docker run $(COMMON_RUN_OPTS) $(IMAGE_ALPINE)
|
||||
|
||||
build_alpine_xx_riscv:
|
||||
docker buildx build -f Dockerfile.alpine-xx --build-arg TARGETARCH=riscv64 -t $(IMAGE_ALPINE_XX_RISCV) .
|
||||
build_alpine_xx:
|
||||
docker buildx build -f Dockerfile.alpine-xx --build-arg TARGET_ARCHS=x86_64,aarch64,loongarch64,riscv64,i386 -t $(IMAGE_ALPINE_XX) .
|
||||
|
||||
run_alpine_xx_riscv:
|
||||
@docker run --env TARGETARCH=riscv64 $(COMMON_RUN_OPTS) $(IMAGE_ALPINE_XX_RISCV)
|
||||
|
||||
build_alpine_xx_i386:
|
||||
docker buildx build -f Dockerfile.alpine-xx --build-arg TARGETARCH=i386 -t $(IMAGE_ALPINE_XX_I386) .
|
||||
|
||||
run_alpine_xx_i386:
|
||||
@docker run --env TARGETARCH=i386 $(COMMON_RUN_OPTS) $(IMAGE_ALPINE_XX_I386)
|
||||
run_alpine_xx:
|
||||
@docker run $(COMMON_RUN_OPTS) $(IMAGE_ALPINE_XX)
|
||||
|
||||
build_alpine_riscv:
|
||||
docker build -f Dockerfile.alpine -t $(IMAGE_ALPINE_RISCV) --build-arg ARCH=riscv64 .
|
||||
|
31
.docker/fetch.sh
Executable file
31
.docker/fetch.sh
Executable file
@ -0,0 +1,31 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
|
||||
URL=$1
|
||||
FILE=${2:-$(basename "$URL")}
|
||||
SHA512SUM="${3}"
|
||||
|
||||
URLHASH=$(echo -n "$URL" | sha256sum | awk '{print $1}')
|
||||
CACHEDIR="$HOME/.pkgcache"
|
||||
CACHEFILE="$CACHEDIR/$URLHASH"
|
||||
|
||||
if [ ! -f "$CACHEFILE" ]; then
|
||||
rm -f "$CACHEFILE.tmp"
|
||||
curl --retry 5 -L "$URL" > "$CACHEFILE.tmp"
|
||||
if [ -n "$SHA512SUM" ]; then
|
||||
echo "$SHA512SUM $CACHEFILE.tmp" | sha512sum -c -
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Checksum verification failed for $URL"
|
||||
rm -f "$CACHEFILE.tmp"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
mv -f "$CACHEFILE.tmp" "$CACHEFILE"
|
||||
fi
|
||||
|
||||
if [ "$FILE" == "-" ]; then
|
||||
cat "$CACHEFILE"
|
||||
else
|
||||
cp "$CACHEFILE" "$FILE"
|
||||
fi
|
@ -6,13 +6,16 @@ cd "$HOME"
|
||||
mkdir pkgs
|
||||
cd pkgs
|
||||
|
||||
git clone --recurse-submodules https://github.com/google/bloaty
|
||||
git clone --depth=1 --recurse-submodules --shallow-submodules https://github.com/google/bloaty
|
||||
cd bloaty
|
||||
mkdir build
|
||||
cd build
|
||||
|
||||
export PATH="/usr/lib/ccache/bin:$PATH"
|
||||
|
||||
cmake .. -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local
|
||||
ninja
|
||||
ccache -s
|
||||
ninja install
|
||||
|
||||
cd "$HOME"
|
||||
|
@ -13,14 +13,17 @@ cd pkgs
|
||||
|
||||
MOLD_VERSION=2.40.2
|
||||
|
||||
wget -O mold-${MOLD_VERSION}.tar.gz https://github.com/rui314/mold/archive/refs/tags/v${MOLD_VERSION}.tar.gz
|
||||
fetch.sh https://github.com/rui314/mold/archive/refs/tags/v${MOLD_VERSION}.tar.gz mold-${MOLD_VERSION}.tar.gz
|
||||
tar xf mold-${MOLD_VERSION}.tar.gz
|
||||
cd mold-${MOLD_VERSION}
|
||||
mkdir build
|
||||
cd build
|
||||
|
||||
export PATH="/usr/lib/ccache/bin:$PATH"
|
||||
|
||||
cmake .. -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local
|
||||
ninja
|
||||
ccache -s
|
||||
ninja install
|
||||
|
||||
cd "$HOME"
|
||||
|
@ -49,6 +49,7 @@ PARALLEL_HASHMAP_VERSION=2.0.0 # 2025-01-21
|
||||
echo "Using $GCC and $CLANG"
|
||||
|
||||
if [[ "$PKGS" == ":ubuntu" ]]; then
|
||||
# TODO: this is no longer supported
|
||||
PKGS="file,bzip2,libarchive,flac,libunwind,benchmark,openssl,cpptrace"
|
||||
COMPILERS="clang gcc"
|
||||
elif [[ "$PKGS" == ":alpine"* ]]; then
|
||||
@ -115,9 +116,7 @@ use_lib() {
|
||||
if use_lib file; then
|
||||
RETRY=0
|
||||
while true; do
|
||||
rm -f "$FILE_TARBALL"
|
||||
curl -o "$FILE_TARBALL" "ftp://ftp.astron.com/pub/file/$FILE_TARBALL"
|
||||
if echo "${FILE_SHA512} $FILE_TARBALL" | sha512sum -c; then
|
||||
if fetch.sh "ftp://ftp.astron.com/pub/file/$FILE_TARBALL" "$FILE_TARBALL" "$FILE_SHA512"; then
|
||||
break
|
||||
fi
|
||||
RETRY=$((RETRY+1))
|
||||
@ -133,7 +132,7 @@ fetch_lib() {
|
||||
local url="$2"
|
||||
local tarball="${3:-${url##*/}}"
|
||||
if use_lib "$lib"; then
|
||||
wget -O "$tarball" "$url"
|
||||
fetch.sh "$url" "$tarball"
|
||||
fi
|
||||
}
|
||||
|
||||
@ -195,10 +194,7 @@ opt_size() {
|
||||
export CFLAGS="$SIZE_CFLAGS"
|
||||
export CXXFLAGS="$SIZE_CXXFLAGS"
|
||||
# export CMAKE_ARGS="-DCMAKE_BUILD_TYPE=MinSizeRel"
|
||||
export CMAKE_ARGS="-GNinja"
|
||||
if [ -n "$TARGETARCH" ]; then
|
||||
export CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=$CARCH"
|
||||
fi
|
||||
export CMAKE_ARGS="-GNinja -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=$CARCH"
|
||||
set_build_flags
|
||||
}
|
||||
|
||||
@ -206,10 +202,7 @@ opt_perf() {
|
||||
export CFLAGS="$PERF_CFLAGS"
|
||||
export CXXFLAGS="$PERF_CXXFLAGS"
|
||||
# export CMAKE_ARGS="-DCMAKE_BUILD_TYPE=Release"
|
||||
export CMAKE_ARGS="-GNinja"
|
||||
if [ -n "$TARGETARCH" ]; then
|
||||
export CMAKE_ARGS="$CMAKE_ARGS -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=$CARCH"
|
||||
fi
|
||||
export CMAKE_ARGS="-GNinja -DCMAKE_SYSTEM_NAME=Linux -DCMAKE_SYSTEM_PROCESSOR=$CARCH"
|
||||
set_build_flags
|
||||
}
|
||||
|
||||
@ -218,45 +211,44 @@ for target_arch in ${TARGET_ARCH_STR//,/ }; do
|
||||
echo "Building for target architecture: $target_arch"
|
||||
echo "==========================================================="
|
||||
|
||||
if [ "$target_arch" != "$ARCH" ]; then
|
||||
export TARGETARCH="$target_arch"
|
||||
else
|
||||
unset TARGETARCH
|
||||
fi
|
||||
|
||||
export CARCH="$TARGETARCH"
|
||||
export CARCH="$target_arch"
|
||||
|
||||
rm -f /tmp/meson-$CARCH.txt
|
||||
|
||||
if [ -n "$TARGETARCH" ]; then
|
||||
export TARGET="${TARGETARCH}-unknown-linux-musl"
|
||||
export TRIPLETS="--host=$TARGET --target=$TARGET --build=$ARCH-alpine-linux-musl"
|
||||
export BOOST_CMAKE_ARGS="-DBOOST_CONTEXT_ARCHITECTURE=$CARCH"
|
||||
export LIBUCONTEXT_MAKE_ARGS="ARCH=$CARCH"
|
||||
export MESON_CROSS_FILE="--cross-file=/tmp/meson-$CARCH.txt"
|
||||
case "$CARCH" in
|
||||
aarch64*) OPENSSL_TARGET_ARGS="linux-aarch64" ;;
|
||||
arm*) OPENSSL_TARGET_ARGS="linux-armv4" ;;
|
||||
mips64*) OPENSSL_TARGET_ARGS="linux64-mips64" ;;
|
||||
ppc) OPENSSL_TARGET_ARGS="linux-ppc" ;;
|
||||
ppc64) OPENSSL_TARGET_ARGS="linux-ppc64" ;;
|
||||
ppc64le) OPENSSL_TARGET_ARGS="linux-ppc64le" ;;
|
||||
i386) OPENSSL_TARGET_ARGS="linux-elf" ;;
|
||||
s390x) OPENSSL_TARGET_ARGS="linux64-s390x" ;;
|
||||
riscv64) OPENSSL_TARGET_ARGS="linux64-riscv64" ;;
|
||||
loongarch64) OPENSSL_TARGET_ARGS="linux64-loongarch64" ;;
|
||||
x86_64) OPENSSL_TARGET_ARGS="linux-x86_64" ;;
|
||||
*) echo "Unable to determine architecture from (CARCH=$CARCH)"; exit 1 ;;
|
||||
esac
|
||||
|
||||
case "$CARCH" in
|
||||
aarch64*) OPENSSL_TARGET_ARGS="linux-aarch64" ;;
|
||||
arm*) OPENSSL_TARGET_ARGS="linux-armv4" ;;
|
||||
mips64*) OPENSSL_TARGET_ARGS="linux64-mips64" ;;
|
||||
ppc) OPENSSL_TARGET_ARGS="linux-ppc" ;;
|
||||
ppc64) OPENSSL_TARGET_ARGS="linux-ppc64" ;;
|
||||
ppc64le) OPENSSL_TARGET_ARGS="linux-ppc64le" ;;
|
||||
i386) OPENSSL_TARGET_ARGS="linux-elf" ;;
|
||||
s390x) OPENSSL_TARGET_ARGS="linux64-s390x";;
|
||||
riscv64) OPENSSL_TARGET_ARGS="linux64-riscv64";;
|
||||
loongarch64) OPENSSL_TARGET_ARGS="linux64-loongarch64";;
|
||||
*) echo "Unable to determine architecture from (CARCH=$CARCH)"; exit 1 ;;
|
||||
esac
|
||||
BOOST_CONTEXT_ARCH="$CARCH"
|
||||
case "$CARCH" in
|
||||
aarch64*) BOOST_CONTEXT_ARCH="arm64" ;;
|
||||
esac
|
||||
|
||||
endian="little"
|
||||
case "$CARCH" in
|
||||
powerpc|powerpc64|s390|s390x)
|
||||
endian="big"
|
||||
;;
|
||||
esac
|
||||
export TARGET="${CARCH}-unknown-linux-musl"
|
||||
export TRIPLETS="--host=$TARGET --target=$TARGET --build=$ARCH-alpine-linux-musl"
|
||||
export BOOST_CMAKE_ARGS="-DBOOST_CONTEXT_ARCHITECTURE=$BOOST_CONTEXT_ARCH"
|
||||
export LIBUCONTEXT_MAKE_ARGS="ARCH=$CARCH"
|
||||
export MESON_CROSS_FILE="--cross-file=/tmp/meson-$CARCH.txt"
|
||||
|
||||
cat <<EOF > /tmp/meson-$CARCH.txt
|
||||
endian="little"
|
||||
case "$CARCH" in
|
||||
powerpc|powerpc64|s390|s390x)
|
||||
endian="big"
|
||||
;;
|
||||
esac
|
||||
|
||||
cat <<EOF > /tmp/meson-$CARCH.txt
|
||||
[binaries]
|
||||
c = '$TARGET-clang'
|
||||
cpp = '$TARGET-clang++'
|
||||
@ -270,31 +262,17 @@ cpu_family = '$CARCH'
|
||||
cpu = '$CARCH'
|
||||
endian = '$endian'
|
||||
EOF
|
||||
else
|
||||
export TARGET=""
|
||||
export TRIPLETS=""
|
||||
export BOOST_CMAKE_ARGS=""
|
||||
export OPENSSL_TARGET_ARGS=""
|
||||
export LIBUCONTEXT_MAKE_ARGS=""
|
||||
export MESON_CROSS_FILE=""
|
||||
fi
|
||||
|
||||
export PATH="/opt/cross/usr/bin:$PATH"
|
||||
export SYSROOT="/opt/cross/Os"
|
||||
export PATH="$SYSROOT/usr/lib/ccache/bin:$SYSROOT/usr/bin:$PATH"
|
||||
export WORKROOT="$HOME/pkgs"
|
||||
|
||||
for COMPILER in $COMPILERS; do
|
||||
INSTALL_DIR=/opt/static-libs/$COMPILER
|
||||
INSTALL_DIR_OPENSSL=/opt/static-libs/$COMPILER-openssl
|
||||
INSTALL_DIR_LIBRESSL=/opt/static-libs/$COMPILER-libressl
|
||||
WORKSUBDIR="$COMPILER"
|
||||
TARGET_FLAGS=
|
||||
if [ -n "$TARGETARCH" ]; then
|
||||
INSTALL_DIR="$INSTALL_DIR/$TARGET"
|
||||
INSTALL_DIR_OPENSSL="$INSTALL_DIR_OPENSSL/$TARGET"
|
||||
INSTALL_DIR_LIBRESSL="$INSTALL_DIR_LIBRESSL/$TARGET"
|
||||
WORKSUBDIR="$WORKSUBDIR/$TARGET"
|
||||
TARGET_FLAGS="--sysroot=/opt/cross"
|
||||
fi
|
||||
INSTALL_DIR="/opt/static-libs/$COMPILER/$TARGET"
|
||||
INSTALL_DIR_OPENSSL="/opt/static-libs/$COMPILER-openssl/$TARGET"
|
||||
INSTALL_DIR_LIBRESSL="/opt/static-libs/$COMPILER-libressl/$TARGET"
|
||||
WORKSUBDIR="$COMPILER/$TARGET"
|
||||
TARGET_FLAGS="--sysroot=$SYSROOT"
|
||||
WORKDIR="$WORKROOT/$WORKSUBDIR"
|
||||
|
||||
export SIZE_CFLAGS="$TARGET_FLAGS $COMMON_CFLAGS -isystem $INSTALL_DIR/include"
|
||||
@ -306,22 +284,12 @@ EOF
|
||||
|
||||
case "$COMPILER" in
|
||||
clang*)
|
||||
if [ -n "$TARGETARCH" ]; then
|
||||
export CC="$TARGET-clang"
|
||||
export CXX="$TARGET-clang++"
|
||||
else
|
||||
export CC="$CLANG"
|
||||
export CXX="${CLANG/clang/clang++}"
|
||||
fi
|
||||
export CC="$TARGET-clang"
|
||||
export CXX="$TARGET-clang++"
|
||||
;;
|
||||
gcc*)
|
||||
if [ -n "$TARGETARCH" ]; then
|
||||
export CC="$TARGET-gcc"
|
||||
export CXX="$TARGET-g++"
|
||||
else
|
||||
export CC="$GCC"
|
||||
export CXX="${GCC/gcc/g++}"
|
||||
fi
|
||||
export CC="$TARGET-gcc"
|
||||
export CXX="$TARGET-g++"
|
||||
;;
|
||||
*)
|
||||
echo "Unknown compiler: $COMPILER"
|
||||
@ -364,8 +332,11 @@ EOF
|
||||
cd "$WORKDIR"
|
||||
tar xf ${WORKROOT}/${LIBUNWIND_TARBALL}
|
||||
cd libunwind-${LIBUNWIND_VERSION}
|
||||
LDFLAGS="$LDFLAGS -lucontext" CFLAGS="$CFLAGS -fno-stack-protector" ./configure \
|
||||
${TRIPLETS} --prefix="$INSTALL_DIR" --enable-cxx-exceptions --disable-tests --disable-shared
|
||||
fetch.sh https://gitlab.alpinelinux.org/alpine/aports/-/raw/master/main/libunwind/Remove-the-useless-endina.h-for-loongarch64.patch - | patch -p1
|
||||
fetch.sh https://gitlab.alpinelinux.org/alpine/aports/-/raw/master/main/libunwind/fix-libunwind-pc-in.patch - | patch -p1
|
||||
LDFLAGS="$LDFLAGS -lucontext" CFLAGS="$CFLAGS -fno-stack-protector" \
|
||||
./configure ${TRIPLETS} --prefix="$INSTALL_DIR" --enable-cxx-exceptions --disable-tests --disable-shared \
|
||||
--cache-file=$HOME/.cfgcache/libunwind-${LIBUNWIND_VERSION}-${CARCH}-${COMPILER}.cache
|
||||
make -j$(nproc)
|
||||
make install
|
||||
fi
|
||||
@ -420,8 +391,8 @@ EOF
|
||||
cd "$WORKDIR"
|
||||
tar xf ${WORKROOT}/${JEMALLOC_TARBALL}
|
||||
cd jemalloc-${JEMALLOC_VERSION}
|
||||
curl https://gitlab.alpinelinux.org/alpine/aports/-/raw/abc0b4170e42e2a7d835e4490ecbae49e6f3d137/main/jemalloc/musl-exception-specification-errors.patch | patch -p1
|
||||
curl https://gitlab.alpinelinux.org/alpine/aports/-/raw/abc0b4170e42e2a7d835e4490ecbae49e6f3d137/main/jemalloc/pkgconf.patch | patch -p1
|
||||
fetch.sh https://gitlab.alpinelinux.org/alpine/aports/-/raw/abc0b4170e42e2a7d835e4490ecbae49e6f3d137/main/jemalloc/musl-exception-specification-errors.patch - | patch -p1
|
||||
fetch.sh https://gitlab.alpinelinux.org/alpine/aports/-/raw/abc0b4170e42e2a7d835e4490ecbae49e6f3d137/main/jemalloc/pkgconf.patch - | patch -p1
|
||||
./autogen.sh ${TRIPLETS}
|
||||
# mkdir build-minimal
|
||||
# cd build-minimal
|
||||
@ -432,7 +403,9 @@ EOF
|
||||
# mkdir build-full
|
||||
mkdir build
|
||||
cd build
|
||||
../configure ${TRIPLETS} --prefix="$INSTALL_DIR" --localstatedir=/var --sysconfdir=/etc --with-lg-hugepage=21 --enable-stats --enable-prof --enable-static --disable-shared --disable-log --disable-debug
|
||||
../configure ${TRIPLETS} --prefix="$INSTALL_DIR" --localstatedir=/var --sysconfdir=/etc --with-lg-hugepage=21 \
|
||||
--enable-stats --enable-prof --enable-static --disable-shared --disable-log --disable-debug \
|
||||
--cache-file=$HOME/.cfgcache/jemalloc-${JEMALLOC_VERSION}-${CARCH}-${COMPILER}.cache
|
||||
make -j$(nproc)
|
||||
make install
|
||||
fi
|
||||
@ -480,7 +453,8 @@ EOF
|
||||
cd fuse-${LIBFUSE_VERSION}
|
||||
./configure ${TRIPLETS} --prefix="$INSTALL_DIR" \
|
||||
--disable-shared --enable-static \
|
||||
--disable-example --enable-lib --disable-util
|
||||
--disable-example --enable-lib --disable-util \
|
||||
--cache-file=$HOME/.cfgcache/fuse-${LIBFUSE_VERSION}-${CARCH}-${COMPILER}.cache
|
||||
make -j$(nproc)
|
||||
make install
|
||||
fi
|
||||
@ -549,7 +523,7 @@ EOF
|
||||
cd brotli-${BROTLI_VERSION}
|
||||
mkdir build
|
||||
cd build
|
||||
cmake .. -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" -DBUILD_SHARED_LIBS=OFF ${CMAKE_ARGS}
|
||||
cmake .. -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" -DBROTLI_BUILD_TOOLS=OFF -DBUILD_SHARED_LIBS=OFF ${CMAKE_ARGS}
|
||||
ninja
|
||||
ninja install
|
||||
fi
|
||||
@ -571,7 +545,11 @@ EOF
|
||||
cd "$WORKDIR"
|
||||
tar xf ${WORKROOT}/${XZ_TARBALL}
|
||||
cd xz-${XZ_VERSION}
|
||||
./configure ${TRIPLETS} --prefix="$INSTALL_DIR" --localstatedir=/var --sysconfdir=/etc --disable-rpath --disable-werror --disable-doc --disable-shared --disable-nls
|
||||
./configure ${TRIPLETS} --prefix="$INSTALL_DIR" --localstatedir=/var --sysconfdir=/etc \
|
||||
--disable-rpath --disable-werror --disable-doc --disable-shared --disable-nls \
|
||||
--disable-xz --disable-xzdec --disable-lzmainfo --disable-lzmadec \
|
||||
--disable-lzma-links --disable-scripts \
|
||||
--cache-file=$HOME/.cfgcache/xz-${XZ_VERSION}-${CARCH}-${COMPILER}.cache
|
||||
make -j$(nproc)
|
||||
make install
|
||||
fi
|
||||
@ -584,7 +562,7 @@ EOF
|
||||
mkdir meson-build
|
||||
cd meson-build
|
||||
meson setup ../build/meson --default-library=static --prefix="$INSTALL_DIR" $MESON_CROSS_FILE
|
||||
meson configure -D zlib=disabled -D lzma=disabled -D lz4=disabled
|
||||
meson configure -D bin_programs=false -D bin_contrib=false -D zlib=disabled -D lzma=disabled -D lz4=disabled
|
||||
meson setup --reconfigure ../build/meson
|
||||
ninja
|
||||
ninja install
|
||||
@ -608,17 +586,19 @@ EOF
|
||||
fi
|
||||
|
||||
if use_lib libressl; then
|
||||
opt_size
|
||||
cd "$WORKDIR"
|
||||
tar xf ${WORKROOT}/${LIBRESSL_TARBALL}
|
||||
cd libressl-${LIBRESSL_VERSION}
|
||||
mkdir build
|
||||
cd build
|
||||
cmake .. -DCMAKE_PREFIX_PATH="$INSTALL_DIR" -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR_LIBRESSL" \
|
||||
-DBUILD_SHARED_LIBS=OFF -DLIBRESSL_APPS=OFF -DLIBRESSL_TESTS=OFF \
|
||||
${CMAKE_ARGS}
|
||||
ninja
|
||||
ninja install
|
||||
if [[ "$CARCH" =~ ^(x86_64|aarch64|riscv64|i386)$ ]]; then
|
||||
opt_size
|
||||
cd "$WORKDIR"
|
||||
tar xf ${WORKROOT}/${LIBRESSL_TARBALL}
|
||||
cd libressl-${LIBRESSL_VERSION}
|
||||
mkdir build
|
||||
cd build
|
||||
cmake .. -DCMAKE_PREFIX_PATH="$INSTALL_DIR" -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR_LIBRESSL" \
|
||||
-DBUILD_SHARED_LIBS=OFF -DLIBRESSL_APPS=OFF -DLIBRESSL_TESTS=OFF \
|
||||
${CMAKE_ARGS}
|
||||
ninja
|
||||
ninja install
|
||||
fi
|
||||
fi
|
||||
|
||||
if use_lib libevent; then
|
||||
@ -626,7 +606,7 @@ EOF
|
||||
cd "$WORKDIR"
|
||||
tar xf ${WORKROOT}/${LIBEVENT_TARBALL}
|
||||
cd libevent-${LIBEVENT_VERSION}-stable
|
||||
curl https://github.com/libevent/libevent/commit/883630f76cbf512003b81de25cd96cb75c6cf0f9.diff | patch -p1
|
||||
fetch.sh https://github.com/libevent/libevent/commit/883630f76cbf512003b81de25cd96cb75c6cf0f9.diff - | patch -p1
|
||||
mkdir build
|
||||
cd build
|
||||
cmake .. -DCMAKE_PREFIX_PATH="$INSTALL_DIR" -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" ${CMAKE_ARGS} \
|
||||
@ -650,6 +630,12 @@ EOF
|
||||
|
||||
if use_lib libarchive; then
|
||||
for prefix in $SSL_PREFIXES; do
|
||||
sslsuffix=""
|
||||
if [[ "$prefix" == *libressl* ]]; then
|
||||
sslsuffix="-libressl"
|
||||
elif [[ "$prefix" == *openssl* ]]; then
|
||||
sslsuffix="-openssl"
|
||||
fi
|
||||
opt_size
|
||||
# This is safe because `opt_size` will re-initialize CFLAGS, CPPFLAGS, and LDFLAGS
|
||||
export CFLAGS="-I$prefix/include $CFLAGS"
|
||||
@ -665,7 +651,8 @@ EOF
|
||||
--without-bz2lib --without-zlib \
|
||||
--disable-shared --disable-acl --disable-xattr \
|
||||
--disable-bsdtar --disable-bsdcat --disable-bsdcpio \
|
||||
--disable-bsdunzip
|
||||
--disable-bsdunzip \
|
||||
--cache-file=$HOME/.cfgcache/libarchive-${LIBARCHIVE_VERSION}-${CARCH}-${COMPILER}${sslsuffix}.cache
|
||||
make -j$(nproc)
|
||||
make install
|
||||
done
|
||||
@ -687,7 +674,8 @@ EOF
|
||||
tar xf ${WORKROOT}/${FLAC_TARBALL}
|
||||
cd flac-${FLAC_VERSION}
|
||||
./configure ${TRIPLETS} --prefix="$INSTALL_DIR" --enable-static=yes --enable-shared=no \
|
||||
--disable-doxygen-docs --disable-ogg --disable-programs --disable-examples
|
||||
--disable-doxygen-docs --disable-ogg --disable-programs --disable-examples \
|
||||
--cache-file=$HOME/.cfgcache/flac-${FLAC_VERSION}-${CARCH}-${COMPILER}.cache
|
||||
make -j$(nproc)
|
||||
make install
|
||||
fi
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
set -ex
|
||||
|
||||
TASK="$1"
|
||||
TARGETARCH="$2"
|
||||
OPT="${3:-s}"
|
||||
ARCH="$(uname -m)"
|
||||
TARGET_ARCH_STR="${1:-$ARCH}"
|
||||
OPTIMIZE_STR="${2:-s}"
|
||||
|
||||
BINUTILS_VERSION=2.44
|
||||
GCC_VERSION=14.2.0
|
||||
@ -16,98 +16,105 @@ GCC_TARBALL=gcc-${GCC_VERSION}.tar.xz
|
||||
MUSL_TARBALL=musl-${MUSL_VERSION}.tar.gz
|
||||
LINUX_TARBALL=linux-${LINUX_VERSION}.tar.xz
|
||||
|
||||
ARCH="$(uname -m)"
|
||||
export PATH="/usr/lib/ccache/bin:$PATH"
|
||||
|
||||
cd "$HOME"
|
||||
mkdir pkgs
|
||||
cd pkgs
|
||||
|
||||
fetch.sh https://mirror.netcologne.de/gnu/binutils/${BINUTILS_TARBALL}
|
||||
fetch.sh https://ftp.gwdg.de/pub/misc/gcc/releases/gcc-${GCC_VERSION}/${GCC_TARBALL}
|
||||
fetch.sh https://www.musl-libc.org/releases/${MUSL_TARBALL}
|
||||
fetch.sh https://cdn.kernel.org/pub/linux/kernel/v6.x/${LINUX_TARBALL}
|
||||
|
||||
tar xf ${BINUTILS_TARBALL}
|
||||
tar xf ${GCC_TARBALL}
|
||||
tar xf ${LINUX_TARBALL}
|
||||
|
||||
cd gcc-${GCC_VERSION}
|
||||
|
||||
for p in 0001-posix_memalign.patch \
|
||||
0002-gcc-poison-system-directories.patch \
|
||||
0003-specs-turn-on-Wl-z-now-by-default.patch \
|
||||
0004-Turn-on-D_FORTIFY_SOURCE-2-by-default-for-C-C-ObjC-O.patch \
|
||||
0005-On-linux-targets-pass-as-needed-by-default-to-the-li.patch \
|
||||
0006-Enable-Wformat-and-Wformat-security-by-default.patch \
|
||||
0007-Enable-Wtrampolines-by-default.patch \
|
||||
0008-Disable-ssp-on-nostdlib-nodefaultlibs-and-ffreestand.patch \
|
||||
0009-Ensure-that-msgfmt-doesn-t-encounter-problems-during.patch \
|
||||
0010-Don-t-declare-asprintf-if-defined-as-a-macro.patch \
|
||||
0011-libiberty-copy-PIC-objects-during-build-process.patch \
|
||||
0012-libgcc_s.patch \
|
||||
0013-nopie.patch \
|
||||
0014-ada-fix-shared-linking.patch \
|
||||
0015-build-fix-CXXFLAGS_FOR_BUILD-passing.patch \
|
||||
0016-add-fortify-headers-paths.patch \
|
||||
0017-Alpine-musl-package-provides-libssp_nonshared.a.-We-.patch \
|
||||
0018-DP-Use-push-state-pop-state-for-gold-as-well-when-li.patch \
|
||||
0019-aarch64-disable-multilib-support.patch \
|
||||
0020-s390x-disable-multilib-support.patch \
|
||||
0021-ppc64-le-disable-multilib-support.patch \
|
||||
0022-x86_64-disable-multilib-support.patch \
|
||||
0023-riscv-disable-multilib-support.patch \
|
||||
0024-always-build-libgcc_eh.a.patch \
|
||||
0025-ada-libgnarl-compatibility-for-musl.patch \
|
||||
0026-ada-musl-support-fixes.patch \
|
||||
0027-configure-Add-enable-autolink-libatomic-use-in-LINK_.patch \
|
||||
0028-configure-fix-detection-of-atomic-builtins-in-libato.patch \
|
||||
0029-libstdc-do-not-throw-exceptions-for-non-C-locales-on.patch \
|
||||
0030-gdc-unconditionally-link-libgphobos-against-libucont.patch \
|
||||
0031-druntime-link-against-libucontext-on-all-platforms.patch \
|
||||
0032-libgnat-time_t-is-always-64-bit-on-musl-libc.patch \
|
||||
0033-libphobos-do-not-use-LFS64-symbols.patch \
|
||||
0034-libgo-fix-lfs64-use.patch \
|
||||
0035-loongarch-disable-multilib-support.patch \
|
||||
0036-libphobos-add-riscv64-and-loongarch64-support.patch \
|
||||
fix-arm64.patch \
|
||||
ppc64le-quadmath.patch \
|
||||
riscv64-improve-build-time.patch; do
|
||||
fetch.sh https://gitlab.alpinelinux.org/alpine/aports/-/raw/3.21-stable/main/gcc/$p - | patch -p1
|
||||
done
|
||||
fetch.sh https://gcc.gnu.org/pipermail/gcc-patches/attachments/20250220/c6211b02/attachment.bin - | patch -p1
|
||||
|
||||
ORIGPATH="$PATH"
|
||||
TARGET="${TARGETARCH}-unknown-linux-musl"
|
||||
|
||||
CARCH="$TARGETARCH"
|
||||
case "$CARCH" in
|
||||
aarch64*) CARCH="arm64" ;;
|
||||
arm*) CARCH="arm" ;;
|
||||
mips*) CARCH="mips" ;;
|
||||
s390*) CARCH="s390" ;;
|
||||
ppc*) CARCH="powerpc" ;;
|
||||
riscv*) CARCH="riscv" ;;
|
||||
loongarch*) CARCH="loongarch" ;;
|
||||
esac
|
||||
for target_arch in ${TARGET_ARCH_STR//,/ }; do
|
||||
for OPT in ${OPTIMIZE_STR//,/ }; do
|
||||
echo "==========================================================="
|
||||
echo "Building for target architecture: $target_arch (-O${OPT})"
|
||||
echo "==========================================================="
|
||||
|
||||
case "$CARCH" in
|
||||
i386)
|
||||
GCC_CONFIGURE_ARGS="--with-arch=i486 --with-tune=generic"
|
||||
;;
|
||||
esac
|
||||
export TARGETARCH="$target_arch"
|
||||
|
||||
CFLAGS="-O${OPT} -ffunction-sections -fdata-sections -fmerge-all-constants -fPIC"
|
||||
CXXFLAGS="-O${OPT} -ffunction-sections -fdata-sections -fmerge-all-constants -fPIC"
|
||||
LDFLAGS="-Wl,--gc-sections"
|
||||
TARGET="${TARGETARCH}-unknown-linux-musl"
|
||||
|
||||
SYSROOT="/opt/cross"
|
||||
PREFIX="$SYSROOT/usr"
|
||||
PATH="$PREFIX/bin:$ORIGPATH"
|
||||
CARCH="$TARGETARCH"
|
||||
case "$CARCH" in
|
||||
aarch64*) CARCH="arm64" ;;
|
||||
arm*) CARCH="arm" ;;
|
||||
mips*) CARCH="mips" ;;
|
||||
s390*) CARCH="s390" ;;
|
||||
ppc*) CARCH="powerpc" ;;
|
||||
riscv*) CARCH="riscv" ;;
|
||||
loongarch*) CARCH="loongarch" ;;
|
||||
esac
|
||||
|
||||
case "$TASK" in
|
||||
prepare)
|
||||
cd "$HOME"
|
||||
mkdir pkgs
|
||||
cd pkgs
|
||||
case "$CARCH" in
|
||||
i386)
|
||||
GCC_CONFIGURE_ARGS="--with-arch=i486 --with-tune=generic"
|
||||
;;
|
||||
esac
|
||||
|
||||
wget https://mirror.netcologne.de/gnu/binutils/${BINUTILS_TARBALL}
|
||||
wget https://ftp.gwdg.de/pub/misc/gcc/releases/gcc-${GCC_VERSION}/${GCC_TARBALL}
|
||||
wget https://www.musl-libc.org/releases/${MUSL_TARBALL}
|
||||
wget https://cdn.kernel.org/pub/linux/kernel/v6.x/${LINUX_TARBALL}
|
||||
CFLAGS="-O${OPT} -ffunction-sections -fdata-sections -fmerge-all-constants -fPIC"
|
||||
CXXFLAGS="-O${OPT} -ffunction-sections -fdata-sections -fmerge-all-constants -fPIC"
|
||||
LDFLAGS="-Wl,--gc-sections"
|
||||
|
||||
tar xf ${BINUTILS_TARBALL}
|
||||
tar xf ${GCC_TARBALL}
|
||||
tar xf ${LINUX_TARBALL}
|
||||
SYSROOT="/opt/cross/O${OPT}"
|
||||
PREFIX="$SYSROOT/usr"
|
||||
PATH="$PREFIX/bin:$ORIGPATH"
|
||||
|
||||
cd gcc-${GCC_VERSION}
|
||||
GCC_NOCS="MAKEINFO=/bin/true gcc_cv_prog_makeinfo_modern=no HELP2MAN=/bin/true TEXI2POD=/bin/true POD2MAN=/bin/true"
|
||||
|
||||
for p in 0001-posix_memalign.patch \
|
||||
0002-gcc-poison-system-directories.patch \
|
||||
0003-specs-turn-on-Wl-z-now-by-default.patch \
|
||||
0004-Turn-on-D_FORTIFY_SOURCE-2-by-default-for-C-C-ObjC-O.patch \
|
||||
0005-On-linux-targets-pass-as-needed-by-default-to-the-li.patch \
|
||||
0006-Enable-Wformat-and-Wformat-security-by-default.patch \
|
||||
0007-Enable-Wtrampolines-by-default.patch \
|
||||
0008-Disable-ssp-on-nostdlib-nodefaultlibs-and-ffreestand.patch \
|
||||
0009-Ensure-that-msgfmt-doesn-t-encounter-problems-during.patch \
|
||||
0010-Don-t-declare-asprintf-if-defined-as-a-macro.patch \
|
||||
0011-libiberty-copy-PIC-objects-during-build-process.patch \
|
||||
0012-libgcc_s.patch \
|
||||
0013-nopie.patch \
|
||||
0014-ada-fix-shared-linking.patch \
|
||||
0015-build-fix-CXXFLAGS_FOR_BUILD-passing.patch \
|
||||
0016-add-fortify-headers-paths.patch \
|
||||
0017-Alpine-musl-package-provides-libssp_nonshared.a.-We-.patch \
|
||||
0018-DP-Use-push-state-pop-state-for-gold-as-well-when-li.patch \
|
||||
0019-aarch64-disable-multilib-support.patch \
|
||||
0020-s390x-disable-multilib-support.patch \
|
||||
0021-ppc64-le-disable-multilib-support.patch \
|
||||
0022-x86_64-disable-multilib-support.patch \
|
||||
0023-riscv-disable-multilib-support.patch \
|
||||
0024-always-build-libgcc_eh.a.patch \
|
||||
0025-ada-libgnarl-compatibility-for-musl.patch \
|
||||
0026-ada-musl-support-fixes.patch \
|
||||
0027-configure-Add-enable-autolink-libatomic-use-in-LINK_.patch \
|
||||
0028-configure-fix-detection-of-atomic-builtins-in-libato.patch \
|
||||
0029-libstdc-do-not-throw-exceptions-for-non-C-locales-on.patch \
|
||||
0030-gdc-unconditionally-link-libgphobos-against-libucont.patch \
|
||||
0031-druntime-link-against-libucontext-on-all-platforms.patch \
|
||||
0032-libgnat-time_t-is-always-64-bit-on-musl-libc.patch \
|
||||
0033-libphobos-do-not-use-LFS64-symbols.patch \
|
||||
0034-libgo-fix-lfs64-use.patch \
|
||||
0035-loongarch-disable-multilib-support.patch \
|
||||
0036-libphobos-add-riscv64-and-loongarch64-support.patch \
|
||||
fix-arm64.patch \
|
||||
ppc64le-quadmath.patch \
|
||||
riscv64-improve-build-time.patch; do
|
||||
curl https://gitlab.alpinelinux.org/alpine/aports/-/raw/3.21-stable/main/gcc/$p | patch -p1
|
||||
done
|
||||
curl https://gcc.gnu.org/pipermail/gcc-patches/attachments/20250220/c6211b02/attachment.bin | patch -p1
|
||||
;;
|
||||
|
||||
build)
|
||||
# Stage 1
|
||||
cd "${HOME}"/pkgs
|
||||
|
||||
@ -129,9 +136,9 @@ case "$TASK" in
|
||||
--target=$TARGET --prefix=$PREFIX --with-sysroot=$SYSROOT --with-newlib --without-headers \
|
||||
--disable-nls --disable-shared --disable-multilib --disable-decimal-float --disable-threads \
|
||||
--disable-libatomic --disable-libgomp --disable-libquadmath --disable-libssp --disable-libvtv \
|
||||
--disable-libstdcxx --enable-languages=c,c++
|
||||
make -j"$(nproc)" all-gcc
|
||||
make -j"$(nproc)" all-target-libgcc
|
||||
--disable-libstdcxx --enable-languages=c,c++ ${GCC_NOCS}
|
||||
make -j"$(nproc)" all-gcc ${GCC_NOCS}
|
||||
make -j"$(nproc)" all-target-libgcc ${GCC_NOCS}
|
||||
make install-gcc
|
||||
make install-target-libgcc
|
||||
|
||||
@ -161,17 +168,21 @@ case "$TASK" in
|
||||
--disable-shared --enable-tls --disable-libstdcxx-pch --disable-multilib --disable-nls --disable-werror --disable-symvers \
|
||||
--enable-threads --enable-__cxa_atexit --enable-languages=c,c++ --enable-link-serialization=2 --enable-linker-build-id \
|
||||
--enable-libssp --disable-libsanitizer --with-system-zlib --enable-checking=release --disable-cet --disable-fixed-point \
|
||||
--enable-libstdcxx-time=yes --enable-default-pie --enable-default-ssp --with-linker-hash-style=gnu ${_arch_config}
|
||||
make -j"$(nproc)"
|
||||
--enable-libstdcxx-time=yes --enable-default-pie --enable-default-ssp --with-linker-hash-style=gnu ${_arch_config} ${GCC_NOCS}
|
||||
make -j"$(nproc)" ${GCC_NOCS}
|
||||
make install
|
||||
|
||||
# Symbolic links for clang
|
||||
ln -s /usr/bin/clang $PREFIX/bin/$TARGET-clang
|
||||
ln -s /usr/bin/clang++ $PREFIX/bin/$TARGET-clang++
|
||||
;;
|
||||
|
||||
cleanup)
|
||||
cd "$HOME"
|
||||
rm -rf pkgs
|
||||
;;
|
||||
esac
|
||||
# Also provide ccache symlinks
|
||||
mkdir -p $PREFIX/lib/ccache/bin
|
||||
for binary in gcc g++ clang clang++; do
|
||||
ln -s /usr/bin/ccache $PREFIX/lib/ccache/bin/$TARGET-$binary
|
||||
done
|
||||
done
|
||||
done
|
||||
|
||||
cd "$HOME"
|
||||
rm -rf pkgs
|
||||
|
@ -1,11 +0,0 @@
|
||||
[binaries]
|
||||
c = 'xx-clang'
|
||||
cpp = 'xx-clang++'
|
||||
ar = 'riscv64-alpine-linux-musl-ar'
|
||||
strip = 'riscv64-alpine-linux-musl-strip'
|
||||
|
||||
[host_machine]
|
||||
system = 'linux'
|
||||
cpu_family = 'riscv64'
|
||||
cpu = 'riscv64'
|
||||
endian = 'little'
|
Loading…
x
Reference in New Issue
Block a user