From e68af19112c72631081eb95fa415ba4f35084b0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C?= Date: Mon, 5 Jan 2026 14:06:57 +0800 Subject: [PATCH] Split macOS standalone build --- Makefile | 66 ++++++++++++++++++++++++++---- sing-box.xcodeproj/project.pbxproj | 1 + 2 files changed, 58 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 87ce6e0..e476a0b 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -build_all: build_ios build_macos build_macos_standalone build_tvos +build_all: build_ios build_macos build_tvos build_ios: xcodebuild build -scheme SFI -configuration Debug -destination 'generic/platform=iOS' | xcbeautify | grep -A 10 -e "Build Succeeded" -e "BUILD FAILED" -e "❌" @@ -6,19 +6,16 @@ build_ios: build_macos: xcodebuild build -scheme SFM -configuration Debug -destination 'generic/platform=macOS' | xcbeautify | grep -A 10 -e "Build Succeeded" -e "BUILD FAILED" -e "❌" -build_macos_standalone: - xcodebuild build -scheme SFM.System -configuration Debug -destination 'generic/platform=macOS' | xcbeautify | grep -A 10 -e "Build Succeeded" -e "BUILD FAILED" -e "❌" - build_tvos: xcodebuild build -scheme SFT -configuration Debug -destination 'generic/platform=tvOS' | xcbeautify | grep -A 10 -e "Build Succeeded" -e "BUILD FAILED" -e "❌" - release: release_ios release_macos release_tvos release_ios: archive_ios upload_ios archive_ios: - xcodebuild archive -scheme SFI -configuration Release -destination 'generic/platform=iOS' -archivePath build/SFI.xcarchive -allowProvisioningUpdates | xcbeautify | grep -A 10 -e "Archive Succeeded" -e " ARCHIVE FAILED" -e "❌" + rm -rf build/SFI.xcarchive + xcodebuild archive -scheme SFI -configuration Release -destination 'generic/platform=iOS' -archivePath build/SFI.xcarchive -allowProvisioningUpdates | xcbeautify | grep -A 10 -e "Archive Succeeded" -e "ARCHIVE FAILED" -e "❌" upload_ios: xcodebuild -exportArchive -archivePath build/SFI.xcarchive -exportOptionsPlist SFI/Upload.plist -allowProvisioningUpdates @@ -26,7 +23,8 @@ upload_ios: release_macos: archive_macos upload_macos archive_macos: - xcodebuild archive -scheme SFM -configuration Release -archivePath build/SFM.xcarchive -allowProvisioningUpdates | xcbeautify | grep -A 10 -e "Archive Succeeded" -e " ARCHIVE FAILED" -e "❌" + rm -rf build/SFM.xcarchive + xcodebuild archive -scheme SFM -configuration Release -archivePath build/SFM.xcarchive -allowProvisioningUpdates | xcbeautify | grep -A 10 -e "Archive Succeeded" -e "ARCHIVE FAILED" -e "❌" upload_macos: xcodebuild -exportArchive -archivePath build/SFM.xcarchive -exportOptionsPlist SFI/Upload.plist -allowProvisioningUpdates @@ -34,10 +32,46 @@ upload_macos: release_tvos: archive_tvos upload_tvos archive_tvos: - xcodebuild archive -scheme SFT -configuration Release -archivePath build/SFT.xcarchive -allowProvisioningUpdates | xcbeautify | grep -A 10 -e "Archive Succeeded" -e " ARCHIVE FAILED" -e "❌" + rm -rf build/SFT.xcarchive + xcodebuild archive -scheme SFT -configuration Release -archivePath build/SFT.xcarchive -allowProvisioningUpdates | xcbeautify | grep -A 10 -e "Archive Succeeded" -e "ARCHIVE FAILED" -e "❌" upload_tvos: - xcodebuild -exportArchive -archivePath "build/SFT.xcarchive" -exportOptionsPlist SFI/Upload.plist -allowProvisioningUpdates + xcodebuild -exportArchive -archivePath build/SFT.xcarchive -exportOptionsPlist SFI/Upload.plist -allowProvisioningUpdates + +release_macos_standalone: build_macos_dmg notarize_macos_dmg + +build_macos_standalone: + rm -rf build/SFM.System-arm64.xcarchive build/SFM.System-x86_64.xcarchive + xcodebuild archive -scheme SFM.System -configuration Release -archivePath build/SFM.System-arm64.xcarchive ARCHS=arm64 -allowProvisioningUpdates | xcbeautify | grep -A 10 -e "Archive Succeeded" -e "ARCHIVE FAILED" -e "❌" + xcodebuild archive -scheme SFM.System -configuration Release -archivePath build/SFM.System-x86_64.xcarchive ARCHS=x86_64 -allowProvisioningUpdates | xcbeautify | grep -A 10 -e "Archive Succeeded" -e "ARCHIVE FAILED" -e "❌" + +build_macos_dmg: build_macos_standalone + rm -rf build/SFM.System-arm64 build/SFM.System-x86_64 + xcodebuild -exportArchive -archivePath build/SFM.System-arm64.xcarchive -exportOptionsPlist SFM.System/Export.plist -exportPath build/SFM.System-arm64 -allowProvisioningUpdates + xcodebuild -exportArchive -archivePath build/SFM.System-x86_64.xcarchive -exportOptionsPlist SFM.System/Export.plist -exportPath build/SFM.System-x86_64 -allowProvisioningUpdates + rm -rf build/SFM-arm64.dmg build/SFM-x86_64.dmg + create-dmg \ + --volname "sing-box" \ + --volicon "build/SFM.System-arm64/SFM.app/Contents/Resources/AppIcon.icns" \ + --icon "SFM.app" 0 0 \ + --hide-extension "SFM.app" \ + --app-drop-link 0 0 \ + --skip-jenkins \ + "build/SFM-arm64.dmg" "build/SFM.System-arm64/SFM.app" + create-dmg \ + --volname "sing-box" \ + --volicon "build/SFM.System-x86_64/SFM.app/Contents/Resources/AppIcon.icns" \ + --icon "SFM.app" 0 0 \ + --hide-extension "SFM.app" \ + --app-drop-link 0 0 \ + --skip-jenkins \ + "build/SFM-x86_64.dmg" "build/SFM.System-x86_64/SFM.app" + +notarize_macos_dmg: + xcrun notarytool submit "build/SFM-arm64.dmg" --wait --keychain-profile "notarytool-password" + xcrun notarytool submit "build/SFM-x86_64.dmg" --wait --keychain-profile "notarytool-password" + xcrun stapler staple "build/SFM-arm64.dmg" + xcrun stapler staple "build/SFM-x86_64.dmg" fmt: swiftformat . @@ -50,3 +84,17 @@ lint: lint_install: brew install swiftlint + +dmg_install: + brew install create-dmg + +clean: + rm -rf build/SFI.xcarchive + rm -rf build/SFM.xcarchive + rm -rf build/SFT.xcarchive + rm -rf build/SFM.System-arm64.xcarchive + rm -rf build/SFM.System-x86_64.xcarchive + rm -rf build/SFM.System-arm64 + rm -rf build/SFM.System-x86_64 + rm -rf build/SFM-arm64.dmg + rm -rf build/SFM-x86_64.dmg diff --git a/sing-box.xcodeproj/project.pbxproj b/sing-box.xcodeproj/project.pbxproj index 419fb77..ea60ccd 100644 --- a/sing-box.xcodeproj/project.pbxproj +++ b/sing-box.xcodeproj/project.pbxproj @@ -2536,6 +2536,7 @@ CURRENT_PROJECT_VERSION = 1; DEAD_CODE_STRIPPING = YES; DEFINES_MODULE = YES; + STRIP_STYLE = "non-global"; DEVELOPMENT_TEAM = 287TTNZF8L; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1;