mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-02-04 03:40:07 +00:00
Projucer: Cleaned up the exporter code
This commit is contained in:
parent
646aebb77e
commit
2d43125a95
7 changed files with 483 additions and 485 deletions
|
|
@ -111,37 +111,37 @@ public:
|
|||
//==============================================================================
|
||||
AndroidProjectExporter (Project& p, const ValueTree& t)
|
||||
: ProjectExporter (p, t),
|
||||
androidRepositories (settings, Ids::androidRepositories, nullptr, ""),
|
||||
androidDependencies (settings, Ids::androidDependencies, nullptr, ""),
|
||||
androidScreenOrientation (settings, Ids::androidScreenOrientation, nullptr, "unspecified"),
|
||||
androidActivityClass (settings, Ids::androidActivityClass, nullptr, createDefaultClassName()),
|
||||
androidActivitySubClassName (settings, Ids::androidActivitySubClassName, nullptr),
|
||||
androidManifestCustomXmlElements (settings, Ids::androidManifestCustomXmlElements, nullptr, ""),
|
||||
androidVersionCode (settings, Ids::androidVersionCode, nullptr, "1"),
|
||||
androidMinimumSDK (settings, Ids::androidMinimumSDK, nullptr, "10"),
|
||||
androidTheme (settings, Ids::androidTheme, nullptr),
|
||||
androidSharedLibraries (settings, Ids::androidSharedLibraries, nullptr, ""),
|
||||
androidStaticLibraries (settings, Ids::androidStaticLibraries, nullptr, ""),
|
||||
androidExtraAssetsFolder (settings, Ids::androidExtraAssetsFolder, nullptr, ""),
|
||||
androidInternetNeeded (settings, Ids::androidInternetNeeded, nullptr, true),
|
||||
androidMicNeeded (settings, Ids::microphonePermissionNeeded, nullptr, false),
|
||||
androidBluetoothNeeded (settings, Ids::androidBluetoothNeeded, nullptr, true),
|
||||
androidExternalReadPermission (settings, Ids::androidExternalReadNeeded, nullptr, true),
|
||||
androidExternalWritePermission (settings, Ids::androidExternalWriteNeeded, nullptr, true),
|
||||
androidInAppBillingPermission (settings, Ids::androidInAppBilling, nullptr, false),
|
||||
androidVibratePermission (settings, Ids::androidVibratePermissionNeeded, nullptr, false),
|
||||
androidOtherPermissions (settings, Ids::androidOtherPermissions, nullptr),
|
||||
androidEnableRemoteNotifications (settings, Ids::androidEnableRemoteNotifications, nullptr, false),
|
||||
androidRemoteNotificationsConfigFile (settings, Ids::androidRemoteNotificationsConfigFile, nullptr, ""),
|
||||
androidEnableContentSharing (settings, Ids::androidEnableContentSharing, nullptr, false),
|
||||
androidKeyStore (settings, Ids::androidKeyStore, nullptr, "${user.home}/.android/debug.keystore"),
|
||||
androidKeyStorePass (settings, Ids::androidKeyStorePass, nullptr, "android"),
|
||||
androidKeyAlias (settings, Ids::androidKeyAlias, nullptr, "androiddebugkey"),
|
||||
androidKeyAliasPass (settings, Ids::androidKeyAliasPass, nullptr, "android"),
|
||||
gradleVersion (settings, Ids::gradleVersion, nullptr, "4.1"),
|
||||
gradleToolchain (settings, Ids::gradleToolchain, nullptr, "clang"),
|
||||
androidPluginVersion (settings, Ids::androidPluginVersion, nullptr, "3.0.0"),
|
||||
buildToolsVersion (settings, Ids::buildToolsVersion, nullptr, "27.0.0"),
|
||||
androidRepositories (settings, Ids::androidRepositories, getUndoManager()),
|
||||
androidDependencies (settings, Ids::androidDependencies, getUndoManager()),
|
||||
androidScreenOrientation (settings, Ids::androidScreenOrientation, getUndoManager(), "unspecified"),
|
||||
androidActivityClass (settings, Ids::androidActivityClass, getUndoManager(), createDefaultClassName()),
|
||||
androidActivitySubClassName (settings, Ids::androidActivitySubClassName, getUndoManager()),
|
||||
androidManifestCustomXmlElements (settings, Ids::androidManifestCustomXmlElements, getUndoManager()),
|
||||
androidVersionCode (settings, Ids::androidVersionCode, getUndoManager(), "1"),
|
||||
androidMinimumSDK (settings, Ids::androidMinimumSDK, getUndoManager(), "10"),
|
||||
androidTheme (settings, Ids::androidTheme, getUndoManager()),
|
||||
androidSharedLibraries (settings, Ids::androidSharedLibraries, getUndoManager()),
|
||||
androidStaticLibraries (settings, Ids::androidStaticLibraries, getUndoManager()),
|
||||
androidExtraAssetsFolder (settings, Ids::androidExtraAssetsFolder, getUndoManager()),
|
||||
androidInternetNeeded (settings, Ids::androidInternetNeeded, getUndoManager(), true),
|
||||
androidMicNeeded (settings, Ids::microphonePermissionNeeded, getUndoManager(), false),
|
||||
androidBluetoothNeeded (settings, Ids::androidBluetoothNeeded, getUndoManager(), true),
|
||||
androidExternalReadPermission (settings, Ids::androidExternalReadNeeded, getUndoManager(), true),
|
||||
androidExternalWritePermission (settings, Ids::androidExternalWriteNeeded, getUndoManager(), true),
|
||||
androidInAppBillingPermission (settings, Ids::androidInAppBilling, getUndoManager(), false),
|
||||
androidVibratePermission (settings, Ids::androidVibratePermissionNeeded, getUndoManager(), false),
|
||||
androidOtherPermissions (settings, Ids::androidOtherPermissions, getUndoManager()),
|
||||
androidEnableRemoteNotifications (settings, Ids::androidEnableRemoteNotifications, getUndoManager(), false),
|
||||
androidRemoteNotificationsConfigFile (settings, Ids::androidRemoteNotificationsConfigFile, getUndoManager()),
|
||||
androidEnableContentSharing (settings, Ids::androidEnableContentSharing, getUndoManager(), false),
|
||||
androidKeyStore (settings, Ids::androidKeyStore, getUndoManager(), "${user.home}/.android/debug.keystore"),
|
||||
androidKeyStorePass (settings, Ids::androidKeyStorePass, getUndoManager(), "android"),
|
||||
androidKeyAlias (settings, Ids::androidKeyAlias, getUndoManager(), "androiddebugkey"),
|
||||
androidKeyAliasPass (settings, Ids::androidKeyAliasPass, getUndoManager(), "android"),
|
||||
gradleVersion (settings, Ids::gradleVersion, getUndoManager(), "4.1"),
|
||||
gradleToolchain (settings, Ids::gradleToolchain, getUndoManager(), "clang"),
|
||||
androidPluginVersion (settings, Ids::androidPluginVersion, getUndoManager(), "3.0.0"),
|
||||
buildToolsVersion (settings, Ids::buildToolsVersion, getUndoManager(), "27.0.0"),
|
||||
AndroidExecutable (findAndroidExecutable())
|
||||
{
|
||||
name = getName();
|
||||
|
|
@ -190,7 +190,7 @@ public:
|
|||
return false;
|
||||
}
|
||||
|
||||
const File targetFolder (getTargetFolder());
|
||||
auto targetFolder = getTargetFolder();
|
||||
|
||||
// we have to surround the path with extra quotes, otherwise Android Studio
|
||||
// will choke if there are any space characters in the path.
|
||||
|
|
@ -200,8 +200,8 @@ public:
|
|||
//==============================================================================
|
||||
void create (const OwnedArray<LibraryModule>& modules) const override
|
||||
{
|
||||
const File targetFolder (getTargetFolder());
|
||||
const File appFolder (targetFolder.getChildFile (isLibrary() ? "lib" : "app"));
|
||||
auto targetFolder = getTargetFolder();
|
||||
auto appFolder = targetFolder.getChildFile (isLibrary() ? "lib" : "app");
|
||||
|
||||
removeOldFiles (targetFolder);
|
||||
|
||||
|
|
@ -210,16 +210,16 @@ public:
|
|||
|
||||
copyExtraResourceFiles();
|
||||
|
||||
writeFile (targetFolder, "settings.gradle", isLibrary() ? "include ':lib'" : "include ':app'");
|
||||
writeFile (targetFolder, "build.gradle", getProjectBuildGradleFileContent());
|
||||
writeFile (appFolder, "build.gradle", getAppBuildGradleFileContent());
|
||||
writeFile (targetFolder, "local.properties", getLocalPropertiesFileContent());
|
||||
writeFile (targetFolder, "settings.gradle", isLibrary() ? "include ':lib'" : "include ':app'");
|
||||
writeFile (targetFolder, "build.gradle", getProjectBuildGradleFileContent());
|
||||
writeFile (appFolder, "build.gradle", getAppBuildGradleFileContent());
|
||||
writeFile (targetFolder, "local.properties", getLocalPropertiesFileContent());
|
||||
writeFile (targetFolder, "gradle/wrapper/gradle-wrapper.properties", getGradleWrapperPropertiesFileContent());
|
||||
|
||||
writeBinaryFile (targetFolder, "gradle/wrapper/LICENSE-for-gradlewrapper.txt", BinaryData::LICENSE, BinaryData::LICENSESize);
|
||||
writeBinaryFile (targetFolder, "gradle/wrapper/gradle-wrapper.jar", BinaryData::gradlewrapper_jar, BinaryData::gradlewrapper_jarSize);
|
||||
writeBinaryFile (targetFolder, "gradlew", BinaryData::gradlew, BinaryData::gradlewSize);
|
||||
writeBinaryFile (targetFolder, "gradlew.bat", BinaryData::gradlew_bat, BinaryData::gradlew_batSize);
|
||||
writeBinaryFile (targetFolder, "gradle/wrapper/LICENSE-for-gradlewrapper.txt", BinaryData::LICENSE, BinaryData::LICENSESize);
|
||||
writeBinaryFile (targetFolder, "gradle/wrapper/gradle-wrapper.jar", BinaryData::gradlewrapper_jar, BinaryData::gradlewrapper_jarSize);
|
||||
writeBinaryFile (targetFolder, "gradlew", BinaryData::gradlew, BinaryData::gradlewSize);
|
||||
writeBinaryFile (targetFolder, "gradlew.bat", BinaryData::gradlew_bat, BinaryData::gradlew_batSize);
|
||||
|
||||
targetFolder.getChildFile ("gradlew").setExecutePermission (true);
|
||||
|
||||
|
|
@ -233,13 +233,16 @@ public:
|
|||
|
||||
writeCmakeFile (appFolder.getChildFile ("CMakeLists.txt"));
|
||||
|
||||
const String androidExtraAssetsFolderValue = androidExtraAssetsFolder.get();
|
||||
auto androidExtraAssetsFolderValue = androidExtraAssetsFolder.get().toString();
|
||||
|
||||
if (androidExtraAssetsFolderValue.isNotEmpty())
|
||||
{
|
||||
File extraAssets (getProject().getFile().getParentDirectory().getChildFile(androidExtraAssetsFolderValue));
|
||||
auto extraAssets = getProject().getFile().getParentDirectory().getChildFile (androidExtraAssetsFolderValue);
|
||||
|
||||
if (extraAssets.exists() && extraAssets.isDirectory())
|
||||
{
|
||||
const File assetsFolder (appFolder.getChildFile ("src/main/assets"));
|
||||
auto assetsFolder = appFolder.getChildFile ("src/main/assets");
|
||||
|
||||
if (assetsFolder.deleteRecursively())
|
||||
extraAssets.copyDirectoryTo (assetsFolder);
|
||||
}
|
||||
|
|
@ -273,26 +276,26 @@ public:
|
|||
static File findAndroidExecutable()
|
||||
{
|
||||
#if JUCE_WINDOWS
|
||||
const File defaultInstallation ("C:\\Program Files\\Android\\Android Studio\\bin");
|
||||
File defaultInstallation ("C:\\Program Files\\Android\\Android Studio\\bin");
|
||||
|
||||
if (defaultInstallation.exists())
|
||||
{
|
||||
{
|
||||
const File studio64 = defaultInstallation.getChildFile ("studio64.exe");
|
||||
auto studio64 = defaultInstallation.getChildFile ("studio64.exe");
|
||||
|
||||
if (studio64.existsAsFile())
|
||||
return studio64;
|
||||
}
|
||||
|
||||
{
|
||||
const File studio = defaultInstallation.getChildFile ("studio.exe");
|
||||
auto studio = defaultInstallation.getChildFile ("studio.exe");
|
||||
|
||||
if (studio.existsAsFile())
|
||||
return studio;
|
||||
}
|
||||
}
|
||||
#elif JUCE_MAC
|
||||
const File defaultInstallation ("/Applications/Android Studio.app");
|
||||
File defaultInstallation ("/Applications/Android Studio.app");
|
||||
|
||||
if (defaultInstallation.exists())
|
||||
return defaultInstallation;
|
||||
|
|
@ -308,10 +311,10 @@ protected:
|
|||
public:
|
||||
AndroidBuildConfiguration (Project& p, const ValueTree& settings, const ProjectExporter& e)
|
||||
: BuildConfiguration (p, settings, e),
|
||||
androidArchitectures (config, Ids::androidArchitectures, nullptr, isDebug() ? "armeabi x86" : ""),
|
||||
androidAdditionalXmlValueResources (config, Ids::androidAdditionalXmlValueResources, nullptr, {}),
|
||||
androidAdditionalRawValueResources (config, Ids::androidAdditionalRawValueResources, nullptr, {}),
|
||||
androidCustomStringXmlElements (config, Ids::androidCustomStringXmlElements, nullptr, {})
|
||||
androidArchitectures (config, Ids::androidArchitectures, getUndoManager(), isDebug() ? "armeabi x86" : ""),
|
||||
androidAdditionalXmlValueResources (config, Ids::androidAdditionalXmlValueResources, getUndoManager()),
|
||||
androidAdditionalRawValueResources (config, Ids::androidAdditionalRawValueResources, getUndoManager()),
|
||||
androidCustomStringXmlElements (config, Ids::androidCustomStringXmlElements, getUndoManager())
|
||||
{
|
||||
linkTimeOptimisationValue.setDefault (false);
|
||||
optimisationLevelValue.setDefault (isDebug() ? gccO0 : gccO3);
|
||||
|
|
@ -386,7 +389,7 @@ private:
|
|||
<< "set_source_files_properties(\"" << cpufeaturesPath << "\" PROPERTIES COMPILE_FLAGS \"-Wno-sign-conversion -Wno-gnu-statement-expression\")" << newLine << newLine;
|
||||
|
||||
{
|
||||
StringArray projectDefines (getEscapedPreprocessorDefs (getProjectPreprocessorDefs()));
|
||||
auto projectDefines = getEscapedPreprocessorDefs (getProjectPreprocessorDefs());
|
||||
if (projectDefines.size() > 0)
|
||||
mo << "add_definitions(" << projectDefines.joinIntoString (" ") << ")" << newLine << newLine;
|
||||
}
|
||||
|
|
@ -401,7 +404,7 @@ private:
|
|||
mo << ")" << newLine << newLine;
|
||||
}
|
||||
|
||||
const String& cfgExtraLinkerFlags = getExtraLinkerFlagsString();
|
||||
auto cfgExtraLinkerFlags = getExtraLinkerFlagsString();
|
||||
if (cfgExtraLinkerFlags.isNotEmpty())
|
||||
{
|
||||
mo << "SET( JUCE_LDFLAGS \"" << cfgExtraLinkerFlags.replace ("\"", "\\\"") << "\")" << newLine;
|
||||
|
|
@ -410,7 +413,7 @@ private:
|
|||
|
||||
mo << "enable_language(ASM)" << newLine << newLine;
|
||||
|
||||
StringArray userLibraries = StringArray::fromTokens(getExternalLibrariesString(), ";", "");
|
||||
auto userLibraries = StringArray::fromTokens (getExternalLibrariesString(), ";", "");
|
||||
userLibraries.addArray (androidLibs);
|
||||
|
||||
if (getNumConfigurations() > 0)
|
||||
|
|
@ -419,11 +422,11 @@ private:
|
|||
|
||||
for (ConstConfigIterator config (*this); config.next();)
|
||||
{
|
||||
const auto& cfg = dynamic_cast<const AndroidBuildConfiguration&> (*config);
|
||||
const StringArray& libSearchPaths = cfg.getLibrarySearchPaths();
|
||||
const StringPairArray& cfgDefines = getConfigPreprocessorDefs (cfg);
|
||||
const StringArray& cfgHeaderPaths = cfg.getHeaderSearchPaths();
|
||||
const StringArray& cfgLibraryPaths = cfg.getLibrarySearchPaths();
|
||||
auto& cfg = dynamic_cast<const AndroidBuildConfiguration&> (*config);
|
||||
auto libSearchPaths = cfg.getLibrarySearchPaths();
|
||||
auto cfgDefines = getConfigPreprocessorDefs (cfg);
|
||||
auto cfgHeaderPaths = cfg.getHeaderSearchPaths();
|
||||
auto cfgLibraryPaths = cfg.getLibrarySearchPaths();
|
||||
|
||||
if (! isLibrary() && libSearchPaths.size() == 0 && cfgDefines.size() == 0
|
||||
&& cfgHeaderPaths.size() == 0 && cfgLibraryPaths.size() == 0)
|
||||
|
|
@ -480,7 +483,7 @@ private:
|
|||
|
||||
if (config)
|
||||
{
|
||||
if (const auto* cfg = dynamic_cast<const AndroidBuildConfiguration*> (config.get()))
|
||||
if (auto* cfg = dynamic_cast<const AndroidBuildConfiguration*> (config.get()))
|
||||
{
|
||||
mo << "ELSE(JUCE_BUILD_CONFIGURATION MATCHES \"" << cfg->getProductFlavourCMakeIdentifier() <<"\")" << newLine;
|
||||
mo << " MESSAGE( FATAL_ERROR \"No matching build-configuration found.\" )" << newLine;
|
||||
|
|
@ -507,7 +510,7 @@ private:
|
|||
mo << newLine;
|
||||
}
|
||||
|
||||
StringArray libraries (getAndroidLibraries());
|
||||
auto libraries = getAndroidLibraries();
|
||||
if (libraries.size() > 0)
|
||||
{
|
||||
for (auto& lib : libraries)
|
||||
|
|
@ -607,7 +610,7 @@ private:
|
|||
|
||||
for (ConstConfigIterator config (*this); config.next();)
|
||||
{
|
||||
const auto& cfg = dynamic_cast<const AndroidBuildConfiguration&> (*config);
|
||||
auto& cfg = dynamic_cast<const AndroidBuildConfiguration&> (*config);
|
||||
|
||||
mo << " " << cfg.getProductFlavourNameIdentifier() << " {" << newLine;
|
||||
|
||||
|
|
@ -645,8 +648,8 @@ private:
|
|||
{
|
||||
MemoryOutputStream mo;
|
||||
|
||||
String keyStoreFilePath = androidKeyStore.get().toString().replace ("${user.home}", "${System.properties['user.home']}")
|
||||
.replace ("/", "${File.separator}");
|
||||
auto keyStoreFilePath = androidKeyStore.get().toString().replace ("${user.home}", "${System.properties['user.home']}")
|
||||
.replace ("/", "${File.separator}");
|
||||
|
||||
mo << " signingConfigs {" << newLine;
|
||||
mo << " juceSigning {" << newLine;
|
||||
|
|
@ -663,11 +666,11 @@ private:
|
|||
|
||||
String getAndroidDefaultConfig() const
|
||||
{
|
||||
const String bundleIdentifier = project.getBundleIdentifierString().toLowerCase();
|
||||
const StringArray& cmakeDefs = getCmakeDefinitions();
|
||||
const StringArray& cFlags = getProjectCompilerFlags();
|
||||
const StringArray& cxxFlags = getProjectCxxCompilerFlags();
|
||||
const int minSdkVersion = static_cast<int> (androidMinimumSDK.get());
|
||||
auto bundleIdentifier = project.getBundleIdentifierString().toLowerCase();
|
||||
auto cmakeDefs = getCmakeDefinitions();
|
||||
auto cFlags = getProjectCompilerFlags();
|
||||
auto cxxFlags = getProjectCxxCompilerFlags();
|
||||
auto minSdkVersion = static_cast<int> (androidMinimumSDK.get());
|
||||
|
||||
MemoryOutputStream mo;
|
||||
|
||||
|
|
@ -704,7 +707,7 @@ private:
|
|||
mo << " buildTypes {" << newLine;
|
||||
|
||||
int numDebugConfigs = 0;
|
||||
const int numConfigs = getNumConfigurations();
|
||||
auto numConfigs = getNumConfigurations();
|
||||
for (int i = 0; i < numConfigs; ++i)
|
||||
{
|
||||
auto config = getConfiguration(i);
|
||||
|
|
@ -736,7 +739,7 @@ private:
|
|||
|
||||
for (ConstConfigIterator config (*this); config.next();)
|
||||
{
|
||||
const auto& cfg = dynamic_cast<const AndroidBuildConfiguration&> (*config);
|
||||
auto& cfg = dynamic_cast<const AndroidBuildConfiguration&> (*config);
|
||||
|
||||
mo << " if (names.contains (\"" << cfg.getProductFlavourNameIdentifier() << "\")" << newLine;
|
||||
mo << " && variant.buildType.name != \"" << (cfg.isDebug() ? "debug" : "release") << "\") {" << newLine;
|
||||
|
|
@ -753,12 +756,11 @@ private:
|
|||
{
|
||||
MemoryOutputStream mo;
|
||||
|
||||
juce::StringArray repositories;
|
||||
repositories.addLines (androidRepositories.get().toString());
|
||||
auto repositories = StringArray::fromLines (androidRepositories.get().toString());
|
||||
|
||||
mo << "repositories {" << newLine;
|
||||
|
||||
for (const auto& r : repositories)
|
||||
for (auto& r : repositories)
|
||||
mo << " " << r << newLine;
|
||||
|
||||
mo << "}" << newLine;
|
||||
|
|
@ -770,8 +772,7 @@ private:
|
|||
{
|
||||
MemoryOutputStream mo;
|
||||
|
||||
juce::StringArray dependencies;
|
||||
dependencies.addLines (androidDependencies.get().toString());
|
||||
auto dependencies = StringArray::fromLines (androidDependencies.get().toString());
|
||||
|
||||
mo << "dependencies {" << newLine;
|
||||
|
||||
|
|
@ -781,7 +782,7 @@ private:
|
|||
mo << " compile 'com.google.firebase:firebase-messaging:11.4.0'" << newLine;
|
||||
}
|
||||
|
||||
for (const auto& d : dependencies)
|
||||
for (auto& d : dependencies)
|
||||
mo << " " << d << newLine;
|
||||
|
||||
mo << "}" << newLine;
|
||||
|
|
@ -1055,7 +1056,7 @@ private:
|
|||
{
|
||||
MemoryOutputStream newFile;
|
||||
|
||||
for (const auto& line : javaSourceLines)
|
||||
for (auto& line : javaSourceLines)
|
||||
{
|
||||
if (line.contains ("$$JuceAndroidMidiImports$$"))
|
||||
newFile << juceMidiImports;
|
||||
|
|
@ -1104,8 +1105,8 @@ private:
|
|||
{
|
||||
if (androidEnableRemoteNotifications.get())
|
||||
{
|
||||
String instanceIdFileName = "JuceFirebaseInstanceIdService.java";
|
||||
String messagingFileName = "JuceFirebaseMessagingService.java";
|
||||
String instanceIdFileName ("JuceFirebaseInstanceIdService.java");
|
||||
String messagingFileName ("JuceFirebaseMessagingService.java");
|
||||
|
||||
File instanceIdFile (javaSourceFolder.getChildFile (instanceIdFileName));
|
||||
File messagingFile (javaSourceFolder.getChildFile (messagingFileName));
|
||||
|
|
@ -1117,7 +1118,7 @@ private:
|
|||
files.add (instanceIdFile);
|
||||
files.add (messagingFile);
|
||||
|
||||
for (const auto& file : files)
|
||||
for (auto& file : files)
|
||||
{
|
||||
auto newContent = file.loadFileAsString()
|
||||
.replace ("package com.juce;", "package " + package + ";");
|
||||
|
|
@ -1129,7 +1130,7 @@ private:
|
|||
|
||||
void copyProviderJavaFile (const File& javaSourceFolder, const File& targetFolder, const String& package) const
|
||||
{
|
||||
File providerFile (javaSourceFolder.getChildFile ("AndroidSharingContentProvider.java"));
|
||||
auto providerFile = javaSourceFolder.getChildFile ("AndroidSharingContentProvider.java");
|
||||
|
||||
jassert (providerFile.existsAsFile());
|
||||
|
||||
|
|
@ -1156,9 +1157,9 @@ private:
|
|||
{
|
||||
for (ConstConfigIterator config (*this); config.next();)
|
||||
{
|
||||
const auto& cfg = dynamic_cast<const AndroidBuildConfiguration&> (*config);
|
||||
const String xmlValuesPath = cfg.isDebug() ? "app/src/debug/res/values" : "app/src/release/res/values";
|
||||
const String rawPath = cfg.isDebug() ? "app/src/debug/res/raw" : "app/src/release/res/raw";
|
||||
auto& cfg = dynamic_cast<const AndroidBuildConfiguration&> (*config);
|
||||
String xmlValuesPath = cfg.isDebug() ? "app/src/debug/res/values" : "app/src/release/res/values";
|
||||
String rawPath = cfg.isDebug() ? "app/src/debug/res/raw" : "app/src/release/res/raw";
|
||||
|
||||
copyExtraResourceFiles (cfg.getAdditionalXmlResources(), xmlValuesPath);
|
||||
copyExtraResourceFiles (cfg.getAdditionalRawResources(), rawPath);
|
||||
|
|
@ -1176,16 +1177,15 @@ private:
|
|||
|
||||
void copyExtraResourceFiles (const String& resources, const String& dstRelativePath) const
|
||||
{
|
||||
StringArray resourcePaths;
|
||||
resourcePaths.addTokens (resources, true);
|
||||
auto resourcePaths = StringArray::fromTokens (resources, true);
|
||||
|
||||
const File parentFolder (getTargetFolder().getChildFile (dstRelativePath));
|
||||
auto parentFolder = getTargetFolder().getChildFile (dstRelativePath);
|
||||
|
||||
parentFolder.createDirectory();
|
||||
|
||||
for (const auto& path : resourcePaths)
|
||||
for (auto& path : resourcePaths)
|
||||
{
|
||||
File file (getProject().getFile().getChildFile (path));
|
||||
auto file = getProject().getFile().getChildFile (path);
|
||||
|
||||
jassert (file.existsAsFile());
|
||||
|
||||
|
|
@ -1201,7 +1201,7 @@ private:
|
|||
|
||||
String getActivitySubClassName() const
|
||||
{
|
||||
String activityPath = androidActivitySubClassName.get();
|
||||
auto activityPath = androidActivitySubClassName.get().toString();
|
||||
|
||||
return (activityPath.isEmpty()) ? getActivityName() : activityPath.fromLastOccurrenceOf (".", false, false);
|
||||
}
|
||||
|
|
@ -1219,8 +1219,8 @@ private:
|
|||
static LibraryModule* getCoreModule (const OwnedArray<LibraryModule>& modules)
|
||||
{
|
||||
for (int i = modules.size(); --i >= 0;)
|
||||
if (modules.getUnchecked(i)->getID() == "juce_core")
|
||||
return modules.getUnchecked(i);
|
||||
if (modules.getUnchecked (i)->getID() == "juce_core")
|
||||
return modules.getUnchecked (i);
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
|
@ -1233,7 +1233,7 @@ private:
|
|||
|
||||
String getAppPlatform() const
|
||||
{
|
||||
int ndkVersion = static_cast<int> (androidMinimumSDK.get());
|
||||
auto ndkVersion = static_cast<int> (androidMinimumSDK.get());
|
||||
if (ndkVersion == 9)
|
||||
ndkVersion = 10; // (doesn't seem to be a version '9')
|
||||
|
||||
|
|
@ -1245,17 +1245,17 @@ private:
|
|||
{
|
||||
for (ConstConfigIterator config (*this); config.next();)
|
||||
{
|
||||
const auto& cfg = dynamic_cast<const AndroidBuildConfiguration&> (*config);
|
||||
auto& cfg = dynamic_cast<const AndroidBuildConfiguration&> (*config);
|
||||
|
||||
String customStringsXmlContent = "<resources>\n";
|
||||
String customStringsXmlContent ("<resources>\n");
|
||||
customStringsXmlContent << "<string name=\"app_name\">" << projectName << "</string>\n";
|
||||
customStringsXmlContent << cfg.getCustomStringsXml();
|
||||
customStringsXmlContent << "\n</resources>";
|
||||
|
||||
ScopedPointer<XmlElement> strings = XmlDocument::parse (customStringsXmlContent);
|
||||
|
||||
const juce::String dir = cfg.isDebug() ? "debug" : "release";
|
||||
const juce::String subPath = "app/src/" + dir + "/res/values/string.xml";
|
||||
String dir = cfg.isDebug() ? "debug" : "release";
|
||||
String subPath = "app/src/" + dir + "/res/values/string.xml";
|
||||
|
||||
writeXmlOrThrow (*strings, folder.getChildFile (subPath), "utf-8", 100, true);
|
||||
}
|
||||
|
|
@ -1291,13 +1291,13 @@ private:
|
|||
|
||||
if (bigIcon != nullptr && smallIcon != nullptr)
|
||||
{
|
||||
const int step = jmax (bigIcon->getWidth(), bigIcon->getHeight()) / 8;
|
||||
auto step = jmax (bigIcon->getWidth(), bigIcon->getHeight()) / 8;
|
||||
writeIcon (folder.getChildFile ("drawable-xhdpi/icon.png"), getBestIconForSize (step * 8, false));
|
||||
writeIcon (folder.getChildFile ("drawable-hdpi/icon.png"), getBestIconForSize (step * 6, false));
|
||||
writeIcon (folder.getChildFile ("drawable-mdpi/icon.png"), getBestIconForSize (step * 4, false));
|
||||
writeIcon (folder.getChildFile ("drawable-ldpi/icon.png"), getBestIconForSize (step * 3, false));
|
||||
}
|
||||
else if (Drawable* icon = bigIcon != nullptr ? bigIcon : smallIcon)
|
||||
else if (auto* icon = (bigIcon != nullptr ? bigIcon.get() : smallIcon.get()))
|
||||
{
|
||||
writeIcon (folder.getChildFile ("drawable-mdpi/icon.png"), rescaleImageForIcon (*icon, icon->getWidth()));
|
||||
}
|
||||
|
|
@ -1315,7 +1315,7 @@ private:
|
|||
|
||||
static String expandHomeFolderToken (const String& path)
|
||||
{
|
||||
String homeFolder = File::getSpecialLocation (File::userHomeDirectory).getFullPathName();
|
||||
auto homeFolder = File::getSpecialLocation (File::userHomeDirectory).getFullPathName();
|
||||
|
||||
return path.replace ("${user.home}", homeFolder)
|
||||
.replace ("~", homeFolder);
|
||||
|
|
@ -1331,8 +1331,8 @@ private:
|
|||
}
|
||||
else if (projectItem.shouldBeAddedToTargetProject())
|
||||
{
|
||||
const RelativePath file (projectItem.getFile(), getTargetFolder().getChildFile ("app"), RelativePath::buildTargetFolder);
|
||||
const ProjectType::Target::Type targetType = getProject().getTargetTypeFromFilePath (projectItem.getFile(), true);
|
||||
RelativePath file (projectItem.getFile(), getTargetFolder().getChildFile ("app"), RelativePath::buildTargetFolder);
|
||||
auto targetType = getProject().getTargetTypeFromFilePath (projectItem.getFile(), true);
|
||||
|
||||
mo << " \"" << file.toUnixStyle() << "\"" << newLine;
|
||||
|
||||
|
|
@ -1353,8 +1353,8 @@ private:
|
|||
//==============================================================================
|
||||
StringArray getCmakeDefinitions() const
|
||||
{
|
||||
const String toolchain = gradleToolchain.get();
|
||||
const bool isClang = (toolchain == "clang");
|
||||
auto toolchain = gradleToolchain.get().toString();
|
||||
bool isClang = (toolchain == "clang");
|
||||
|
||||
StringArray cmakeArgs;
|
||||
|
||||
|
|
@ -1395,7 +1395,7 @@ private:
|
|||
|
||||
StringArray getProjectCompilerFlags() const
|
||||
{
|
||||
StringArray cFlags (getAndroidCompilerFlags());
|
||||
auto cFlags = getAndroidCompilerFlags();
|
||||
|
||||
cFlags.addArray (getEscapedFlags (StringArray::fromTokens (getExtraCompilerFlagsString(), true)));
|
||||
return cFlags;
|
||||
|
|
@ -1403,7 +1403,7 @@ private:
|
|||
|
||||
StringArray getProjectCxxCompilerFlags() const
|
||||
{
|
||||
StringArray cxxFlags (getAndroidCxxCompilerFlags());
|
||||
auto cxxFlags = getAndroidCxxCompilerFlags();
|
||||
cxxFlags.addArray (getEscapedFlags (StringArray::fromTokens (getExtraCompilerFlagsString(), true)));
|
||||
return cxxFlags;
|
||||
}
|
||||
|
|
@ -1445,14 +1445,14 @@ private:
|
|||
|
||||
StringPairArray getProjectPreprocessorDefs() const
|
||||
{
|
||||
StringPairArray defines (getAndroidPreprocessorDefs());
|
||||
auto defines = getAndroidPreprocessorDefs();
|
||||
|
||||
return mergePreprocessorDefs (defines, getAllPreprocessorDefs());
|
||||
}
|
||||
|
||||
StringPairArray getConfigPreprocessorDefs (const BuildConfiguration& config) const
|
||||
{
|
||||
StringPairArray cfgDefines (config.getUniquePreprocessorDefs());
|
||||
auto cfgDefines = config.getUniquePreprocessorDefs();
|
||||
|
||||
if (config.isDebug())
|
||||
{
|
||||
|
|
@ -1483,7 +1483,7 @@ private:
|
|||
//==============================================================================
|
||||
StringArray getHeaderSearchPaths (const BuildConfiguration& config) const
|
||||
{
|
||||
StringArray paths (extraSearchPaths);
|
||||
auto paths = extraSearchPaths;
|
||||
paths.addArray (config.getHeaderSearchPaths());
|
||||
paths = getCleanedStringArray (paths);
|
||||
return paths;
|
||||
|
|
@ -1492,7 +1492,7 @@ private:
|
|||
//==============================================================================
|
||||
String escapeDirectoryForCmake (const String& path) const
|
||||
{
|
||||
RelativePath relative =
|
||||
auto relative =
|
||||
RelativePath (path, RelativePath::buildTargetFolder)
|
||||
.rebased (getTargetFolder(), getTargetFolder().getChildFile ("app"), RelativePath::buildTargetFolder);
|
||||
|
||||
|
|
@ -1519,8 +1519,8 @@ private:
|
|||
|
||||
for (int i = 0; i < defs.size(); ++i)
|
||||
{
|
||||
String escaped ("\"-D" + defs.getAllKeys()[i]);
|
||||
String value = defs.getAllValues()[i];
|
||||
auto escaped = "\"-D" + defs.getAllKeys()[i];
|
||||
auto value = defs.getAllValues()[i];
|
||||
|
||||
if (value.isNotEmpty())
|
||||
{
|
||||
|
|
@ -1550,7 +1550,7 @@ private:
|
|||
//==============================================================================
|
||||
XmlElement* createManifestXML() const
|
||||
{
|
||||
XmlElement* manifest = createManifestElement();
|
||||
auto* manifest = createManifestElement();
|
||||
|
||||
createSupportsScreensElement (*manifest);
|
||||
createUsesSdkElement (*manifest);
|
||||
|
|
@ -1573,7 +1573,7 @@ private:
|
|||
|
||||
XmlElement* createManifestElement() const
|
||||
{
|
||||
XmlElement* manifest = XmlDocument::parse (androidManifestCustomXmlElements.get());
|
||||
auto* manifest = XmlDocument::parse (androidManifestCustomXmlElements.get());
|
||||
|
||||
if (manifest == nullptr)
|
||||
manifest = new XmlElement ("manifest");
|
||||
|
|
@ -1592,7 +1592,7 @@ private:
|
|||
{
|
||||
if (manifest.getChildByName ("supports-screens") == nullptr)
|
||||
{
|
||||
XmlElement* screens = manifest.createNewChildElement ("supports-screens");
|
||||
auto* screens = manifest.createNewChildElement ("supports-screens");
|
||||
screens->setAttribute ("android:smallScreens", "true");
|
||||
screens->setAttribute ("android:normalScreens", "true");
|
||||
screens->setAttribute ("android:largeScreens", "true");
|
||||
|
|
@ -1610,7 +1610,7 @@ private:
|
|||
|
||||
void createPermissionElements (XmlElement& manifest) const
|
||||
{
|
||||
StringArray permissions (getPermissionsRequired());
|
||||
auto permissions = getPermissionsRequired();
|
||||
|
||||
forEachXmlChildElementWithTagName (manifest, child, "uses-permission")
|
||||
{
|
||||
|
|
@ -1794,8 +1794,7 @@ private:
|
|||
|
||||
StringArray getPermissionsRequired() const
|
||||
{
|
||||
StringArray s;
|
||||
s.addTokens (androidOtherPermissions.get().toString(), ", ", "");
|
||||
StringArray s = StringArray::fromTokens (androidOtherPermissions.get().toString(), ", ", {});
|
||||
|
||||
if (androidInternetNeeded.get())
|
||||
s.add ("android.permission.INTERNET");
|
||||
|
|
|
|||
|
|
@ -157,9 +157,7 @@ public:
|
|||
{
|
||||
for (Project::ExporterIterator exporter (getProject()); exporter.next();)
|
||||
if (isExporterSupported (*exporter))
|
||||
properties.add (new BooleanPropertyComponent (getExporterEnabledValue (*exporter),
|
||||
"Import settings from exporter",
|
||||
exporter->getName()),
|
||||
properties.add (new BooleanPropertyComponent (getExporterEnabledValue (*exporter), "Import settings from exporter", exporter->getName()),
|
||||
"If this is enabled then settings from the corresponding exporter will "
|
||||
"be used in the generated CMakeLists.txt");
|
||||
}
|
||||
|
|
@ -278,7 +276,7 @@ private:
|
|||
//==============================================================================
|
||||
static String setCMakeVariable (const String& variableName, const String& value)
|
||||
{
|
||||
return String ("set (") + variableName + " \"" + value + "\")";
|
||||
return "set (" + variableName + " \"" + value + "\")";
|
||||
}
|
||||
|
||||
static String addToCMakeVariable (const String& variableName, const String& value)
|
||||
|
|
@ -294,7 +292,7 @@ private:
|
|||
template <class Target, class Exporter>
|
||||
void getFileInfoList (Target& target, Exporter& exporter, const Project::Item& projectItem, std::vector<std::pair<String, bool>>& fileInfoList) const
|
||||
{
|
||||
const auto targetType = (getProject().getProjectType().isAudioPlugin() ? target.type : Target::Type::SharedCodeTarget);
|
||||
auto targetType = (getProject().getProjectType().isAudioPlugin() ? target.type : Target::Type::SharedCodeTarget);
|
||||
|
||||
if (projectItem.isGroup())
|
||||
{
|
||||
|
|
@ -303,7 +301,7 @@ private:
|
|||
}
|
||||
else if (projectItem.shouldBeAddedToTargetProject() && getProject().getTargetTypeFromFilePath (projectItem.getFile(), true) == targetType )
|
||||
{
|
||||
const auto path = RelativePath (projectItem.getFile(), exporter.getTargetFolder(), RelativePath::buildTargetFolder).toUnixStyle();
|
||||
auto path = RelativePath (projectItem.getFile(), exporter.getTargetFolder(), RelativePath::buildTargetFolder).toUnixStyle();
|
||||
fileInfoList.push_back ({ path, projectItem.shouldBeCompiled() });
|
||||
}
|
||||
}
|
||||
|
|
@ -412,7 +410,7 @@ private:
|
|||
<< "#------------------------------------------------------------------------------" << newLine
|
||||
<< newLine;
|
||||
|
||||
const auto buildTypeCondition = String ("CMAKE_BUILD_TYPE STREQUAL " + config.getName());
|
||||
auto buildTypeCondition = String ("CMAKE_BUILD_TYPE STREQUAL " + config.getName());
|
||||
out << "if (" << buildTypeCondition << ")" << newLine
|
||||
<< newLine;
|
||||
|
||||
|
|
@ -433,7 +431,7 @@ private:
|
|||
|
||||
for (auto& library : exporter.getLibraryNames (config))
|
||||
{
|
||||
const String cmakeLibraryID (library.toUpperCase());
|
||||
String cmakeLibraryID (library.toUpperCase());
|
||||
cmakeFoundLibraries.add (String ("${") + cmakeLibraryID + "}");
|
||||
out << "find_library (" << cmakeLibraryID << " " << library << newLine;
|
||||
|
||||
|
|
@ -449,7 +447,7 @@ private:
|
|||
if (target->type == ProjectType::Target::Type::AggregateTarget)
|
||||
continue;
|
||||
|
||||
const auto targetVarName = getTargetVarName (*target);
|
||||
auto targetVarName = getTargetVarName (*target);
|
||||
|
||||
out << "set_target_properties (" << targetVarName << " PROPERTIES" << newLine
|
||||
<< " OUTPUT_NAME " << config.getTargetBinaryNameString().quoted() << newLine;
|
||||
|
|
@ -562,7 +560,7 @@ private:
|
|||
<< "#------------------------------------------------------------------------------" << newLine
|
||||
<< newLine;
|
||||
|
||||
const auto buildTypeCondition = String ("CMAKE_BUILD_TYPE STREQUAL " + config.getName());
|
||||
auto buildTypeCondition = String ("CMAKE_BUILD_TYPE STREQUAL " + config.getName());
|
||||
out << "if (" << buildTypeCondition << ")" << newLine
|
||||
<< newLine;
|
||||
|
||||
|
|
@ -578,7 +576,7 @@ private:
|
|||
if (target->type == ProjectType::Target::Type::AggregateTarget)
|
||||
continue;
|
||||
|
||||
const auto targetVarName = getTargetVarName (*target);
|
||||
auto targetVarName = getTargetVarName (*target);
|
||||
|
||||
out << "set_target_properties (" << targetVarName << " PROPERTIES" << newLine
|
||||
<< " OUTPUT_NAME " << config.getTargetBinaryNameString().quoted() << newLine;
|
||||
|
|
@ -664,8 +662,8 @@ private:
|
|||
|| target->type == ProjectType::Target::Type::AudioUnitv3PlugIn)
|
||||
continue;
|
||||
|
||||
const auto targetAttributes = target->getTargetSettings (config);
|
||||
const auto targetAttributeKeys = targetAttributes.getAllKeys();
|
||||
auto targetAttributes = target->getTargetSettings (config);
|
||||
auto targetAttributeKeys = targetAttributes.getAllKeys();
|
||||
|
||||
if (targetAttributes.getAllKeys().contains ("SDKROOT"))
|
||||
{
|
||||
|
|
@ -709,14 +707,14 @@ private:
|
|||
<< "#------------------------------------------------------------------------------" << newLine
|
||||
<< newLine;
|
||||
|
||||
const auto buildTypeCondition = String ("CMAKE_BUILD_TYPE STREQUAL " + config.getName());
|
||||
auto buildTypeCondition = String ("CMAKE_BUILD_TYPE STREQUAL " + config.getName());
|
||||
out << "if (" << buildTypeCondition << ")" << newLine
|
||||
<< newLine;
|
||||
|
||||
out << "execute_process (COMMAND uname -m OUTPUT_VARIABLE JUCE_ARCH_LABEL OUTPUT_STRIP_TRAILING_WHITESPACE)" << newLine
|
||||
<< newLine;
|
||||
|
||||
const auto configSettings = exporter.getProjectSettings (config);
|
||||
auto configSettings = exporter.getProjectSettings (config);
|
||||
auto configSettingsKeys = configSettings.getAllKeys();
|
||||
|
||||
auto binaryName = config.getTargetBinaryNameString();
|
||||
|
|
@ -731,7 +729,7 @@ private:
|
|||
|| target->type == ProjectType::Target::Type::AudioUnitv3PlugIn)
|
||||
continue;
|
||||
|
||||
const auto targetVarName = getTargetVarName (*target);
|
||||
auto targetVarName = getTargetVarName (*target);
|
||||
|
||||
auto targetAttributes = target->getTargetSettings (config);
|
||||
auto targetAttributeKeys = targetAttributes.getAllKeys();
|
||||
|
|
@ -897,8 +895,8 @@ private:
|
|||
{
|
||||
if (item.getName() == ProjectSaver::getJuceCodeGroupName())
|
||||
{
|
||||
String resSourcesVar (targetVarName + "_REZ_SOURCES");
|
||||
String resOutputVar (targetVarName + "_REZ_OUTPUT");
|
||||
auto resSourcesVar = targetVarName + "_REZ_SOURCES";
|
||||
auto resOutputVar = targetVarName + "_REZ_OUTPUT";
|
||||
|
||||
out << "if (RC_COMPILER)" << newLine
|
||||
<< " set (" << resSourcesVar << newLine
|
||||
|
|
@ -964,7 +962,7 @@ private:
|
|||
}
|
||||
}
|
||||
|
||||
File updatedPlist (getTargetFolder().getChildFile (config.getName() + "-" + plistFile.getFileName()));
|
||||
auto updatedPlist = getTargetFolder().getChildFile (config.getName() + "-" + plistFile.getFileName());
|
||||
plist->writeToFile (updatedPlist, "<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">");
|
||||
targetAttributes.set ("INFOPLIST_FILE", updatedPlist.getFullPathName().quoted());
|
||||
}
|
||||
|
|
@ -1035,8 +1033,8 @@ private:
|
|||
if (target->getTargetFileType() == ProjectType::Target::TargetFileType::pluginBundle
|
||||
&& targetAttributeKeys.contains("INSTALL_PATH"))
|
||||
{
|
||||
const auto installPath = targetAttributes["INSTALL_PATH"].unquoted().replace ("$(HOME)", "$ENV{HOME}");
|
||||
const auto productFilename = binaryName + (targetAttributeKeys.contains ("WRAPPER_EXTENSION") ? "." + targetAttributes["WRAPPER_EXTENSION"] : String());
|
||||
auto installPath = targetAttributes["INSTALL_PATH"].unquoted().replace ("$(HOME)", "$ENV{HOME}");
|
||||
auto productFilename = binaryName + (targetAttributeKeys.contains ("WRAPPER_EXTENSION") ? "." + targetAttributes["WRAPPER_EXTENSION"] : String());
|
||||
auto productPath = (installPath + productFilename).quoted();
|
||||
out << "add_custom_command (TARGET " << targetVarName << " POST_BUILD" << newLine
|
||||
<< " COMMAND cmake -E remove_directory " << productPath << newLine
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ public:
|
|||
targetLocationValue.setDefault (getDefaultBuildsRootFolder() + getTargetFolderName (os));
|
||||
|
||||
if (isWindows())
|
||||
targetPlatformValue.referTo (settings, Ids::codeBlocksWindowsTarget, getProject().getUndoManagerFor (settings));
|
||||
targetPlatformValue.referTo (settings, Ids::codeBlocksWindowsTarget, getUndoManager());
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
|
|
@ -194,8 +194,8 @@ public:
|
|||
//==============================================================================
|
||||
void initialiseDependencyPathValues() override
|
||||
{
|
||||
DependencyPathOS pathOS = isLinux() ? TargetOS::linux
|
||||
: TargetOS::windows;
|
||||
auto pathOS = isLinux() ? TargetOS::linux
|
||||
: TargetOS::windows;
|
||||
|
||||
vst3Path.referTo (Value (new DependencyPathValueSource (getSetting (Ids::vst3Folder), Ids::vst3Path, pathOS)));
|
||||
|
||||
|
|
@ -333,7 +333,7 @@ private:
|
|||
|
||||
StringArray getPackages() const
|
||||
{
|
||||
StringArray result (linuxPackages);
|
||||
auto result = linuxPackages;
|
||||
|
||||
static String guiExtrasModule ("juce_gui_extra");
|
||||
|
||||
|
|
@ -351,7 +351,7 @@ private:
|
|||
|
||||
void addVersion (XmlElement& xml) const
|
||||
{
|
||||
XmlElement* fileVersion = xml.createNewChildElement ("FileVersion");
|
||||
auto* fileVersion = xml.createNewChildElement ("FileVersion");
|
||||
fileVersion->setAttribute ("major", 1);
|
||||
fileVersion->setAttribute ("minor", 6);
|
||||
}
|
||||
|
|
@ -395,8 +395,8 @@ private:
|
|||
defines = mergePreprocessorDefs (defines, getAllPreprocessorDefs (config, target.type));
|
||||
|
||||
StringArray defs;
|
||||
const auto keys = defines.getAllKeys();
|
||||
const auto values = defines.getAllValues();
|
||||
auto keys = defines.getAllKeys();
|
||||
auto values = defines.getAllValues();
|
||||
|
||||
for (int i = 0; i < defines.size(); ++i)
|
||||
{
|
||||
|
|
@ -446,7 +446,7 @@ private:
|
|||
if (target.isDynamicLibrary() || getProject().getProjectType().isAudioPlugin())
|
||||
flags.add ("-fPIC");
|
||||
|
||||
const auto packages = getPackages();
|
||||
auto packages = getPackages();
|
||||
|
||||
if (packages.size() > 0)
|
||||
{
|
||||
|
|
@ -467,7 +467,7 @@ private:
|
|||
|
||||
StringArray getLinkerFlags (const BuildConfiguration& config, CodeBlocksTarget& target) const
|
||||
{
|
||||
StringArray flags (makefileExtraLinkerFlags);
|
||||
auto flags = makefileExtraLinkerFlags;
|
||||
|
||||
if (auto* codeBlocksConfig = dynamic_cast<const CodeBlocksBuildConfiguration*> (&config))
|
||||
flags.add (codeBlocksConfig->getArchitectureTypeString());
|
||||
|
|
@ -480,7 +480,7 @@ private:
|
|||
|
||||
flags.addTokens (replacePreprocessorTokens (config, getExtraLinkerFlagsString()).trim(), " \n", "\"'");
|
||||
|
||||
const auto packages = getPackages();
|
||||
auto packages = getPackages();
|
||||
|
||||
if (config.exporter.isLinux())
|
||||
{
|
||||
|
|
@ -504,7 +504,7 @@ private:
|
|||
|
||||
StringArray getLinkerSearchPaths (const BuildConfiguration& config, CodeBlocksTarget& target) const
|
||||
{
|
||||
StringArray librarySearchPaths (config.getLibrarySearchPaths());
|
||||
auto librarySearchPaths = config.getLibrarySearchPaths();
|
||||
|
||||
if (getProject().getProjectType().isAudioPlugin() && target.type != ProjectType::Target::SharedCodeTarget)
|
||||
librarySearchPaths.add (RelativePath (getSharedCodePath (config), RelativePath::buildTargetFolder).getParentDirectory().toUnixStyle());
|
||||
|
|
@ -574,7 +574,7 @@ private:
|
|||
|
||||
String getSharedCodePath (const BuildConfiguration& config) const
|
||||
{
|
||||
const String outputPath = getOutputPathForTarget (getTargetWithType (ProjectType::Target::SharedCodeTarget), config);
|
||||
auto outputPath = getOutputPathForTarget (getTargetWithType (ProjectType::Target::SharedCodeTarget), config);
|
||||
RelativePath path (outputPath, RelativePath::buildTargetFolder);
|
||||
auto filename = path.getFileName();
|
||||
|
||||
|
|
@ -589,14 +589,14 @@ private:
|
|||
xml.setAttribute ("title", target.getTargetNameForConfiguration (config));
|
||||
|
||||
{
|
||||
XmlElement* output = xml.createNewChildElement ("Option");
|
||||
auto* output = xml.createNewChildElement ("Option");
|
||||
|
||||
output->setAttribute ("output", getOutputPathForTarget (target, config));
|
||||
|
||||
if (isLinux())
|
||||
{
|
||||
const bool keepPrefix = (target.type == ProjectType::Target::VSTPlugIn || target.type == ProjectType::Target::VST3PlugIn
|
||||
|| target.type == ProjectType::Target::AAXPlugIn || target.type == ProjectType::Target::RTASPlugIn);
|
||||
bool keepPrefix = (target.type == ProjectType::Target::VSTPlugIn || target.type == ProjectType::Target::VST3PlugIn
|
||||
|| target.type == ProjectType::Target::AAXPlugIn || target.type == ProjectType::Target::RTASPlugIn);
|
||||
|
||||
output->setAttribute ("prefix_auto", keepPrefix ? 0 : 1);
|
||||
}
|
||||
|
|
@ -618,7 +618,7 @@ private:
|
|||
xml.createNewChildElement ("Option")->setAttribute ("external_deps", getSharedCodePath (config));
|
||||
|
||||
{
|
||||
XmlElement* const compiler = xml.createNewChildElement ("Compiler");
|
||||
auto* compiler = xml.createNewChildElement ("Compiler");
|
||||
|
||||
{
|
||||
StringArray flags;
|
||||
|
|
@ -638,7 +638,7 @@ private:
|
|||
}
|
||||
|
||||
{
|
||||
const StringArray includePaths (getIncludePaths (config));
|
||||
auto includePaths = getIncludePaths (config);
|
||||
|
||||
for (auto path : includePaths)
|
||||
setAddOption (*compiler, "directory", path);
|
||||
|
|
@ -646,7 +646,7 @@ private:
|
|||
}
|
||||
|
||||
{
|
||||
XmlElement* const linker = xml.createNewChildElement ("Linker");
|
||||
auto* linker = xml.createNewChildElement ("Linker");
|
||||
|
||||
if (getProject().getProjectType().isAudioPlugin() && target.type != ProjectType::Target::SharedCodeTarget)
|
||||
setAddOption (*linker, "option", getSharedCodePath (config));
|
||||
|
|
@ -666,7 +666,7 @@ private:
|
|||
|
||||
void addBuild (XmlElement& xml) const
|
||||
{
|
||||
XmlElement* const build = xml.createNewChildElement ("Build");
|
||||
auto* build = xml.createNewChildElement ("Build");
|
||||
|
||||
for (ConstConfigIterator config (*this); config.next();)
|
||||
for (auto target : targets)
|
||||
|
|
@ -676,7 +676,7 @@ private:
|
|||
|
||||
void addVirtualTargets (XmlElement& xml) const
|
||||
{
|
||||
XmlElement* const virtualTargets = xml.createNewChildElement ("VirtualTargets");
|
||||
auto* virtualTargets = xml.createNewChildElement ("VirtualTargets");
|
||||
|
||||
for (ConstConfigIterator config (*this); config.next();)
|
||||
{
|
||||
|
|
@ -706,7 +706,7 @@ private:
|
|||
|
||||
void addProjectCompilerOptions (XmlElement& xml) const
|
||||
{
|
||||
XmlElement* const compiler = xml.createNewChildElement ("Compiler");
|
||||
auto* compiler = xml.createNewChildElement ("Compiler");
|
||||
|
||||
for (auto& option : getProjectCompilerOptions())
|
||||
setAddOption (*compiler, "option", option);
|
||||
|
|
@ -731,7 +731,7 @@ private:
|
|||
|
||||
void addProjectLinkerOptions (XmlElement& xml) const
|
||||
{
|
||||
XmlElement* const linker = xml.createNewChildElement ("Linker");
|
||||
auto* linker = xml.createNewChildElement ("Linker");
|
||||
|
||||
for (auto& lib : getProjectLinkerLibs())
|
||||
setAddOption (*linker, "library", lib);
|
||||
|
|
@ -794,14 +794,14 @@ private:
|
|||
}
|
||||
else if (projectItem.shouldBeAddedToTargetProject())
|
||||
{
|
||||
const RelativePath file (projectItem.getFile(), getTargetFolder(), RelativePath::buildTargetFolder);
|
||||
RelativePath file (projectItem.getFile(), getTargetFolder(), RelativePath::buildTargetFolder);
|
||||
|
||||
XmlElement* unit = xml.createNewChildElement ("Unit");
|
||||
auto* unit = xml.createNewChildElement ("Unit");
|
||||
unit->setAttribute ("filename", file.toUnixStyle());
|
||||
|
||||
for (ConstConfigIterator config (*this); config.next();)
|
||||
{
|
||||
const String& targetName = getTargetForProjectItem (projectItem).getTargetNameForConfiguration (*config);
|
||||
auto targetName = getTargetForProjectItem (projectItem).getTargetNameForConfiguration (*config);
|
||||
unit->createNewChildElement ("Option")->setAttribute ("target", targetName);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -33,10 +33,10 @@ class MSVCProjectExporterBase : public ProjectExporter
|
|||
public:
|
||||
MSVCProjectExporterBase (Project& p, const ValueTree& t, const char* const folderName)
|
||||
: ProjectExporter (p, t),
|
||||
IPPLibraryValue (settings, Ids::IPPLibrary, getProject().getUndoManagerFor (settings)),
|
||||
platformToolsetValue (settings, Ids::toolset, getProject().getUndoManagerFor (settings)),
|
||||
targetPlatformVersion (settings, Ids::windowsTargetPlatformVersion, getProject().getUndoManagerFor (settings)),
|
||||
manifestFileValue (settings, Ids::msvcManifestFile, getProject().getUndoManagerFor (settings))
|
||||
IPPLibraryValue (settings, Ids::IPPLibrary, getUndoManager()),
|
||||
platformToolsetValue (settings, Ids::toolset, getUndoManager()),
|
||||
targetPlatformVersion (settings, Ids::windowsTargetPlatformVersion, getUndoManager()),
|
||||
manifestFileValue (settings, Ids::msvcManifestFile, getUndoManager())
|
||||
{
|
||||
targetLocationValue.setDefault (getDefaultBuildsRootFolder() + folderName);
|
||||
|
||||
|
|
@ -95,7 +95,7 @@ public:
|
|||
|
||||
void addIPPSettingToPropertyGroup (XmlElement& p) const
|
||||
{
|
||||
String ippLibrary = getIPPLibrary();
|
||||
auto ippLibrary = getIPPLibrary();
|
||||
|
||||
if (ippLibrary.isNotEmpty())
|
||||
forEachXmlChildElementWithTagName (p, e, "PropertyGroup")
|
||||
|
|
@ -107,7 +107,7 @@ public:
|
|||
createResourcesAndIcon();
|
||||
|
||||
for (int i = 0; i < targets.size(); ++i)
|
||||
if (MSVCTargetBase* target = targets[i])
|
||||
if (auto* target = targets[i])
|
||||
target->writeProjectFile();
|
||||
|
||||
{
|
||||
|
|
@ -205,7 +205,7 @@ public:
|
|||
|
||||
String getOutputFilename (const String& suffix, bool forceSuffix) const
|
||||
{
|
||||
const String target (File::createLegalFileName (getTargetBinaryNameString().trim()));
|
||||
auto target = File::createLegalFileName (getTargetBinaryNameString().trim());
|
||||
|
||||
if (forceSuffix || ! target.containsChar ('.'))
|
||||
return target.upToLastOccurrenceOf (".", false, false) + suffix;
|
||||
|
|
@ -312,8 +312,8 @@ public:
|
|||
|
||||
void addVisualStudioPluginInstallPathProperties (PropertyListBuilder& props)
|
||||
{
|
||||
auto isBuildingAnyPlugins = (project.shouldBuildVST() || project.shouldBuildVST3()
|
||||
|| project.shouldBuildRTAS() || project.shouldBuildAAX());
|
||||
auto isBuildingAnyPlugins = (project.shouldBuildVST() || project.shouldBuildVST3()
|
||||
|| project.shouldBuildRTAS() || project.shouldBuildAAX());
|
||||
|
||||
if (isBuildingAnyPlugins)
|
||||
props.add (new ChoicePropertyComponent (pluginBinaryCopyStepValue, "Enable Plugin Copy Step"),
|
||||
|
|
@ -380,13 +380,13 @@ public:
|
|||
projectXml.setAttribute ("xmlns", "http://schemas.microsoft.com/developer/msbuild/2003");
|
||||
|
||||
{
|
||||
XmlElement* configsGroup = projectXml.createNewChildElement ("ItemGroup");
|
||||
auto* configsGroup = projectXml.createNewChildElement ("ItemGroup");
|
||||
configsGroup->setAttribute ("Label", "ProjectConfigurations");
|
||||
|
||||
for (ConstConfigIterator i (owner); i.next();)
|
||||
{
|
||||
const MSVCBuildConfiguration& config = dynamic_cast<const MSVCBuildConfiguration&> (*i);
|
||||
XmlElement* e = configsGroup->createNewChildElement ("ProjectConfiguration");
|
||||
auto& config = dynamic_cast<const MSVCBuildConfiguration&> (*i);
|
||||
auto* e = configsGroup->createNewChildElement ("ProjectConfiguration");
|
||||
e->setAttribute ("Include", config.createMSVCConfigName());
|
||||
e->createNewChildElement ("Configuration")->addTextElement (config.getName());
|
||||
e->createNewChildElement ("Platform")->addTextElement (config.is64Bit() ? config.get64BitArchName()
|
||||
|
|
@ -395,21 +395,21 @@ public:
|
|||
}
|
||||
|
||||
{
|
||||
XmlElement* globals = projectXml.createNewChildElement ("PropertyGroup");
|
||||
auto* globals = projectXml.createNewChildElement ("PropertyGroup");
|
||||
globals->setAttribute ("Label", "Globals");
|
||||
globals->createNewChildElement ("ProjectGuid")->addTextElement (getProjectGuid());
|
||||
}
|
||||
|
||||
{
|
||||
XmlElement* imports = projectXml.createNewChildElement ("Import");
|
||||
auto* imports = projectXml.createNewChildElement ("Import");
|
||||
imports->setAttribute ("Project", "$(VCTargetsPath)\\Microsoft.Cpp.Default.props");
|
||||
}
|
||||
|
||||
for (ConstConfigIterator i (owner); i.next();)
|
||||
{
|
||||
const MSVCBuildConfiguration& config = dynamic_cast<const MSVCBuildConfiguration&> (*i);
|
||||
auto& config = dynamic_cast<const MSVCBuildConfiguration&> (*i);
|
||||
|
||||
XmlElement* e = projectXml.createNewChildElement ("PropertyGroup");
|
||||
auto* e = projectXml.createNewChildElement ("PropertyGroup");
|
||||
setConditionAttribute (*e, config);
|
||||
e->setAttribute ("Label", "Configuration");
|
||||
e->createNewChildElement ("ConfigurationType")->addTextElement (getProjectType());
|
||||
|
|
@ -430,50 +430,50 @@ public:
|
|||
}
|
||||
|
||||
{
|
||||
XmlElement* e = projectXml.createNewChildElement ("Import");
|
||||
auto* e = projectXml.createNewChildElement ("Import");
|
||||
e->setAttribute ("Project", "$(VCTargetsPath)\\Microsoft.Cpp.props");
|
||||
}
|
||||
|
||||
{
|
||||
XmlElement* e = projectXml.createNewChildElement ("ImportGroup");
|
||||
auto* e = projectXml.createNewChildElement ("ImportGroup");
|
||||
e->setAttribute ("Label", "ExtensionSettings");
|
||||
}
|
||||
|
||||
{
|
||||
XmlElement* e = projectXml.createNewChildElement ("ImportGroup");
|
||||
auto* e = projectXml.createNewChildElement ("ImportGroup");
|
||||
e->setAttribute ("Label", "PropertySheets");
|
||||
XmlElement* p = e->createNewChildElement ("Import");
|
||||
auto* p = e->createNewChildElement ("Import");
|
||||
p->setAttribute ("Project", "$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props");
|
||||
p->setAttribute ("Condition", "exists('$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props')");
|
||||
p->setAttribute ("Label", "LocalAppDataPlatform");
|
||||
}
|
||||
|
||||
{
|
||||
XmlElement* e = projectXml.createNewChildElement ("PropertyGroup");
|
||||
auto* e = projectXml.createNewChildElement ("PropertyGroup");
|
||||
e->setAttribute ("Label", "UserMacros");
|
||||
}
|
||||
|
||||
{
|
||||
XmlElement* props = projectXml.createNewChildElement ("PropertyGroup");
|
||||
auto* props = projectXml.createNewChildElement ("PropertyGroup");
|
||||
props->createNewChildElement ("_ProjectFileVersion")->addTextElement ("10.0.30319.1");
|
||||
props->createNewChildElement ("TargetExt")->addTextElement (getTargetSuffix());
|
||||
|
||||
for (ConstConfigIterator i (owner); i.next();)
|
||||
{
|
||||
const MSVCBuildConfiguration& config = dynamic_cast<const MSVCBuildConfiguration&> (*i);
|
||||
auto& config = dynamic_cast<const MSVCBuildConfiguration&> (*i);
|
||||
|
||||
if (getConfigTargetPath (config).isNotEmpty())
|
||||
{
|
||||
XmlElement* outdir = props->createNewChildElement ("OutDir");
|
||||
auto* outdir = props->createNewChildElement ("OutDir");
|
||||
setConditionAttribute (*outdir, config);
|
||||
outdir->addTextElement (FileHelpers::windowsStylePath (getConfigTargetPath (config)) + "\\");
|
||||
}
|
||||
|
||||
{
|
||||
XmlElement* intdir = props->createNewChildElement("IntDir");
|
||||
auto* intdir = props->createNewChildElement("IntDir");
|
||||
setConditionAttribute (*intdir, config);
|
||||
|
||||
String intermediatesPath = getIntermediatesPath (config);
|
||||
auto intermediatesPath = getIntermediatesPath (config);
|
||||
if (! intermediatesPath.endsWithChar (L'\\'))
|
||||
intermediatesPath += L'\\';
|
||||
|
||||
|
|
@ -482,21 +482,21 @@ public:
|
|||
|
||||
|
||||
{
|
||||
XmlElement* targetName = props->createNewChildElement ("TargetName");
|
||||
auto* targetName = props->createNewChildElement ("TargetName");
|
||||
setConditionAttribute (*targetName, config);
|
||||
targetName->addTextElement (config.getOutputFilename ("", false));
|
||||
}
|
||||
|
||||
{
|
||||
XmlElement* manifest = props->createNewChildElement ("GenerateManifest");
|
||||
auto* manifest = props->createNewChildElement ("GenerateManifest");
|
||||
setConditionAttribute (*manifest, config);
|
||||
manifest->addTextElement (config.shouldGenerateManifest() ? "true" : "false");
|
||||
}
|
||||
|
||||
const StringArray librarySearchPaths (getLibrarySearchPaths (config));
|
||||
auto librarySearchPaths = getLibrarySearchPaths (config);
|
||||
if (librarySearchPaths.size() > 0)
|
||||
{
|
||||
XmlElement* libPath = props->createNewChildElement ("LibraryPath");
|
||||
auto* libPath = props->createNewChildElement ("LibraryPath");
|
||||
setConditionAttribute (*libPath, config);
|
||||
libPath->addTextElement ("$(LibraryPath);" + librarySearchPaths.joinIntoString (";"));
|
||||
}
|
||||
|
|
@ -505,15 +505,15 @@ public:
|
|||
|
||||
for (ConstConfigIterator i (owner); i.next();)
|
||||
{
|
||||
const MSVCBuildConfiguration& config = dynamic_cast<const MSVCBuildConfiguration&> (*i);
|
||||
auto& config = dynamic_cast<const MSVCBuildConfiguration&> (*i);
|
||||
|
||||
const bool isDebug = config.isDebug();
|
||||
bool isDebug = config.isDebug();
|
||||
|
||||
XmlElement* group = projectXml.createNewChildElement ("ItemDefinitionGroup");
|
||||
auto* group = projectXml.createNewChildElement ("ItemDefinitionGroup");
|
||||
setConditionAttribute (*group, config);
|
||||
|
||||
{
|
||||
XmlElement* midl = group->createNewChildElement ("Midl");
|
||||
auto* midl = group->createNewChildElement ("Midl");
|
||||
midl->createNewChildElement ("PreprocessorDefinitions")->addTextElement (isDebug ? "_DEBUG;%(PreprocessorDefinitions)"
|
||||
: "NDEBUG;%(PreprocessorDefinitions)");
|
||||
midl->createNewChildElement ("MkTypLibCompatible")->addTextElement ("true");
|
||||
|
|
@ -525,7 +525,7 @@ public:
|
|||
bool isUsingEditAndContinue = false;
|
||||
|
||||
{
|
||||
XmlElement* cl = group->createNewChildElement ("ClCompile");
|
||||
auto* cl = group->createNewChildElement ("ClCompile");
|
||||
|
||||
cl->createNewChildElement ("Optimization")->addTextElement (getOptimisationLevelString (config.getOptimisationLevelInt()));
|
||||
|
||||
|
|
@ -535,14 +535,14 @@ public:
|
|||
->addTextElement (config.getDebugInformationFormatString());
|
||||
}
|
||||
|
||||
StringArray includePaths (getOwner().getHeaderSearchPaths (config));
|
||||
auto includePaths = getOwner().getHeaderSearchPaths (config);
|
||||
includePaths.addArray (getExtraSearchPaths());
|
||||
includePaths.add ("%(AdditionalIncludeDirectories)");
|
||||
|
||||
cl->createNewChildElement ("AdditionalIncludeDirectories")->addTextElement (includePaths.joinIntoString (";"));
|
||||
cl->createNewChildElement ("PreprocessorDefinitions")->addTextElement (getPreprocessorDefs (config, ";") + ";%(PreprocessorDefinitions)");
|
||||
|
||||
const bool runtimeDLL = config.isUsingRuntimeLibDLL();
|
||||
bool runtimeDLL = config.isUsingRuntimeLibDLL();
|
||||
cl->createNewChildElement ("RuntimeLibrary")->addTextElement (runtimeDLL ? (isDebug ? "MultiThreadedDebugDLL" : "MultiThreadedDLL")
|
||||
: (isDebug ? "MultiThreadedDebug" : "MultiThreaded"));
|
||||
cl->createNewChildElement ("RuntimeTypeInfo")->addTextElement ("true");
|
||||
|
|
@ -557,7 +557,7 @@ public:
|
|||
if (config.isFastMathEnabled())
|
||||
cl->createNewChildElement ("FloatingPointModel")->addTextElement ("Fast");
|
||||
|
||||
const String extraFlags (getOwner().replacePreprocessorTokens (config, getOwner().getExtraCompilerFlagsString()).trim());
|
||||
auto extraFlags = getOwner().replacePreprocessorTokens (config, getOwner().getExtraCompilerFlagsString()).trim();
|
||||
if (extraFlags.isNotEmpty())
|
||||
cl->createNewChildElement ("AdditionalOptions")->addTextElement (extraFlags + " %(AdditionalOptions)");
|
||||
|
||||
|
|
@ -573,20 +573,20 @@ public:
|
|||
}
|
||||
|
||||
{
|
||||
XmlElement* res = group->createNewChildElement ("ResourceCompile");
|
||||
auto* res = group->createNewChildElement ("ResourceCompile");
|
||||
res->createNewChildElement ("PreprocessorDefinitions")->addTextElement (isDebug ? "_DEBUG;%(PreprocessorDefinitions)"
|
||||
: "NDEBUG;%(PreprocessorDefinitions)");
|
||||
}
|
||||
|
||||
const String externalLibraries (getExternalLibraries (config, getOwner().getExternalLibrariesString()));
|
||||
const auto additionalDependencies = externalLibraries.isNotEmpty() ? getOwner().replacePreprocessorTokens (config, externalLibraries).trim() + ";%(AdditionalDependencies)"
|
||||
auto externalLibraries = getExternalLibraries (config, getOwner().getExternalLibrariesString());
|
||||
auto additionalDependencies = externalLibraries.isNotEmpty() ? getOwner().replacePreprocessorTokens (config, externalLibraries).trim() + ";%(AdditionalDependencies)"
|
||||
: String();
|
||||
const StringArray librarySearchPaths (config.getLibrarySearchPaths());
|
||||
const auto additionalLibraryDirs = librarySearchPaths.size() > 0 ? getOwner().replacePreprocessorTokens (config, librarySearchPaths.joinIntoString (";")) + ";%(AdditionalLibraryDirectories)"
|
||||
: String();
|
||||
auto librarySearchPaths = config.getLibrarySearchPaths();
|
||||
auto additionalLibraryDirs = librarySearchPaths.size() > 0 ? getOwner().replacePreprocessorTokens (config, librarySearchPaths.joinIntoString (";")) + ";%(AdditionalLibraryDirectories)"
|
||||
: String();
|
||||
|
||||
{
|
||||
XmlElement* link = group->createNewChildElement ("Link");
|
||||
auto* link = group->createNewChildElement ("Link");
|
||||
link->createNewChildElement ("OutputFile")->addTextElement (getOutputFilePath (config));
|
||||
link->createNewChildElement ("SuppressStartupBanner")->addTextElement ("true");
|
||||
link->createNewChildElement ("IgnoreSpecificDefaultLibraries")->addTextElement (isDebug ? "libcmt.lib; msvcrt.lib;;%(IgnoreSpecificDefaultLibraries)"
|
||||
|
|
@ -615,29 +615,29 @@ public:
|
|||
if (additionalDependencies.isNotEmpty())
|
||||
link->createNewChildElement ("AdditionalDependencies")->addTextElement (additionalDependencies);
|
||||
|
||||
String extraLinkerOptions (getOwner().getExtraLinkerFlagsString());
|
||||
auto extraLinkerOptions = getOwner().getExtraLinkerFlagsString();
|
||||
if (extraLinkerOptions.isNotEmpty())
|
||||
link->createNewChildElement ("AdditionalOptions")->addTextElement (getOwner().replacePreprocessorTokens (config, extraLinkerOptions).trim()
|
||||
+ " %(AdditionalOptions)");
|
||||
|
||||
const String delayLoadedDLLs (getDelayLoadedDLLs());
|
||||
auto delayLoadedDLLs = getDelayLoadedDLLs();
|
||||
if (delayLoadedDLLs.isNotEmpty())
|
||||
link->createNewChildElement ("DelayLoadDLLs")->addTextElement (delayLoadedDLLs);
|
||||
|
||||
const String moduleDefinitionsFile (getModuleDefinitions (config));
|
||||
auto moduleDefinitionsFile = getModuleDefinitions (config);
|
||||
if (moduleDefinitionsFile.isNotEmpty())
|
||||
link->createNewChildElement ("ModuleDefinitionFile")
|
||||
->addTextElement (moduleDefinitionsFile);
|
||||
}
|
||||
|
||||
{
|
||||
XmlElement* bsc = group->createNewChildElement ("Bscmake");
|
||||
auto* bsc = group->createNewChildElement ("Bscmake");
|
||||
bsc->createNewChildElement ("SuppressStartupBanner")->addTextElement ("true");
|
||||
bsc->createNewChildElement ("OutputFile")->addTextElement (getOwner().getIntDirFile (config, config.getOutputFilename (".bsc", true)));
|
||||
}
|
||||
|
||||
{
|
||||
XmlElement* lib = group->createNewChildElement ("Lib");
|
||||
auto* lib = group->createNewChildElement ("Lib");
|
||||
|
||||
if (additionalDependencies.isNotEmpty())
|
||||
lib->createNewChildElement ("AdditionalDependencies")->addTextElement (additionalDependencies);
|
||||
|
|
@ -646,10 +646,10 @@ public:
|
|||
lib->createNewChildElement ("AdditionalLibraryDirectories")->addTextElement (additionalLibraryDirs);
|
||||
}
|
||||
|
||||
const RelativePath& manifestFile = getOwner().getManifestPath();
|
||||
auto manifestFile = getOwner().getManifestPath();
|
||||
if (manifestFile.getRoot() != RelativePath::unknown)
|
||||
{
|
||||
XmlElement* bsc = group->createNewChildElement ("Manifest");
|
||||
auto* bsc = group->createNewChildElement ("Manifest");
|
||||
bsc->createNewChildElement ("AdditionalManifestFiles")
|
||||
->addTextElement (manifestFile.rebased (getOwner().getProject().getFile().getParentDirectory(),
|
||||
getOwner().getTargetFolder(),
|
||||
|
|
@ -658,17 +658,17 @@ public:
|
|||
|
||||
if (getTargetFileType() == staticLibrary && ! config.is64Bit())
|
||||
{
|
||||
XmlElement* lib = group->createNewChildElement ("Lib");
|
||||
auto* lib = group->createNewChildElement ("Lib");
|
||||
lib->createNewChildElement ("TargetMachine")->addTextElement ("MachineX86");
|
||||
}
|
||||
|
||||
const String preBuild = getPreBuildSteps (config);
|
||||
auto preBuild = getPreBuildSteps (config);
|
||||
if (preBuild.isNotEmpty())
|
||||
group->createNewChildElement ("PreBuildEvent")
|
||||
->createNewChildElement ("Command")
|
||||
->addTextElement (preBuild);
|
||||
|
||||
const String postBuild = getPostBuildSteps (config);
|
||||
auto postBuild = getPostBuildSteps (config);
|
||||
if (postBuild.isNotEmpty())
|
||||
group->createNewChildElement ("PostBuildEvent")
|
||||
->createNewChildElement ("Command")
|
||||
|
|
@ -678,12 +678,12 @@ public:
|
|||
ScopedPointer<XmlElement> otherFilesGroup (new XmlElement ("ItemGroup"));
|
||||
|
||||
{
|
||||
XmlElement* cppFiles = projectXml.createNewChildElement ("ItemGroup");
|
||||
XmlElement* headerFiles = projectXml.createNewChildElement ("ItemGroup");
|
||||
auto* cppFiles = projectXml.createNewChildElement ("ItemGroup");
|
||||
auto* headerFiles = projectXml.createNewChildElement ("ItemGroup");
|
||||
|
||||
for (int i = 0; i < getOwner().getAllGroups().size(); ++i)
|
||||
{
|
||||
const Project::Item& group = getOwner().getAllGroups().getReference (i);
|
||||
auto& group = getOwner().getAllGroups().getReference (i);
|
||||
|
||||
if (group.getNumChildren() > 0)
|
||||
addFilesToCompile (group, *cppFiles, *headerFiles, *otherFilesGroup);
|
||||
|
|
@ -692,7 +692,7 @@ public:
|
|||
|
||||
if (getOwner().iconFile != File())
|
||||
{
|
||||
XmlElement* e = otherFilesGroup->createNewChildElement ("None");
|
||||
auto* e = otherFilesGroup->createNewChildElement ("None");
|
||||
e->setAttribute ("Include", prependDot (getOwner().iconFile.getFileName()));
|
||||
}
|
||||
|
||||
|
|
@ -701,18 +701,18 @@ public:
|
|||
|
||||
if (getOwner().hasResourceFile())
|
||||
{
|
||||
XmlElement* rcGroup = projectXml.createNewChildElement ("ItemGroup");
|
||||
XmlElement* e = rcGroup->createNewChildElement ("ResourceCompile");
|
||||
auto* rcGroup = projectXml.createNewChildElement ("ItemGroup");
|
||||
auto* e = rcGroup->createNewChildElement ("ResourceCompile");
|
||||
e->setAttribute ("Include", prependDot (getOwner().rcFile.getFileName()));
|
||||
}
|
||||
|
||||
{
|
||||
XmlElement* e = projectXml.createNewChildElement ("Import");
|
||||
auto* e = projectXml.createNewChildElement ("Import");
|
||||
e->setAttribute ("Project", "$(VCTargetsPath)\\Microsoft.Cpp.targets");
|
||||
}
|
||||
|
||||
{
|
||||
XmlElement* e = projectXml.createNewChildElement ("ImportGroup");
|
||||
auto* e = projectXml.createNewChildElement ("ImportGroup");
|
||||
e->setAttribute ("Label", "ExtensionTargets");
|
||||
}
|
||||
|
||||
|
|
@ -739,7 +739,7 @@ public:
|
|||
//==============================================================================
|
||||
void addFilesToCompile (const Project::Item& projectItem, XmlElement& cpps, XmlElement& headers, XmlElement& otherFiles) const
|
||||
{
|
||||
const Type targetType = (getOwner().getProject().getProjectType().isAudioPlugin() ? type : SharedCodeTarget);
|
||||
auto targetType = (getOwner().getProject().getProjectType().isAudioPlugin() ? type : SharedCodeTarget);
|
||||
|
||||
if (projectItem.isGroup())
|
||||
{
|
||||
|
|
@ -749,7 +749,7 @@ public:
|
|||
else if (projectItem.shouldBeAddedToTargetProject()
|
||||
&& getOwner().getProject().getTargetTypeFromFilePath (projectItem.getFile(), true) == targetType)
|
||||
{
|
||||
const RelativePath path (projectItem.getFile(), getOwner().getTargetFolder(), RelativePath::buildTargetFolder);
|
||||
RelativePath path (projectItem.getFile(), getOwner().getTargetFolder(), RelativePath::buildTargetFolder);
|
||||
|
||||
jassert (path.getRoot() == RelativePath::buildTargetFolder);
|
||||
|
||||
|
|
@ -780,14 +780,14 @@ public:
|
|||
|
||||
void setConditionAttribute (XmlElement& xml, const BuildConfiguration& config) const
|
||||
{
|
||||
const MSVCBuildConfiguration& msvcConfig = dynamic_cast<const MSVCBuildConfiguration&> (config);
|
||||
auto& msvcConfig = dynamic_cast<const MSVCBuildConfiguration&> (config);
|
||||
xml.setAttribute ("Condition", "'$(Configuration)|$(Platform)'=='" + msvcConfig.createMSVCConfigName() + "'");
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
void addFilterGroup (XmlElement& groups, const String& path) const
|
||||
{
|
||||
XmlElement* e = groups.createNewChildElement ("Filter");
|
||||
auto* e = groups.createNewChildElement ("Filter");
|
||||
e->setAttribute ("Include", path);
|
||||
e->createNewChildElement ("UniqueIdentifier")->addTextElement (createGUID (path + "_guidpathsaltxhsdf"));
|
||||
}
|
||||
|
|
@ -795,7 +795,7 @@ public:
|
|||
void addFileToFilter (const RelativePath& file, const String& groupPath,
|
||||
XmlElement& cpps, XmlElement& headers, XmlElement& otherFiles) const
|
||||
{
|
||||
XmlElement* e;
|
||||
XmlElement* e = nullptr;
|
||||
|
||||
if (file.hasFileExtension (headerFileExtensions))
|
||||
e = headers.createNewChildElement ("ClInclude");
|
||||
|
|
@ -812,7 +812,7 @@ public:
|
|||
bool addFilesToFilter (const Project::Item& projectItem, const String& path,
|
||||
XmlElement& cpps, XmlElement& headers, XmlElement& otherFiles, XmlElement& groups) const
|
||||
{
|
||||
const Type targetType = (getOwner().getProject().getProjectType().isAudioPlugin() ? type : SharedCodeTarget);
|
||||
auto targetType = (getOwner().getProject().getProjectType().isAudioPlugin() ? type : SharedCodeTarget);
|
||||
|
||||
if (projectItem.isGroup())
|
||||
{
|
||||
|
|
@ -831,7 +831,7 @@ public:
|
|||
}
|
||||
else if (projectItem.shouldBeAddedToTargetProject())
|
||||
{
|
||||
const RelativePath relativePath (projectItem.getFile(), getOwner().getTargetFolder(), RelativePath::buildTargetFolder);
|
||||
RelativePath relativePath (projectItem.getFile(), getOwner().getTargetFolder(), RelativePath::buildTargetFolder);
|
||||
|
||||
jassert (relativePath.getRoot() == RelativePath::buildTargetFolder);
|
||||
|
||||
|
|
@ -867,22 +867,22 @@ public:
|
|||
filterXml.setAttribute ("ToolsVersion", getOwner().getToolsVersion());
|
||||
filterXml.setAttribute ("xmlns", "http://schemas.microsoft.com/developer/msbuild/2003");
|
||||
|
||||
XmlElement* groupsXml = filterXml.createNewChildElement ("ItemGroup");
|
||||
XmlElement* cpps = filterXml.createNewChildElement ("ItemGroup");
|
||||
XmlElement* headers = filterXml.createNewChildElement ("ItemGroup");
|
||||
auto* groupsXml = filterXml.createNewChildElement ("ItemGroup");
|
||||
auto* cpps = filterXml.createNewChildElement ("ItemGroup");
|
||||
auto* headers = filterXml.createNewChildElement ("ItemGroup");
|
||||
ScopedPointer<XmlElement> otherFilesGroup (new XmlElement ("ItemGroup"));
|
||||
|
||||
for (int i = 0; i < getOwner().getAllGroups().size(); ++i)
|
||||
{
|
||||
const Project::Item& group = getOwner().getAllGroups().getReference(i);
|
||||
auto& group = getOwner().getAllGroups().getReference(i);
|
||||
|
||||
if (group.getNumChildren() > 0)
|
||||
addFilesToFilter (group, group.getName(), *cpps, *headers, *otherFilesGroup, *groupsXml);
|
||||
}
|
||||
}
|
||||
|
||||
if (getOwner().iconFile.exists())
|
||||
{
|
||||
XmlElement* e = otherFilesGroup->createNewChildElement ("None");
|
||||
auto* e = otherFilesGroup->createNewChildElement ("None");
|
||||
e->setAttribute ("Include", prependDot (getOwner().iconFile.getFileName()));
|
||||
e->createNewChildElement ("Filter")->addTextElement (ProjectSaver::getJuceCodeGroupName());
|
||||
}
|
||||
|
|
@ -892,15 +892,15 @@ public:
|
|||
|
||||
if (getOwner().hasResourceFile())
|
||||
{
|
||||
XmlElement* rcGroup = filterXml.createNewChildElement ("ItemGroup");
|
||||
XmlElement* e = rcGroup->createNewChildElement ("ResourceCompile");
|
||||
auto* rcGroup = filterXml.createNewChildElement ("ItemGroup");
|
||||
auto* e = rcGroup->createNewChildElement ("ResourceCompile");
|
||||
e->setAttribute ("Include", prependDot (getOwner().rcFile.getFileName()));
|
||||
e->createNewChildElement ("Filter")->addTextElement (ProjectSaver::getJuceCodeGroupName());
|
||||
}
|
||||
}
|
||||
|
||||
const MSVCProjectExporterBase& getOwner() const { return owner; }
|
||||
const String& getProjectGuid() const { return projectGuid; }
|
||||
const String& getProjectGuid() const { return projectGuid; }
|
||||
|
||||
//==============================================================================
|
||||
void writeProjectFile()
|
||||
|
|
@ -920,7 +920,7 @@ public:
|
|||
|
||||
String getSolutionTargetPath (const BuildConfiguration& config) const
|
||||
{
|
||||
const String binaryPath (config.getTargetBinaryRelativePathString().trim());
|
||||
auto binaryPath = config.getTargetBinaryRelativePathString().trim();
|
||||
if (binaryPath.isEmpty())
|
||||
return "$(SolutionDir)$(Platform)\\$(Configuration)";
|
||||
|
||||
|
|
@ -935,8 +935,8 @@ public:
|
|||
|
||||
String getConfigTargetPath (const BuildConfiguration& config) const
|
||||
{
|
||||
String solutionTargetFolder (getSolutionTargetPath (config));
|
||||
return solutionTargetFolder + String ("\\") + getName();
|
||||
auto solutionTargetFolder = getSolutionTargetPath (config);
|
||||
return solutionTargetFolder + "\\" + getName();
|
||||
}
|
||||
|
||||
String getIntermediatesPath (const MSVCBuildConfiguration& config) const
|
||||
|
|
@ -963,7 +963,7 @@ public:
|
|||
|
||||
String getTargetSuffix() const
|
||||
{
|
||||
const ProjectType::Target::TargetFileType fileType = getTargetFileType();
|
||||
auto fileType = getTargetFileType();
|
||||
|
||||
switch (fileType)
|
||||
{
|
||||
|
|
@ -991,14 +991,14 @@ public:
|
|||
|
||||
XmlElement* createToolElement (XmlElement& parent, const String& toolName) const
|
||||
{
|
||||
XmlElement* const e = parent.createNewChildElement ("Tool");
|
||||
auto* e = parent.createNewChildElement ("Tool");
|
||||
e->setAttribute ("Name", toolName);
|
||||
return e;
|
||||
}
|
||||
|
||||
String getPreprocessorDefs (const BuildConfiguration& config, const String& joinString) const
|
||||
{
|
||||
StringPairArray defines (getOwner().msvcExtraPreprocessorDefs);
|
||||
auto defines = getOwner().msvcExtraPreprocessorDefs;
|
||||
defines.set ("WIN32", "");
|
||||
defines.set ("_WINDOWS", "");
|
||||
|
||||
|
|
@ -1022,8 +1022,8 @@ public:
|
|||
|
||||
for (int i = 0; i < defines.size(); ++i)
|
||||
{
|
||||
String def (defines.getAllKeys()[i]);
|
||||
const String value (defines.getAllValues()[i]);
|
||||
auto def = defines.getAllKeys()[i];
|
||||
auto value = defines.getAllValues()[i];
|
||||
if (value.isNotEmpty())
|
||||
def << "=" << value;
|
||||
|
||||
|
|
@ -1036,8 +1036,8 @@ public:
|
|||
//==============================================================================
|
||||
RelativePath getAAXIconFile() const
|
||||
{
|
||||
const RelativePath aaxSDK (getOwner().getAAXPathValue().toString(), RelativePath::projectFolder);
|
||||
const RelativePath projectIcon ("icon.ico", RelativePath::buildTargetFolder);
|
||||
RelativePath aaxSDK (getOwner().getAAXPathValue().toString(), RelativePath::projectFolder);
|
||||
RelativePath projectIcon ("icon.ico", RelativePath::buildTargetFolder);
|
||||
|
||||
if (getOwner().getTargetFolder().getChildFile ("icon.ico").existsAsFile())
|
||||
return projectIcon.rebased (getOwner().getTargetFolder(),
|
||||
|
|
@ -1051,10 +1051,10 @@ public:
|
|||
{
|
||||
if (type == AAXPlugIn)
|
||||
{
|
||||
const RelativePath aaxSDK (getOwner().getAAXPathValue().toString(), RelativePath::projectFolder);
|
||||
const RelativePath aaxLibsFolder = aaxSDK.getChildFile ("Libs");
|
||||
const RelativePath bundleScript = aaxSDK.getChildFile ("Utilities").getChildFile ("CreatePackage.bat");
|
||||
const RelativePath iconFilePath = getAAXIconFile();
|
||||
RelativePath aaxSDK (getOwner().getAAXPathValue().toString(), RelativePath::projectFolder);
|
||||
RelativePath aaxLibsFolder = aaxSDK.getChildFile ("Libs");
|
||||
RelativePath bundleScript = aaxSDK.getChildFile ("Utilities").getChildFile ("CreatePackage.bat");
|
||||
RelativePath iconFilePath = getAAXIconFile();
|
||||
|
||||
auto is64Bit = (config.config [Ids::winArchitecture] == "x64");
|
||||
|
||||
|
|
@ -1133,7 +1133,7 @@ public:
|
|||
break;
|
||||
case RTASPlugIn:
|
||||
{
|
||||
const RelativePath rtasFolder (getOwner().getRTASPathValue().toString(), RelativePath::projectFolder);
|
||||
RelativePath rtasFolder (getOwner().getRTASPathValue().toString(), RelativePath::projectFolder);
|
||||
defines.set ("JucePlugin_WinBag_path", createRebasedPath (rtasFolder.getChildFile ("WinBag")));
|
||||
}
|
||||
break;
|
||||
|
|
@ -1155,7 +1155,7 @@ public:
|
|||
StringArray searchPaths;
|
||||
if (type == RTASPlugIn)
|
||||
{
|
||||
const RelativePath rtasFolder (getOwner().getRTASPathValue().toString(), RelativePath::projectFolder);
|
||||
RelativePath rtasFolder (getOwner().getRTASPathValue().toString(), RelativePath::projectFolder);
|
||||
|
||||
static const char* p[] = { "AlturaPorts/TDMPlugins/PluginLibrary/EffectClasses",
|
||||
"AlturaPorts/TDMPlugins/PluginLibrary/ProcessClasses",
|
||||
|
|
@ -1203,10 +1203,10 @@ public:
|
|||
|
||||
StringArray getLibrarySearchPaths (const BuildConfiguration& config) const
|
||||
{
|
||||
StringArray librarySearchPaths (config.getLibrarySearchPaths());
|
||||
auto librarySearchPaths = config.getLibrarySearchPaths();
|
||||
|
||||
if (type != SharedCodeTarget)
|
||||
if (const MSVCTargetBase* shared = getOwner().getSharedCodeTarget())
|
||||
if (auto* shared = getOwner().getSharedCodeTarget())
|
||||
librarySearchPaths.add (shared->getConfigTargetPath (config));
|
||||
|
||||
return librarySearchPaths;
|
||||
|
|
@ -1219,12 +1219,12 @@ public:
|
|||
if (otherLibs.isNotEmpty())
|
||||
libraries.add (otherLibs);
|
||||
|
||||
StringArray moduleLibs = getOwner().getModuleLibs();
|
||||
auto moduleLibs = getOwner().getModuleLibs();
|
||||
if (! moduleLibs.isEmpty())
|
||||
libraries.addArray (moduleLibs);
|
||||
|
||||
if (type != SharedCodeTarget)
|
||||
if (const MSVCTargetBase* shared = getOwner().getSharedCodeTarget())
|
||||
if (auto* shared = getOwner().getSharedCodeTarget())
|
||||
libraries.add (shared->getBinaryNameWithSuffix (config));
|
||||
|
||||
return libraries.joinIntoString (";");
|
||||
|
|
@ -1232,7 +1232,7 @@ public:
|
|||
|
||||
String getDelayLoadedDLLs() const
|
||||
{
|
||||
String delayLoadedDLLs = getOwner().msvcDelayLoadedDLLs;
|
||||
auto delayLoadedDLLs = getOwner().msvcDelayLoadedDLLs;
|
||||
|
||||
if (type == RTASPlugIn)
|
||||
delayLoadedDLLs += "DAE.dll; DigiExt.dll; DSI.dll; PluginLib.dll; "
|
||||
|
|
@ -1243,16 +1243,16 @@ public:
|
|||
|
||||
String getModuleDefinitions (const MSVCBuildConfiguration& config) const
|
||||
{
|
||||
const String& moduleDefinitions = config.config [Ids::msvcModuleDefinitionFile].toString();
|
||||
auto moduleDefinitions = config.config [Ids::msvcModuleDefinitionFile].toString();
|
||||
|
||||
if (moduleDefinitions.isNotEmpty())
|
||||
return moduleDefinitions;
|
||||
|
||||
if (type == RTASPlugIn)
|
||||
{
|
||||
const ProjectExporter& exp = getOwner();
|
||||
auto& exp = getOwner();
|
||||
|
||||
RelativePath moduleDefPath
|
||||
auto moduleDefPath
|
||||
= RelativePath (exp.getPathForModuleString ("juce_audio_plugin_client"), RelativePath::projectFolder)
|
||||
.getChildFile ("juce_audio_plugin_client").getChildFile ("RTAS").getChildFile ("juce_RTAS_WinExports.def");
|
||||
|
||||
|
|
@ -1264,8 +1264,8 @@ public:
|
|||
return {};
|
||||
}
|
||||
|
||||
File getVCProjFile() const { return getOwner().getProjectFile (getProjectFileSuffix(), getName()); }
|
||||
File getVCProjFiltersFile() const { return getOwner().getProjectFile (getFiltersFileSuffix(), getName()); }
|
||||
File getVCProjFile() const { return getOwner().getProjectFile (getProjectFileSuffix(), getName()); }
|
||||
File getVCProjFiltersFile() const { return getOwner().getProjectFile (getFiltersFileSuffix(), getName()); }
|
||||
|
||||
String createRebasedPath (const RelativePath& path) const { return getOwner().createRebasedPath (path); }
|
||||
|
||||
|
|
@ -1403,7 +1403,7 @@ private:
|
|||
//==============================================================================
|
||||
String createRebasedPath (const RelativePath& path) const
|
||||
{
|
||||
String rebasedPath = rebaseFromProjectFolderToBuildTarget (path).toWindowsStyle();
|
||||
auto rebasedPath = rebaseFromProjectFolderToBuildTarget (path).toWindowsStyle();
|
||||
|
||||
return getVisualStudioVersion() < 10 // (VS10 automatically adds escape characters to the quotes for this definition)
|
||||
? CppTokeniserFunctions::addEscapeChars (rebasedPath.quoted())
|
||||
|
|
@ -1443,7 +1443,7 @@ protected:
|
|||
void updateOldSettings()
|
||||
{
|
||||
{
|
||||
const String oldStylePrebuildCommand (getSettingString (Ids::prebuildCommand));
|
||||
auto oldStylePrebuildCommand = getSettingString (Ids::prebuildCommand);
|
||||
settings.removeProperty (Ids::prebuildCommand, nullptr);
|
||||
|
||||
if (oldStylePrebuildCommand.isNotEmpty())
|
||||
|
|
@ -1452,7 +1452,7 @@ protected:
|
|||
}
|
||||
|
||||
{
|
||||
const String oldStyleLibName (getSettingString ("libraryName_Debug"));
|
||||
auto oldStyleLibName = getSettingString ("libraryName_Debug");
|
||||
settings.removeProperty ("libraryName_Debug", nullptr);
|
||||
|
||||
if (oldStyleLibName.isNotEmpty())
|
||||
|
|
@ -1462,7 +1462,7 @@ protected:
|
|||
}
|
||||
|
||||
{
|
||||
const String oldStyleLibName (getSettingString ("libraryName_Release"));
|
||||
auto oldStyleLibName = getSettingString ("libraryName_Release");
|
||||
settings.removeProperty ("libraryName_Release", nullptr);
|
||||
|
||||
if (oldStyleLibName.isNotEmpty())
|
||||
|
|
@ -1479,7 +1479,7 @@ protected:
|
|||
|
||||
StringArray getHeaderSearchPaths (const BuildConfiguration& config) const
|
||||
{
|
||||
StringArray searchPaths (extraSearchPaths);
|
||||
auto searchPaths = extraSearchPaths;
|
||||
searchPaths.addArray (config.getHeaderSearchPaths());
|
||||
return getCleanedStringArray (searchPaths);
|
||||
}
|
||||
|
|
@ -1489,7 +1489,7 @@ protected:
|
|||
String sharedCodeGuid;
|
||||
|
||||
for (int i = 0; i < targets.size(); ++i)
|
||||
if (MSVCTargetBase* target = targets[i])
|
||||
if (auto* target = targets[i])
|
||||
if (target->type == ProjectType::Target::SharedCodeTarget)
|
||||
return target->getProjectGuid();
|
||||
|
||||
|
|
@ -1499,13 +1499,13 @@ protected:
|
|||
//==============================================================================
|
||||
void writeProjectDependencies (OutputStream& out) const
|
||||
{
|
||||
const String sharedCodeGuid = getSharedCodeGuid();
|
||||
auto sharedCodeGuid = getSharedCodeGuid();
|
||||
|
||||
for (int addingOtherTargets = 0; addingOtherTargets < (sharedCodeGuid.isNotEmpty() ? 2 : 1); ++addingOtherTargets)
|
||||
{
|
||||
for (int i = 0; i < targets.size(); ++i)
|
||||
{
|
||||
if (MSVCTargetBase* target = targets[i])
|
||||
if (auto* target = targets[i])
|
||||
{
|
||||
if (sharedCodeGuid.isEmpty() || (addingOtherTargets != 0) == (target->type != ProjectType::Target::StandalonePlugIn))
|
||||
{
|
||||
|
|
@ -1540,8 +1540,8 @@ protected:
|
|||
|
||||
for (ConstConfigIterator i (*this); i.next();)
|
||||
{
|
||||
const MSVCBuildConfiguration& config = dynamic_cast<const MSVCBuildConfiguration&> (*i);
|
||||
const String configName = config.createMSVCConfigName();
|
||||
auto& config = dynamic_cast<const MSVCBuildConfiguration&> (*i);
|
||||
auto configName = config.createMSVCConfigName();
|
||||
out << "\t\t" << configName << " = " << configName << newLine;
|
||||
}
|
||||
|
||||
|
|
@ -1551,8 +1551,8 @@ protected:
|
|||
for (auto& target : targets)
|
||||
for (ConstConfigIterator i (*this); i.next();)
|
||||
{
|
||||
const MSVCBuildConfiguration& config = dynamic_cast<const MSVCBuildConfiguration&> (*i);
|
||||
const String configName = config.createMSVCConfigName();
|
||||
auto& config = dynamic_cast<const MSVCBuildConfiguration&> (*i);
|
||||
auto configName = config.createMSVCConfigName();
|
||||
|
||||
for (auto& suffix : { "ActiveCfg", "Build.0" })
|
||||
out << "\t\t" << target->getProjectGuid() << "." << configName << "." << suffix << " = " << configName << newLine;
|
||||
|
|
@ -1569,7 +1569,7 @@ protected:
|
|||
//==============================================================================
|
||||
static void writeBMPImage (const Image& image, const int w, const int h, MemoryOutputStream& out)
|
||||
{
|
||||
const int maskStride = (w / 8 + 3) & ~3;
|
||||
int maskStride = (w / 8 + 3) & ~3;
|
||||
|
||||
out.writeInt (40); // bitmapinfoheader size
|
||||
out.writeInt (w);
|
||||
|
|
@ -1583,15 +1583,15 @@ protected:
|
|||
out.writeInt (0); // clr used
|
||||
out.writeInt (0); // clr important
|
||||
|
||||
const Image::BitmapData bitmap (image, Image::BitmapData::readOnly);
|
||||
const int alphaThreshold = 5;
|
||||
Image::BitmapData bitmap (image, Image::BitmapData::readOnly);
|
||||
int alphaThreshold = 5;
|
||||
|
||||
int y;
|
||||
for (y = h; --y >= 0;)
|
||||
{
|
||||
for (int x = 0; x < w; ++x)
|
||||
{
|
||||
const Colour pixel (bitmap.getPixelColour (x, y));
|
||||
auto pixel = bitmap.getPixelColour (x, y);
|
||||
|
||||
if (pixel.getAlpha() <= alphaThreshold)
|
||||
{
|
||||
|
|
@ -1613,7 +1613,7 @@ protected:
|
|||
|
||||
for (int x = 0; x < w; ++x)
|
||||
{
|
||||
const Colour pixel (bitmap.getPixelColour (x, y));
|
||||
auto pixel = bitmap.getPixelColour (x, y);
|
||||
|
||||
mask <<= 1;
|
||||
if (pixel.getAlpha() <= alphaThreshold)
|
||||
|
|
@ -1643,16 +1643,16 @@ protected:
|
|||
|
||||
MemoryOutputStream dataBlock;
|
||||
|
||||
const int imageDirEntrySize = 16;
|
||||
const int dataBlockStart = 6 + images.size() * imageDirEntrySize;
|
||||
int imageDirEntrySize = 16;
|
||||
int dataBlockStart = 6 + images.size() * imageDirEntrySize;
|
||||
|
||||
for (int i = 0; i < images.size(); ++i)
|
||||
{
|
||||
const size_t oldDataSize = dataBlock.getDataSize();
|
||||
auto oldDataSize = dataBlock.getDataSize();
|
||||
|
||||
const Image& image = images.getReference (i);
|
||||
const int w = image.getWidth();
|
||||
const int h = image.getHeight();
|
||||
auto& image = images.getReference (i);
|
||||
auto w = image.getWidth();
|
||||
auto h = image.getHeight();
|
||||
|
||||
if (w >= 256 || h >= 256)
|
||||
{
|
||||
|
|
@ -1688,11 +1688,11 @@ protected:
|
|||
if (hasResourceFile())
|
||||
{
|
||||
Array<Image> images;
|
||||
const int sizes[] = { 16, 32, 48, 256 };
|
||||
int sizes[] = { 16, 32, 48, 256 };
|
||||
|
||||
for (int i = 0; i < numElementsInArray (sizes); ++i)
|
||||
{
|
||||
Image im (getBestIconForSize (sizes[i], true));
|
||||
auto im = getBestIconForSize (sizes[i], true);
|
||||
if (im.isValid())
|
||||
images.add (im);
|
||||
}
|
||||
|
|
@ -1714,7 +1714,7 @@ protected:
|
|||
{
|
||||
rcFile = getTargetFolder().getChildFile ("resources.rc");
|
||||
|
||||
const String version (project.getVersionString());
|
||||
auto version = project.getVersionString();
|
||||
|
||||
MemoryOutputStream mo;
|
||||
|
||||
|
|
@ -1770,8 +1770,7 @@ protected:
|
|||
|
||||
static String getCommaSeparatedVersionNumber (const String& version)
|
||||
{
|
||||
StringArray versionParts;
|
||||
versionParts.addTokens (version, ",.", "");
|
||||
auto versionParts = StringArray::fromTokens (version, ",.", "");
|
||||
versionParts.trim();
|
||||
versionParts.removeEmptyStrings();
|
||||
while (versionParts.size() < 4)
|
||||
|
|
|
|||
|
|
@ -146,7 +146,7 @@ public:
|
|||
|
||||
StringArray s;
|
||||
|
||||
const String cppflagsVarName ("JUCE_CPPFLAGS_" + getTargetVarName());
|
||||
auto cppflagsVarName = "JUCE_CPPFLAGS_" + getTargetVarName();
|
||||
|
||||
s.add (cppflagsVarName + " := " + defines.joinIntoString (" "));
|
||||
|
||||
|
|
@ -160,7 +160,7 @@ public:
|
|||
if (! ldflags.isEmpty())
|
||||
s.add ("JUCE_LDFLAGS_" + getTargetVarName() + " := " + ldflags.joinIntoString (" "));
|
||||
|
||||
String targetName (owner.replacePreprocessorTokens (config, config.getTargetBinaryNameString()));
|
||||
auto targetName = owner.replacePreprocessorTokens (config, config.getTargetBinaryNameString());
|
||||
|
||||
if (owner.projectType.isStaticLibrary())
|
||||
targetName = getStaticLibbedFilename (targetName);
|
||||
|
|
@ -219,8 +219,8 @@ public:
|
|||
{
|
||||
if (projectItem.shouldBeCompiled())
|
||||
{
|
||||
const Type targetType = (owner.getProject().getProjectType().isAudioPlugin() ? type : SharedCodeTarget);
|
||||
const File f = projectItem.getFile();
|
||||
auto targetType = (owner.getProject().getProjectType().isAudioPlugin() ? type : SharedCodeTarget);
|
||||
auto f = projectItem.getFile();
|
||||
RelativePath relativePath (f, owner.getTargetFolder(), RelativePath::buildTargetFolder);
|
||||
|
||||
if (owner.shouldFileBeCompiledByDefault (relativePath)
|
||||
|
|
@ -236,26 +236,28 @@ public:
|
|||
for (int i = 0; i < owner.getAllGroups().size(); ++i)
|
||||
findAllFilesToCompile (owner.getAllGroups().getReference(i), targetFiles);
|
||||
|
||||
const String cppflagsVarName = String ("JUCE_CPPFLAGS_") + getTargetVarName();
|
||||
const String cflagsVarName = String ("JUCE_CFLAGS_") + getTargetVarName();
|
||||
auto cppflagsVarName = "JUCE_CPPFLAGS_" + getTargetVarName();
|
||||
auto cflagsVarName = "JUCE_CFLAGS_" + getTargetVarName();
|
||||
|
||||
for (int i = 0; i < targetFiles.size(); ++i)
|
||||
{
|
||||
jassert (targetFiles.getReference(i).getRoot() == RelativePath::buildTargetFolder);
|
||||
|
||||
out << "$(JUCE_OBJDIR)/" << escapeSpaces (owner.getObjectFileFor (targetFiles.getReference(i)))
|
||||
<< ": " << escapeSpaces (targetFiles.getReference(i).toUnixStyle()) << newLine
|
||||
<< "\t-$(V_AT)mkdir -p $(JUCE_OBJDIR)" << newLine
|
||||
<< "\t@echo \"Compiling " << targetFiles.getReference(i).getFileName() << "\"" << newLine
|
||||
<< (targetFiles.getReference(i).hasFileExtension ("c;s;S") ? "\t$(V_AT)$(CC) $(JUCE_CFLAGS) " : "\t$(V_AT)$(CXX) $(JUCE_CXXFLAGS) ")
|
||||
<< "$(" << cppflagsVarName << ") $(" << cflagsVarName << ") -o \"$@\" -c \"$<\""
|
||||
<< newLine << newLine;
|
||||
<< ": " << escapeSpaces (targetFiles.getReference(i).toUnixStyle()) << newLine
|
||||
<< "\t-$(V_AT)mkdir -p $(JUCE_OBJDIR)" << newLine
|
||||
<< "\t@echo \"Compiling " << targetFiles.getReference(i).getFileName() << "\"" << newLine
|
||||
<< (targetFiles.getReference(i).hasFileExtension ("c;s;S") ? "\t$(V_AT)$(CC) $(JUCE_CFLAGS) "
|
||||
: "\t$(V_AT)$(CXX) $(JUCE_CXXFLAGS) ")
|
||||
<< "$(" << cppflagsVarName << ") $(" << cflagsVarName << ") -o \"$@\" -c \"$<\""
|
||||
<< newLine
|
||||
<< newLine;
|
||||
}
|
||||
}
|
||||
|
||||
String getBuildProduct() const
|
||||
{
|
||||
return String ("$(JUCE_OUTDIR)/$(JUCE_TARGET_") + getTargetVarName() + String (")");
|
||||
return "$(JUCE_OUTDIR)/$(JUCE_TARGET_" + getTargetVarName() + ")";
|
||||
}
|
||||
|
||||
String getPhonyName() const
|
||||
|
|
@ -322,7 +324,7 @@ public:
|
|||
//==============================================================================
|
||||
MakefileProjectExporter (Project& p, const ValueTree& t)
|
||||
: ProjectExporter (p, t),
|
||||
extraPkgConfigValue (settings, Ids::linuxExtraPkgConfig, getProject().getUndoManagerFor (settings))
|
||||
extraPkgConfigValue (settings, Ids::linuxExtraPkgConfig, getUndoManager())
|
||||
{
|
||||
name = getNameLinux();
|
||||
|
||||
|
|
@ -330,24 +332,24 @@ public:
|
|||
}
|
||||
|
||||
//==============================================================================
|
||||
bool canLaunchProject() override { return false; }
|
||||
bool launchProject() override { return false; }
|
||||
bool usesMMFiles() const override { return false; }
|
||||
bool canCopeWithDuplicateFiles() override { return false; }
|
||||
bool canLaunchProject() override { return false; }
|
||||
bool launchProject() override { return false; }
|
||||
bool usesMMFiles() const override { return false; }
|
||||
bool canCopeWithDuplicateFiles() override { return false; }
|
||||
bool supportsUserDefinedConfigurations() const override { return true; }
|
||||
|
||||
bool isXcode() const override { return false; }
|
||||
bool isVisualStudio() const override { return false; }
|
||||
bool isCodeBlocks() const override { return false; }
|
||||
bool isMakefile() const override { return true; }
|
||||
bool isAndroidStudio() const override { return false; }
|
||||
bool isCLion() const override { return false; }
|
||||
bool isXcode() const override { return false; }
|
||||
bool isVisualStudio() const override { return false; }
|
||||
bool isCodeBlocks() const override { return false; }
|
||||
bool isMakefile() const override { return true; }
|
||||
bool isAndroidStudio() const override { return false; }
|
||||
bool isCLion() const override { return false; }
|
||||
|
||||
bool isAndroid() const override { return false; }
|
||||
bool isWindows() const override { return false; }
|
||||
bool isLinux() const override { return true; }
|
||||
bool isOSX() const override { return false; }
|
||||
bool isiOS() const override { return false; }
|
||||
bool isAndroid() const override { return false; }
|
||||
bool isWindows() const override { return false; }
|
||||
bool isLinux() const override { return true; }
|
||||
bool isOSX() const override { return false; }
|
||||
bool isiOS() const override { return false; }
|
||||
|
||||
bool supportsTargetType (ProjectType::Target::Type type) const override
|
||||
{
|
||||
|
|
@ -380,7 +382,7 @@ public:
|
|||
{
|
||||
for (auto* target : targets)
|
||||
{
|
||||
const ProjectType::Target::TargetFileType fileType = target->getTargetFileType();
|
||||
auto fileType = target->getTargetFileType();
|
||||
|
||||
if (fileType == ProjectType::Target::sharedLibraryOrDLL
|
||||
|| fileType == ProjectType::Target::pluginBundle)
|
||||
|
|
@ -560,8 +562,7 @@ private:
|
|||
{
|
||||
StringArray result (linuxLibs);
|
||||
|
||||
StringArray libraries;
|
||||
libraries.addTokens (getExternalLibrariesString(), ";", "\"'");
|
||||
auto libraries = StringArray::fromTokens (getExternalLibrariesString(), ";", "\"'");
|
||||
libraries.removeEmptyStrings();
|
||||
|
||||
for (auto& lib : libraries)
|
||||
|
|
@ -582,7 +583,7 @@ private:
|
|||
|
||||
StringArray getLinkerFlags (const BuildConfiguration& config) const
|
||||
{
|
||||
StringArray result (makefileExtraLinkerFlags);
|
||||
auto result = makefileExtraLinkerFlags;
|
||||
|
||||
if (! config.isDebug())
|
||||
result.add ("-fvisibility=hidden");
|
||||
|
|
@ -669,7 +670,7 @@ private:
|
|||
|
||||
void writeTargetLines (OutputStream& out, const bool useLinuxPackages) const
|
||||
{
|
||||
const int n = targets.size();
|
||||
auto n = targets.size();
|
||||
|
||||
for (int i = 0; i < n; ++i)
|
||||
{
|
||||
|
|
@ -712,9 +713,9 @@ private:
|
|||
|
||||
void writeConfig (OutputStream& out, const MakeBuildConfiguration& config) const
|
||||
{
|
||||
const String buildDirName ("build");
|
||||
const String intermediatesDirName (buildDirName + "/intermediate/" + config.getName());
|
||||
String outputDir (buildDirName);
|
||||
String buildDirName ("build");
|
||||
auto intermediatesDirName = buildDirName + "/intermediate/" + config.getName();
|
||||
auto outputDir = buildDirName;
|
||||
|
||||
if (config.getTargetBinaryRelativePathString().isNotEmpty())
|
||||
{
|
||||
|
|
@ -737,7 +738,7 @@ private:
|
|||
|
||||
for (auto target : targets)
|
||||
{
|
||||
StringArray lines = target->getTargetSettings (config);
|
||||
auto lines = target->getTargetSettings (config);
|
||||
|
||||
if (lines.size() > 0)
|
||||
out << " " << lines.joinIntoString ("\n ") << newLine;
|
||||
|
|
@ -774,7 +775,7 @@ private:
|
|||
|
||||
void writeIncludeLines (OutputStream& out) const
|
||||
{
|
||||
const int n = targets.size();
|
||||
auto n = targets.size();
|
||||
|
||||
for (int i = 0; i < n; ++i)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -58,33 +58,33 @@ public:
|
|||
: ProjectExporter (p, t),
|
||||
xcodeCanUseDwarf (true),
|
||||
iOS (isIOS),
|
||||
customPListValue (settings, Ids::customPList, project.getUndoManagerFor (settings)),
|
||||
pListPrefixHeaderValue (settings, Ids::pListPrefixHeader, project.getUndoManagerFor (settings)),
|
||||
pListPreprocessValue (settings, Ids::pListPreprocess, project.getUndoManagerFor (settings)),
|
||||
extraFrameworksValue (settings, Ids::extraFrameworks, project.getUndoManagerFor (settings)),
|
||||
postbuildCommandValue (settings, Ids::postbuildCommand, project.getUndoManagerFor (settings)),
|
||||
prebuildCommandValue (settings, Ids::prebuildCommand, project.getUndoManagerFor (settings)),
|
||||
iosAppExtensionDuplicateResourcesFolderValue (settings, Ids::iosAppExtensionDuplicateResourcesFolder, project.getUndoManagerFor (settings)),
|
||||
iosDeviceFamilyValue (settings, Ids::iosDeviceFamily, project.getUndoManagerFor (settings), "1,2"),
|
||||
iPhoneScreenOrientationValue (settings, Ids::iPhoneScreenOrientation, project.getUndoManagerFor (settings), "portraitlandscape"),
|
||||
iPadScreenOrientationValue (settings, Ids::iPadScreenOrientation, project.getUndoManagerFor (settings), "portraitlandscape"),
|
||||
customXcodeResourceFoldersValue (settings, Ids::customXcodeResourceFolders, project.getUndoManagerFor (settings)),
|
||||
customXcassetsFolderValue (settings, Ids::customXcassetsFolder, project.getUndoManagerFor (settings)),
|
||||
microphonePermissionNeededValue (settings, Ids::microphonePermissionNeeded, project.getUndoManagerFor (settings)),
|
||||
uiFileSharingEnabledValue (settings, Ids::UIFileSharingEnabled, project.getUndoManagerFor (settings)),
|
||||
uiSupportsDocumentBrowserValue (settings, Ids::UISupportsDocumentBrowser, project.getUndoManagerFor (settings)),
|
||||
uiStatusBarHiddenValue (settings, Ids::UIStatusBarHidden, project.getUndoManagerFor (settings)),
|
||||
documentExtensionsValue (settings, Ids::documentExtensions, project.getUndoManagerFor (settings)),
|
||||
iosInAppPurchasesValue (settings, Ids::iosInAppPurchases, project.getUndoManagerFor (settings)),
|
||||
iosBackgroundAudioValue (settings, Ids::iosBackgroundAudio, project.getUndoManagerFor (settings)),
|
||||
iosBackgroundBleValue (settings, Ids::iosBackgroundBle, project.getUndoManagerFor (settings)),
|
||||
iosPushNotificationsValue (settings, Ids::iosPushNotifications, project.getUndoManagerFor (settings)),
|
||||
iosAppGroupsValue (settings, Ids::iosAppGroups, project.getUndoManagerFor (settings)),
|
||||
iCloudPermissionsValue (settings, Ids::iCloudPermissions, project.getUndoManagerFor (settings)),
|
||||
iosDevelopmentTeamIDValue (settings, Ids::iosDevelopmentTeamID, project.getUndoManagerFor (settings)),
|
||||
iosAppGroupsIDValue (settings, Ids::iosAppGroupsId, project.getUndoManagerFor (settings)),
|
||||
keepCustomXcodeSchemesValue (settings, Ids::keepCustomXcodeSchemes, project.getUndoManagerFor (settings)),
|
||||
useHeaderMapValue (settings, Ids::useHeaderMap, project.getUndoManagerFor (settings))
|
||||
customPListValue (settings, Ids::customPList, getUndoManager()),
|
||||
pListPrefixHeaderValue (settings, Ids::pListPrefixHeader, getUndoManager()),
|
||||
pListPreprocessValue (settings, Ids::pListPreprocess, getUndoManager()),
|
||||
extraFrameworksValue (settings, Ids::extraFrameworks, getUndoManager()),
|
||||
postbuildCommandValue (settings, Ids::postbuildCommand, getUndoManager()),
|
||||
prebuildCommandValue (settings, Ids::prebuildCommand, getUndoManager()),
|
||||
iosAppExtensionDuplicateResourcesFolderValue (settings, Ids::iosAppExtensionDuplicateResourcesFolder, getUndoManager()),
|
||||
iosDeviceFamilyValue (settings, Ids::iosDeviceFamily, getUndoManager(), "1,2"),
|
||||
iPhoneScreenOrientationValue (settings, Ids::iPhoneScreenOrientation, getUndoManager(), "portraitlandscape"),
|
||||
iPadScreenOrientationValue (settings, Ids::iPadScreenOrientation, getUndoManager(), "portraitlandscape"),
|
||||
customXcodeResourceFoldersValue (settings, Ids::customXcodeResourceFolders, getUndoManager()),
|
||||
customXcassetsFolderValue (settings, Ids::customXcassetsFolder, getUndoManager()),
|
||||
microphonePermissionNeededValue (settings, Ids::microphonePermissionNeeded, getUndoManager()),
|
||||
uiFileSharingEnabledValue (settings, Ids::UIFileSharingEnabled, getUndoManager()),
|
||||
uiSupportsDocumentBrowserValue (settings, Ids::UISupportsDocumentBrowser, getUndoManager()),
|
||||
uiStatusBarHiddenValue (settings, Ids::UIStatusBarHidden, getUndoManager()),
|
||||
documentExtensionsValue (settings, Ids::documentExtensions, getUndoManager()),
|
||||
iosInAppPurchasesValue (settings, Ids::iosInAppPurchases, getUndoManager()),
|
||||
iosBackgroundAudioValue (settings, Ids::iosBackgroundAudio, getUndoManager()),
|
||||
iosBackgroundBleValue (settings, Ids::iosBackgroundBle, getUndoManager()),
|
||||
iosPushNotificationsValue (settings, Ids::iosPushNotifications, getUndoManager()),
|
||||
iosAppGroupsValue (settings, Ids::iosAppGroups, getUndoManager()),
|
||||
iCloudPermissionsValue (settings, Ids::iCloudPermissions, getUndoManager()),
|
||||
iosDevelopmentTeamIDValue (settings, Ids::iosDevelopmentTeamID, getUndoManager()),
|
||||
iosAppGroupsIDValue (settings, Ids::iosAppGroupsId, getUndoManager()),
|
||||
keepCustomXcodeSchemesValue (settings, Ids::keepCustomXcodeSchemes, getUndoManager()),
|
||||
useHeaderMapValue (settings, Ids::useHeaderMap, getUndoManager())
|
||||
{
|
||||
name = iOS ? getNameiOS() : getNameMac();
|
||||
|
||||
|
|
@ -131,22 +131,22 @@ public:
|
|||
String getAppGroupIdString() const { return iosAppGroupsIDValue.get(); }
|
||||
|
||||
//==============================================================================
|
||||
bool usesMMFiles() const override { return true; }
|
||||
bool canCopeWithDuplicateFiles() override { return true; }
|
||||
bool usesMMFiles() const override { return true; }
|
||||
bool canCopeWithDuplicateFiles() override { return true; }
|
||||
bool supportsUserDefinedConfigurations() const override { return true; }
|
||||
|
||||
bool isXcode() const override { return true; }
|
||||
bool isVisualStudio() const override { return false; }
|
||||
bool isCodeBlocks() const override { return false; }
|
||||
bool isMakefile() const override { return false; }
|
||||
bool isAndroidStudio() const override { return false; }
|
||||
bool isCLion() const override { return false; }
|
||||
bool isXcode() const override { return true; }
|
||||
bool isVisualStudio() const override { return false; }
|
||||
bool isCodeBlocks() const override { return false; }
|
||||
bool isMakefile() const override { return false; }
|
||||
bool isAndroidStudio() const override { return false; }
|
||||
bool isCLion() const override { return false; }
|
||||
|
||||
bool isAndroid() const override { return false; }
|
||||
bool isWindows() const override { return false; }
|
||||
bool isLinux() const override { return false; }
|
||||
bool isOSX() const override { return ! iOS; }
|
||||
bool isiOS() const override { return iOS; }
|
||||
bool isAndroid() const override { return false; }
|
||||
bool isWindows() const override { return false; }
|
||||
bool isLinux() const override { return false; }
|
||||
bool isOSX() const override { return ! iOS; }
|
||||
bool isiOS() const override { return iOS; }
|
||||
|
||||
bool supportsTargetType (ProjectType::Target::Type type) const override
|
||||
{
|
||||
|
|
@ -329,12 +329,12 @@ public:
|
|||
|
||||
createIconFile();
|
||||
|
||||
File projectBundle (getProjectBundle());
|
||||
auto projectBundle = getProjectBundle();
|
||||
createDirectoryOrThrow (projectBundle);
|
||||
|
||||
createObjects();
|
||||
|
||||
File projectFile (projectBundle.getChildFile ("project.pbxproj"));
|
||||
auto projectFile = projectBundle.getChildFile ("project.pbxproj");
|
||||
|
||||
{
|
||||
MemoryOutputStream mo;
|
||||
|
|
@ -773,7 +773,7 @@ public:
|
|||
{
|
||||
Array<SourceFileInfo> result;
|
||||
|
||||
const Type targetType = (owner.getProject().getProjectType().isAudioPlugin() ? type : SharedCodeTarget);
|
||||
auto targetType = (owner.getProject().getProjectType().isAudioPlugin() ? type : SharedCodeTarget);
|
||||
|
||||
if (projectItem.isGroup())
|
||||
{
|
||||
|
|
@ -806,7 +806,7 @@ public:
|
|||
|
||||
if (ProjectExporter::BuildConfiguration::Ptr config = owner.getConfiguration(0))
|
||||
{
|
||||
String productName (owner.replacePreprocessorTokens (*config, config->getTargetBinaryNameString()));
|
||||
auto productName = owner.replacePreprocessorTokens (*config, config->getTargetBinaryNameString());
|
||||
|
||||
if (xcodeFileType == "archive.ar")
|
||||
productName = getStaticLibbedFilename (productName);
|
||||
|
|
@ -820,7 +820,7 @@ public:
|
|||
//==============================================================================
|
||||
void addBuildProduct (const String& fileType, const String& binaryName) const
|
||||
{
|
||||
ValueTree* v = new ValueTree (owner.createID (String ("__productFileID") + getName()));
|
||||
auto* v = new ValueTree (owner.createID (String ("__productFileID") + getName()));
|
||||
v->setProperty ("isa", "PBXFileReference", nullptr);
|
||||
v->setProperty ("explicitFileType", fileType, nullptr);
|
||||
v->setProperty ("includeInIndex", (int) 0, nullptr);
|
||||
|
|
@ -835,7 +835,7 @@ public:
|
|||
jassert (dependencyID.isEmpty());
|
||||
|
||||
dependencyID = owner.createID (String ("__dependency") + getName());
|
||||
ValueTree* const v = new ValueTree (dependencyID);
|
||||
auto* v = new ValueTree (dependencyID);
|
||||
|
||||
v->setProperty ("isa", "PBXTargetDependency", nullptr);
|
||||
v->setProperty ("target", getID(), nullptr);
|
||||
|
|
@ -853,9 +853,9 @@ public:
|
|||
//==============================================================================
|
||||
void addTargetConfig (const String& configName, const StringArray& buildSettings)
|
||||
{
|
||||
String configID = owner.createID (String ("targetconfigid_") + getName() + String ("_") + configName);
|
||||
auto configID = owner.createID (String ("targetconfigid_") + getName() + String ("_") + configName);
|
||||
|
||||
ValueTree* v = new ValueTree (configID);
|
||||
auto* v = new ValueTree (configID);
|
||||
v->setProperty ("isa", "XCBuildConfiguration", nullptr);
|
||||
v->setProperty ("buildSettings", indentBracedList (buildSettings), nullptr);
|
||||
v->setProperty (Ids::name, configName, nullptr);
|
||||
|
|
@ -903,8 +903,8 @@ public:
|
|||
//==============================================================================
|
||||
ValueTree& addBuildPhase (const String& buildPhaseType, const StringArray& fileIds, const StringRef humanReadableName = StringRef())
|
||||
{
|
||||
String buildPhaseName = buildPhaseType + String ("_") + getName() + String ("_") + (humanReadableName.isNotEmpty() ? String (humanReadableName) : String ("resbuildphase"));
|
||||
String buildPhaseId (owner.createID (buildPhaseName));
|
||||
auto buildPhaseName = buildPhaseType + "_" + getName() + "_" + (humanReadableName.isNotEmpty() ? String (humanReadableName) : String ("resbuildphase"));
|
||||
auto buildPhaseId (owner.createID (buildPhaseName));
|
||||
|
||||
int n = 0;
|
||||
while (buildPhaseIDs.contains (buildPhaseId))
|
||||
|
|
@ -912,7 +912,7 @@ public:
|
|||
|
||||
buildPhaseIDs.add (buildPhaseId);
|
||||
|
||||
ValueTree* v = new ValueTree (buildPhaseId);
|
||||
auto* v = new ValueTree (buildPhaseId);
|
||||
v->setProperty ("isa", buildPhaseType, nullptr);
|
||||
v->setProperty ("buildActionMask", "2147483647", nullptr);
|
||||
v->setProperty ("files", indentParenthesisedList (fileIds), nullptr);
|
||||
|
|
@ -927,7 +927,7 @@ public:
|
|||
|
||||
bool shouldCreatePList() const
|
||||
{
|
||||
const ProjectType::Target::TargetFileType fileType = getTargetFileType();
|
||||
auto fileType = getTargetFileType();
|
||||
return (fileType == executable && type != ConsoleApp) || fileType == pluginBundle || fileType == macOSAppex;
|
||||
}
|
||||
|
||||
|
|
@ -951,7 +951,7 @@ public:
|
|||
|
||||
if (xcodeBundleIDSubPath.isNotEmpty())
|
||||
{
|
||||
StringArray bundleIdSegments = StringArray::fromTokens (bundleIdentifier, ".", StringRef());
|
||||
auto bundleIdSegments = StringArray::fromTokens (bundleIdentifier, ".", StringRef());
|
||||
|
||||
jassert (bundleIdSegments.size() > 0);
|
||||
bundleIdentifier += String (".") + bundleIdSegments[bundleIdSegments.size() - 1] + xcodeBundleIDSubPath;
|
||||
|
|
@ -1008,8 +1008,8 @@ public:
|
|||
|
||||
for (int i = 0; i < plistDefs.size(); ++i)
|
||||
{
|
||||
String def (plistDefs.getAllKeys()[i]);
|
||||
const String value (plistDefs.getAllValues()[i]);
|
||||
auto def = plistDefs.getAllKeys()[i];
|
||||
auto value = plistDefs.getAllValues()[i];
|
||||
|
||||
if (value.isNotEmpty())
|
||||
def << "=" << value.replace ("\"", "\\\\\\\"");
|
||||
|
|
@ -1027,12 +1027,12 @@ public:
|
|||
if (config.isFastMathEnabled())
|
||||
s.set ("GCC_FAST_MATH", "YES");
|
||||
|
||||
const String extraFlags (owner.replacePreprocessorTokens (config, owner.getExtraCompilerFlagsString()).trim());
|
||||
auto extraFlags = owner.replacePreprocessorTokens (config, owner.getExtraCompilerFlagsString()).trim();
|
||||
|
||||
if (extraFlags.isNotEmpty())
|
||||
s.set ("OTHER_CPLUSPLUSFLAGS", extraFlags.quoted());
|
||||
|
||||
String installPath = getInstallPathForConfiguration (config);
|
||||
auto installPath = getInstallPathForConfiguration (config);
|
||||
|
||||
if (installPath.startsWith ("~"))
|
||||
installPath = installPath.replace ("~", "$(HOME)");
|
||||
|
|
@ -1058,7 +1058,7 @@ public:
|
|||
if (xcodeOtherRezFlags.isNotEmpty())
|
||||
s.set ("OTHER_REZFLAGS", "\"" + xcodeOtherRezFlags + "\"");
|
||||
|
||||
String configurationBuildDir = "$(PROJECT_DIR)/build/$(CONFIGURATION)";
|
||||
String configurationBuildDir ("$(PROJECT_DIR)/build/$(CONFIGURATION)");
|
||||
|
||||
if (config.getTargetBinaryRelativePathString().isNotEmpty())
|
||||
{
|
||||
|
|
@ -1182,8 +1182,8 @@ public:
|
|||
|
||||
for (int i = 0; i < defines.size(); ++i)
|
||||
{
|
||||
String def (defines.getAllKeys()[i]);
|
||||
const String value (defines.getAllValues()[i]);
|
||||
auto def = defines.getAllKeys()[i];
|
||||
auto value = defines.getAllValues()[i];
|
||||
if (value.isNotEmpty())
|
||||
def << "=" << value.replace ("\"", "\\\\\\\"");
|
||||
|
||||
|
|
@ -1241,7 +1241,7 @@ public:
|
|||
{
|
||||
if (owner.getTargetOfType (Target::SharedCodeTarget) != nullptr)
|
||||
{
|
||||
String productName (getStaticLibbedFilename (owner.replacePreprocessorTokens (config, config.getTargetBinaryNameString())));
|
||||
auto productName = getStaticLibbedFilename (owner.replacePreprocessorTokens (config, config.getTargetBinaryNameString()));
|
||||
|
||||
RelativePath sharedCodelib (productName, RelativePath::buildTargetFolder);
|
||||
flags.add (getLinkerFlagForLib (sharedCodelib.getFileNameWithoutExtension()));
|
||||
|
|
@ -1251,7 +1251,7 @@ public:
|
|||
flags.add (owner.replacePreprocessorTokens (config, owner.getExtraLinkerFlagsString()));
|
||||
flags.add (owner.getExternalLibraryFlags (config));
|
||||
|
||||
StringArray libs (owner.xcodeLibs);
|
||||
auto libs = owner.xcodeLibs;
|
||||
libs.addArray (xcodeLibs);
|
||||
|
||||
for (auto& l : libs)
|
||||
|
|
@ -1271,7 +1271,7 @@ public:
|
|||
if (plist == nullptr || ! plist->hasTagName ("plist"))
|
||||
plist = new XmlElement ("plist");
|
||||
|
||||
XmlElement* dict = plist->getChildByName ("dict");
|
||||
auto* dict = plist->getChildByName ("dict");
|
||||
|
||||
if (dict == nullptr)
|
||||
dict = plist->createNewChildElement ("dict");
|
||||
|
|
@ -1303,19 +1303,18 @@ public:
|
|||
addPlistDictionaryKey (dict, "NSHumanReadableCopyright", owner.project.getCompanyCopyrightString());
|
||||
addPlistDictionaryKeyBool (dict, "NSHighResolutionCapable", true);
|
||||
|
||||
StringArray documentExtensions;
|
||||
documentExtensions.addTokens (replacePreprocessorDefs (owner.getAllPreprocessorDefs(), owner.settings ["documentExtensions"]),
|
||||
",", StringRef());
|
||||
auto documentExtensions = StringArray::fromTokens (replacePreprocessorDefs (owner.getAllPreprocessorDefs(), owner.settings ["documentExtensions"]),
|
||||
",", {});
|
||||
documentExtensions.trim();
|
||||
documentExtensions.removeEmptyStrings (true);
|
||||
|
||||
if (documentExtensions.size() > 0 && type != AudioUnitv3PlugIn)
|
||||
{
|
||||
dict->createNewChildElement ("key")->addTextElement ("CFBundleDocumentTypes");
|
||||
XmlElement* dict2 = dict->createNewChildElement ("array")->createNewChildElement ("dict");
|
||||
auto* dict2 = dict->createNewChildElement ("array")->createNewChildElement ("dict");
|
||||
XmlElement* arrayTag = nullptr;
|
||||
|
||||
for (String ex : documentExtensions)
|
||||
for (auto ex : documentExtensions)
|
||||
{
|
||||
if (ex.startsWithChar ('.'))
|
||||
ex = ex.substring (1);
|
||||
|
|
@ -1364,7 +1363,7 @@ public:
|
|||
dict->addChildElement (new XmlElement (audioComponentsPlistKey));
|
||||
|
||||
XmlElement audioComponentsPlistEntry ("array");
|
||||
XmlElement* audioComponentsDict = audioComponentsPlistEntry.createNewChildElement ("dict");
|
||||
auto* audioComponentsDict = audioComponentsPlistEntry.createNewChildElement ("dict");
|
||||
|
||||
addPlistDictionaryKey (audioComponentsDict, "name", owner.project.getIAAPluginName());
|
||||
addPlistDictionaryKey (audioComponentsDict, "manufacturer", owner.project.getPluginManufacturerCodeString().substring (0, 4));
|
||||
|
|
@ -1419,7 +1418,7 @@ public:
|
|||
static void addArrayToPlist (XmlElement* dict, String arrayKey, const StringArray& arrayElements)
|
||||
{
|
||||
dict->createNewChildElement ("key")->addTextElement (arrayKey);
|
||||
XmlElement* plistStringArray = dict->createNewChildElement ("array");
|
||||
auto* plistStringArray = dict->createNewChildElement ("array");
|
||||
|
||||
for (auto& e : arrayElements)
|
||||
plistStringArray->createNewChildElement ("string")->addTextElement (e);
|
||||
|
|
@ -1430,7 +1429,7 @@ public:
|
|||
{
|
||||
if (script.trim().isNotEmpty())
|
||||
{
|
||||
ValueTree& v = addBuildPhase ("PBXShellScriptBuildPhase", StringArray());
|
||||
auto& v = addBuildPhase ("PBXShellScriptBuildPhase", {});
|
||||
v.setProperty (Ids::name, phaseName, nullptr);
|
||||
v.setProperty ("shellPath", "/bin/sh", nullptr);
|
||||
v.setProperty ("shellScript", script.replace ("\\", "\\\\")
|
||||
|
|
@ -1442,7 +1441,7 @@ public:
|
|||
|
||||
void addCopyFilesPhase (const String& phaseName, const StringArray& files, XcodeCopyFilesDestinationIDs dst)
|
||||
{
|
||||
ValueTree& v = addBuildPhase ("PBXCopyFilesBuildPhase", files, phaseName);
|
||||
auto& v = addBuildPhase ("PBXCopyFilesBuildPhase", files, phaseName);
|
||||
v.setProperty ("dstPath", "", nullptr);
|
||||
v.setProperty ("dstSubfolderSpec", (int) dst, nullptr);
|
||||
}
|
||||
|
|
@ -1491,7 +1490,7 @@ public:
|
|||
plistKey.addTextElement ("AudioComponents");
|
||||
|
||||
XmlElement plistEntry ("array");
|
||||
XmlElement* dict = plistEntry.createNewChildElement ("dict");
|
||||
auto* dict = plistEntry.createNewChildElement ("dict");
|
||||
|
||||
auto pluginManufacturerCode = owner.project.getPluginManufacturerCodeString().substring (0, 4);
|
||||
auto pluginSubType = owner.project.getPluginCodeString().substring (0, 4);
|
||||
|
|
@ -1533,11 +1532,11 @@ public:
|
|||
addPlistDictionaryKey (&plistEntry, "NSExtensionPointIdentifier", "com.apple.AudioUnit-UI");
|
||||
plistEntry.createNewChildElement ("key")->addTextElement ("NSExtensionAttributes");
|
||||
|
||||
XmlElement* dict = plistEntry.createNewChildElement ("dict");
|
||||
auto* dict = plistEntry.createNewChildElement ("dict");
|
||||
dict->createNewChildElement ("key")->addTextElement ("AudioComponents");
|
||||
XmlElement* componentArray = dict->createNewChildElement ("array");
|
||||
auto* componentArray = dict->createNewChildElement ("array");
|
||||
|
||||
XmlElement* componentDict = componentArray->createNewChildElement ("dict");
|
||||
auto* componentDict = componentArray->createNewChildElement ("dict");
|
||||
|
||||
addPlistDictionaryKey (componentDict, "name", owner.project.getPluginManufacturerString()
|
||||
+ ": " + owner.project.getPluginNameString());
|
||||
|
|
@ -1550,7 +1549,7 @@ public:
|
|||
addPlistDictionaryKeyBool (componentDict, "sandboxSafe", true);
|
||||
|
||||
componentDict->createNewChildElement ("key")->addTextElement ("tags");
|
||||
XmlElement* tagsArray = componentDict->createNewChildElement ("array");
|
||||
auto* tagsArray = componentDict->createNewChildElement ("array");
|
||||
|
||||
tagsArray->createNewChildElement ("string")
|
||||
->addTextElement (static_cast<bool> (owner.project.isPluginSynth()) ? "Synth" : "Effects");
|
||||
|
|
@ -1763,11 +1762,11 @@ private:
|
|||
|
||||
target->addMainBuildProduct();
|
||||
|
||||
String targetName = target->getName();
|
||||
String fileID (createID (targetName + String ("__targetbuildref")));
|
||||
String fileRefID (createID (String ("__productFileID") + targetName));
|
||||
auto targetName = target->getName();
|
||||
auto fileID = createID (targetName + String ("__targetbuildref"));
|
||||
auto fileRefID = createID (String ("__productFileID") + targetName);
|
||||
|
||||
ValueTree* v = new ValueTree (fileID);
|
||||
auto* v = new ValueTree (fileID);
|
||||
v->setProperty ("isa", "PBXBuildFile", nullptr);
|
||||
v->setProperty ("fileRef", fileRefID, nullptr);
|
||||
|
||||
|
|
@ -1821,9 +1820,9 @@ private:
|
|||
{
|
||||
for (ConstConfigIterator config (*this); config.next();)
|
||||
{
|
||||
const auto& xcodeConfig = dynamic_cast<const XcodeBuildConfiguration&> (*config);
|
||||
auto& xcodeConfig = dynamic_cast<const XcodeBuildConfiguration&> (*config);
|
||||
StringArray settingsLines;
|
||||
const auto configSettings = getProjectSettings (xcodeConfig);
|
||||
auto configSettings = getProjectSettings (xcodeConfig);
|
||||
|
||||
for (auto& key : configSettings.getAllKeys())
|
||||
settingsLines.add (key + " = " + configSettings[key]);
|
||||
|
|
@ -1834,7 +1833,7 @@ private:
|
|||
|
||||
void addFilesAndGroupsToProject (StringArray& topLevelGroupIDs) const
|
||||
{
|
||||
StringPairArray entitlements = getEntitlements();
|
||||
auto entitlements = getEntitlements();
|
||||
if (entitlements.size() > 0)
|
||||
topLevelGroupIDs.add (addEntitlementsFile (entitlements));
|
||||
|
||||
|
|
@ -1846,19 +1845,19 @@ private:
|
|||
void addExtraGroupsToProject (StringArray& topLevelGroupIDs) const
|
||||
{
|
||||
{ // Add 'resources' group
|
||||
String resourcesGroupID (createID ("__resources"));
|
||||
auto resourcesGroupID = createID ("__resources");
|
||||
addGroup (resourcesGroupID, "Resources", resourceFileRefs);
|
||||
topLevelGroupIDs.add (resourcesGroupID);
|
||||
}
|
||||
|
||||
{ // Add 'frameworks' group
|
||||
String frameworksGroupID (createID ("__frameworks"));
|
||||
auto frameworksGroupID = createID ("__frameworks");
|
||||
addGroup (frameworksGroupID, "Frameworks", frameworkFileIDs);
|
||||
topLevelGroupIDs.add (frameworksGroupID);
|
||||
}
|
||||
|
||||
{ // Add 'products' group
|
||||
String productsGroupID (createID ("__products"));
|
||||
auto productsGroupID = createID ("__products");
|
||||
addGroup (productsGroupID, "Products", buildProducts);
|
||||
topLevelGroupIDs.add (productsGroupID);
|
||||
}
|
||||
|
|
@ -1874,9 +1873,9 @@ private:
|
|||
|
||||
for (ConstConfigIterator config (*this); config.next();)
|
||||
{
|
||||
const XcodeBuildConfiguration& xcodeConfig = dynamic_cast<const XcodeBuildConfiguration&> (*config);
|
||||
auto& xcodeConfig = dynamic_cast<const XcodeBuildConfiguration&> (*config);
|
||||
|
||||
const auto configSettings = target->getTargetSettings (xcodeConfig);
|
||||
auto configSettings = target->getTargetSettings (xcodeConfig);
|
||||
StringArray settingsLines;
|
||||
|
||||
for (auto& key : configSettings.getAllKeys())
|
||||
|
|
@ -1897,13 +1896,13 @@ private:
|
|||
if (! projectType.isStaticLibrary() && target->type != XcodeTarget::SharedCodeTarget && ! skipAUv3)
|
||||
target->addBuildPhase ("PBXResourcesBuildPhase", resourceIDs);
|
||||
|
||||
StringArray rezFiles (rezFileIDs);
|
||||
auto rezFiles = rezFileIDs;
|
||||
rezFiles.addArray (target->rezFileIDs);
|
||||
|
||||
if (rezFiles.size() > 0)
|
||||
target->addBuildPhase ("PBXRezBuildPhase", rezFiles);
|
||||
|
||||
StringArray sourceFiles (target->sourceIDs);
|
||||
auto sourceFiles = target->sourceIDs;
|
||||
|
||||
if (target->type == XcodeTarget::SharedCodeTarget
|
||||
|| (! project.getProjectType().isAudioPlugin()))
|
||||
|
|
@ -1942,8 +1941,8 @@ private:
|
|||
{
|
||||
const int validSizes[] = { 16, 32, 48, 128, 256, 512, 1024 };
|
||||
|
||||
const int w = image.getWidth();
|
||||
const int h = image.getHeight();
|
||||
auto w = image.getWidth();
|
||||
auto h = image.getHeight();
|
||||
|
||||
int bestSize = 16;
|
||||
|
||||
|
|
@ -1974,10 +1973,10 @@ private:
|
|||
|
||||
void addTargetObject (XcodeTarget& target) const
|
||||
{
|
||||
String targetName = target.getName();
|
||||
auto targetName = target.getName();
|
||||
|
||||
String targetID = target.getID();
|
||||
ValueTree* const v = new ValueTree (targetID);
|
||||
auto targetID = target.getID();
|
||||
auto* v = new ValueTree (targetID);
|
||||
v->setProperty ("isa", target.type == XcodeTarget::AggregateTarget ? "PBXAggregateTarget" : "PBXNativeTarget", nullptr);
|
||||
v->setProperty ("buildConfigurationList", createID (String ("__configList") + targetName), nullptr);
|
||||
|
||||
|
|
@ -2008,10 +2007,10 @@ private:
|
|||
{
|
||||
if (target.type == XcodeTarget::StandalonePlugIn) // depends on AUv3 and shared code
|
||||
{
|
||||
if (XcodeTarget* auv3Target = getTargetOfType (XcodeTarget::AudioUnitv3PlugIn))
|
||||
if (auto* auv3Target = getTargetOfType (XcodeTarget::AudioUnitv3PlugIn))
|
||||
dependencies.add (auv3Target->getDependencyID());
|
||||
|
||||
if (XcodeTarget* sharedCodeTarget = getTargetOfType (XcodeTarget::SharedCodeTarget))
|
||||
if (auto* sharedCodeTarget = getTargetOfType (XcodeTarget::SharedCodeTarget))
|
||||
dependencies.add (sharedCodeTarget->getDependencyID());
|
||||
}
|
||||
else if (target.type == XcodeTarget::AggregateTarget) // depends on all other targets
|
||||
|
|
@ -2021,7 +2020,7 @@ private:
|
|||
}
|
||||
else if (target.type != XcodeTarget::SharedCodeTarget) // shared code doesn't depend on anything; all other targets depend only on the shared code
|
||||
{
|
||||
if (XcodeTarget* sharedCodeTarget = getTargetOfType (XcodeTarget::SharedCodeTarget))
|
||||
if (auto* sharedCodeTarget = getTargetOfType (XcodeTarget::SharedCodeTarget))
|
||||
dependencies.add (sharedCodeTarget->getDependencyID());
|
||||
}
|
||||
}
|
||||
|
|
@ -2031,19 +2030,19 @@ private:
|
|||
|
||||
static void writeOldIconFormat (MemoryOutputStream& out, const Image& image, const char* type, const char* maskType)
|
||||
{
|
||||
const int w = image.getWidth();
|
||||
const int h = image.getHeight();
|
||||
auto w = image.getWidth();
|
||||
auto h = image.getHeight();
|
||||
|
||||
out.write (type, 4);
|
||||
out.writeIntBigEndian (8 + 4 * w * h);
|
||||
|
||||
const Image::BitmapData bitmap (image, Image::BitmapData::readOnly);
|
||||
Image::BitmapData bitmap (image, Image::BitmapData::readOnly);
|
||||
|
||||
for (int y = 0; y < h; ++y)
|
||||
{
|
||||
for (int x = 0; x < w; ++x)
|
||||
{
|
||||
const Colour pixel (bitmap.getPixelColour (x, y));
|
||||
auto pixel = bitmap.getPixelColour (x, y);
|
||||
out.writeByte ((char) pixel.getAlpha());
|
||||
out.writeByte ((char) pixel.getRed());
|
||||
out.writeByte ((char) pixel.getGreen());
|
||||
|
|
@ -2058,7 +2057,7 @@ private:
|
|||
{
|
||||
for (int x = 0; x < w; ++x)
|
||||
{
|
||||
const Colour pixel (bitmap.getPixelColour (x, y));
|
||||
auto pixel = bitmap.getPixelColour (x, y);
|
||||
out.writeByte ((char) pixel.getAlpha());
|
||||
}
|
||||
}
|
||||
|
|
@ -2083,7 +2082,7 @@ private:
|
|||
|
||||
for (int i = 0; i < images.size(); ++i)
|
||||
{
|
||||
const Image image (fixMacIconImageSize (*images.getUnchecked(i)));
|
||||
auto image = fixMacIconImageSize (*images.getUnchecked(i));
|
||||
jassert (image.getWidth() == image.getHeight());
|
||||
|
||||
if (image.getWidth() < smallest)
|
||||
|
|
@ -2186,7 +2185,7 @@ private:
|
|||
{
|
||||
for (DirectoryIterator di (folder, false, "*", File::findFilesAndDirectories); di.next();)
|
||||
{
|
||||
const File& entry = di.getFile();
|
||||
auto& entry = di.getFile();
|
||||
|
||||
if (! entry.isSymbolicLink())
|
||||
{
|
||||
|
|
@ -2208,11 +2207,11 @@ private:
|
|||
|
||||
String getSearchPathForStaticLibrary (const RelativePath& library) const
|
||||
{
|
||||
String searchPath (library.toUnixStyle().upToLastOccurrenceOf ("/", false, false));
|
||||
auto searchPath = library.toUnixStyle().upToLastOccurrenceOf ("/", false, false);
|
||||
|
||||
if (! library.isAbsolute())
|
||||
{
|
||||
String srcRoot (rebaseFromProjectFolderToBuildTarget (RelativePath (".", RelativePath::projectFolder)).toUnixStyle());
|
||||
auto srcRoot = rebaseFromProjectFolderToBuildTarget (RelativePath (".", RelativePath::projectFolder)).toUnixStyle();
|
||||
|
||||
if (srcRoot.endsWith ("/.")) srcRoot = srcRoot.dropLastCharacters (2);
|
||||
if (! srcRoot.endsWithChar ('/')) srcRoot << '/';
|
||||
|
|
@ -2313,7 +2312,7 @@ private:
|
|||
xcodeFrameworks.addTokens (getExtraFrameworksString(), ",;", "\"'");
|
||||
xcodeFrameworks.trim();
|
||||
|
||||
StringArray s (xcodeFrameworks);
|
||||
auto s = xcodeFrameworks;
|
||||
|
||||
for (auto& target : targets)
|
||||
s.addArray (target->xcodeFrameworks);
|
||||
|
|
@ -2327,7 +2326,7 @@ private:
|
|||
|
||||
for (auto& framework : s)
|
||||
{
|
||||
String frameworkID = addFramework (framework);
|
||||
auto frameworkID = addFramework (framework);
|
||||
|
||||
// find all the targets that are referring to this object
|
||||
for (auto& target : targets)
|
||||
|
|
@ -2355,7 +2354,7 @@ private:
|
|||
|
||||
void addXcassets() const
|
||||
{
|
||||
String customXcassetsPath = getCustomXcassetsFolderString();
|
||||
auto customXcassetsPath = getCustomXcassetsFolderString();
|
||||
|
||||
if (customXcassetsPath.isEmpty())
|
||||
createXcassetsFolderFromIcons();
|
||||
|
|
@ -2365,11 +2364,11 @@ private:
|
|||
|
||||
void addCustomResourceFolder (String folderPathRelativeToProjectFolder, const String fileType = "folder") const
|
||||
{
|
||||
String folderPath = RelativePath (folderPathRelativeToProjectFolder, RelativePath::projectFolder)
|
||||
.rebased (projectFolder, getTargetFolder(), RelativePath::buildTargetFolder)
|
||||
.toUnixStyle();
|
||||
auto folderPath = RelativePath (folderPathRelativeToProjectFolder, RelativePath::projectFolder)
|
||||
.rebased (projectFolder, getTargetFolder(), RelativePath::buildTargetFolder)
|
||||
.toUnixStyle();
|
||||
|
||||
const String fileRefID (createFileRefID (folderPath));
|
||||
auto fileRefID = createFileRefID (folderPath);
|
||||
|
||||
addFileOrFolderReference (folderPath, "<group>", fileType);
|
||||
|
||||
|
|
@ -2400,8 +2399,8 @@ private:
|
|||
|
||||
for (int j = 0; j < o->getNumProperties(); ++j)
|
||||
{
|
||||
const Identifier propertyName (o->getPropertyName(j));
|
||||
String val (o->getProperty (propertyName).toString());
|
||||
auto propertyName = o->getPropertyName(j);
|
||||
auto val = o->getProperty (propertyName).toString();
|
||||
|
||||
if (val.isEmpty() || (val.containsAnyOf (" \t;<>()=,&+-_@~\r\n\\#%^`*")
|
||||
&& ! (val.trimStart().startsWithChar ('(')
|
||||
|
|
@ -2419,7 +2418,7 @@ private:
|
|||
|
||||
String addBuildFile (const String& path, const String& fileRefID, bool addToSourceBuildPhase, bool inhibitWarnings, XcodeTarget* xcodeTarget = nullptr) const
|
||||
{
|
||||
String fileID (createID (path + "buildref"));
|
||||
auto fileID = createID (path + "buildref");
|
||||
|
||||
if (addToSourceBuildPhase)
|
||||
{
|
||||
|
|
@ -2429,7 +2428,7 @@ private:
|
|||
sourceIDs.add (fileID);
|
||||
}
|
||||
|
||||
ValueTree* v = new ValueTree (fileID);
|
||||
auto* v = new ValueTree (fileID);
|
||||
v->setProperty ("isa", "PBXBuildFile", nullptr);
|
||||
v->setProperty ("fileRef", fileRefID, nullptr);
|
||||
|
||||
|
|
@ -2460,14 +2459,14 @@ private:
|
|||
sourceTree = "<absolute>";
|
||||
}
|
||||
|
||||
String fileType = getFileType (path);
|
||||
auto fileType = getFileType (path);
|
||||
|
||||
return addFileOrFolderReference (pathString, sourceTree, fileType);
|
||||
}
|
||||
|
||||
String addFileOrFolderReference (String pathString, String sourceTree, String fileType) const
|
||||
{
|
||||
const String fileRefID (createFileRefID (pathString));
|
||||
auto fileRefID = createFileRefID (pathString);
|
||||
|
||||
ScopedPointer<ValueTree> v (new ValueTree (fileRefID));
|
||||
v->setProperty ("isa", "PBXFileReference", nullptr);
|
||||
|
|
@ -2476,7 +2475,7 @@ private:
|
|||
v->setProperty ("path", pathString, nullptr);
|
||||
v->setProperty ("sourceTree", sourceTree, nullptr);
|
||||
|
||||
const int existing = pbxFileReferences.indexOfSorted (*this, v);
|
||||
auto existing = pbxFileReferences.indexOfSorted (*this, v);
|
||||
|
||||
if (existing >= 0)
|
||||
{
|
||||
|
|
@ -2526,8 +2525,8 @@ private:
|
|||
String addFile (const RelativePath& path, bool shouldBeCompiled, bool shouldBeAddedToBinaryResources,
|
||||
bool shouldBeAddedToXcodeResources, bool inhibitWarnings, XcodeTarget* xcodeTarget) const
|
||||
{
|
||||
const String pathAsString (path.toUnixStyle());
|
||||
const String refID (addFileReference (path.toUnixStyle()));
|
||||
auto pathAsString = path.toUnixStyle();
|
||||
auto refID = addFileReference (path.toUnixStyle());
|
||||
|
||||
if (shouldBeCompiled)
|
||||
{
|
||||
|
|
@ -2535,7 +2534,7 @@ private:
|
|||
}
|
||||
else if (! shouldBeAddedToBinaryResources || shouldBeAddedToXcodeResources)
|
||||
{
|
||||
const String fileType (getFileType (path));
|
||||
auto fileType = getFileType (path);
|
||||
|
||||
if (shouldBeAddedToXcodeResources)
|
||||
{
|
||||
|
|
@ -2549,14 +2548,14 @@ private:
|
|||
|
||||
String addRezFile (const Project::Item& projectItem, const RelativePath& path) const
|
||||
{
|
||||
const String pathAsString (path.toUnixStyle());
|
||||
const String refID (addFileReference (path.toUnixStyle()));
|
||||
auto pathAsString = path.toUnixStyle();
|
||||
auto refID = addFileReference (path.toUnixStyle());
|
||||
|
||||
if (projectItem.isModuleCode())
|
||||
{
|
||||
if (XcodeTarget* xcodeTarget = getTargetOfType (getProject().getTargetTypeFromFilePath (projectItem.getFile(), false)))
|
||||
if (auto* xcodeTarget = getTargetOfType (getProject().getTargetTypeFromFilePath (projectItem.getFile(), false)))
|
||||
{
|
||||
String rezFileID = addBuildFile (pathAsString, refID, false, false, xcodeTarget);
|
||||
auto rezFileID = addBuildFile (pathAsString, refID, false, false, xcodeTarget);
|
||||
xcodeTarget->rezFileIDs.add (rezFileID);
|
||||
|
||||
return refID;
|
||||
|
|
@ -2636,7 +2635,7 @@ private:
|
|||
"<plist version=\"1.0\">\n"
|
||||
"<dict>\n";
|
||||
|
||||
const auto keys = entitlements.getAllKeys();
|
||||
auto keys = entitlements.getAllKeys();
|
||||
|
||||
for (auto& key : keys)
|
||||
{
|
||||
|
|
@ -2646,7 +2645,7 @@ private:
|
|||
content += "</dict>\n"
|
||||
"</plist>\n";
|
||||
|
||||
File entitlementsFile = getTargetFolder().getChildFile (getEntitlementsFileName());
|
||||
auto entitlementsFile = getTargetFolder().getChildFile (getEntitlementsFileName());
|
||||
overwriteFileIfDifferentOrThrow (entitlementsFile, content);
|
||||
|
||||
RelativePath plistPath (entitlementsFile, getTargetFolder(), RelativePath::buildTargetFolder);
|
||||
|
|
@ -2663,7 +2662,7 @@ private:
|
|||
StringArray childIDs;
|
||||
for (int i = 0; i < projectItem.getNumChildren(); ++i)
|
||||
{
|
||||
const String childID (addProjectItem (projectItem.getChild(i)));
|
||||
auto childID = addProjectItem (projectItem.getChild(i));
|
||||
|
||||
if (childID.isNotEmpty())
|
||||
childIDs.add (childID);
|
||||
|
|
@ -2674,7 +2673,7 @@ private:
|
|||
|
||||
if (projectItem.shouldBeAddedToTargetProject())
|
||||
{
|
||||
const String itemPath (projectItem.getFilePath());
|
||||
auto itemPath = projectItem.getFilePath();
|
||||
RelativePath path;
|
||||
|
||||
if (itemPath.startsWith ("${"))
|
||||
|
|
@ -2701,14 +2700,14 @@ private:
|
|||
|
||||
String addFramework (const String& frameworkName) const
|
||||
{
|
||||
String path (frameworkName);
|
||||
auto path = frameworkName;
|
||||
if (! File::isAbsolutePath (path))
|
||||
path = "System/Library/Frameworks/" + path;
|
||||
|
||||
if (! path.endsWithIgnoreCase (".framework"))
|
||||
path << ".framework";
|
||||
|
||||
const String fileRefID (createFileRefID (path));
|
||||
auto fileRefID = createFileRefID (path);
|
||||
|
||||
addFileReference ((File::isAbsolutePath (frameworkName) ? "" : "${SDKROOT}/") + path);
|
||||
frameworkFileIDs.add (fileRefID);
|
||||
|
|
@ -2718,7 +2717,7 @@ private:
|
|||
|
||||
void addGroup (const String& groupID, const String& groupName, const StringArray& childIDs) const
|
||||
{
|
||||
ValueTree* v = new ValueTree (groupID);
|
||||
auto* v = new ValueTree (groupID);
|
||||
v->setProperty ("isa", "PBXGroup", nullptr);
|
||||
v->setProperty ("children", indentParenthesisedList (childIDs), nullptr);
|
||||
v->setProperty (Ids::name, groupName, nullptr);
|
||||
|
|
@ -2728,15 +2727,15 @@ private:
|
|||
|
||||
String addGroup (const Project::Item& item, StringArray& childIDs) const
|
||||
{
|
||||
const String groupName (item.getName());
|
||||
const String groupID (getIDForGroup (item));
|
||||
auto groupName = item.getName();
|
||||
auto groupID = getIDForGroup (item);
|
||||
addGroup (groupID, groupName, childIDs);
|
||||
return groupID;
|
||||
}
|
||||
|
||||
void addProjectConfig (const String& configName, const StringArray& buildSettings) const
|
||||
{
|
||||
ValueTree* v = new ValueTree (createID ("projectconfigid_" + configName));
|
||||
auto* v = new ValueTree (createID ("projectconfigid_" + configName));
|
||||
v->setProperty ("isa", "XCBuildConfiguration", nullptr);
|
||||
v->setProperty ("buildSettings", indentBracedList (buildSettings), nullptr);
|
||||
v->setProperty (Ids::name, configName, nullptr);
|
||||
|
|
@ -2745,7 +2744,7 @@ private:
|
|||
|
||||
void addConfigList (XcodeTarget& target, const OwnedArray <ValueTree>& configsToUse, const String& listID) const
|
||||
{
|
||||
ValueTree* v = new ValueTree (listID);
|
||||
auto* v = new ValueTree (listID);
|
||||
v->setProperty ("isa", "XCConfigurationList", nullptr);
|
||||
v->setProperty ("buildConfigurations", indentParenthesisedList (target.configIDs), nullptr);
|
||||
v->setProperty ("defaultConfigurationIsVisible", (int) 0, nullptr);
|
||||
|
|
@ -2763,7 +2762,7 @@ private:
|
|||
for (auto* c : configsToUse)
|
||||
configIDs.add (c->getType().toString());
|
||||
|
||||
ValueTree* v = new ValueTree (listID);
|
||||
auto* v = new ValueTree (listID);
|
||||
v->setProperty ("isa", "XCConfigurationList", nullptr);
|
||||
v->setProperty ("buildConfigurations", indentParenthesisedList (configIDs), nullptr);
|
||||
v->setProperty ("defaultConfigurationIsVisible", (int) 0, nullptr);
|
||||
|
|
@ -2776,7 +2775,7 @@ private:
|
|||
|
||||
void addProjectObject() const
|
||||
{
|
||||
ValueTree* const v = new ValueTree (createID ("__root"));
|
||||
auto* v = new ValueTree (createID ("__root"));
|
||||
v->setProperty ("isa", "PBXProject", nullptr);
|
||||
v->setProperty ("buildConfigurationList", createID ("__projList"), nullptr);
|
||||
v->setProperty ("attributes", getProjectObjectAttributes(), nullptr);
|
||||
|
|
@ -2786,7 +2785,7 @@ private:
|
|||
v->setProperty ("projectDirPath", "\"\"", nullptr);
|
||||
v->setProperty ("projectRoot", "\"\"", nullptr);
|
||||
|
||||
String targetString = "(" + targetIDs.joinIntoString (", ") + ")";
|
||||
auto targetString = "(" + targetIDs.joinIntoString (", ") + ")";
|
||||
v->setProperty ("targets", targetString, nullptr);
|
||||
misc.add (v);
|
||||
}
|
||||
|
|
@ -2797,7 +2796,7 @@ private:
|
|||
if (settings ["keepCustomXcodeSchemes"])
|
||||
return;
|
||||
|
||||
File xcuserdata = getProjectBundle().getChildFile ("xcuserdata");
|
||||
auto xcuserdata = getProjectBundle().getChildFile ("xcuserdata");
|
||||
|
||||
if (! xcuserdata.exists())
|
||||
return;
|
||||
|
|
@ -3057,11 +3056,11 @@ private:
|
|||
if (list.size() == 0)
|
||||
return " ";
|
||||
|
||||
const String tabs ("\n" + String::repeatedString ("\t", extraTabs + 4));
|
||||
auto tabs = "\n" + String::repeatedString ("\t", extraTabs + 4);
|
||||
|
||||
if (shouldSort)
|
||||
{
|
||||
StringArray sorted (list);
|
||||
auto sorted = list;
|
||||
sorted.sort (true);
|
||||
|
||||
return tabs + sorted.joinIntoString (separator + tabs) + separator;
|
||||
|
|
|
|||
|
|
@ -137,6 +137,8 @@ public:
|
|||
Project& getProject() noexcept { return project; }
|
||||
const Project& getProject() const noexcept { return project; }
|
||||
|
||||
UndoManager* getUndoManager() const { return project.getUndoManagerFor (settings); }
|
||||
|
||||
Value getSetting (const Identifier& nm) { return settings.getPropertyAsValue (nm, project.getUndoManagerFor (settings)); }
|
||||
String getSettingString (const Identifier& nm) const { return settings [nm]; }
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue