Skip to content

Commit 141520b

Browse files
committed
Support single arch builds on macOS
1 parent 5232af0 commit 141520b

File tree

1 file changed

+13
-11
lines changed

1 file changed

+13
-11
lines changed

make-mac.mk

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ TOPDIR=$(shell pwd)
55
INCLUDES=-I$(shell pwd)/rustybits/target -isystem $(TOPDIR)/ext -I$(TOPDIR)/ext/prometheus-cpp-lite-1.0/core/include -I$(TOPDIR)/ext-prometheus-cpp-lite-1.0/3rdparty/http-client-lite/include -I$(TOPDIR)/ext/prometheus-cpp-lite-1.0/simpleapi/include
66
DEFS=
77
LIBS=
8-
ARCH_FLAGS=-arch x86_64 -arch arm64
8+
ARCH := x86_64 arm64
9+
ARCH_FLAGS=$(addprefix -arch ,$(ARCH))
910

1011
CODESIGN=echo
1112
PRODUCTSIGN=echo
@@ -58,7 +59,7 @@ ifeq ($(ZT_CONTROLLER),1)
5859
MACOS_VERSION_MIN=10.15
5960
override CXXFLAGS=$(CFLAGS) -std=c++17 -stdlib=libc++
6061
LIBS+=-L/opt/homebrew/lib -L/usr/local/opt/libpqxx/lib -L/usr/local/opt/libpq/lib -L/usr/local/opt/openssl/lib/ -lpqxx -lpq -lssl -lcrypto -lgssapi_krb5 ext/redis-plus-plus-1.1.1/install/macos/lib/libredis++.a ext/hiredis-0.14.1/lib/macos/libhiredis.a rustybits/target/libsmeeclient.a
61-
DEFS+=-DZT_CONTROLLER_USE_LIBPQ -DZT_CONTROLLER_USE_REDIS -DZT_CONTROLLER
62+
DEFS+=-DZT_CONTROLLER_USE_LIBPQ -DZT_CONTROLLER_USE_REDIS -DZT_CONTROLLER
6263
INCLUDES+=-I/opt/homebrew/include -I/opt/homebrew/opt/libpq/include -I/usr/local/opt/libpq/include -I/usr/local/opt/libpqxx/include -Iext/hiredis-0.14.1/include/ -Iext/redis-plus-plus-1.1.1/install/macos/include/sw/ -Irustybits/target/
6364
else
6465
MACOS_VERSION_MIN=10.13
@@ -74,6 +75,7 @@ endif
7475
# Debug mode -- dump trace output, build binary with -g
7576
ifeq ($(ZT_DEBUG),1)
7677
ZT_TRACE=1
78+
ARCH=
7779
ARCH_FLAGS=
7880
CFLAGS+=-Wall -g $(INCLUDES) $(DEFS) $(ARCH_FLAGS)
7981
STRIP=echo
@@ -113,12 +115,12 @@ mac-agent: FORCE
113115
$(CODESIGN) -f --options=runtime -s $(CODESIGN_APP_CERT) MacEthernetTapAgent
114116

115117
osdep/MacDNSHelper.o: osdep/MacDNSHelper.mm
116-
$(CXX) $(CXXFLAGS) -c osdep/MacDNSHelper.mm -o osdep/MacDNSHelper.o
118+
$(CXX) $(CXXFLAGS) -c osdep/MacDNSHelper.mm -o osdep/MacDNSHelper.o
117119

118120
ifeq ($(ZT_CONTROLLER),1)
119-
one: zeroidc smeeclient $(CORE_OBJS) $(ONE_OBJS) one.o mac-agent
121+
one: zeroidc smeeclient $(CORE_OBJS) $(ONE_OBJS) one.o mac-agent
120122
else
121-
one: zeroidc $(CORE_OBJS) $(ONE_OBJS) one.o mac-agent
123+
one: zeroidc $(CORE_OBJS) $(ONE_OBJS) one.o mac-agent
122124
endif
123125
$(CXX) $(CXXFLAGS) -o zerotier-one $(CORE_OBJS) $(ONE_OBJS) one.o $(LIBS) rustybits/target/libzeroidc.a
124126
# $(STRIP) zerotier-one
@@ -140,12 +142,12 @@ rustybits/target/libsmeeclient.a: FORCE
140142
endif
141143

142144
rustybits/target/libzeroidc.a: FORCE
143-
cd rustybits && MACOSX_DEPLOYMENT_TARGET=$(MACOS_VERSION_MIN) cargo build -p zeroidc --target=x86_64-apple-darwin $(EXTRA_CARGO_FLAGS)
144-
cd rustybits && MACOSX_DEPLOYMENT_TARGET=$(MACOS_VERSION_MIN) cargo build -p zeroidc --target=aarch64-apple-darwin $(EXTRA_CARGO_FLAGS)
145-
cd rustybits && lipo -create target/x86_64-apple-darwin/$(RUST_VARIANT)/libzeroidc.a target/aarch64-apple-darwin/$(RUST_VARIANT)/libzeroidc.a -output target/libzeroidc.a
145+
if [[ "$(ARCH)" == *"x86_64"* ]]; then cd rustybits && MACOSX_DEPLOYMENT_TARGET=$(MACOS_VERSION_MIN) cargo build -p zeroidc --target=x86_64-apple-darwin $(EXTRA_CARGO_FLAGS); fi
146+
if [[ "$(ARCH)" == *"arm64"* ]]; then cd rustybits && MACOSX_DEPLOYMENT_TARGET=$(MACOS_VERSION_MIN) cargo build -p zeroidc --target=aarch64-apple-darwin $(EXTRA_CARGO_FLAGS); fi
147+
cd rustybits && lipo -create target/*/$(RUST_VARIANT)/libzeroidc.a -output target/libzeroidc.a
146148

147149
central-controller:
148-
make ARCH_FLAGS="-arch x86_64" ZT_CONTROLLER=1 one
150+
make ARCH=x86_64 ZT_CONTROLLER=1 one
149151

150152
zerotier-idtool: one
151153

@@ -210,11 +212,11 @@ central-controller-docker: _buildx FORCE
210212

211213
centralv2-controller-docker: _buildx FORCE
212214
docker buildx build --platform linux/amd64,linux/arm64 --no-cache -t us-central1-docker.pkg.dev/zerotier-d648c7/central-v2/ztcentral-controller:${TIMESTAMP} -f ext/central-controller-docker/Dockerfile --build-arg git_branch=`git name-rev --name-only HEAD` . --push
213-
@echo Image: us-central1-docker.pkg.dev/zerotier-d648c7/central-v2/ztcentral-controller:${TIMESTAMP}
215+
@echo Image: us-central1-docker.pkg.dev/zerotier-d648c7/central-v2/ztcentral-controller:${TIMESTAMP}
214216

215217
docker-release: _buildx
216218
docker buildx build --platform linux/386,linux/amd64,linux/arm/v7,linux/arm64,linux/mips64le,linux/ppc64le,linux/s390x -t zerotier/zerotier:${RELEASE_DOCKER_TAG} -t zerotier/zerotier:latest --build-arg VERSION=${RELEASE_VERSION} -f Dockerfile.release . --push
217-
219+
218220
clean:
219221
rm -rf MacEthernetTapAgent *.dSYM build-* *.a *.pkg *.dmg *.o node/*.o controller/*.o service/*.o osdep/*.o ext/http-parser/*.o $(CORE_OBJS) $(ONE_OBJS) zerotier-one zerotier-idtool zerotier-selftest zerotier-cli zerotier doc/node_modules zt1_update_$(ZT_BUILD_PLATFORM)_$(ZT_BUILD_ARCHITECTURE)_* rustybits/target/
220222

0 commit comments

Comments
 (0)