From 6217baf2f66f2c4201ea1c17ed11a2b3c87aa99f Mon Sep 17 00:00:00 2001 From: tellabg <249254436+tellabg@users.noreply.github.com> Date: Fri, 6 Mar 2026 23:56:23 +0100 Subject: [PATCH] build: add evmone-build.sh for CI keeper builds Add a build script that invokes CMake to build the evmone library. The script handles native, arm64, and mipsle targets, gracefully skipping cross-compilation targets when the cross-compiler is not available. Move the script reference in ci.go from ./evmone/build.sh (inside the submodule, not tracked) to ./build/evmone-build.sh (tracked in the main repo). --- build/ci.go | 2 +- build/evmone-build.sh | 54 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+), 1 deletion(-) create mode 100755 build/evmone-build.sh diff --git a/build/ci.go b/build/ci.go index ac81b2d499..addd6f1d2d 100644 --- a/build/ci.go +++ b/build/ci.go @@ -334,7 +334,7 @@ func doInstallKeeper(cmdline []string) { continue } log.Printf("Building evmone library for %s", evmoneTarget) - build.MustRun(exec.Command("./evmone/build.sh", evmoneTarget)) + build.MustRun(exec.Command("./build/evmone-build.sh", evmoneTarget)) builtEvmone[evmoneTarget] = true } diff --git a/build/evmone-build.sh b/build/evmone-build.sh new file mode 100755 index 0000000000..e4100ceee6 --- /dev/null +++ b/build/evmone-build.sh @@ -0,0 +1,54 @@ +#!/bin/bash +# Build evmone library for go-ethereum integration +# Usage: evmone-build.sh [native|amd64|arm64|mipsle] +set -e + +TARGET="${1:-native}" +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +EVMONE_DIR="$SCRIPT_DIR/../evmone" + +# Map Go arch names to build directories and CMake settings +case "$TARGET" in + native|amd64) + BUILD_DIR="$EVMONE_DIR/build" + CMAKE_EXTRA="" + ;; + arm64) + if ! command -v aarch64-linux-gnu-gcc &>/dev/null; then + echo "Skipping arm64 build: cross-compiler not found" + exit 0 + fi + BUILD_DIR="$EVMONE_DIR/build-arm64" + CMAKE_EXTRA="-DCMAKE_SYSTEM_PROCESSOR=aarch64 -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++" + ;; + mipsle) + if ! command -v mipsel-linux-gnu-gcc &>/dev/null; then + echo "Skipping mipsle build: cross-compiler not found" + exit 0 + fi + BUILD_DIR="$EVMONE_DIR/build-mipsle" + CMAKE_EXTRA="-DCMAKE_SYSTEM_PROCESSOR=mipsel -DCMAKE_C_COMPILER=mipsel-linux-gnu-gcc -DCMAKE_CXX_COMPILER=mipsel-linux-gnu-g++ -DCMAKE_SYSTEM_NAME=Linux" + ;; + *) + echo "Unknown target: $TARGET" >&2 + exit 1 + ;; +esac + +mkdir -p "$BUILD_DIR" +cd "$BUILD_DIR" + +cmake "$EVMONE_DIR" \ + -DCMAKE_BUILD_TYPE=Release \ + -DBUILD_SHARED_LIBS=ON \ + -DEVMONE_TESTING=OFF \ + -DEVMONE_FUZZING=OFF \ + -DCMAKE_INSTALL_LIBDIR=lib \ + $CMAKE_EXTRA + +cmake --build . --parallel + +# Ensure lib/ exists (some distros use lib64/) +if [ -d "$BUILD_DIR/lib64" ] && [ ! -d "$BUILD_DIR/lib" ]; then + ln -sf lib64 "$BUILD_DIR/lib" +fi