diff --git a/Makefile b/Makefile index cbbb224..5af89fd 100644 --- a/Makefile +++ b/Makefile @@ -37,6 +37,16 @@ libtailscale_ios_sim_arm64.a: libtailscale_ios_sim_x86_64.a: GOOS=ios GOARCH=amd64 CC=$(PWD)/swift/script/clangwrap-ios-sim-x86.sh go build -v -ldflags -w -tags ios -o $@ -buildmode=c-archive +libtailscale_macos_arm64.a: + GOOS=darwin GOARCH=arm64 CC=$(PWD)/swift/script/clangwrap-macos-arm.sh $(DARWIN_DEPLOYMENT_TARGET) go build -v -ldflags -w -o $@ -buildmode=c-archive + +libtailscale_macos_x86_64.a: + GOOS=darwin GOARCH=amd64 CC=$(PWD)/swift/script/clangwrap-macos-x86.sh $(DARWIN_DEPLOYMENT_TARGET) go build -v -ldflags -w -o $@ -buildmode=c-archive + +.PHONY: c-archive-macos-universal +c-archive-macos-universal: libtailscale_macos_arm64.a libtailscale_macos_x86_64.a ## Builds a universal (arm64 + x86_64) libtailscale.a for macOS + lipo -create -output libtailscale.a libtailscale_macos_arm64.a libtailscale_macos_x86_64.a + .PHONY: c-archive-ios c-archive-ios: libtailscale_ios.a ## Builds libtailscale_ios.a for iOS (iOS SDK required) diff --git a/swift/Makefile b/swift/Makefile index 4071ff0..63a08c1 100644 --- a/swift/Makefile +++ b/swift/Makefile @@ -17,12 +17,13 @@ all: test ios macos ios-fat ## Runs the tests and builds all library targets macos: ## Builds TailscaleKit for macos to swift/build/Build/Products/Release (unsigned) @echo @echo "::: Building TailscaleKit.framework for macOS :::" - cd .. && make c-archive + cd .. && make c-archive-macos-universal mkdir -p build xcodebuild build -scheme "TailscaleKit (macOS)" \ -derivedDataPath build \ -configuration Release \ - -destination 'platform=macOS,arch=arm64' \ + -destination 'generic/platform=macOS' \ + ARCHS="arm64 x86_64" ONLY_ACTIVE_ARCH=NO \ CODE_SIGNING_ALLOWED=NO | $(XCPRETTIFIER) .PHONY: ios diff --git a/swift/script/clangwrap-macos-arm.sh b/swift/script/clangwrap-macos-arm.sh new file mode 100755 index 0000000..fa88630 --- /dev/null +++ b/swift/script/clangwrap-macos-arm.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +SDK=macosx +CLANGARCH=arm64 + +SDK_PATH=`xcrun --sdk $SDK --show-sdk-path` + +# cmd/cgo doesn't support llvm-gcc-4.2, so we have to use clang. +CLANG=`xcrun --sdk $SDK --find clang` + +exec "$CLANG" -arch $CLANGARCH -isysroot "$SDK_PATH" -mmacos-version-min=15.0 "$@" diff --git a/swift/script/clangwrap-macos-x86.sh b/swift/script/clangwrap-macos-x86.sh new file mode 100755 index 0000000..5849ade --- /dev/null +++ b/swift/script/clangwrap-macos-x86.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +SDK=macosx +CLANGARCH=x86_64 + +SDK_PATH=`xcrun --sdk $SDK --show-sdk-path` + +# cmd/cgo doesn't support llvm-gcc-4.2, so we have to use clang. +CLANG=`xcrun --sdk $SDK --find clang` + +exec "$CLANG" -arch $CLANGARCH -isysroot "$SDK_PATH" -mmacos-version-min=15.0 "$@"