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:
parent
56373bcc07
commit
fc14dc402e
3 changed files with 59 additions and 20 deletions
|
|
@ -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
|
||||
=============
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue