This commit is contained in:
Para Dox
2025-05-25 15:32:29 +07:00
parent 0cfacad7e6
commit 78b0f0669d

View File

@@ -79,77 +79,111 @@ ENV CFLAGS_BASE="-O3 -flto=thin -fomit-frame-pointer -fno-semantic-interposition
ENV CXXFLAGS_BASE="-O3 -flto=thin -fomit-frame-pointer -fno-semantic-interposition -funroll-loops -ffast-math" ENV CXXFLAGS_BASE="-O3 -flto=thin -fomit-frame-pointer -fno-semantic-interposition -funroll-loops -ffast-math"
ENV LDFLAGS="-Wl,-O3 -Wl,--as-needed -Wl,--gc-sections -fuse-ld=/usr/local/bin/mold" ENV LDFLAGS="-Wl,-O3 -Wl,--as-needed -Wl,--gc-sections -fuse-ld=/usr/local/bin/mold"
# Configure CPU-specific optimizations with enhanced flags # Create build script with architecture-specific optimizations
# Map common architecture names to LLVM target-cpu values RUN cat > /build/build.sh << 'EOF'
RUN if [ "$ARCH_TARGET" = "zen5" ]; then \ #!/bin/bash
export RUSTFLAGS="-C target-cpu=znver5 -C link-arg=-fuse-ld=/usr/local/bin/mold -C opt-level=3 -C llvm-args=-enable-machine-outliner -C llvm-args=-enable-gvn-hoist -C llvm-args=-enable-dfa-jump-thread"; \ set -e
export CFLAGS="$CFLAGS_BASE -march=znver5"; \
export CXXFLAGS="$CXXFLAGS_BASE -march=znver5"; \ # Base flags
elif [ "$ARCH_TARGET" = "zen4" ]; then \ RUSTFLAGS_BASE="-C link-arg=-fuse-ld=/usr/local/bin/mold -C opt-level=3"
export RUSTFLAGS="-C target-cpu=znver4 -C link-arg=-fuse-ld=/usr/local/bin/mold -C opt-level=3 -C llvm-args=-enable-machine-outliner"; \ CFLAGS_BASE="-O3 -flto=thin -fomit-frame-pointer -fno-semantic-interposition -funroll-loops -ffast-math"
export CFLAGS="$CFLAGS_BASE -march=znver4"; \ CXXFLAGS_BASE="-O3 -flto=thin -fomit-frame-pointer -fno-semantic-interposition -funroll-loops -ffast-math"
export CXXFLAGS="$CXXFLAGS_BASE -march=znver4"; \
elif [ "$ARCH_TARGET" = "zen3" ]; then \ # Configure CPU-specific optimizations
export RUSTFLAGS="-C target-cpu=znver3 -C link-arg=-fuse-ld=/usr/local/bin/mold -C opt-level=3"; \ case "$ARCH_TARGET" in
export CFLAGS="$CFLAGS_BASE -march=znver3"; \ "zen5")
export CXXFLAGS="$CXXFLAGS_BASE -march=znver3"; \ export RUSTFLAGS="$RUSTFLAGS_BASE -C target-cpu=znver5 -C llvm-args=-enable-machine-outliner -C llvm-args=-enable-gvn-hoist -C llvm-args=-enable-dfa-jump-thread"
elif [ "$ARCH_TARGET" = "zen2" ]; then \ export CFLAGS="$CFLAGS_BASE -march=znver5"
export RUSTFLAGS="-C target-cpu=znver2 -C link-arg=-fuse-ld=/usr/local/bin/mold -C opt-level=3"; \ export CXXFLAGS="$CXXFLAGS_BASE -march=znver5"
export CFLAGS="$CFLAGS_BASE -march=znver2"; \ ;;
export CXXFLAGS="$CXXFLAGS_BASE -march=znver2"; \ "zen4")
elif [ "$ARCH_TARGET" = "skylake" ]; then \ export RUSTFLAGS="$RUSTFLAGS_BASE -C target-cpu=znver4 -C llvm-args=-enable-machine-outliner"
export RUSTFLAGS="-C target-cpu=skylake -C link-arg=-fuse-ld=/usr/local/bin/mold -C opt-level=3"; \ export CFLAGS="$CFLAGS_BASE -march=znver4"
export CFLAGS="$CFLAGS_BASE -march=skylake"; \ export CXXFLAGS="$CXXFLAGS_BASE -march=znver4"
export CXXFLAGS="$CXXFLAGS_BASE -march=skylake"; \ ;;
elif [ "$ARCH_TARGET" = "cascadelake" ]; then \ "zen3")
export RUSTFLAGS="-C target-cpu=cascadelake -C link-arg=-fuse-ld=/usr/local/bin/mold -C opt-level=3"; \ export RUSTFLAGS="$RUSTFLAGS_BASE -C target-cpu=znver3"
export CFLAGS="$CFLAGS_BASE -march=cascadelake"; \ export CFLAGS="$CFLAGS_BASE -march=znver3"
export CXXFLAGS="$CXXFLAGS_BASE -march=cascadelake"; \ export CXXFLAGS="$CXXFLAGS_BASE -march=znver3"
elif [ "$ARCH_TARGET" = "icelake" ]; then \ ;;
export RUSTFLAGS="-C target-cpu=icelake-server -C link-arg=-fuse-ld=/usr/local/bin/mold -C opt-level=3"; \ "zen2")
export CFLAGS="$CFLAGS_BASE -march=icelake-server"; \ export RUSTFLAGS="$RUSTFLAGS_BASE -C target-cpu=znver2"
export CXXFLAGS="$CXXFLAGS_BASE -march=icelake-server"; \ export CFLAGS="$CFLAGS_BASE -march=znver2"
elif [ "$ARCH_TARGET" = "sapphirerapids" ]; then \ export CXXFLAGS="$CXXFLAGS_BASE -march=znver2"
export RUSTFLAGS="-C target-cpu=sapphirerapids -C link-arg=-fuse-ld=/usr/local/bin/mold -C opt-level=3"; \ ;;
export CFLAGS="$CFLAGS_BASE -march=sapphirerapids"; \ "skylake")
export CXXFLAGS="$CXXFLAGS_BASE -march=sapphirerapids"; \ export RUSTFLAGS="$RUSTFLAGS_BASE -C target-cpu=skylake"
elif [ "$ARCH_TARGET" = "emeraldrapids" ]; then \ export CFLAGS="$CFLAGS_BASE -march=skylake"
export RUSTFLAGS="-C target-cpu=emeraldrapids -C link-arg=-fuse-ld=/usr/local/bin/mold -C opt-level=3"; \ export CXXFLAGS="$CXXFLAGS_BASE -march=skylake"
export CFLAGS="$CFLAGS_BASE -march=emeraldrapids"; \ ;;
export CXXFLAGS="$CXXFLAGS_BASE -march=emeraldrapids"; \ "cascadelake")
elif [ "$ARCH_TARGET" = "alderlake" ]; then \ export RUSTFLAGS="$RUSTFLAGS_BASE -C target-cpu=cascadelake"
export RUSTFLAGS="-C target-cpu=alderlake -C link-arg=-fuse-ld=/usr/local/bin/mold -C opt-level=3"; \ export CFLAGS="$CFLAGS_BASE -march=cascadelake"
export CFLAGS="$CFLAGS_BASE -march=alderlake"; \ export CXXFLAGS="$CXXFLAGS_BASE -march=cascadelake"
export CXXFLAGS="$CXXFLAGS_BASE -march=alderlake"; \ ;;
elif [ "$ARCH_TARGET" = "raptorlake" ]; then \ "icelake")
export RUSTFLAGS="-C target-cpu=raptorlake -C link-arg=-fuse-ld=/usr/local/bin/mold -C opt-level=3"; \ export RUSTFLAGS="$RUSTFLAGS_BASE -C target-cpu=icelake-server"
export CFLAGS="$CFLAGS_BASE -march=raptorlake"; \ export CFLAGS="$CFLAGS_BASE -march=icelake-server"
export CXXFLAGS="$CXXFLAGS_BASE -march=raptorlake"; \ export CXXFLAGS="$CXXFLAGS_BASE -march=icelake-server"
elif [ "$ARCH_TARGET" = "x86-64-v3" ]; then \ ;;
export RUSTFLAGS="-C target-cpu=x86-64-v3 -C link-arg=-fuse-ld=/usr/local/bin/mold -C opt-level=3"; \ "sapphirerapids")
export CFLAGS="$CFLAGS_BASE -march=x86-64-v3"; \ export RUSTFLAGS="$RUSTFLAGS_BASE -C target-cpu=sapphirerapids"
export CXXFLAGS="$CXXFLAGS_BASE -march=x86-64-v3"; \ export CFLAGS="$CFLAGS_BASE -march=sapphirerapids"
elif [ "$ARCH_TARGET" = "x86-64-v4" ]; then \ export CXXFLAGS="$CXXFLAGS_BASE -march=sapphirerapids"
export RUSTFLAGS="-C target-cpu=x86-64-v4 -C link-arg=-fuse-ld=/usr/local/bin/mold -C opt-level=3"; \ ;;
export CFLAGS="$CFLAGS_BASE -march=x86-64-v4"; \ "emeraldrapids")
export CXXFLAGS="$CXXFLAGS_BASE -march=x86-64-v4"; \ export RUSTFLAGS="$RUSTFLAGS_BASE -C target-cpu=emeraldrapids"
elif [ "$ARCH_TARGET" = "native" ]; then \ export CFLAGS="$CFLAGS_BASE -march=emeraldrapids"
export RUSTFLAGS="-C target-cpu=native -C link-arg=-fuse-ld=/usr/local/bin/mold -C opt-level=3"; \ export CXXFLAGS="$CXXFLAGS_BASE -march=emeraldrapids"
export CFLAGS="$CFLAGS_BASE -march=native"; \ ;;
export CXXFLAGS="$CXXFLAGS_BASE -march=native"; \ "alderlake")
else \ export RUSTFLAGS="$RUSTFLAGS_BASE -C target-cpu=alderlake"
export RUSTFLAGS="-C target-cpu=$ARCH_TARGET -C link-arg=-fuse-ld=/usr/local/bin/mold -C opt-level=3"; \ export CFLAGS="$CFLAGS_BASE -march=alderlake"
export CFLAGS="$CFLAGS_BASE -march=$ARCH_TARGET"; \ export CXXFLAGS="$CXXFLAGS_BASE -march=alderlake"
export CXXFLAGS="$CXXFLAGS_BASE -march=$ARCH_TARGET"; \ ;;
fi && \ "raptorlake")
echo "Building with RUSTFLAGS: $RUSTFLAGS" && \ export RUSTFLAGS="$RUSTFLAGS_BASE -C target-cpu=raptorlake"
if [ "$BUILD_OP_RETH" = "true" ]; then \ export CFLAGS="$CFLAGS_BASE -march=raptorlake"
echo "Building op-reth with optimism feature" && \ export CXXFLAGS="$CXXFLAGS_BASE -march=raptorlake"
cargo build --profile $PROFILE --locked --bin op-reth --features optimism,jemalloc,asm-keccak; \ ;;
else \ "x86-64-v3")
echo "Building standard reth" && \ export RUSTFLAGS="$RUSTFLAGS_BASE -C target-cpu=x86-64-v3"
cargo build --profile $PROFILE --locked --bin reth --features jemalloc,asm-keccak; \ export CFLAGS="$CFLAGS_BASE -march=x86-64-v3"
fi export CXXFLAGS="$CXXFLAGS_BASE -march=x86-64-v3"
;;
"x86-64-v4")
export RUSTFLAGS="$RUSTFLAGS_BASE -C target-cpu=x86-64-v4"
export CFLAGS="$CFLAGS_BASE -march=x86-64-v4"
export CXXFLAGS="$CXXFLAGS_BASE -march=x86-64-v4"
;;
"native")
export RUSTFLAGS="$RUSTFLAGS_BASE -C target-cpu=native"
export CFLAGS="$CFLAGS_BASE -march=native"
export CXXFLAGS="$CXXFLAGS_BASE -march=native"
;;
*)
export RUSTFLAGS="$RUSTFLAGS_BASE -C target-cpu=$ARCH_TARGET"
export CFLAGS="$CFLAGS_BASE -march=$ARCH_TARGET"
export CXXFLAGS="$CXXFLAGS_BASE -march=$ARCH_TARGET"
;;
esac
echo "Building with RUSTFLAGS: $RUSTFLAGS"
echo "Building with CFLAGS: $CFLAGS"
if [ "$BUILD_OP_RETH" = "true" ]; then
echo "Building op-reth with optimism feature"
cargo build --profile $PROFILE --locked --bin op-reth --features optimism,jemalloc,asm-keccak
else
echo "Building standard reth"
cargo build --profile $PROFILE --locked --bin reth --features jemalloc,asm-keccak
fi
EOF
RUN chmod +x /build/build.sh
# Run the build
RUN /build/build.sh
# Final stage - minimal runtime # Final stage - minimal runtime
FROM debian:bookworm-slim FROM debian:bookworm-slim