| @@ -595,8 +595,6 @@ public: | |||||
| xcodeBundleExtension = ".aaxplugin"; | xcodeBundleExtension = ".aaxplugin"; | ||||
| xcodeProductType = "com.apple.product-type.bundle"; | xcodeProductType = "com.apple.product-type.bundle"; | ||||
| xcodeCopyToProductInstallPathAfterBuild = true; | xcodeCopyToProductInstallPathAfterBuild = true; | ||||
| addExtraAAXTargetSettings(); | |||||
| break; | break; | ||||
| case RTASPlugIn: | case RTASPlugIn: | ||||
| @@ -867,23 +865,11 @@ public: | |||||
| } | } | ||||
| else | else | ||||
| { | { | ||||
| const String sdk (config.osxSDKVersion.get()); | |||||
| const String sdkCompat (config.osxDeploymentTarget.get()); | |||||
| // The AUv3 target always needs to be at least 10.11 | |||||
| int oldestAllowedDeploymentTarget = (type == Target::AudioUnitv3PlugIn ? minimumAUv3SDKVersion | |||||
| : oldestSDKVersion); | |||||
| String sdkRoot; | |||||
| s.add ("MACOSX_DEPLOYMENT_TARGET = " + getOSXDeploymentTarget(config, &sdkRoot)); | |||||
| // if the user doesn't set it, then use the last known version that works well with JUCE | |||||
| String deploymentTarget = "10.11"; | |||||
| for (int ver = oldestAllowedDeploymentTarget; ver <= currentSDKVersion; ++ver) | |||||
| { | |||||
| if (sdk == getSDKName (ver)) s.add ("SDKROOT = macosx10." + String (ver)); | |||||
| if (sdkCompat == getSDKName (ver)) deploymentTarget = "10." + String (ver); | |||||
| } | |||||
| s.add ("MACOSX_DEPLOYMENT_TARGET = " + deploymentTarget); | |||||
| if (sdkRoot.isNotEmpty()) | |||||
| s.add ("SDKROOT = " + sdkRoot); | |||||
| s.add ("MACOSX_DEPLOYMENT_TARGET_ppc = 10.4"); | s.add ("MACOSX_DEPLOYMENT_TARGET_ppc = 10.4"); | ||||
| s.add ("SDKROOT_ppc = macosx10.5"); | s.add ("SDKROOT_ppc = macosx10.5"); | ||||
| @@ -1005,8 +991,10 @@ public: | |||||
| if (getTargetFileType() == pluginBundle) | if (getTargetFileType() == pluginBundle) | ||||
| flags.add (owner.isiOS() ? "-bitcode_bundle" : "-bundle"); | flags.add (owner.isiOS() ? "-bitcode_bundle" : "-bundle"); | ||||
| const Array<RelativePath>& extraLibs = config.isDebug() ? xcodeExtraLibrariesDebug | |||||
| : xcodeExtraLibrariesRelease; | |||||
| Array<RelativePath> extraLibs (config.isDebug() ? xcodeExtraLibrariesDebug | |||||
| : xcodeExtraLibrariesRelease); | |||||
| addExtraLibsForTargetType (config, extraLibs); | |||||
| for (auto& lib : extraLibs) | for (auto& lib : extraLibs) | ||||
| { | { | ||||
| @@ -1319,12 +1307,19 @@ public: | |||||
| xcodeExtraPListEntries.add (plistEntry); | xcodeExtraPListEntries.add (plistEntry); | ||||
| } | } | ||||
| void addExtraAAXTargetSettings() | |||||
| void addExtraLibsForTargetType (const BuildConfiguration& config, Array<RelativePath>& extraLibs) const | |||||
| { | { | ||||
| auto aaxLibsFolder = RelativePath (owner.getAAXPathValue().toString(), RelativePath::projectFolder).getChildFile ("Libs"); | |||||
| if (type == AAXPlugIn) | |||||
| { | |||||
| auto aaxLibsFolder | |||||
| = RelativePath (owner.getAAXPathValue().toString(), RelativePath::projectFolder) | |||||
| .getChildFile ("Libs"); | |||||
| String libraryPath (config.isDebug() ? "Debug/libAAXLibrary" : "Release/libAAXLibrary"); | |||||
| libraryPath += (isUsingClangCppLibrary (config) ? "_libcpp.a" : ".a"); | |||||
| xcodeExtraLibrariesDebug.add (aaxLibsFolder.getChildFile ("Debug/libAAXLibrary.a")); | |||||
| xcodeExtraLibrariesRelease.add (aaxLibsFolder.getChildFile ("Release/libAAXLibrary.a")); | |||||
| extraLibs.add (aaxLibsFolder.getChildFile (libraryPath)); | |||||
| } | |||||
| } | } | ||||
| StringArray getTargetExtraHeaderSearchPaths() const | StringArray getTargetExtraHeaderSearchPaths() const | ||||
| @@ -1383,6 +1378,45 @@ public: | |||||
| xcodeExtraLibrariesRelease.add (rtasFolder.getChildFile ("MacBag/Libs/Release/libPluginLibrary.a")); | xcodeExtraLibrariesRelease.add (rtasFolder.getChildFile ("MacBag/Libs/Release/libPluginLibrary.a")); | ||||
| } | } | ||||
| bool isUsingClangCppLibrary (const BuildConfiguration& config) const | |||||
| { | |||||
| if (auto xcodeConfig = dynamic_cast<const XcodeBuildConfiguration*> (&config)) | |||||
| { | |||||
| const String& configValue = xcodeConfig->cppStandardLibrary.get(); | |||||
| if (configValue.isNotEmpty()) | |||||
| return (configValue == "libc++"); | |||||
| const int minorOSXDeploymentTarget | |||||
| = getOSXDeploymentTarget (*xcodeConfig).fromLastOccurrenceOf (".", false, false).getIntValue(); | |||||
| return (minorOSXDeploymentTarget > 8); | |||||
| } | |||||
| return false; | |||||
| } | |||||
| String getOSXDeploymentTarget (const XcodeBuildConfiguration& config, String* sdkRoot = nullptr) const | |||||
| { | |||||
| const String sdk (config.osxSDKVersion.get()); | |||||
| const String sdkCompat (config.osxDeploymentTarget.get()); | |||||
| // The AUv3 target always needs to be at least 10.11 | |||||
| int oldestAllowedDeploymentTarget = (type == Target::AudioUnitv3PlugIn ? minimumAUv3SDKVersion | |||||
| : oldestSDKVersion); | |||||
| // if the user doesn't set it, then use the last known version that works well with JUCE | |||||
| String deploymentTarget = "10.11"; | |||||
| for (int ver = oldestAllowedDeploymentTarget; ver <= currentSDKVersion; ++ver) | |||||
| { | |||||
| if (sdk == getSDKName (ver) && sdkRoot != nullptr) *sdkRoot = String ("macosx10." + String (ver)); | |||||
| if (sdkCompat == getSDKName (ver)) deploymentTarget = "10." + String (ver); | |||||
| } | |||||
| return deploymentTarget; | |||||
| } | |||||
| //============================================================================== | //============================================================================== | ||||
| const XCodeProjectExporter& owner; | const XCodeProjectExporter& owner; | ||||