| @@ -34,32 +34,55 @@ namespace | |||||
| static const StringArray iOSVersions { "9.0", "9.1", "9.2", "9.3", "10.0", "10.1", "10.2", "10.3", | static const StringArray iOSVersions { "9.0", "9.1", "9.2", "9.3", "10.0", "10.1", "10.2", "10.3", | ||||
| "11.0", "12.0", "13.0" }; | "11.0", "12.0", "13.0" }; | ||||
| static const int oldestDeploymentTarget = 7; | |||||
| static const int defaultDeploymentTarget = 11; | |||||
| static const int oldestSDKVersion = 11; | |||||
| static const int currentSDKVersion = 15; | |||||
| static const int minimumAUv3SDKVersion = 11; | |||||
| static const char* const macOSVersions[] { "10.7", "10.8", "10.9", "10.10", "10.11", "10.12", "10.13", | |||||
| "10.14", "10.15", "10.16", "11.0" }; | |||||
| static String getVersionName (int version) { return "10." + String (version); } | |||||
| static String getSDKDisplayName (int version) { return getVersionName (version) + " SDK"; } | |||||
| static String getSDKRootName (int version) { return "macosx" + getVersionName (version); } | |||||
| class MacOSVersion | |||||
| { | |||||
| public: | |||||
| MacOSVersion() = default; | |||||
| explicit MacOSVersion (int i) : index (i) {} | |||||
| bool operator< (const MacOSVersion& other) const { return index < other.index; } | |||||
| bool operator== (const MacOSVersion& other) const { return index == other.index; } | |||||
| bool operator!= (const MacOSVersion& other) const { return index != other.index; } | |||||
| MacOSVersion& operator++() | |||||
| { | |||||
| ++index; | |||||
| return *this; | |||||
| } | |||||
| String getName() const { return macOSVersions[index]; } | |||||
| String getDisplayName() const { return getName() + " SDK"; } | |||||
| String getRootName() const { return "macosx" + getName(); } | |||||
| private: | |||||
| int index{}; | |||||
| }; | |||||
| static const MacOSVersion nextMacOSVersion { numElementsInArray (macOSVersions) }; | |||||
| static const MacOSVersion oldestDeploymentTarget { 0 }; | |||||
| static const MacOSVersion macOSDefaultVersion { 4 }; | |||||
| static const MacOSVersion oldestSDKVersion { 4 }; | |||||
| static const MacOSVersion minimumAUv3SDKVersion { 4 }; | |||||
| static String getOSXSDKVersion (const String& sdkVersion) | static String getOSXSDKVersion (const String& sdkVersion) | ||||
| { | { | ||||
| for (int v = oldestSDKVersion; v <= currentSDKVersion; ++v) | |||||
| if (sdkVersion == getSDKDisplayName (v)) | |||||
| return getSDKRootName (v); | |||||
| for (auto v = oldestSDKVersion; v < nextMacOSVersion; ++v) | |||||
| if (sdkVersion == v.getDisplayName()) | |||||
| return v.getRootName(); | |||||
| return "macosx"; | return "macosx"; | ||||
| } | } | ||||
| template<class ContainerType> | |||||
| static ContainerType getSDKChoiceList (int oldestVersion, bool displayName) | |||||
| template <class ContainerType> | |||||
| static ContainerType getSDKChoiceList (MacOSVersion oldestVersion, bool displayName) | |||||
| { | { | ||||
| ContainerType container; | ContainerType container; | ||||
| for (int v = oldestVersion; v <= currentSDKVersion; ++v) | |||||
| container.add (displayName ? getSDKDisplayName (v) : getVersionName (v)); | |||||
| for (auto v = oldestVersion; v < nextMacOSVersion; ++v) | |||||
| container.add (displayName ? v.getDisplayName() : v.getName()); | |||||
| return container; | return container; | ||||
| } | } | ||||
| @@ -680,7 +703,7 @@ protected: | |||||
| : BuildConfiguration (p, t, e), | : BuildConfiguration (p, t, e), | ||||
| iOS (isIOS), | iOS (isIOS), | ||||
| osxSDKVersion (config, Ids::osxSDK, getUndoManager()), | osxSDKVersion (config, Ids::osxSDK, getUndoManager()), | ||||
| osxDeploymentTarget (config, Ids::osxCompatibility, getUndoManager(), getSDKDisplayName (defaultDeploymentTarget)), | |||||
| osxDeploymentTarget (config, Ids::osxCompatibility, getUndoManager(), macOSDefaultVersion.getDisplayName()), | |||||
| iosDeploymentTarget (config, Ids::iosCompatibility, getUndoManager(), iOSDefaultVersion), | iosDeploymentTarget (config, Ids::iosCompatibility, getUndoManager(), iOSDefaultVersion), | ||||
| osxArchitecture (config, Ids::osxArchitecture, getUndoManager(), osxArch_Default), | osxArchitecture (config, Ids::osxArchitecture, getUndoManager(), osxArch_Default), | ||||
| customXcodeFlags (config, Ids::customXcodeFlags, getUndoManager()), | customXcodeFlags (config, Ids::customXcodeFlags, getUndoManager()), | ||||
| @@ -732,7 +755,7 @@ protected: | |||||
| "The minimum version of OSX that the target binary will be compatible with."); | "The minimum version of OSX that the target binary will be compatible with."); | ||||
| props.add (new ChoicePropertyComponent (osxArchitecture, "OSX Architecture", | props.add (new ChoicePropertyComponent (osxArchitecture, "OSX Architecture", | ||||
| { "Native architecture of build machine", "Universal Binary (32-bit)", "Universal Binary (32/64-bit)", "64-bit Intel" }, | |||||
| { "Native architecture of build machine", "Universal Binary (32-bit)", "Universal Binary (32/64-bit)", "Universal Binary (64-bit)" }, | |||||
| { osxArch_Native, osxArch_32BitUniversal, osxArch_64BitUniversal, osxArch_64Bit }), | { osxArch_Native, osxArch_32BitUniversal, osxArch_64BitUniversal, osxArch_64Bit }), | ||||
| "The type of OSX binary that will be produced."); | "The type of OSX binary that will be produced."); | ||||
| } | } | ||||
| @@ -1813,13 +1836,14 @@ public: | |||||
| String getOSXDeploymentTarget (const String& deploymentTarget) const | String getOSXDeploymentTarget (const String& deploymentTarget) const | ||||
| { | { | ||||
| auto minVersion = (type == Target::AudioUnitv3PlugIn ? minimumAUv3SDKVersion : oldestDeploymentTarget); | |||||
| auto minVersion = (type == Target::AudioUnitv3PlugIn ? minimumAUv3SDKVersion | |||||
| : oldestDeploymentTarget); | |||||
| for (int v = minVersion; v <= currentSDKVersion; ++v) | |||||
| if (deploymentTarget == getSDKDisplayName (v)) | |||||
| return getVersionName (v); | |||||
| for (auto v = minVersion; v < nextMacOSVersion; ++v) | |||||
| if (deploymentTarget == v.getDisplayName()) | |||||
| return v.getName(); | |||||
| return getVersionName (minVersion); | |||||
| return minVersion.getName(); | |||||
| } | } | ||||
| //============================================================================== | //============================================================================== | ||||