From e0001bae1f7a944ae35440535568219fc0aac044 Mon Sep 17 00:00:00 2001 From: Daniel Date: Sun, 8 Mar 2026 10:12:46 +0000 Subject: [PATCH] Export libraries and headers --- .../compile-witness-generator/action.yml | 35 ++- .github/resources/prover/Makefile | 68 +++++ .github/resources/witness-generator/Makefile | 23 +- .github/workflows/build-circuits.yml | 289 ++++++++++++++++++ 4 files changed, 412 insertions(+), 3 deletions(-) diff --git a/.github/actions/compile-witness-generator/action.yml b/.github/actions/compile-witness-generator/action.yml index 363aa30..2630684 100644 --- a/.github/actions/compile-witness-generator/action.yml +++ b/.github/actions/compile-witness-generator/action.yml @@ -27,6 +27,10 @@ inputs: arch: description: "The target architecture for the bundle (x86_64, aarch64)." required: true + build-lib: + description: "Whether to also build a static library (.a) in addition to the executable." + required: false + default: "false" runs: using: "composite" @@ -45,7 +49,7 @@ runs: CIRCUIT_FILENAME="$(basename ${CIRCUIT_PATH})" CIRCUIT_FILESTEM="${CIRCUIT_FILENAME%.circom}" CIRCUIT_CPP_DIRNAME="${CIRCUIT_FILESTEM}_cpp" - + compiled_binary_name="${CIRCUIT_FILESTEM}" if [ "${OS}" = "windows" ]; then compiled_binary_name="${compiled_binary_name}.exe" @@ -105,6 +109,24 @@ runs: OS: ${{ inputs.os }} run: make PROJECT="${CIRCUIT_FILESTEM}" "${OS}" + - name: Build ${{ inputs.circuit-name-display }} Static Library + if: ${{ inputs.build-lib == 'true' && inputs.os != 'windows' }} + shell: bash + working-directory: ${{ steps.parse-circuit-path.outputs.CIRCUIT_CPP_PATH }} + env: + CIRCUIT_FILESTEM: ${{ steps.parse-circuit-path.outputs.CIRCUIT_FILESTEM }} + OS: ${{ inputs.os }} + run: make PROJECT="${CIRCUIT_FILESTEM}" "${OS}-lib" + + - name: Build ${{ inputs.circuit-name-display }} Static Library + if: ${{ inputs.build-lib == 'true' && inputs.os == 'windows' }} + shell: msys2 {0} + working-directory: ${{ steps.parse-circuit-path.outputs.CIRCUIT_CPP_PATH }} + env: + CIRCUIT_FILESTEM: ${{ steps.parse-circuit-path.outputs.CIRCUIT_FILESTEM }} + OS: ${{ inputs.os }} + run: make PROJECT="${CIRCUIT_FILESTEM}" "${OS}-lib" + - name: Upload ${{ inputs.circuit-name-display }} uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 with: @@ -112,3 +134,14 @@ runs: path: | ${{ steps.parse-circuit-path.outputs.CIRCUIT_CPP_PATH }}/${{ steps.parse-circuit-path.outputs.COMPILED_BINARY_NAME }} ${{ steps.parse-circuit-path.outputs.CIRCUIT_CPP_PATH }}/${{ steps.parse-circuit-path.outputs.CIRCUIT_FILESTEM }}.dat + + - name: Upload ${{ inputs.circuit-name-display }} Static Library + if: ${{ inputs.build-lib == 'true' }} + uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 + with: + name: ${{ inputs.circuit-name-binary }}-lib-${{ inputs.version }}-${{ inputs.os }}-${{ inputs.arch }} + path: | + ${{ steps.parse-circuit-path.outputs.CIRCUIT_CPP_PATH }}/lib${{ steps.parse-circuit-path.outputs.CIRCUIT_FILESTEM }}.a + ${{ steps.parse-circuit-path.outputs.CIRCUIT_CPP_PATH }}/circom.hpp + ${{ steps.parse-circuit-path.outputs.CIRCUIT_CPP_PATH }}/calcwit.hpp + ${{ steps.parse-circuit-path.outputs.CIRCUIT_CPP_PATH }}/fr.hpp diff --git a/.github/resources/prover/Makefile b/.github/resources/prover/Makefile index 5c0409d..d5f44ee 100644 --- a/.github/resources/prover/Makefile +++ b/.github/resources/prover/Makefile @@ -44,6 +44,17 @@ host_windows_x86_64_static: -DCMAKE_CXX_FLAGS="-I/include -include mman_patch.hpp -include cstdint -Duint=unsigned\ int -Du_int32_t=uint32_t -Du_int64_t=uint64_t" && \ make -j$(nproc) -vvv && make install +host_windows_x86_64_static_lib: + rm -rf build_lib_windows && mkdir build_lib_windows && cd build_lib_windows && \ + cmake .. \ + -DUSE_ASM=OFF \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=../package_lib_windows \ + -DCMAKE_CXX_FLAGS="-I/include -include mman_patch.hpp -include cstdint -Duint=unsigned\ int -Du_int32_t=uint32_t -Du_int64_t=uint64_t" \ + -DBUILD_TESTS=OFF && \ + make -j$(nproc) rapidsnarkStatic rapidsnarkStaticFrFq fr fq && \ + make install + host_noasm: rm -rf build_prover_noasm && mkdir build_prover_noasm && cd build_prover_noasm && \ cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../package_noasm -DUSE_ASM=NO && \ @@ -98,12 +109,61 @@ macos_arm64: cmake .. -DTARGET_PLATFORM=macos_arm64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../package_macos_arm64 && \ make -j$(nproc) -vvv && make install +macos_arm64_lib: + @if [ ! -d "./depends/gmp/package_macos_arm64" ]; then echo "Looks like gmp lib is not built. Run './build_gmp.sh macos_arm64' first." && exit 1; fi + rm -rf build_lib_macos_arm64 && mkdir build_lib_macos_arm64 && cd build_lib_macos_arm64 && \ + cmake .. \ + -DTARGET_PLATFORM=macos_arm64 \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=../package_lib_macos_arm64 \ + -DBUILD_TESTS=OFF \ + -DUSE_OPENMP=OFF && \ + make -j$(nproc) rapidsnarkStatic rapidsnarkStaticFrFq fr fq && \ + make install + +host_linux_x86_64_static_lib: + rm -rf build_lib && mkdir build_lib && cd build_lib && \ + cmake .. \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=../package_lib \ + -DCMAKE_EXE_LINKER_FLAGS="-static -static-libstdc++ -static-libgcc -no-pie" \ + -DOpenMP_gomp_LIBRARY=$(LIBGOMP_A) \ + -DCMAKE_PREFIX_PATH=depends/gmp/package \ + -DBUILD_TESTS=OFF && \ + make -j$(nproc) rapidsnarkStatic rapidsnarkStaticFrFq fr fq && \ + make install + +host_linux_aarch64_static_lib: + rm -rf build_lib && mkdir build_lib && cd build_lib && \ + cmake .. \ + -DTARGET_PLATFORM=aarch64 \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=../package_lib \ + -DCMAKE_EXE_LINKER_FLAGS="-static -static-libstdc++ -static-libgcc -no-pie" \ + -DOpenMP_gomp_LIBRARY=$(LIBGOMP_A) \ + -DCMAKE_PREFIX_PATH=depends/gmp/package \ + -DBUILD_TESTS=OFF && \ + make -j$(nproc) rapidsnarkStatic rapidsnarkStaticFrFq fr fq && \ + make install + macos_x86_64: @if [ ! -d "./depends/gmp/package_macos_x86_64" ]; then echo "Looks like gmp lib is not built. Run './build_gmp.sh macos_x86_64' first." && exit 1; fi rm -rf build_prover_macos_x86_64 && mkdir build_prover_macos_x86_64 && cd build_prover_macos_x86_64 && \ cmake .. -DTARGET_PLATFORM=macos_x86_64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../package_macos_x86_64 && \ make -j$(nproc) -vvv && make install +macos_x86_64_lib: + @if [ ! -d "./depends/gmp/package_macos_x86_64" ]; then echo "Looks like gmp lib is not built. Run './build_gmp.sh macos_x86_64' first." && exit 1; fi + rm -rf build_lib_macos_x86_64 && mkdir build_lib_macos_x86_64 && cd build_lib_macos_x86_64 && \ + cmake .. \ + -DTARGET_PLATFORM=macos_x86_64 \ + -DCMAKE_BUILD_TYPE=Release \ + -DCMAKE_INSTALL_PREFIX=../package_lib_macos_x86_64 \ + -DBUILD_TESTS=OFF \ + -DUSE_OPENMP=OFF && \ + make -j$(nproc) rapidsnarkStatic rapidsnarkStaticFrFq fr fq && \ + make install + clean: rm -rf build_prover \ build_prover_macos_arm64 \ @@ -112,6 +172,10 @@ clean: build_prover_android_x86_64 \ build_prover_ios \ build_prover_ios_simulator \ + build_lib \ + build_lib_macos_arm64 \ + build_lib_macos_x86_64 \ + build_lib_windows \ package \ package_macos_arm64 \ package_macos_x86_64 \ @@ -119,6 +183,10 @@ clean: package_android_x86_64 \ package_ios \ package_ios_simulator \ + package_lib \ + package_lib_macos_arm64 \ + package_lib_macos_x86_64 \ + package_lib_windows \ depends/gmp/package \ depends/gmp/package_macos_arm64 \ depends/gmp/package_macos_x86_64 \ diff --git a/.github/resources/witness-generator/Makefile b/.github/resources/witness-generator/Makefile index 22cd736..4cd8906 100644 --- a/.github/resources/witness-generator/Makefile +++ b/.github/resources/witness-generator/Makefile @@ -1,4 +1,4 @@ -.PHONY: linux macos windows build clean +.PHONY: linux macos windows linux-lib macos-lib windows-lib build clean # ---- Arguments ---- ifndef PROJECT @@ -7,11 +7,15 @@ endif # ---- Common ---- CXX := g++ +AR := ar CXXFLAGS_COMMON := -std=c++11 -O3 -I. -Wno-address-of-packed-member SRCS := main.cpp calcwit.cpp fr.cpp $(PROJECT).cpp +LIB_SRCS := calcwit.cpp fr.cpp $(PROJECT).cpp OBJS := $(SRCS:.cpp=.o) +LIB_OBJS := $(LIB_SRCS:.cpp=.o) DEPS_HPP := circom.hpp calcwit.hpp fr.hpp BIN := $(PROJECT) +LIB := lib$(PROJECT).a # ---- Linux (x86_64 and aarch64) ---- linux: CXXFLAGS=$(CXXFLAGS_COMMON) @@ -31,13 +35,28 @@ windows: LDFLAGS=-static windows: LDLIBS=-L/lib -lgmp -lmman windows: $(BIN) +# ---- Linux static library ---- +linux-lib: CXXFLAGS=$(CXXFLAGS_COMMON) -fPIC +linux-lib: $(LIB) + +# ---- macOS static library ---- +macos-lib: CXXFLAGS=$(CXXFLAGS_COMMON) -I/opt/homebrew/include -include gmp_patch.hpp -fPIC +macos-lib: $(LIB) + +# ---- Windows static library (MinGW) ---- +windows-lib: CXXFLAGS=$(CXXFLAGS_COMMON) -I/include -Duint="unsigned int" -fPIC +windows-lib: $(LIB) + # ---- Rules ---- $(BIN): $(OBJS) $(CXX) $(LDFLAGS) $^ $(LDLIBS) -o $@ +$(LIB): $(LIB_OBJS) + $(AR) rcs $@ $^ + %.o: %.cpp $(DEPS_HPP) $(CXX) $(CXXFLAGS) -c $< -o $@ clean: - rm -f $(OBJS) $(BIN) + rm -f $(OBJS) $(LIB_OBJS) $(BIN) $(LIB) diff --git a/.github/workflows/build-circuits.yml b/.github/workflows/build-circuits.yml index 5689388..91f175c 100644 --- a/.github/workflows/build-circuits.yml +++ b/.github/workflows/build-circuits.yml @@ -204,6 +204,10 @@ jobs: ./build_gmp.sh host make host_linux_x86_64_static + - name: Build Rapidsnark Static Libraries + working-directory: rapidsnark + run: make host_linux_x86_64_static_lib + - name: Bundle Rapidsnark Prover env: BINARY_NAME: prover @@ -251,6 +255,7 @@ jobs: version: ${{ env.VERSION }} os: ${{ env.OS }} arch: ${{ env.ARCH }} + build-lib: "true" - name: Compile PoQ Witness Generator uses: ./.github/actions/compile-witness-generator @@ -261,6 +266,7 @@ jobs: version: ${{ env.VERSION }} os: ${{ env.OS }} arch: ${{ env.ARCH }} + build-lib: "true" - name: Compile ZKSign Witness Generator uses: ./.github/actions/compile-witness-generator @@ -271,6 +277,7 @@ jobs: version: ${{ env.VERSION }} os: ${{ env.OS }} arch: ${{ env.ARCH }} + build-lib: "true" - name: Compile PoC Witness Generator uses: ./.github/actions/compile-witness-generator @@ -281,6 +288,7 @@ jobs: version: ${{ env.VERSION }} os: ${{ env.OS }} arch: ${{ env.ARCH }} + build-lib: "true" - name: Download PoL Witness Generator uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b @@ -306,6 +314,30 @@ jobs: name: poc-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} path: witness-generators/poc-artifact + - name: Download PoL Library Artifact + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + name: pol-lib-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + path: witness-generator-libs/pol-lib + + - name: Download PoQ Library Artifact + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + name: poq-lib-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + path: witness-generator-libs/poq-lib + + - name: Download ZKSign Library Artifact + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + name: zksign-lib-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + path: witness-generator-libs/zksign-lib + + - name: Download PoC Library Artifact + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + name: poc-lib-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + path: witness-generator-libs/poc-lib + - name: Download All Proving Key Artifacts uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b with: @@ -377,6 +409,45 @@ jobs: name: logos-blockchain-circuits-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz path: logos-blockchain-circuits-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz + - name: Create Dev Library Bundle + env: + LIB_BUNDLE_NAME: logos-blockchain-circuits-dev-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + RAPIDSNARK_LIB_DIR: rapidsnark/package_lib/lib + RAPIDSNARK_INC_DIR: rapidsnark/package_lib/include + run: | + mkdir -p "${LIB_BUNDLE_NAME}/lib" "${LIB_BUNDLE_NAME}/include/rapidsnark" "${LIB_BUNDLE_NAME}/include/witness" + + # RapidSnark static libraries + cp "${RAPIDSNARK_LIB_DIR}"/librapidsnark.a "${LIB_BUNDLE_NAME}/lib/" + cp "${RAPIDSNARK_LIB_DIR}"/librapidsnark-fr-fq.a "${LIB_BUNDLE_NAME}/lib/" + cp "${RAPIDSNARK_LIB_DIR}"/libfr.a "${LIB_BUNDLE_NAME}/lib/" + cp "${RAPIDSNARK_LIB_DIR}"/libfq.a "${LIB_BUNDLE_NAME}/lib/" + cp "${RAPIDSNARK_LIB_DIR}"/libgmp.a "${LIB_BUNDLE_NAME}/lib/" + + # RapidSnark headers + cp "${RAPIDSNARK_INC_DIR}"/rapidsnark/*.h "${LIB_BUNDLE_NAME}/include/rapidsnark/" + cp "${RAPIDSNARK_INC_DIR}"/rapidsnark/*.hpp "${LIB_BUNDLE_NAME}/include/rapidsnark/" + + # Witness generator static libraries + cp witness-generator-libs/pol-lib/libpol.a "${LIB_BUNDLE_NAME}/lib/" + cp witness-generator-libs/poq-lib/libpoq.a "${LIB_BUNDLE_NAME}/lib/" + cp witness-generator-libs/zksign-lib/libsignature.a "${LIB_BUNDLE_NAME}/lib/" + cp witness-generator-libs/poc-lib/libpoc.a "${LIB_BUNDLE_NAME}/lib/" + + # Witness generator headers (shared across circuits — take from pol-lib) + cp witness-generator-libs/pol-lib/circom.hpp "${LIB_BUNDLE_NAME}/include/witness/" + cp witness-generator-libs/pol-lib/calcwit.hpp "${LIB_BUNDLE_NAME}/include/witness/" + cp witness-generator-libs/pol-lib/fr.hpp "${LIB_BUNDLE_NAME}/include/witness/" + + echo "${{ env.VERSION }}" > "${LIB_BUNDLE_NAME}/VERSION" + tar -czf "${LIB_BUNDLE_NAME}.tar.gz" "${LIB_BUNDLE_NAME}" + + - name: Upload Dev Library Bundle + uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 + with: + name: logos-blockchain-circuits-dev-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz + path: logos-blockchain-circuits-dev-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz + build-linux-aarch64: name: Build Linux aarch64 Binaries (Native for RPI5) runs-on: ubuntu-22.04-arm @@ -444,6 +515,10 @@ jobs: ln -s package depends/gmp/package_aarch64 make host_linux_aarch64_static + - name: Build Rapidsnark Static Libraries + working-directory: rapidsnark + run: make host_linux_aarch64_static_lib + - name: Bundle Rapidsnark Prover env: BINARY_NAME: prover @@ -491,6 +566,7 @@ jobs: version: ${{ env.VERSION }} os: ${{ env.OS }} arch: ${{ env.ARCH }} + build-lib: "true" - name: Compile PoQ Witness Generator uses: ./.github/actions/compile-witness-generator @@ -501,6 +577,7 @@ jobs: version: ${{ env.VERSION }} os: ${{ env.OS }} arch: ${{ env.ARCH }} + build-lib: "true" - name: Compile ZKSign Witness Generator uses: ./.github/actions/compile-witness-generator @@ -511,6 +588,7 @@ jobs: version: ${{ env.VERSION }} os: ${{ env.OS }} arch: ${{ env.ARCH }} + build-lib: "true" - name: Compile PoC Witness Generator uses: ./.github/actions/compile-witness-generator @@ -521,6 +599,7 @@ jobs: version: ${{ env.VERSION }} os: ${{ env.OS }} arch: ${{ env.ARCH }} + build-lib: "true" - name: Download PoL Witness Generator uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b @@ -546,6 +625,30 @@ jobs: name: poc-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} path: witness-generators/poc-artifact + - name: Download PoL Library Artifact + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + name: pol-lib-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + path: witness-generator-libs/pol-lib + + - name: Download PoQ Library Artifact + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + name: poq-lib-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + path: witness-generator-libs/poq-lib + + - name: Download ZKSign Library Artifact + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + name: zksign-lib-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + path: witness-generator-libs/zksign-lib + + - name: Download PoC Library Artifact + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + name: poc-lib-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + path: witness-generator-libs/poc-lib + - name: Download All Proving Key Artifacts uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b with: @@ -617,6 +720,41 @@ jobs: name: logos-blockchain-circuits-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz path: logos-blockchain-circuits-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz + - name: Create Dev Library Bundle + env: + LIB_BUNDLE_NAME: logos-blockchain-circuits-dev-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + RAPIDSNARK_LIB_DIR: rapidsnark/package_lib/lib + RAPIDSNARK_INC_DIR: rapidsnark/package_lib/include + run: | + mkdir -p "${LIB_BUNDLE_NAME}/lib" "${LIB_BUNDLE_NAME}/include/rapidsnark" "${LIB_BUNDLE_NAME}/include/witness" + + cp "${RAPIDSNARK_LIB_DIR}"/librapidsnark.a "${LIB_BUNDLE_NAME}/lib/" + cp "${RAPIDSNARK_LIB_DIR}"/librapidsnark-fr-fq.a "${LIB_BUNDLE_NAME}/lib/" + cp "${RAPIDSNARK_LIB_DIR}"/libfr.a "${LIB_BUNDLE_NAME}/lib/" + cp "${RAPIDSNARK_LIB_DIR}"/libfq.a "${LIB_BUNDLE_NAME}/lib/" + cp "${RAPIDSNARK_LIB_DIR}"/libgmp.a "${LIB_BUNDLE_NAME}/lib/" + + cp "${RAPIDSNARK_INC_DIR}"/rapidsnark/*.h "${LIB_BUNDLE_NAME}/include/rapidsnark/" + cp "${RAPIDSNARK_INC_DIR}"/rapidsnark/*.hpp "${LIB_BUNDLE_NAME}/include/rapidsnark/" + + cp witness-generator-libs/pol-lib/libpol.a "${LIB_BUNDLE_NAME}/lib/" + cp witness-generator-libs/poq-lib/libpoq.a "${LIB_BUNDLE_NAME}/lib/" + cp witness-generator-libs/zksign-lib/libsignature.a "${LIB_BUNDLE_NAME}/lib/" + cp witness-generator-libs/poc-lib/libpoc.a "${LIB_BUNDLE_NAME}/lib/" + + cp witness-generator-libs/pol-lib/circom.hpp "${LIB_BUNDLE_NAME}/include/witness/" + cp witness-generator-libs/pol-lib/calcwit.hpp "${LIB_BUNDLE_NAME}/include/witness/" + cp witness-generator-libs/pol-lib/fr.hpp "${LIB_BUNDLE_NAME}/include/witness/" + + echo "${{ env.VERSION }}" > "${LIB_BUNDLE_NAME}/VERSION" + tar -czf "${LIB_BUNDLE_NAME}.tar.gz" "${LIB_BUNDLE_NAME}" + + - name: Upload Dev Library Bundle + uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 + with: + name: logos-blockchain-circuits-dev-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz + path: logos-blockchain-circuits-dev-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz + build-windows: name: Build Windows Binaries (Native) runs-on: windows-latest @@ -720,6 +858,11 @@ jobs: ./build_gmp.sh host make host_windows_x86_64_static + - name: Build Rapidsnark Static Libraries + shell: msys2 {0} + working-directory: rapidsnark + run: make host_windows_x86_64_static_lib + - name: Bundle Rapidsnark Prover shell: msys2 {0} env: @@ -769,6 +912,7 @@ jobs: version: ${{ env.VERSION }} os: ${{ env.OS }} arch: ${{ env.ARCH }} + build-lib: "true" - name: Compile PoQ Witness Generator uses: ./.github/actions/compile-witness-generator @@ -779,6 +923,7 @@ jobs: version: ${{ env.VERSION }} os: ${{ env.OS }} arch: ${{ env.ARCH }} + build-lib: "true" - name: Compile ZKSign Witness Generator uses: ./.github/actions/compile-witness-generator @@ -789,6 +934,7 @@ jobs: version: ${{ env.VERSION }} os: ${{ env.OS }} arch: ${{ env.ARCH }} + build-lib: "true" - name: Compile PoC Witness Generator uses: ./.github/actions/compile-witness-generator @@ -799,6 +945,7 @@ jobs: version: ${{ env.VERSION }} os: ${{ env.OS }} arch: ${{ env.ARCH }} + build-lib: "true" - name: Download PoL Witness Generator uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b @@ -824,6 +971,30 @@ jobs: name: poc-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} path: witness-generators/poc-artifact + - name: Download PoL Library Artifact + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + name: pol-lib-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + path: witness-generator-libs/pol-lib + + - name: Download PoQ Library Artifact + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + name: poq-lib-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + path: witness-generator-libs/poq-lib + + - name: Download ZKSign Library Artifact + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + name: zksign-lib-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + path: witness-generator-libs/zksign-lib + + - name: Download PoC Library Artifact + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + name: poc-lib-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + path: witness-generator-libs/poc-lib + - name: Download All Proving Key Artifacts uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b with: @@ -888,6 +1059,42 @@ jobs: name: logos-blockchain-circuits-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz path: logos-blockchain-circuits-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz + - name: Create Dev Library Bundle + shell: msys2 {0} + env: + LIB_BUNDLE_NAME: logos-blockchain-circuits-dev-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + RAPIDSNARK_LIB_DIR: rapidsnark/package_lib_windows/lib + RAPIDSNARK_INC_DIR: rapidsnark/package_lib_windows/include + run: | + mkdir -p "${LIB_BUNDLE_NAME}/lib" "${LIB_BUNDLE_NAME}/include/rapidsnark" "${LIB_BUNDLE_NAME}/include/witness" + + cp "${RAPIDSNARK_LIB_DIR}"/librapidsnark.a "${LIB_BUNDLE_NAME}/lib/" + cp "${RAPIDSNARK_LIB_DIR}"/librapidsnark-fr-fq.a "${LIB_BUNDLE_NAME}/lib/" + cp "${RAPIDSNARK_LIB_DIR}"/libfr.a "${LIB_BUNDLE_NAME}/lib/" + cp "${RAPIDSNARK_LIB_DIR}"/libfq.a "${LIB_BUNDLE_NAME}/lib/" + cp "${RAPIDSNARK_LIB_DIR}"/libgmp.a "${LIB_BUNDLE_NAME}/lib/" + + cp "${RAPIDSNARK_INC_DIR}"/rapidsnark/*.h "${LIB_BUNDLE_NAME}/include/rapidsnark/" + cp "${RAPIDSNARK_INC_DIR}"/rapidsnark/*.hpp "${LIB_BUNDLE_NAME}/include/rapidsnark/" + + cp witness-generator-libs/pol-lib/libpol.a "${LIB_BUNDLE_NAME}/lib/" + cp witness-generator-libs/poq-lib/libpoq.a "${LIB_BUNDLE_NAME}/lib/" + cp witness-generator-libs/zksign-lib/libsignature.a "${LIB_BUNDLE_NAME}/lib/" + cp witness-generator-libs/poc-lib/libpoc.a "${LIB_BUNDLE_NAME}/lib/" + + cp witness-generator-libs/pol-lib/circom.hpp "${LIB_BUNDLE_NAME}/include/witness/" + cp witness-generator-libs/pol-lib/calcwit.hpp "${LIB_BUNDLE_NAME}/include/witness/" + cp witness-generator-libs/pol-lib/fr.hpp "${LIB_BUNDLE_NAME}/include/witness/" + + echo "${{ env.VERSION }}" > "${LIB_BUNDLE_NAME}/VERSION" + tar -czf "${LIB_BUNDLE_NAME}.tar.gz" "${LIB_BUNDLE_NAME}" + + - name: Upload Dev Library Bundle + uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 + with: + name: logos-blockchain-circuits-dev-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz + path: logos-blockchain-circuits-dev-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz + build-macos: name: Build MacOS Binaries (Native) runs-on: macos-latest @@ -949,6 +1156,10 @@ jobs: ./build_gmp.sh macos_arm64 make macos_arm64 + - name: Build Rapidsnark Static Libraries + working-directory: rapidsnark + run: make macos_arm64_lib + - name: Bundle Rapidsnark Prover env: BINARY_NAME: prover @@ -996,6 +1207,7 @@ jobs: version: ${{ env.VERSION }} os: ${{ env.OS }} arch: ${{ env.ARCH }} + build-lib: "true" - name: Compile PoQ Witness Generator uses: ./.github/actions/compile-witness-generator @@ -1006,6 +1218,7 @@ jobs: version: ${{ env.VERSION }} os: ${{ env.OS }} arch: ${{ env.ARCH }} + build-lib: "true" - name: Compile ZKSign Witness Generator uses: ./.github/actions/compile-witness-generator @@ -1016,6 +1229,7 @@ jobs: version: ${{ env.VERSION }} os: ${{ env.OS }} arch: ${{ env.ARCH }} + build-lib: "true" - name: Compile PoC Witness Generator uses: ./.github/actions/compile-witness-generator @@ -1026,6 +1240,7 @@ jobs: version: ${{ env.VERSION }} os: ${{ env.OS }} arch: ${{ env.ARCH }} + build-lib: "true" - name: Download PoL Witness Generator uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b @@ -1051,6 +1266,30 @@ jobs: name: poc-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} path: witness-generators/poc-artifact + - name: Download PoL Library Artifact + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + name: pol-lib-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + path: witness-generator-libs/pol-lib + + - name: Download PoQ Library Artifact + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + name: poq-lib-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + path: witness-generator-libs/poq-lib + + - name: Download ZKSign Library Artifact + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + name: zksign-lib-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + path: witness-generator-libs/zksign-lib + + - name: Download PoC Library Artifact + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + name: poc-lib-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + path: witness-generator-libs/poc-lib + - name: Download All Proving Key Artifacts uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b with: @@ -1122,6 +1361,41 @@ jobs: name: logos-blockchain-circuits-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz path: logos-blockchain-circuits-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz + - name: Create Dev Library Bundle + env: + LIB_BUNDLE_NAME: logos-blockchain-circuits-dev-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }} + RAPIDSNARK_LIB_DIR: rapidsnark/package_lib_macos_arm64/lib + RAPIDSNARK_INC_DIR: rapidsnark/package_lib_macos_arm64/include + run: | + mkdir -p "${LIB_BUNDLE_NAME}/lib" "${LIB_BUNDLE_NAME}/include/rapidsnark" "${LIB_BUNDLE_NAME}/include/witness" + + cp "${RAPIDSNARK_LIB_DIR}"/librapidsnark.a "${LIB_BUNDLE_NAME}/lib/" + cp "${RAPIDSNARK_LIB_DIR}"/librapidsnark-fr-fq.a "${LIB_BUNDLE_NAME}/lib/" + cp "${RAPIDSNARK_LIB_DIR}"/libfr.a "${LIB_BUNDLE_NAME}/lib/" + cp "${RAPIDSNARK_LIB_DIR}"/libfq.a "${LIB_BUNDLE_NAME}/lib/" + cp "${RAPIDSNARK_LIB_DIR}"/libgmp.a "${LIB_BUNDLE_NAME}/lib/" + + cp "${RAPIDSNARK_INC_DIR}"/rapidsnark/*.h "${LIB_BUNDLE_NAME}/include/rapidsnark/" + cp "${RAPIDSNARK_INC_DIR}"/rapidsnark/*.hpp "${LIB_BUNDLE_NAME}/include/rapidsnark/" + + cp witness-generator-libs/pol-lib/libpol.a "${LIB_BUNDLE_NAME}/lib/" + cp witness-generator-libs/poq-lib/libpoq.a "${LIB_BUNDLE_NAME}/lib/" + cp witness-generator-libs/zksign-lib/libsignature.a "${LIB_BUNDLE_NAME}/lib/" + cp witness-generator-libs/poc-lib/libpoc.a "${LIB_BUNDLE_NAME}/lib/" + + cp witness-generator-libs/pol-lib/circom.hpp "${LIB_BUNDLE_NAME}/include/witness/" + cp witness-generator-libs/pol-lib/calcwit.hpp "${LIB_BUNDLE_NAME}/include/witness/" + cp witness-generator-libs/pol-lib/fr.hpp "${LIB_BUNDLE_NAME}/include/witness/" + + echo "${{ env.VERSION }}" > "${LIB_BUNDLE_NAME}/VERSION" + tar -czf "${LIB_BUNDLE_NAME}.tar.gz" "${LIB_BUNDLE_NAME}" + + - name: Upload Dev Library Bundle + uses: actions/upload-artifact@de65e23aa2b7e23d713bb51fbfcb6d502f8667d8 + with: + name: logos-blockchain-circuits-dev-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz + path: logos-blockchain-circuits-dev-${{ env.VERSION }}-${{ env.OS }}-${{ env.ARCH }}.tar.gz + publish-release: name: Create Release runs-on: ubuntu-latest @@ -1188,6 +1462,7 @@ jobs: env: UPLOAD_URL: ${{ needs.publish-release.outputs.upload_url }} ARTIFACT_NAME: logos-blockchain-circuits-${{ needs.setup.outputs.version }}-${{ matrix.platform.os }}-${{ matrix.platform.arch }}.tar.gz + DEV_ARTIFACT_NAME: logos-blockchain-circuits-dev-${{ needs.setup.outputs.version }}-${{ matrix.platform.os }}-${{ matrix.platform.arch }}.tar.gz steps: - name: Download Unified Bundle uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b @@ -1202,4 +1477,18 @@ jobs: upload_url: ${{ env.UPLOAD_URL }} asset_path: ${{ env.ARTIFACT_NAME }} asset_name: ${{ env.ARTIFACT_NAME }} + + - name: Download Dev Library Bundle + uses: actions/download-artifact@448e3f862ab3ef47aa50ff917776823c9946035b + with: + name: ${{ env.DEV_ARTIFACT_NAME }} + + - name: Upload Dev Library Bundle to Release + uses: actions/upload-release-asset@ef2adfe8cb8ebfa540930c452c576b3819990faa + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ env.UPLOAD_URL }} + asset_path: ${{ env.DEV_ARTIFACT_NAME }} + asset_name: ${{ env.DEV_ARTIFACT_NAME }} asset_content_type: application/octet-stream