| 
							- /*
 -   ==============================================================================
 - 
 -    This file is part of the JUCE library.
 -    Copyright (c) 2022 - Raw Material Software Limited
 - 
 -    JUCE is an open source library subject to commercial or open-source
 -    licensing.
 - 
 -    By using JUCE, you agree to the terms of both the JUCE 7 End-User License
 -    Agreement and JUCE Privacy Policy.
 - 
 -    End User License Agreement: www.juce.com/juce-7-licence
 -    Privacy Policy: www.juce.com/juce-privacy-policy
 - 
 -    Or: You may also use this code under the terms of the GPL v3 (see
 -    www.gnu.org/licenses).
 - 
 -    JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
 -    EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
 -    DISCLAIMED.
 - 
 -   ==============================================================================
 - */
 - 
 - namespace juce
 - {
 - namespace build_tools
 - {
 -     String EntitlementOptions::getEntitlementsFileContent() const
 -     {
 -         String content =
 -             "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
 -             "<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n"
 -             "<plist version=\"1.0\">\n"
 -             "<dict>\n";
 - 
 -         const auto entitlements = getEntitlements();
 - 
 -         for (auto& key : entitlements.getAllKeys())
 -             content += "\t<key>" + key + "</key>\n\t" + entitlements[key] + "\n";
 - 
 -         return content + "</dict>\n</plist>\n";
 -     }
 - 
 -     StringPairArray EntitlementOptions::getEntitlements() const
 -     {
 -         StringPairArray entitlements;
 - 
 -         if (isiOS)
 -         {
 -             // The Inter-App Audio entitlement is currently deprecated, but it
 -             // also "provides access to Audio Unit extensions". Without the
 -             // entitlement iOS apps are unable to access AUv3 plug-ins.
 -             if ((isAudioPluginProject && shouldEnableIAA) || isAUPluginHost)
 -                 entitlements.set ("inter-app-audio", "<true/>");
 - 
 -             if (isiCloudPermissionsEnabled)
 -             {
 -                 entitlements.set ("com.apple.developer.icloud-container-identifiers",
 -                                   "<array>\n"
 -                                   "        <string>iCloud.$(CFBundleIdentifier)</string>\n"
 -                                   "    </array>");
 - 
 -                 entitlements.set ("com.apple.developer.icloud-services",
 -                                   "<array>\n"
 -                                   "        <string>CloudDocuments</string>\n"
 -                                   "    </array>");
 - 
 -                 entitlements.set ("com.apple.developer.ubiquity-container-identifiers",
 -                                   "<array>\n"
 -                                   "        <string>iCloud.$(CFBundleIdentifier)</string>\n"
 -                                   "    </array>");
 -             }
 -         }
 - 
 -         if (isPushNotificationsEnabled)
 -             entitlements.set (isiOS ? "aps-environment"
 -                                     : "com.apple.developer.aps-environment",
 -                               "<string>development</string>");
 - 
 -         if (isAppGroupsEnabled)
 -         {
 -             auto appGroups = StringArray::fromTokens (appGroupIdString, ";", {});
 -             String groups = "<array>";
 - 
 -             for (auto group : appGroups)
 -                 groups += "\n\t\t<string>" + group.trim() + "</string>";
 - 
 -             groups += "\n\t</array>";
 - 
 -             entitlements.set ("com.apple.security.application-groups", groups);
 -         }
 - 
 -         if (isHardenedRuntimeEnabled)
 -             for (auto& option : hardenedRuntimeOptions)
 -                 entitlements.set (option, "<true/>");
 - 
 -         if (isAppSandboxEnabled || (! isiOS && isAudioPluginProject && type == ProjectType::Target::AudioUnitv3PlugIn))
 -         {
 -             entitlements.set ("com.apple.security.app-sandbox", "<true/>");
 - 
 -             if (isAppSandboxInhertianceEnabled)
 -             {
 -                 // no other sandbox options can be specified if sandbox inheritance is enabled!
 -                 jassert (appSandboxOptions.isEmpty());
 -                 jassert (appSandboxTemporaryPaths.empty());
 - 
 -                 entitlements.set ("com.apple.security.inherit", "<true/>");
 -             }
 - 
 -             if (isAppSandboxEnabled)
 -             {
 -                 for (auto& option : appSandboxOptions)
 -                     entitlements.set (option, "<true/>");
 - 
 -                 for (auto& option : appSandboxTemporaryPaths)
 -                 {
 -                     String paths = "<array>";
 - 
 -                     for (const auto& path : option.values)
 -                         paths += "\n\t\t<string>" + path + "</string>";
 - 
 -                     paths += "\n\t</array>";
 -                     entitlements.set (option.key, paths);
 -                 }
 -             }
 -         }
 - 
 -         if (isNetworkingMulticastEnabled)
 -             entitlements.set ("com.apple.developer.networking.multicast", "<true/>");
 - 
 -         return entitlements;
 -     }
 - }
 - }
 
 
  |