use arm64 runner to generate native builds

This commit is contained in:
David Rusu 2026-01-21 14:30:15 +04:00
parent df27d2781a
commit 7ebee1bf89
3 changed files with 13 additions and 26 deletions

View File

@ -23,18 +23,15 @@ host_linux_x86_64_static:
-DCMAKE_PREFIX_PATH=depends/gmp/package && \ -DCMAKE_PREFIX_PATH=depends/gmp/package && \
make -j$(nproc) -vvv && make install make -j$(nproc) -vvv && make install
host_linux_aarch64_static: host_linux_arm64_static:
rm -rf build_prover && mkdir build_prover && cd build_prover && \ rm -rf build_prover && mkdir build_prover && cd build_prover && \
cmake .. \ cmake .. \
-DTARGET_PLATFORM=aarch64 \ -DTARGET_PLATFORM=aarch64 \
-DCMAKE_BUILD_TYPE=Release \ -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=../package \ -DCMAKE_INSTALL_PREFIX=../package \
-DCMAKE_SYSTEM_NAME=Linux \
-DCMAKE_SYSTEM_PROCESSOR=aarch64 \
-DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc \
-DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ \
-DCMAKE_EXE_LINKER_FLAGS="-static -static-libstdc++ -static-libgcc -no-pie" \ -DCMAKE_EXE_LINKER_FLAGS="-static -static-libstdc++ -static-libgcc -no-pie" \
-DUSE_ASM=OFF && \ -DOpenMP_gomp_LIBRARY=$(LIBGOMP_A) \
-DCMAKE_PREFIX_PATH=depends/gmp/package && \
make -j$(nproc) -vvv && make install make -j$(nproc) -vvv && make install
host_windows_x86_64_static: host_windows_x86_64_static:

View File

@ -13,21 +13,12 @@ OBJS := $(SRCS:.cpp=.o)
DEPS_HPP := circom.hpp calcwit.hpp fr.hpp DEPS_HPP := circom.hpp calcwit.hpp fr.hpp
BIN := $(PROJECT) BIN := $(PROJECT)
# ---- Linux x86_64 ---- # ---- Linux (x86_64 and aarch64) ----
linux: CXXFLAGS=$(CXXFLAGS_COMMON) linux: CXXFLAGS=$(CXXFLAGS_COMMON)
linux: LDFLAGS=-static linux: LDFLAGS=-static
linux: LDLIBS=-lgmp linux: LDLIBS=-lgmp
linux: $(BIN) linux: $(BIN)
# ---- Linux aarch64 (cross-compile) ----
# Uses GMP built in rapidsnark/depends/gmp/package_aarch64
# Path is relative from circuit_cpp directory (e.g., mantle/pol_cpp/)
linux_aarch64: CXX=aarch64-linux-gnu-g++
linux_aarch64: CXXFLAGS=$(CXXFLAGS_COMMON) -I../../rapidsnark/depends/gmp/package_aarch64/include
linux_aarch64: LDFLAGS=-static -L../../rapidsnark/depends/gmp/package_aarch64/lib
linux_aarch64: LDLIBS=-lgmp
linux_aarch64: $(BIN)
# ---- macOS ---- # ---- macOS ----
macos: CXXFLAGS=$(CXXFLAGS_COMMON) -I/opt/homebrew/include -include gmp_patch.hpp macos: CXXFLAGS=$(CXXFLAGS_COMMON) -I/opt/homebrew/include -include gmp_patch.hpp
macos: LDFLAGS=-Wl,-search_paths_first -Wl,-dead_strip macos: LDFLAGS=-Wl,-search_paths_first -Wl,-dead_strip

View File

@ -378,14 +378,14 @@ jobs:
path: logos-blockchain-circuits-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz path: logos-blockchain-circuits-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz
build-linux-arm64: build-linux-arm64:
name: Build Linux ARM64 Binaries (Cross-compile for RPI5) name: Build Linux ARM64 Binaries (Native for RPI5)
runs-on: ubuntu-latest runs-on: ubuntu-22.04-arm
needs: needs:
- setup - setup
- generate-proving-keys - generate-proving-keys
env: env:
VERSION: ${{ needs.setup.outputs.version }} VERSION: ${{ needs.setup.outputs.version }}
OS: linux_aarch64 OS: linux
ARCH: aarch64 ARCH: aarch64
steps: steps:
- name: Install Rust Toolchain - name: Install Rust Toolchain
@ -415,11 +415,8 @@ jobs:
- name: Install Dependencies [Prover] - name: Install Dependencies [Prover]
run: sudo apt install -y build-essential cmake libgmp-dev libsodium-dev nasm curl m4 run: sudo apt install -y build-essential cmake libgmp-dev libsodium-dev nasm curl m4
- name: Install Dependencies [Cross-compilation]
run: sudo apt install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
- name: Install Dependencies [Witness Generator] - name: Install Dependencies [Witness Generator]
run: sudo apt install nlohmann-json3-dev run: sudo apt install -y nlohmann-json3-dev
- name: Replace Prover Makefile - name: Replace Prover Makefile
run: cp .github/resources/prover/Makefile rapidsnark/Makefile run: cp .github/resources/prover/Makefile rapidsnark/Makefile
@ -442,8 +439,10 @@ jobs:
- name: Compile Prover and Verifier - name: Compile Prover and Verifier
working-directory: rapidsnark working-directory: rapidsnark
run: | run: |
./build_gmp.sh aarch64 ./build_gmp.sh host
make host_linux_aarch64_static # Create symlink for TARGET_PLATFORM=aarch64 to find GMP
ln -s package depends/gmp/package_aarch64
make host_linux_arm64_static
- name: Bundle Rapidsnark Prover - name: Bundle Rapidsnark Prover
env: env:
@ -1179,7 +1178,7 @@ jobs:
platform: platform:
- os: linux - os: linux
arch: x86_64 arch: x86_64
- os: linux_aarch64 - os: linux
arch: aarch64 arch: aarch64
- os: macos - os: macos
arch: aarch64 arch: aarch64