diff --git a/.gitignore b/.gitignore
index 060f747..c9e8725 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 8842b89..37b6b54 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 3cc5843..9e1f107 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() {