Skip to content

Commit

Permalink
Removed the OS X 10.5 and 10.6 deployment target options from the Pro…
Browse files Browse the repository at this point in the history
…jucer and enabled more C++11 features across all platforms
  • Loading branch information
tpoole committed Apr 17, 2018
1 parent 45bfb9d commit c7c26fa
Show file tree
Hide file tree
Showing 33 changed files with 198 additions and 548 deletions.
25 changes: 23 additions & 2 deletions BREAKING-CHANGES.txt
Expand Up @@ -4,6 +4,27 @@ JUCE breaking changes
Develop
=======

Change
------
JUCE no longer supports OS X deployment targets earlier than 10.7.

Possible Issues
---------------
If you were previously targeting OS X 10.5 or 10.6 you will no longer be able
to build JUCE-based products compatible with those platforms.

Workaround
----------
None. With the appropriate JUCE licence you may be able to backport new JUCE
features, but there will be no official support for this.

Rationale
---------
Increasing the minimum supported OS X version allows the JUCE codebase to make
use of the more modern C++ features found in the 10.7 standard library, which
in turn will increase thread and memory safety.


Version 5.3.0
=============

Expand Down Expand Up @@ -75,8 +96,8 @@ InAppPurchases object yourself.

Possible Issues
---------------
Any code using InAppPurchases needs to be updated to retrieve a singleton pointer
to InAppPurchases.
Any code using InAppPurchases needs to be updated to retrieve a singleton
pointer to InAppPurchases.

Workaround
----------
Expand Down
Expand Up @@ -214,6 +214,7 @@
BFDAF16175D03695EEB466BC, ); name = Source; sourceTree = "<group>"; };
B18D059E5616FA729F764229 = {isa = XCBuildConfiguration; buildSettings = {
CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_LINK_OBJC_RUNTIME = NO;
COMBINE_HIDPI_IMAGES = YES;
CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)";
Expand Down Expand Up @@ -248,6 +249,7 @@
USE_HEADERMAP = NO; }; name = Debug; };
69330F27DD2C71609336C7D2 = {isa = XCBuildConfiguration; buildSettings = {
CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_LINK_OBJC_RUNTIME = NO;
COMBINE_HIDPI_IMAGES = YES;
CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)";
Expand Down
Expand Up @@ -227,6 +227,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_LINK_OBJC_RUNTIME = NO;
CODE_SIGN_ENTITLEMENTS = "DemoRunner.entitlements";
COMBINE_HIDPI_IMAGES = YES;
Expand Down Expand Up @@ -260,6 +261,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_LINK_OBJC_RUNTIME = NO;
CODE_SIGN_ENTITLEMENTS = "DemoRunner.entitlements";
COMBINE_HIDPI_IMAGES = YES;
Expand Down
10 changes: 3 additions & 7 deletions examples/DemoRunner/Source/Demos/DemoPIPs1.cpp
Expand Up @@ -42,7 +42,7 @@
#include "../../../Audio/MPEDemo.h"
#include "../../../Audio/PluckedStringsDemo.h"

#if (defined (JUCE_STDLIB_HAS_STD_FUNCTION_SUPPORT)) && (defined (JUCE_HAS_CONSTEXPR))
#if JUCE_HAS_CONSTEXPR
#include "../../../Audio/SimpleFFTDemo.h"
#include "../../../BLOCKS/BlocksDrawingDemo.h"
#include "../../../BLOCKS/BlocksMonitorDemo.h"
Expand Down Expand Up @@ -71,9 +71,7 @@
#include "../../../Utilities/LiveConstantDemo.h"
#include "../../../Utilities/MultithreadingDemo.h"
#include "../../../Utilities/NetworkingDemo.h"
#if defined (JUCE_STDLIB_HAS_STD_FUNCTION_SUPPORT)
#include "../../../Utilities/OSCDemo.h"
#endif
#include "../../../Utilities/OSCDemo.h"
#include "../../../Utilities/SystemInfoDemo.h"
#include "../../../Utilities/TimersAndEventsDemo.h"
#include "../../../Utilities/UnitTestsDemo.h"
Expand All @@ -92,7 +90,7 @@ void registerDemos_One() noexcept
REGISTER_DEMO (MPEDemo, Audio, false)
REGISTER_DEMO (PluckedStringsDemo, Audio, false)

#if (defined (JUCE_STDLIB_HAS_STD_FUNCTION_SUPPORT)) && (defined (JUCE_HAS_CONSTEXPR))
#if JUCE_HAS_CONSTEXPR
REGISTER_DEMO (SimpleFFTDemo, Audio, false)
REGISTER_DEMO (BlocksDrawingDemo, BLOCKS, false)
REGISTER_DEMO (BlocksMonitorDemo, BLOCKS, false)
Expand Down Expand Up @@ -120,9 +118,7 @@ void registerDemos_One() noexcept
REGISTER_DEMO (LiveConstantDemo, Utilities, false)
REGISTER_DEMO (MultithreadingDemo, Utilities, false)
REGISTER_DEMO (NetworkingDemo, Utilities, false)
#if defined (JUCE_STDLIB_HAS_STD_FUNCTION_SUPPORT)
REGISTER_DEMO (OSCDemo, Utilities, false)
#endif
REGISTER_DEMO (SystemInfoDemo, Utilities, false)
REGISTER_DEMO (TimersAndEventsDemo, Utilities, false)
REGISTER_DEMO_WITH_FILENAME (UnitTestClasses::UnitTestsDemo, Utilities, UnitTestsDemo, false)
Expand Down
10 changes: 3 additions & 7 deletions examples/DemoRunner/Source/Demos/DemoPIPs2.cpp
Expand Up @@ -43,12 +43,10 @@
#include "../../../GUI/ComponentDemo.h"
#include "../../../GUI/ComponentTransformsDemo.h"
#include "../../../GUI/DialogsDemo.h"
#if JUCE_COMPILER_SUPPORTS_INITIALIZER_LISTS
#include "../../../GUI/FlexBoxDemo.h"
#endif
#include "../../../GUI/FlexBoxDemo.h"
#include "../../../GUI/FontsDemo.h"
#include "../../../GUI/GraphicsDemo.h"
#if JUCE_COMPILER_SUPPORTS_INITIALIZER_LISTS && JUCE_HAS_CONSTEXPR
#if JUCE_HAS_CONSTEXPR
#include "../../../GUI/GridDemo.h"
#endif
#include "../../../GUI/ImagesDemo.h"
Expand Down Expand Up @@ -84,12 +82,10 @@ void registerDemos_Two() noexcept
REGISTER_DEMO (ComponentDemo, GUI, false)
REGISTER_DEMO (ComponentTransformsDemo, GUI, false)
REGISTER_DEMO (DialogsDemo, GUI, false)
#if JUCE_COMPILER_SUPPORTS_INITIALIZER_LISTS
REGISTER_DEMO (FlexBoxDemo, GUI, false)
#endif
REGISTER_DEMO (FontsDemo, GUI, false)
REGISTER_DEMO (GraphicsDemo, GUI, false)
#if JUCE_COMPILER_SUPPORTS_INITIALIZER_LISTS && JUCE_HAS_CONSTEXPR
#if JUCE_HAS_CONSTEXPR
REGISTER_DEMO (GridDemo, GUI, false)
#endif
REGISTER_DEMO (ImagesDemo, GUI, false)
Expand Down
Expand Up @@ -125,6 +125,7 @@
1DFEAF972822E305E013CC06, ); name = Source; sourceTree = "<group>"; };
19B7C16D592FB25D09022191 = {isa = XCBuildConfiguration; buildSettings = {
CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_LINK_OBJC_RUNTIME = NO;
COMBINE_HIDPI_IMAGES = YES;
CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)";
Expand Down Expand Up @@ -156,6 +157,7 @@
USE_HEADERMAP = NO; }; name = Debug; };
B7A6988E30C0A68B01EDC53B = {isa = XCBuildConfiguration; buildSettings = {
CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_LINK_OBJC_RUNTIME = NO;
COMBINE_HIDPI_IMAGES = YES;
CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)";
Expand Down
Expand Up @@ -136,6 +136,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_LINK_OBJC_RUNTIME = NO;
COMBINE_HIDPI_IMAGES = YES;
CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)";
Expand Down Expand Up @@ -166,6 +167,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_LINK_OBJC_RUNTIME = NO;
COMBINE_HIDPI_IMAGES = YES;
CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)";
Expand Down
Expand Up @@ -197,6 +197,7 @@
D85C0D11EE4F6C73B9EB5BCD, ); name = Source; sourceTree = "<group>"; };
C8B793AC1BEFBE7A99BE8352 = {isa = XCBuildConfiguration; buildSettings = {
CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_LINK_OBJC_RUNTIME = NO;
COMBINE_HIDPI_IMAGES = YES;
CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)";
Expand Down Expand Up @@ -229,6 +230,7 @@
USE_HEADERMAP = NO; }; name = Debug; };
49453CC5AD9F08D2738464AC = {isa = XCBuildConfiguration; buildSettings = {
CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_LINK_OBJC_RUNTIME = NO;
COMBINE_HIDPI_IMAGES = YES;
CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)";
Expand Down
Expand Up @@ -199,6 +199,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_LINK_OBJC_RUNTIME = NO;
COMBINE_HIDPI_IMAGES = YES;
CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)";
Expand Down Expand Up @@ -229,6 +230,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_LINK_OBJC_RUNTIME = NO;
COMBINE_HIDPI_IMAGES = YES;
CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)";
Expand Down
Expand Up @@ -47,6 +47,7 @@
70A875922C34E55D4F48A196, ); name = Source; sourceTree = "<group>"; };
00F18709927DE6070FBA7BD0 = {isa = XCBuildConfiguration; buildSettings = {
CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_LINK_OBJC_RUNTIME = NO;
COMBINE_HIDPI_IMAGES = YES;
CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)";
Expand Down Expand Up @@ -76,6 +77,7 @@
USE_HEADERMAP = NO; }; name = Debug; };
8A190EF24B99F557190320DA = {isa = XCBuildConfiguration; buildSettings = {
CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_LINK_OBJC_RUNTIME = NO;
COMBINE_HIDPI_IMAGES = YES;
CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)";
Expand Down
Expand Up @@ -159,6 +159,7 @@
8B59A884C62D960EE9DFEF47, ); name = Source; sourceTree = "<group>"; };
EE7498599191DDC73ECB55B0 = {isa = XCBuildConfiguration; buildSettings = {
CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_LINK_OBJC_RUNTIME = NO;
COMBINE_HIDPI_IMAGES = YES;
CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)";
Expand Down Expand Up @@ -190,6 +191,7 @@
USE_HEADERMAP = NO; }; name = Debug; };
2E06386CE7CCA5FF76819BFF = {isa = XCBuildConfiguration; buildSettings = {
CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_LINK_OBJC_RUNTIME = NO;
COMBINE_HIDPI_IMAGES = YES;
CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)";
Expand Down
Expand Up @@ -170,6 +170,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_LINK_OBJC_RUNTIME = NO;
COMBINE_HIDPI_IMAGES = YES;
CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)";
Expand Down Expand Up @@ -200,6 +201,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_LINK_OBJC_RUNTIME = NO;
COMBINE_HIDPI_IMAGES = YES;
CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)";
Expand Down
38 changes: 5 additions & 33 deletions extras/Projucer/Source/ProjectSaving/jucer_ProjectExport_Xcode.h
Expand Up @@ -33,7 +33,7 @@ namespace
const char* const osxVersionDefault = "10.11";
const char* const iosVersionDefault = "9.3";

const int oldestSDKVersion = 5;
const int oldestSDKVersion = 7;
const int currentSDKVersion = 13;
const int minimumAUv3SDKVersion = 11;

Expand Down Expand Up @@ -421,7 +421,6 @@ class XcodeProjectExporter : public ProjectExporter
osxArchitecture (config, Ids::osxArchitecture, getUndoManager(), osxArch_Default),
customXcodeFlags (config, Ids::customXcodeFlags, getUndoManager()),
plistPreprocessorDefinitions (config, Ids::plistPreprocessorDefinitions, getUndoManager()),
cppStandardLibrary (config, Ids::cppLibType, getUndoManager()),
codeSignIdentity (config, Ids::codeSigningIdentity, getUndoManager(), iOS ? "iPhone Developer" : "Mac Developer"),
fastMathEnabled (config, Ids::fastMath, getUndoManager()),
stripLocalSymbolsEnabled (config, Ids::stripLocalSymbols, getUndoManager()),
Expand Down Expand Up @@ -487,11 +486,6 @@ class XcodeProjectExporter : public ProjectExporter
props.add (new TextPropertyComponent (plistPreprocessorDefinitions, "PList Preprocessor Definitions", 2048, true),
"Preprocessor definitions used during PList preprocessing (see PList Preprocess).");

props.add (new ChoicePropertyComponent (cppStandardLibrary, "C++ Library",
{ "LLVM libc++", "GNU libstdc++" },
{ "libc++", "libstdc++" }),
"The type of C++ std lib that will be linked.");

props.add (new TextPropertyComponent (codeSignIdentity, "Code-Signing Identity", 1024, false),
"The name of a code-signing identity for Xcode to apply.");

Expand All @@ -514,8 +508,6 @@ class XcodeProjectExporter : public ProjectExporter

bool isFastMathEnabled() const { return fastMathEnabled.get(); }

String getCPPStandardLibraryString() const { return cppStandardLibrary.get(); }

bool isStripLocalSymbolsEnabled() const { return stripLocalSymbolsEnabled.get(); }

String getCustomXcodeFlagsString() const { return customXcodeFlags.get(); }
Expand All @@ -540,7 +532,7 @@ class XcodeProjectExporter : public ProjectExporter
bool iOS;

ValueWithDefault osxSDKVersion, osxDeploymentTarget, iosDeploymentTarget, osxArchitecture,
customXcodeFlags, plistPreprocessorDefinitions, cppStandardLibrary, codeSignIdentity,
customXcodeFlags, plistPreprocessorDefinitions, codeSignIdentity,
fastMathEnabled, stripLocalSymbolsEnabled, pluginBinaryCopyStepEnabled,
vstBinaryLocation, vst3BinaryLocation, auBinaryLocation, rtasBinaryLocation, aaxBinaryLocation;

Expand Down Expand Up @@ -1129,8 +1121,7 @@ class XcodeProjectExporter : public ProjectExporter
: "c++") + cppStandard).quoted());
}

if (config.getCPPStandardLibraryString().isNotEmpty())
s.set ("CLANG_CXX_LIBRARY", config.getCPPStandardLibraryString().quoted());
s.set ("CLANG_CXX_LIBRARY", "\"libc++\"");

s.set ("COMBINE_HIDPI_IMAGES", "YES");

Expand Down Expand Up @@ -1577,8 +1568,8 @@ class XcodeProjectExporter : public ProjectExporter
= RelativePath (owner.getAAXPathValue().toString(), RelativePath::projectFolder)
.getChildFile ("Libs");

String libraryPath (config.isDebug() ? "Debug/libAAXLibrary" : "Release/libAAXLibrary");
libraryPath += (isUsingClangCppLibrary (config) ? "_libcpp.a" : ".a");
String libraryPath (config.isDebug() ? "Debug" : "Release");
libraryPath += "/libAAXLibrary_libcpp.a";

extraLibs.add (aaxLibsFolder.getChildFile (libraryPath));
}
Expand Down Expand Up @@ -1639,25 +1630,6 @@ class XcodeProjectExporter : public ProjectExporter
return targetExtraSearchPaths;
}

bool isUsingClangCppLibrary (const BuildConfiguration& config) const
{
if (auto xcodeConfig = dynamic_cast<const XcodeBuildConfiguration*> (&config))
{
auto configValue = xcodeConfig->getCPPStandardLibraryString();

if (configValue.isNotEmpty())
return (configValue == "libc++");

auto minorOSXDeploymentTarget = getOSXDeploymentTarget (*xcodeConfig)
.fromLastOccurrenceOf (".", false, false)
.getIntValue();

return (minorOSXDeploymentTarget > 8);
}

return false;
}

String getOSXDeploymentTarget (const XcodeBuildConfiguration& config, String* sdkRoot = nullptr) const
{
auto sdk = config.getOSXSDKVersionString();
Expand Down
Expand Up @@ -173,6 +173,7 @@
6D697538ADDCFBB6C79AC6C6, ); name = Source; sourceTree = "<group>"; };
A81C9C5D3696F83D5E8CFE11 = {isa = XCBuildConfiguration; buildSettings = {
CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_LINK_OBJC_RUNTIME = NO;
COMBINE_HIDPI_IMAGES = YES;
CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)";
Expand Down Expand Up @@ -204,6 +205,7 @@
USE_HEADERMAP = NO; }; name = Debug; };
962CC7E0A536C3F56DBE1F8F = {isa = XCBuildConfiguration; buildSettings = {
CLANG_CXX_LANGUAGE_STANDARD = "c++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_LINK_OBJC_RUNTIME = NO;
COMBINE_HIDPI_IMAGES = YES;
CONFIGURATION_BUILD_DIR = "$(PROJECT_DIR)/build/$(CONFIGURATION)";
Expand Down

0 comments on commit c7c26fa

Please sign in to comment.