From c8d490fb23f32ba922dc5d648413add051be204e Mon Sep 17 00:00:00 2001 From: Daniel Adler Date: Thu, 18 Jul 2024 12:14:46 +0200 Subject: [PATCH] build universal binary on macos --- .gitignore | 1 + Makefile | 8 ++++++-- third_party/flatbuffers-c-bridge/build.sh | 2 ++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 060f7473..c9e87254 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ scripts/tmp* # Command built using `make build` /objectbox-generator /objectbox-generator.exe +build/ # CMake/C++ Examples: examples/*/_deps diff --git a/Makefile b/Makefile index 8842b897..37b6b54c 100644 --- a/Makefile +++ b/Makefile @@ -14,10 +14,14 @@ all: depend build # Link statically (except for Darwin) ifneq ($(shell uname -s),Darwin) BUILD_GO_LDFLAGS=-ldflags '-linkmode external -w -extldflags "-static"' -endif - build: ## Build all targets CGO_ENABLED=1 go build ${BUILD_GO_LDFLAGS} ./cmd/objectbox-generator/ +else +build: ## Build universal binary (arm64, amd64) + CGO_ENABLED=1 GOARCH=arm64 go build -o build/objectbox-generator-arm64 ./cmd/objectbox-generator/ + CGO_ENABLED=1 GOARCH=amd64 go build -o build/objectbox-generator-amd64 ./cmd/objectbox-generator/ + lipo -create -output objectbox-generator build/objectbox-generator-arm64 build/objectbox-generator-amd64 +endif reinstall: build ## Update installed objectbox-generator mv objectbox-generator "$(shell which objectbox-generator)" diff --git a/third_party/flatbuffers-c-bridge/build.sh b/third_party/flatbuffers-c-bridge/build.sh index 3cc5843b..9e1f1078 100755 --- a/third_party/flatbuffers-c-bridge/build.sh +++ b/third_party/flatbuffers-c-bridge/build.sh @@ -26,6 +26,8 @@ if [[ "$(uname)" == MINGW* ]] || [[ "$(uname)" == CYGWIN* ]]; then # buildOutputDir=/${buildType} # buildArgs= # buildArgs="-- /m" fails with "error MSB1008: Only one project can be specified." +elif [[ "$(uname)" == Darwin ]]; then # build universal binary + configArgs+=' -DCMAKE_OSX_ARCHITECTURES="arm64;x86_64"' fi function build() {