From 2c4ccf7b77b9d0841763d9c00e14fd9dc3037d89 Mon Sep 17 00:00:00 2001 From: Tom Poole Date: Thu, 19 Dec 2019 11:24:46 +0000 Subject: [PATCH] Projucer: Fixed an issue when using the macOS hardened runtime in plug-in projects --- .../ProjectSaving/jucer_ProjectExport_Xcode.h | 29 ++++++++++--------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h index 791ed5048c..e5b2c79895 100644 --- a/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h +++ b/extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h @@ -977,6 +977,11 @@ public: return String ("Info-") + String (getName()).replace (" ", "_") + String (".plist"); } + String getEntitlementsFilename() const + { + return String (getName()).replace (" ", "_") + String (".entitlements"); + } + String xcodePackageType, xcodeBundleSignature, xcodeBundleExtension; String xcodeProductType, xcodeFileType; String xcodeOtherRezFlags, xcodeBundleIDSubPath; @@ -1356,7 +1361,7 @@ public: s.set ("DEVELOPMENT_TEAM", owner.getDevelopmentTeamIDString()); if (shouldAddEntitlements()) - s.set ("CODE_SIGN_ENTITLEMENTS", owner.getEntitlementsFileName().quoted()); + s.set ("CODE_SIGN_ENTITLEMENTS", getEntitlementsFilename().quoted()); { auto cppStandard = owner.project.getCppStandardString(); @@ -2128,7 +2133,8 @@ private: void addFilesAndGroupsToProject (StringArray& topLevelGroupIDs) const { - addEntitlementsFile(); + for (auto* target : targets) + addEntitlementsFile (*target); for (auto& group : getAllGroups()) { @@ -3081,12 +3087,7 @@ private: return {}; } - String getEntitlementsFileName() const - { - return project.getProjectFilenameRootString() + String (".entitlements"); - } - - StringPairArray getEntitlements() const + StringPairArray getEntitlements (XcodeTarget& target) const { StringPairArray entitlements; @@ -3097,7 +3098,7 @@ private: if (project.shouldEnableIAA()) entitlements.set ("inter-app-audio", ""); } - else + else if (target.type == XcodeTarget::AudioUnitv3PlugIn) { entitlements.set ("com.apple.security.app-sandbox", ""); } @@ -3152,7 +3153,7 @@ private: return entitlements; } - String addEntitlementsFile() const + String addEntitlementsFile (XcodeTarget& target) const { String content = "\n" @@ -3160,7 +3161,7 @@ private: "\n" "\n"; - auto entitlements = getEntitlements(); + auto entitlements = getEntitlements (target); auto keys = entitlements.getAllKeys(); for (auto& key : keys) @@ -3171,11 +3172,11 @@ private: content += "\n" "\n"; - auto entitlementsFile = getTargetFolder().getChildFile (getEntitlementsFileName()); + auto entitlementsFile = getTargetFolder().getChildFile (target.getEntitlementsFilename()); overwriteFileIfDifferentOrThrow (entitlementsFile, content); - RelativePath plistPath (entitlementsFile, getTargetFolder(), RelativePath::buildTargetFolder); - return addFile (plistPath, false, false, false, false, nullptr, {}); + RelativePath entitlementsPath (entitlementsFile, getTargetFolder(), RelativePath::buildTargetFolder); + return addFile (entitlementsPath, false, false, false, false, nullptr, {}); } String addProjectItem (const Project::Item& projectItem) const