diff --git a/build/common.mk b/build/common.mk new file mode 100644 index 0000000000..5cf9241266 --- /dev/null +++ b/build/common.mk @@ -0,0 +1,16 @@ +UNAME_S := $(shell uname -s) +IS_DARWIN := $(findstring Darwin,$(UNAME_S)) + +SHLIB_EXT := so +ifeq ($(UNAME_S),Darwin) +SHLIB_EXT := dylib +endif + +LIB_ZKP_NAME := libzkp.$(SHLIB_EXT) + +define macos_codesign +@if [ -n "$(IS_DARWIN)" ]; then \ + codesign --force --sign - '$(1)'; \ + codesign --verify --deep --verbose '$(1)'; \ +fi +endef diff --git a/coordinator/.gitignore b/coordinator/.gitignore index 0aad0c9874..e41706811b 100644 --- a/coordinator/.gitignore +++ b/coordinator/.gitignore @@ -1,4 +1,5 @@ /build/bin .idea internal/logic/verifier/lib -internal/libzkp/lib/libzkp.so +libzkp.so +libzkp.dylib diff --git a/coordinator/Makefile b/coordinator/Makefile index e25df0db01..151d4a83b3 100644 --- a/coordinator/Makefile +++ b/coordinator/Makefile @@ -1,8 +1,10 @@ +include ../build/common.mk + .PHONY: lint docker clean coordinator coordinator_skip_libzkp mock_coordinator libzkp IMAGE_VERSION=latest REPO_ROOT_DIR=./.. -LIBZKP_PATH=./internal/logic/libzkp/lib/libzkp.so +LIBZKP_PATH=./internal/logic/libzkp/lib/$(LIB_ZKP_NAME) ifeq (4.3,$(firstword $(sort $(MAKE_VERSION) 4.3))) ZKVM_VERSION=$(shell grep -m 1 "zkvm-prover?" ../Cargo.lock | cut -d "#" -f2 | cut -c-7) @@ -27,6 +29,7 @@ libzkp: clean_libzkp $(LIBZKP_PATH) coordinator_api: $(LIBZKP_PATH) ## Builds the Coordinator api instance. go build -ldflags "-X scroll-tech/common/version.ZkVersion=${ZK_VERSION}" -o $(PWD)/build/bin/coordinator_api ./cmd/api + $(call macos_codesign,$(PWD)/build/bin/coordinator_api) coordinator_cron: go build -ldflags "-X scroll-tech/common/version.ZkVersion=${ZK_VERSION}" -o $(PWD)/build/bin/coordinator_cron ./cmd/cron diff --git a/coordinator/README.md b/coordinator/README.md index 93cd4560c7..a5203a1234 100644 --- a/coordinator/README.md +++ b/coordinator/README.md @@ -10,6 +10,8 @@ See [monorepo prerequisites](../README.md#prerequisites). ## Build +Using Go version 1.22 + ```bash make clean make coordinator_api diff --git a/coordinator/internal/logic/libzkp/Makefile b/coordinator/internal/logic/libzkp/Makefile index 24e7881099..9c33d9c8ed 100644 --- a/coordinator/internal/logic/libzkp/Makefile +++ b/coordinator/internal/logic/libzkp/Makefile @@ -1,16 +1,20 @@ -.PHONY: help fmt clippy test test-ci test-all +include ../../../../build/common.mk + +.PHONY: help fmt clippy test test-ci test-all clean build + +all: build build: @cargo build --release -p libzkp-c @mkdir -p lib - @cp -f ../../../../target/release/libzkp.so lib/ + @cp -f ../../../../target/release/$(LIB_ZKP_NAME) lib/ fmt: @cargo fmt --all -- --check clean: @cargo clean --release -p libzkp -p libzkp-c -p l2geth - @rm -f lib/libzkp.so + @rm -f lib/$(LIB_ZKP_NAME) clippy: @cargo check --release --all-features diff --git a/coordinator/internal/logic/libzkp/lib.go b/coordinator/internal/logic/libzkp/lib.go index bb35c71ce7..315496e409 100644 --- a/coordinator/internal/logic/libzkp/lib.go +++ b/coordinator/internal/logic/libzkp/lib.go @@ -1,7 +1,8 @@ package libzkp /* -#cgo LDFLAGS: -lzkp -lm -ldl -L${SRCDIR}/lib -Wl,-rpath=${SRCDIR}/lib +#cgo linux LDFLAGS: -lzkp -lm -ldl -L${SRCDIR}/lib -Wl,-rpath=${SRCDIR}/lib +#cgo darwin LDFLAGS: -lzkp -lm -ldl -L${SRCDIR}/lib -Wl,-rpath,${SRCDIR}/lib #cgo gpu LDFLAGS: -lzkp -lm -ldl -lgmp -lstdc++ -lprocps -L/usr/local/cuda/lib64/ -lcudart -L${SRCDIR}/lib/ -Wl,-rpath=${SRCDIR}/lib #include #include "libzkp.h" diff --git a/crates/libzkp/Cargo.toml b/crates/libzkp/Cargo.toml index d673efc9f0..24e13293db 100644 --- a/crates/libzkp/Cargo.toml +++ b/crates/libzkp/Cargo.toml @@ -3,6 +3,9 @@ name = "libzkp" version.workspace = true edition.workspace = true +[lib] +crate-type = ["rlib", "cdylib"] + # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] scroll-zkvm-types = { workspace = true, features = ["scroll"] } diff --git a/tests/prover-e2e/Makefile b/tests/prover-e2e/Makefile index e2459e5666..f516d8eb6c 100644 --- a/tests/prover-e2e/Makefile +++ b/tests/prover-e2e/Makefile @@ -1,3 +1,5 @@ +include ../../build/common.mk + .PHONY: clean setup_db test_tool all check_vars include conf/.make.env @@ -52,6 +54,7 @@ reset_db: test_tool: go build -o $(PWD)/build/bin/e2e_tool ../../rollup/tests/integration_tool + $(call macos_codesign,$(PWD)/build/bin/e2e_tool) build/bin/e2e_tool: test_tool @@ -71,4 +74,4 @@ reimport_data: reset_db import_data coordinator_setup: SCROLL_FORK_NAME=${SCROLL_FORK_NAME} $(MAKE) -C ../../coordinator localsetup - cp -f conf/genesis.json ../../coordinator/build/bin/conf \ No newline at end of file + cp -f conf/genesis.json ../../coordinator/build/bin/conf