From 17e262ffc949590ac1a222960689dd9d9b2d1e58 Mon Sep 17 00:00:00 2001 From: osy <50960678+osy@users.noreply.github.com> Date: Sun, 11 Jul 2021 20:39:40 -0700 Subject: [PATCH] project: enable bridged networking We make QEMULauncher an app bundle in order to use a provisioning profile. Resolves #358 --- CodeSigning.xcconfig.sample | 8 + Platform/Shared/VMConfigNetworkView.swift | 9 +- QEMUHelper/QEMUHelper.m | 2 +- QEMULauncher/QEMULauncher.entitlements | 2 + UTM.xcodeproj/project.pbxproj | 207 ++++++++++++---------- scripts/package_mac.sh | 1 + 6 files changed, 127 insertions(+), 102 deletions(-) diff --git a/CodeSigning.xcconfig.sample b/CodeSigning.xcconfig.sample index fb33c201..36b6c44c 100644 --- a/CodeSigning.xcconfig.sample +++ b/CodeSigning.xcconfig.sample @@ -36,3 +36,11 @@ PROVISIONING_PROFILE_SPECIFIER_MAC = 00000000-1111-2222-3333-444444444444 // from the following file // - QEMUHelper/QEMUHelper.entitlements PROVISIONING_PROFILE_SPECIFIER_HELPER = 00000000-1111-2222-3333-555555555555 + +// Create a Mac provisioning profile for com.myuniquename.QEMULauncher with the +// Hypervisor entitlements and get its UUID. If you do not have access to these +// entitlements, comment out the line and delete the following entitlements +// - com.apple.vm.networking +// from the following file +// - QEMULauncher/QEMULauncher.entitlements +PROVISIONING_PROFILE_SPECIFIER_LAUNCHER = 00000000-1111-2222-3333-555555555555 diff --git a/Platform/Shared/VMConfigNetworkView.swift b/Platform/Shared/VMConfigNetworkView.swift index 38367bc2..115790b0 100644 --- a/Platform/Shared/VMConfigNetworkView.swift +++ b/Platform/Shared/VMConfigNetworkView.swift @@ -26,14 +26,7 @@ struct VMConfigNetworkView: View { Form { Section(header: Text("Hardware"), footer: EmptyView().padding(.bottom)) { #if os(macOS) - // FIXME: when vmnet entitlement bug is fixed update with proper macOS version - if #available(macOS 99.0, *) { - NetworkModeSection(config: config) - } else { - Toggle(isOn: $config.networkEnabled.animation(), label: { - Text("Enabled") - }) - } + NetworkModeSection(config: config) #else Toggle(isOn: $config.networkEnabled.animation(), label: { Text("Enabled") diff --git a/QEMUHelper/QEMUHelper.m b/QEMUHelper/QEMUHelper.m index 9c0426ec..73f9e05b 100644 --- a/QEMUHelper/QEMUHelper.m +++ b/QEMUHelper/QEMUHelper.m @@ -113,7 +113,7 @@ NSMutableArray *newArgv = [argv mutableCopy]; NSString *path = [libraryPath URLByAppendingPathComponent:binName].path; [newArgv insertObject:path atIndex:0]; - task.executableURL = [[NSBundle mainBundle] URLForAuxiliaryExecutable:@"QEMULauncher"]; + task.executableURL = [[[NSBundle mainBundle] URLForAuxiliaryExecutable:@"QEMULauncher.app"] URLByAppendingPathComponent:@"Contents/MacOS/QEMULauncher"]; task.arguments = newArgv; task.standardOutput = standardOutput; task.standardError = standardError; diff --git a/QEMULauncher/QEMULauncher.entitlements b/QEMULauncher/QEMULauncher.entitlements index 73e86380..d45c6712 100644 --- a/QEMULauncher/QEMULauncher.entitlements +++ b/QEMULauncher/QEMULauncher.entitlements @@ -10,5 +10,7 @@ com.apple.security.hypervisor + com.apple.vm.networking + diff --git a/UTM.xcodeproj/project.pbxproj b/UTM.xcodeproj/project.pbxproj index 5de8e57c..ce74aac2 100644 --- a/UTM.xcodeproj/project.pbxproj +++ b/UTM.xcodeproj/project.pbxproj @@ -29,6 +29,9 @@ 2CE8EB0A2572E173000E2EBB /* qapi-visit-block-export.c in Sources */ = {isa = PBXBuildFile; fileRef = 2CE8EB082572E173000E2EBB /* qapi-visit-block-export.c */; }; 2CE8EB41257811E8000E2EBB /* UTMConfiguration+Defaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CE8EB40257811E8000E2EBB /* UTMConfiguration+Defaults.m */; }; 2CE8EB42257811E8000E2EBB /* UTMConfiguration+Defaults.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CE8EB40257811E8000E2EBB /* UTMConfiguration+Defaults.m */; }; + 8401FD71269BEB2B00265F0D /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = CE6B240A25F1F3CE0020D43E /* main.c */; }; + 8401FD72269BEB3000265F0D /* Bootstrap.c in Sources */ = {isa = PBXBuildFile; fileRef = CE0DF17125A80B6300A51894 /* Bootstrap.c */; }; + 8401FD7A269BECE200265F0D /* QEMULauncher.app in Embed Launcher */ = {isa = PBXBuildFile; fileRef = 8401FD62269BE9C500265F0D /* QEMULauncher.app */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; CE020BA324AEDC7C00B44AB6 /* UTMData.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE020BA224AEDC7C00B44AB6 /* UTMData.swift */; }; CE020BA424AEDC7C00B44AB6 /* UTMData.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE020BA224AEDC7C00B44AB6 /* UTMData.swift */; }; CE020BA724AEDEF000B44AB6 /* Logging in Frameworks */ = {isa = PBXBuildFile; productRef = CE020BA624AEDEF000B44AB6 /* Logging */; }; @@ -643,9 +646,6 @@ CE4EF2722506DD7900E9D33B /* VMRemovableDrivesView.xib in Resources */ = {isa = PBXBuildFile; fileRef = CE4EF2712506DD7900E9D33B /* VMRemovableDrivesView.xib */; }; CE5076DB250AB55D00C26C19 /* VMDisplayMetalViewController+Pencil.m in Sources */ = {isa = PBXBuildFile; fileRef = CE5076DA250AB55D00C26C19 /* VMDisplayMetalViewController+Pencil.m */; }; CE612AC624D3B50700FA6300 /* VMDisplayWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE612AC524D3B50700FA6300 /* VMDisplayWindowController.swift */; }; - CE6B240B25F1F3CE0020D43E /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = CE6B240A25F1F3CE0020D43E /* main.c */; }; - CE6B241125F1F53E0020D43E /* Bootstrap.c in Sources */ = {isa = PBXBuildFile; fileRef = CE0DF17125A80B6300A51894 /* Bootstrap.c */; }; - CE6B241525F1F5780020D43E /* QEMULauncher in CopyFiles */ = {isa = PBXBuildFile; fileRef = CE6B240825F1F3CE0020D43E /* QEMULauncher */; settings = {ATTRIBUTES = (CodeSignOnCopy, ); }; }; CE6D21DC2553A6ED001D29C5 /* VMConfirmActionModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE6D21DB2553A6ED001D29C5 /* VMConfirmActionModifier.swift */; }; CE6D21DD2553A6ED001D29C5 /* VMConfirmActionModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE6D21DB2553A6ED001D29C5 /* VMConfirmActionModifier.swift */; }; CE772AAC25C8B0F600E4E379 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE772AAB25C8B0F600E4E379 /* ContentView.swift */; }; @@ -1138,11 +1138,11 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - CE6B241225F1F55C0020D43E /* PBXContainerItemProxy */ = { + 8401FD7B269BECF200265F0D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = CE550BC1225947990063E575 /* Project object */; proxyType = 1; - remoteGlobalIDString = CE6B240725F1F3CE0020D43E; + remoteGlobalIDString = 8401FD61269BE9C500265F0D; remoteInfo = QEMULauncher; }; CE9A353226533A52005077CF /* PBXContainerItemProxy */ = { @@ -1319,14 +1319,15 @@ name = "Embed Libraries"; runOnlyForDeploymentPostprocessing = 0; }; - CE6B241425F1F5630020D43E /* CopyFiles */ = { + CE6B241425F1F5630020D43E /* Embed Launcher */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 6; files = ( - CE6B241525F1F5780020D43E /* QEMULauncher in CopyFiles */, + 8401FD7A269BECE200265F0D /* QEMULauncher.app in Embed Launcher */, ); + name = "Embed Launcher"; runOnlyForDeploymentPostprocessing = 0; }; CEA45F71263519B5002FA97D /* Embed Libraries */ = { @@ -1430,6 +1431,7 @@ 52873FDA247F5B1B0063E4C8 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/InfoPlist.strings"; sourceTree = ""; }; 83FBDD53242FA71900D2C5D7 /* VMDisplayMetalViewController+Pointer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "VMDisplayMetalViewController+Pointer.h"; sourceTree = ""; }; 83FBDD55242FA7BC00D2C5D7 /* VMDisplayMetalViewController+Pointer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "VMDisplayMetalViewController+Pointer.m"; sourceTree = ""; }; + 8401FD62269BE9C500265F0D /* QEMULauncher.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = QEMULauncher.app; sourceTree = BUILT_PRODUCTS_DIR; }; C8958B6C243634DA002D86B4 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/Main.strings; sourceTree = ""; }; C8958B6D243634DA002D86B4 /* ko */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ko; path = ko.lproj/Localizable.strings; sourceTree = ""; }; CE020BA224AEDC7C00B44AB6 /* UTMData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UTMData.swift; sourceTree = ""; }; @@ -1863,7 +1865,6 @@ CE66450E2269355F00B0849A /* CocoaSpice.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CocoaSpice.h; sourceTree = ""; }; CE66450F226935F000B0849A /* CSInput.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CSInput.h; sourceTree = ""; }; CE664510226935F000B0849A /* CSInput.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CSInput.m; sourceTree = ""; }; - CE6B240825F1F3CE0020D43E /* QEMULauncher */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = QEMULauncher; sourceTree = BUILT_PRODUCTS_DIR; }; CE6B240A25F1F3CE0020D43E /* main.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = ""; }; CE6B240F25F1F43A0020D43E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; CE6B241025F1F4B30020D43E /* QEMULauncher.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = QEMULauncher.entitlements; sourceTree = ""; }; @@ -2037,6 +2038,13 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 8401FD5F269BE9C500265F0D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; CE2D932B24AD46670059923A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -2775,9 +2783,9 @@ CE2D93BE24AD46670059923A /* UTM.app */, CE2D951C24AD48BE0059923A /* UTM.app */, CEBDA1DA24D8BDDA0010B5EC /* QEMUHelper.xpc */, - CE6B240825F1F3CE0020D43E /* QEMULauncher */, CEA45FB9263519B5002FA97D /* UTM SE.app */, CE9A352D26533A51005077CF /* JailbreakInterposer.framework */, + 8401FD62269BE9C500265F0D /* QEMULauncher.app */, ); name = Products; sourceTree = ""; @@ -3081,6 +3089,23 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ + 8401FD61269BE9C500265F0D /* QEMULauncher */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8401FD6E269BE9C600265F0D /* Build configuration list for PBXNativeTarget "QEMULauncher" */; + buildPhases = ( + 8401FD5E269BE9C500265F0D /* Sources */, + 8401FD5F269BE9C500265F0D /* Frameworks */, + 8401FD60269BE9C500265F0D /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = QEMULauncher; + productName = QEMULauncher; + productReference = 8401FD62269BE9C500265F0D /* QEMULauncher.app */; + productType = "com.apple.product-type.application"; + }; CE2D926824AD46670059923A /* iOS */ = { isa = PBXNativeTarget; buildConfigurationList = CE2D93BB24AD46670059923A /* Build configuration list for PBXNativeTarget "iOS" */; @@ -3129,21 +3154,6 @@ productReference = CE2D951C24AD48BE0059923A /* UTM.app */; productType = "com.apple.product-type.application"; }; - CE6B240725F1F3CE0020D43E /* QEMULauncher */ = { - isa = PBXNativeTarget; - buildConfigurationList = CE6B240E25F1F3CE0020D43E /* Build configuration list for PBXNativeTarget "QEMULauncher" */; - buildPhases = ( - CE6B240425F1F3CE0020D43E /* Sources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = QEMULauncher; - productName = QEMULauncher; - productReference = CE6B240825F1F3CE0020D43E /* QEMULauncher */; - productType = "com.apple.product-type.tool"; - }; CE9A352C26533A51005077CF /* JailbreakInterposer */ = { isa = PBXNativeTarget; buildConfigurationList = CE9A353826533A52005077CF /* Build configuration list for PBXNativeTarget "JailbreakInterposer" */; @@ -3192,12 +3202,12 @@ CEBDA1D624D8BDDA0010B5EC /* Sources */, CEBDA1D724D8BDDA0010B5EC /* Frameworks */, CEBDA1D824D8BDDA0010B5EC /* Resources */, - CE6B241425F1F5630020D43E /* CopyFiles */, + CE6B241425F1F5630020D43E /* Embed Launcher */, ); buildRules = ( ); dependencies = ( - CE6B241325F1F55C0020D43E /* PBXTargetDependency */, + 8401FD7C269BECF200265F0D /* PBXTargetDependency */, ); name = QEMUHelper; productName = QEMUHelper; @@ -3214,6 +3224,9 @@ LastUpgradeCheck = 1020; ORGANIZATIONNAME = osy; TargetAttributes = { + 8401FD61269BE9C500265F0D = { + CreatedOnToolsVersion = 12.4; + }; CE2D926824AD46670059923A = { LastSwiftMigration = 1200; }; @@ -3221,9 +3234,6 @@ CreatedOnToolsVersion = 12.0; LastSwiftMigration = 1200; }; - CE6B240725F1F3CE0020D43E = { - CreatedOnToolsVersion = 12.5; - }; CE9A352C26533A51005077CF = { CreatedOnToolsVersion = 12.4; }; @@ -3256,13 +3266,20 @@ CEA45E1F263519B5002FA97D /* iOS-TCI */, CE2D951B24AD48BE0059923A /* macOS */, CEBDA1D924D8BDDA0010B5EC /* QEMUHelper */, - CE6B240725F1F3CE0020D43E /* QEMULauncher */, + 8401FD61269BE9C500265F0D /* QEMULauncher */, CE9A352C26533A51005077CF /* JailbreakInterposer */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 8401FD60269BE9C500265F0D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; CE2D936924AD46670059923A /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -3399,6 +3416,15 @@ /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 8401FD5E269BE9C500265F0D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8401FD72269BEB3000265F0D /* Bootstrap.c in Sources */, + 8401FD71269BEB2B00265F0D /* main.c in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; CE2D926924AD46670059923A /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -3883,15 +3909,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - CE6B240425F1F3CE0020D43E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - CE6B241125F1F53E0020D43E /* Bootstrap.c in Sources */, - CE6B240B25F1F3CE0020D43E /* main.c in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; CE9A352926533A51005077CF /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -4170,10 +4187,10 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - CE6B241325F1F55C0020D43E /* PBXTargetDependency */ = { + 8401FD7C269BECF200265F0D /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = CE6B240725F1F3CE0020D43E /* QEMULauncher */; - targetProxy = CE6B241225F1F55C0020D43E /* PBXContainerItemProxy */; + target = 8401FD61269BE9C500265F0D /* QEMULauncher */; + targetProxy = 8401FD7B269BECF200265F0D /* PBXContainerItemProxy */; }; CE9A353326533A52005077CF /* PBXTargetDependency */ = { isa = PBXTargetDependency; @@ -4264,6 +4281,52 @@ /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ + 8401FD6F269BE9C600265F0D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_ENTITLEMENTS = QEMULauncher/QEMULauncher.entitlements; + CODE_SIGN_IDENTITY = "$(CODE_SIGN_IDENTITY_MAC:default=-)"; + CODE_SIGN_INJECT_BASE_ENTITLEMENTS = NO; + CODE_SIGN_STYLE = Manual; + COMBINE_HIDPI_IMAGES = YES; + ENABLE_HARDENED_RUNTIME = YES; + GENERATE_INFOPLIST_FILE = YES; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../../../../../../../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 11.0; + PRODUCT_BUNDLE_IDENTIFIER = "$(PRODUCT_BUNDLE_PREFIX:default=com.utmapp).QEMULauncher"; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = "$(PROVISIONING_PROFILE_SPECIFIER_LAUNCHER:default=)"; + SDKROOT = macosx; + SWIFT_EMIT_LOC_STRINGS = YES; + }; + name = Debug; + }; + 8401FD70269BE9C600265F0D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_ENTITLEMENTS = QEMULauncher/QEMULauncher.entitlements; + CODE_SIGN_IDENTITY = "$(CODE_SIGN_IDENTITY_MAC:default=-)"; + CODE_SIGN_INJECT_BASE_ENTITLEMENTS = NO; + CODE_SIGN_STYLE = Manual; + COMBINE_HIDPI_IMAGES = YES; + ENABLE_HARDENED_RUNTIME = YES; + GENERATE_INFOPLIST_FILE = YES; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../../../../../../../Frameworks", + ); + MACOSX_DEPLOYMENT_TARGET = 11.0; + PRODUCT_BUNDLE_IDENTIFIER = "$(PRODUCT_BUNDLE_PREFIX:default=com.utmapp).QEMULauncher"; + PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = "$(PROVISIONING_PROFILE_SPECIFIER_LAUNCHER:default=)"; + SDKROOT = macosx; + SWIFT_EMIT_LOC_STRINGS = YES; + }; + name = Release; + }; CE2D93BC24AD46670059923A /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -4521,48 +4584,6 @@ }; name = Release; }; - CE6B240C25F1F3CE0020D43E /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CODE_SIGN_ENTITLEMENTS = QEMULauncher/QEMULauncher.entitlements; - CODE_SIGN_IDENTITY = "$(CODE_SIGN_IDENTITY_MAC:default=-)"; - CODE_SIGN_INJECT_BASE_ENTITLEMENTS = NO; - CODE_SIGN_STYLE = Automatic; - CREATE_INFOPLIST_SECTION_IN_BINARY = YES; - ENABLE_HARDENED_RUNTIME = YES; - INFOPLIST_FILE = QEMULauncher/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "@executable_path/../../../../Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 11.0; - PRODUCT_BUNDLE_IDENTIFIER = "$(PRODUCT_BUNDLE_PREFIX:default=com.utmapp).QEMULauncher"; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = macosx; - SKIP_INSTALL = YES; - }; - name = Debug; - }; - CE6B240D25F1F3CE0020D43E /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CODE_SIGN_ENTITLEMENTS = QEMULauncher/QEMULauncher.entitlements; - CODE_SIGN_IDENTITY = "$(CODE_SIGN_IDENTITY_MAC:default=-)"; - CODE_SIGN_INJECT_BASE_ENTITLEMENTS = NO; - CODE_SIGN_STYLE = Automatic; - CREATE_INFOPLIST_SECTION_IN_BINARY = YES; - ENABLE_HARDENED_RUNTIME = YES; - INFOPLIST_FILE = QEMULauncher/Info.plist; - LD_RUNPATH_SEARCH_PATHS = "@executable_path/../../../../Frameworks"; - MACOSX_DEPLOYMENT_TARGET = 11.0; - PRODUCT_BUNDLE_IDENTIFIER = "$(PRODUCT_BUNDLE_PREFIX:default=com.utmapp).QEMULauncher"; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SDKROOT = macosx; - SKIP_INSTALL = YES; - }; - name = Release; - }; CE9A353626533A52005077CF /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -4717,6 +4738,15 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 8401FD6E269BE9C600265F0D /* Build configuration list for PBXNativeTarget "QEMULauncher" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8401FD6F269BE9C600265F0D /* Debug */, + 8401FD70269BE9C600265F0D /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; CE2D93BB24AD46670059923A /* Build configuration list for PBXNativeTarget "iOS" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -4744,15 +4774,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - CE6B240E25F1F3CE0020D43E /* Build configuration list for PBXNativeTarget "QEMULauncher" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - CE6B240C25F1F3CE0020D43E /* Debug */, - CE6B240D25F1F3CE0020D43E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; CE9A353826533A52005077CF /* Build configuration list for PBXNativeTarget "JailbreakInterposer" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/scripts/package_mac.sh b/scripts/package_mac.sh index 81b74ee5..9c9b4c0d 100755 --- a/scripts/package_mac.sh +++ b/scripts/package_mac.sh @@ -69,6 +69,7 @@ cp "$BASEDIR/../QEMUHelper/QEMUHelper.entitlements" "$HELPER_ENTITLEMENTS" if [ "$MODE" == "unsigned" ]; then /usr/libexec/PlistBuddy -c "Delete :com.apple.vm.device-access" "$UTM_ENTITLEMENTS" /usr/libexec/PlistBuddy -c "Delete :com.apple.vm.networking" "$HELPER_ENTITLEMENTS" + /usr/libexec/PlistBuddy -c "Delete :com.apple.vm.networking" "$LAUNCHER_ENTITLEMENTS" /usr/libexec/PlistBuddy -c "Add :com.apple.security.cs.disable-library-validation bool true" "$UTM_ENTITLEMENTS" /usr/libexec/PlistBuddy -c "Add :com.apple.security.cs.disable-library-validation bool true" "$LAUNCHER_ENTITLEMENTS" /usr/libexec/PlistBuddy -c "Add :com.apple.security.cs.disable-library-validation bool true" "$HELPER_ENTITLEMENTS"