1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-11 23:54:18 +00:00

Projucer: Enabled the "New Build System" by default for Xcode projects and added an exporter setting to enable the old behaviour

This commit is contained in:
ed 2020-12-09 15:40:20 +00:00
parent 56373bcc07
commit fc14dc402e
3 changed files with 59 additions and 20 deletions

View file

@ -1,6 +1,32 @@
JUCE breaking changes
=====================
Develop
=======
Change
------
Xcode projects generated using the Projucer will now use the "New Build System"
instead of the "Legacy Build System" by default.
Possible Issues
---------------
Xcode 10.0 - 10.2 has some known issues when using the new build system such as
JUCE modules not rebuilding correctly when modified, issue and file navigation
not working, and breakpoints not being reliably set or hit.
Workaround
----------
If you are using an affected version of Xcode then you can enable the "Use
Legacy Build System" setting in the Projucer Xcode exporter to go back to the
previous behaviour.
Rationale
---------
The legacy build system has issues building arm64 binaries for Apple silicon
and will eventually be removed altogether.
Version 6.0.5
=============

View file

@ -182,7 +182,8 @@ public:
useHeaderMapValue (settings, Ids::useHeaderMap, getUndoManager()),
customLaunchStoryboardValue (settings, Ids::customLaunchStoryboard, getUndoManager()),
exporterBundleIdentifierValue (settings, Ids::bundleIdentifier, getUndoManager()),
suppressPlistResourceUsage (settings, Ids::suppressPlistResourceUsage, getUndoManager())
suppressPlistResourceUsageValue (settings, Ids::suppressPlistResourceUsage, getUndoManager()),
useLegacyBuildSystemValue (settings, Ids::useLegacyBuildSystem, getUndoManager())
{
if (iOS)
{
@ -269,7 +270,9 @@ public:
bool isDocumentBrowserEnabled() const { return uiSupportsDocumentBrowserValue.get(); }
bool isStatusBarHidden() const { return uiStatusBarHiddenValue.get(); }
bool getSuppressPlistResourceUsage() const { return suppressPlistResourceUsage.get(); }
bool getSuppressPlistResourceUsage() const { return suppressPlistResourceUsageValue.get(); }
bool shouldUseLegacyBuildSystem() const { return useLegacyBuildSystemValue.get(); }
String getDocumentExtensionsString() const { return documentExtensionsValue.get(); }
@ -392,6 +395,11 @@ public:
"Using a leading '.' is optional, and the extensions are not case-sensitive.");
}
props.add (new ChoicePropertyComponent (useLegacyBuildSystemValue, "Use Legacy Build System"),
"Enable this to use the deprecated \"Legacy Build System\" in Xcode 10 and above. "
"This may fix build issues that were introduced with the new build system in Xcode 10 and subsequently fixed in Xcode 10.2, "
"however the new build system is recommended for apps targeting Apple silicon.");
if (isOSX())
{
props.add (new MultiChoicePropertyComponent (validArchsValue, "Valid Architectures", getAllArchs(), getAllArchs()),
@ -570,7 +578,7 @@ public:
props.add (new TextPropertyComponent (pListPrefixHeaderValue, "PList Prefix Header", 512, false),
"Header file containing definitions used in plist file (see PList Preprocess).");
props.add (new ChoicePropertyComponent (suppressPlistResourceUsage, "Suppress AudioUnit Plist resourceUsage Key"),
props.add (new ChoicePropertyComponent (suppressPlistResourceUsageValue, "Suppress AudioUnit Plist resourceUsage Key"),
"Suppress the resourceUsage key in the target's generated Plist. This is useful for AU"
" plugins that must access resources which cannot be declared in the resourceUsage block, such"
" as UNIX domain sockets. In particular, PACE-protected AU plugins may require this option to be enabled"
@ -668,9 +676,6 @@ public:
[this] (MemoryOutputStream& mo) { writeProjectFile (mo); });
writeInfoPlistFiles();
// This forces the project to use the legacy build system to workaround Xcode 10 issues,
// hopefully these will be fixed in the future and this can be removed...
writeWorkspaceSettings();
// Deleting the .rsrc files can be needed to force Xcode to update the version number.
@ -1961,7 +1966,7 @@ private:
uiFileSharingEnabledValue, uiSupportsDocumentBrowserValue, uiStatusBarHiddenValue, documentExtensionsValue, iosInAppPurchasesValue,
iosContentSharingValue, iosBackgroundAudioValue, iosBackgroundBleValue, iosPushNotificationsValue, iosAppGroupsValue, iCloudPermissionsValue,
iosDevelopmentTeamIDValue, iosAppGroupsIDValue, keepCustomXcodeSchemesValue, useHeaderMapValue, customLaunchStoryboardValue,
exporterBundleIdentifierValue, suppressPlistResourceUsage;
exporterBundleIdentifierValue, suppressPlistResourceUsageValue, useLegacyBuildSystemValue;
static String sanitisePath (const String& path)
{
@ -2312,21 +2317,28 @@ private:
.getChildFile ("xcshareddata")
.getChildFile ("WorkspaceSettings.xcsettings");
build_tools::writeStreamToFile (settingsFile, [this] (MemoryOutputStream& mo)
if (shouldUseLegacyBuildSystem())
{
mo.setNewLineString (getNewLineString());
build_tools::writeStreamToFile (settingsFile, [this] (MemoryOutputStream& mo)
{
mo.setNewLineString (getNewLineString());
mo << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << newLine
<< "<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">" << newLine
<< "<plist version=\"1.0\">" << newLine
<< "<dict>" << newLine
<< "\t" << "<key>BuildSystemType</key>" << newLine
<< "\t" << "<string>Original</string>" << newLine
<< "\t" << "<key>DisableBuildSystemDeprecationWarning</key>" << newLine
<< "\t" << "<true/>" << newLine
<< "</dict>" << newLine
<< "</plist>" << newLine;
});
mo << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << newLine
<< "<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">" << newLine
<< "<plist version=\"1.0\">" << newLine
<< "<dict>" << newLine
<< "\t" << "<key>BuildSystemType</key>" << newLine
<< "\t" << "<string>Original</string>" << newLine
<< "\t" << "<key>DisableBuildSystemDeprecationWarning</key>" << newLine
<< "\t" << "<true/>" << newLine
<< "</dict>" << newLine
<< "</plist>" << newLine;
});
}
else
{
settingsFile.deleteFile();
}
}
void writeInfoPlistFiles() const

View file

@ -358,6 +358,7 @@ namespace Ids
DECLARE_ID (pluginVSTNumMidiInputs);
DECLARE_ID (pluginVSTNumMidiOutputs);
DECLARE_ID (suppressPlistResourceUsage);
DECLARE_ID (useLegacyBuildSystem);
DECLARE_ID (exporters);
DECLARE_ID (website);
DECLARE_ID (mainClass);