From 30300df236f90103892103da4d2552496f516cc5 Mon Sep 17 00:00:00 2001 From: "Ya-wen, Jeng" Date: Fri, 31 Jan 2025 22:47:05 +0800 Subject: [PATCH 1/2] feat: update Makefile to build for different targets --- .github/workflows/build.yml | 48 ++++++++------------------------- Makefile | 54 ++++++++++++++++++++++++++++++++++--- README.md | 28 +++++-------------- 3 files changed, 68 insertions(+), 62 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c07ba3b..6d90130 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -71,40 +71,28 @@ jobs: - name: Build prover Android ARM64 run: | - mkdir -p build_prover_android && cd build_prover_android - cmake .. -DTARGET_PLATFORM=ANDROID -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../package_android -DBUILD_TESTS=OFF -DUSE_OPENMP=OFF - make -j4 && make install + make android - name: Build prover Android ARM64 with OpenMP run: | - mkdir -p build_prover_android_openmp && cd build_prover_android_openmp - cmake .. -DTARGET_PLATFORM=ANDROID -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../package_android_openmp -DBUILD_TESTS=OFF -DUSE_OPENMP=ON - make -j4 && make install + make android_openmp - name: Build prover Android x86_64 run: | - mkdir -p build_prover_android_x86_64 && cd build_prover_android_x86_64 - cmake .. -DTARGET_PLATFORM=ANDROID_x86_64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../package_android_x86_64 -DBUILD_TESTS=OFF -DUSE_OPENMP=OFF - make -j4 && make install + make android_x86_64 - name: Build prover Android x86_64 with OpenMP run: | - mkdir -p build_prover_android_openmp_x86_64 && cd build_prover_android_openmp_x86_64 - cmake .. -DTARGET_PLATFORM=ANDROID_x86_64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../package_android_openmp_x86_64 -DBUILD_TESTS=OFF -DUSE_OPENMP=ON - make -j4 && make install + make android_openmp_x86_64 - name: Build prover Linux x86_64 run: | - mkdir -p build_prover && cd build_prover - cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../package - make -j4 && make install + make host ctest --rerun-failed --output-on-failure - name: Build prover Linux x86_64 noasm run: | - mkdir -p build_prover_noasm && cd build_prover_noasm - cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../package_noasm -DUSE_ASM=NO - make -j4 && make install + make host_noasm ctest --rerun-failed --output-on-failure - name: Build prover Linux arm64 @@ -112,9 +100,7 @@ jobs: docker run --rm --platform=linux/arm64 -i -v $PWD:/work --workdir=/work builder:arm64 bash -c "$(cat << 'EOF' set -x set -e - mkdir -p build_prover_arm64 && cd build_prover_arm64 - cmake .. -DTARGET_PLATFORM=aarch64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../package_arm64 - make -j4 && make install + make arm64 ctest --rerun-failed --output-on-failure EOF )" @@ -272,23 +258,13 @@ jobs: if [[ ! -d "depends/gmp/package_iphone_simulator" ]]; then ./build_gmp.sh ios_simulator; fi if [[ ! -d "depends/gmp/package_macos_arm64" ]]; then ./build_gmp.sh macos_arm64; fi - mkdir -p build_prover_ios && cd build_prover_ios - cmake .. -GXcode -DTARGET_PLATFORM=IOS -DCMAKE_INSTALL_PREFIX=../package_ios -DBUILD_TESTS=OFF - xcodebuild -destination 'generic/platform=iOS' -scheme rapidsnarkStatic -project rapidsnark.xcodeproj -configuration Release - xcodebuild -destination 'generic/platform=iOS' -scheme rapidsnark -project rapidsnark.xcodeproj -configuration Release CODE_SIGNING_ALLOWED=NO - cp ../depends/gmp/package_ios_arm64/lib/libgmp.a src/Release-iphoneos + make ios cd ../ - mkdir -p build_prover_ios_simulator && cd build_prover_ios_simulator - cmake .. -GXcode -DTARGET_PLATFORM=IOS_SIMULATOR -DCMAKE_INSTALL_PREFIX=../package_ios_simulator -DUSE_ASM=NO -DBUILD_TESTS=OFF - xcodebuild -destination 'generic/platform=iOS Simulator' -scheme rapidsnarkStatic -project rapidsnark.xcodeproj - xcodebuild -destination 'generic/platform=iOS Simulator' -scheme rapidsnark -project rapidsnark.xcodeproj CODE_SIGNING_ALLOWED=NO ARCHS=arm64 - cp ../depends/gmp/package_iphone_simulator/lib/libgmp.a src/Debug-iphonesimulator + make ios_simulator cd ../ - mkdir -p build_prover_macos_arm64 && cd build_prover_macos_arm64 - cmake .. -DTARGET_PLATFORM=macos_arm64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../package_macos_arm64 - make -j4 && make install + make macos_arm64 ctest --rerun-failed --output-on-failure - name: test rapidsnark @@ -388,9 +364,7 @@ jobs: run: | if [[ ! -d "depends/gmp/package_macos_x86_64" ]]; then ./build_gmp.sh macos_x86_64; fi - mkdir -p 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 -j4 && make install + make macos_x86_64 ctest --rerun-failed --output-on-failure - name: test rapidsnark diff --git a/Makefile b/Makefile index 4f07a2b..81c6c26 100644 --- a/Makefile +++ b/Makefile @@ -6,20 +6,66 @@ host: cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../package && \ make -j$(nproc) -vvv && 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 && \ + make -j$(nproc) -vvv && make install + +host_arm64: + rm -rf build_prover && mkdir build_prover && cd build_prover && \ + cmake .. -DTARGET_PLATFORM=arm64_host -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../package && \ + make -j$(nproc) -vvv && make install + +arm64: + rm -rf build_prover_arm64 && mkdir build_prover_arm64 && cd build_prover_arm64 && \ + cmake .. -DTARGET_PLATFORM=aarch64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../package_arm64 && \ + make -j$(nproc) -vvv && make install + android: rm -rf build_prover_android && mkdir build_prover_android && cd build_prover_android && \ - cmake .. -DTARGET_PLATFORM=ANDROID -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../package_android && \ + cmake .. -DTARGET_PLATFORM=ANDROID -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../package_android -DBUILD_TESTS=OFF -DUSE_OPENMP=OFF && \ + make -j$(nproc) -vvv && make install + +android_openmp: + rm -rf build_prover_android_openmp && mkdir build_prover_android_openmp && cd build_prover_android_openmp && \ + cmake .. -DTARGET_PLATFORM=ANDROID -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../package_android_openmp -DBUILD_TESTS=OFF -DUSE_OPENMP=ON && \ make -j$(nproc) -vvv && make install android_x86_64: rm -rf build_prover_android_x86_64 && mkdir build_prover_android_x86_64 && cd build_prover_android_x86_64 && \ - cmake .. -DTARGET_PLATFORM=ANDROID_x86_64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../package_android_x86_64 && \ + cmake .. -DTARGET_PLATFORM=ANDROID_x86_64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../package_android_x86_64 -DBUILD_TESTS=OFF -DUSE_OPENMP=OFF && \ + make -j$(nproc) -vvv && make install + +android_openmp_x86_64: + rm -rf build_prover_android_openmp_x86_64 && mkdir build_prover_android_openmp_x86_64 && cd build_prover_android_openmp_x86_64 && \ + cmake .. -DTARGET_PLATFORM=ANDROID_x86_64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../package_android_openmp_x86_64 -DBUILD_TESTS=OFF -DUSE_OPENMP=ON && \ make -j$(nproc) -vvv && make install ios: rm -rf build_prover_ios && mkdir build_prover_ios && cd build_prover_ios && \ - cmake .. -GXcode -DTARGET_PLATFORM=IOS -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../package_ios && \ - echo "" && echo "Now open Xcode and compile the generated project" && echo "" + cmake .. -GXcode -DTARGET_PLATFORM=IOS -DCMAKE_INSTALL_PREFIX=../package_ios -DBUILD_TESTS=OFF && \ + xcodebuild -destination 'generic/platform=iOS' -scheme rapidsnarkStatic -project rapidsnark.xcodeproj -configuration Release && \ + xcodebuild -destination 'generic/platform=iOS' -scheme rapidsnark -project rapidsnark.xcodeproj -configuration Release CODE_SIGNING_ALLOWED=NO && \ + cp ../depends/gmp/package_ios_arm64/lib/libgmp.a src/Release-iphoneos && \ + echo "" && echo "Now open Xcode and compile the generated project" && echo "" + +ios_simulator: + rm -rf build_prover_ios_simulator && mkdir build_prover_ios_simulator && cd build_prover_ios_simulator && \ + cmake .. -GXcode -DTARGET_PLATFORM=IOS_SIMULATOR -DCMAKE_INSTALL_PREFIX=../package_ios_simulator -DUSE_ASM=NO -DBUILD_TESTS=OFF && \ + xcodebuild -destination 'generic/platform=iOS Simulator' -scheme rapidsnarkStatic -project rapidsnark.xcodeproj && \ + xcodebuild -destination 'generic/platform=iOS Simulator' -scheme rapidsnark -project rapidsnark.xcodeproj CODE_SIGNING_ALLOWED=NO ARCHS=arm64 && \ + cp ../depends/gmp/package_iphone_simulator/lib/libgmp.a src/Debug-iphonesimulator && \ + echo "" && echo "Now open Xcode and compile the generated project" && echo "" + +macos_arm64: + rm -rf build_prover_macos_arm64 && mkdir build_prover_macos_arm64 && cd build_prover_macos_arm64 && \ + cmake .. -DTARGET_PLATFORM=macos_arm64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../package_macos_arm64 && \ + make -j$(nproc) -vvv && make install + +macos_x86_64: + 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 clean: rm -rf build_prover build_prover_android build_prover_android_x86_64 build_prover_ios package package_android \ diff --git a/README.md b/README.md index 7d5cab7..4b0dff8 100644 --- a/README.md +++ b/README.md @@ -30,9 +30,7 @@ brew install cmake gmp libsodium nasm git submodule init git submodule update ./build_gmp.sh host -mkdir build_prover && cd build_prover -cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../package -make -j4 && make install +make host ``` ### Compile prover for macOS arm64 host machine @@ -41,9 +39,7 @@ make -j4 && make install git submodule init git submodule update ./build_gmp.sh macos_arm64 -mkdir build_prover_macos_arm64 && cd build_prover_macos_arm64 -cmake .. -DTARGET_PLATFORM=macos_arm64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../package_macos_arm64 -make -j4 && make install +make macos_arm64 ``` ### Compile prover for linux arm64 host machine @@ -52,9 +48,7 @@ make -j4 && make install git submodule init git submodule update ./build_gmp.sh host -mkdir build_prover && cd build_prover -cmake .. -DTARGET_PLATFORM=arm64_host -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../package -make -j4 && make install +make host_arm64 ``` ### Compile prover for linux arm64 machine @@ -63,9 +57,7 @@ make -j4 && make install git submodule init git submodule update ./build_gmp.sh host -mkdir build_prover && cd build_prover -cmake .. -DTARGET_PLATFORM=aarch64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../package_aarch64 -make -j4 && make install +make arm64 ``` ### Compile prover for Android @@ -93,9 +85,7 @@ Compilation: git submodule init git submodule update ./build_gmp.sh android -mkdir build_prover_android && cd build_prover_android -cmake .. -DTARGET_PLATFORM=ANDROID -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=../package_android -make -j4 && make install +make android ``` ### Compile prover for iOS @@ -106,9 +96,7 @@ Install Xcode git submodule init git submodule update ./build_gmp.sh ios -mkdir build_prover_ios && cd build_prover_ios -cmake .. -GXcode -DTARGET_PLATFORM=IOS -DCMAKE_INSTALL_PREFIX=../package_ios -xcodebuild -destination 'generic/platform=iOS' -scheme rapidsnarkStatic -project rapidsnark.xcodeproj -configuration Release +make ios ``` Open generated Xcode project and compile prover. @@ -120,9 +108,7 @@ Install Xcode git submodule init git submodule update ./build_gmp.sh ios_simulator -mkdir build_prover_ios_simulator && cd build_prover_ios_simulator -cmake .. -GXcode -DTARGET_PLATFORM=IOS -DCMAKE_INSTALL_PREFIX=../package_ios_simulator -DUSE_ASM=NO -xcodebuild -destination 'generic/platform=iOS Simulator' -scheme rapidsnarkStatic -project rapidsnark.xcodeproj +make ios_simulator ``` Files that you need to copy to your XCode project to link against Rapidsnark: From 0254c9cf37d250b5a7a6da8c450856df6fe3add5 Mon Sep 17 00:00:00 2001 From: "Ya-wen, Jeng" Date: Fri, 31 Jan 2025 23:29:49 +0800 Subject: [PATCH 2/2] fix: fix ios script --- .github/workflows/build.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6d90130..cbb2ac0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -259,10 +259,8 @@ jobs: if [[ ! -d "depends/gmp/package_macos_arm64" ]]; then ./build_gmp.sh macos_arm64; fi make ios - cd ../ make ios_simulator - cd ../ make macos_arm64 ctest --rerun-failed --output-on-failure