@@ -304,24 +304,31 @@ private: | |||
String getGlobalDefs() | |||
{ | |||
StringArray defs; | |||
defs.add (project.getCompileEngineSettings().getExtraPreprocessorDefsString()); | |||
auto mergeDefs = [] (const StringPairArray& inDefs) -> String | |||
{ | |||
auto projectDefines = project.getPreprocessorDefs(); | |||
StringArray outDefs; | |||
for (int i = 0; i < projectDefines.size(); ++i) | |||
for (int i = 0; i < inDefs.size(); ++i) | |||
{ | |||
auto def = projectDefines.getAllKeys()[i]; | |||
auto value = projectDefines.getAllValues()[i]; | |||
auto def = inDefs.getAllKeys()[i]; | |||
auto value = inDefs.getAllValues()[i]; | |||
if (value.isNotEmpty()) | |||
def << "=" << value; | |||
defs.add (def); | |||
outDefs.add (def); | |||
} | |||
} | |||
return outDefs.joinIntoString (" "); | |||
}; | |||
StringArray defs; | |||
if (! project.shouldUseAppConfig()) | |||
defs.add (mergeDefs (project.getAppConfigDefs())); | |||
defs.add (project.getCompileEngineSettings().getExtraPreprocessorDefsString()); | |||
defs.add (mergeDefs (project.getPreprocessorDefs())); | |||
for (Project::ExporterIterator exporter (project); exporter.next();) | |||
if (exporter->canLaunchProject()) | |||
@@ -2425,6 +2425,49 @@ String Project::getFileTemplate (const String& templateName) | |||
} | |||
StringPairArray Project::getAppConfigDefs() | |||
{ | |||
StringPairArray result; | |||
result.set ("JUCE_DISPLAY_SPLASH_SCREEN", shouldDisplaySplashScreen() ? "1" : "0"); | |||
result.set ("JUCE_USE_DARK_SPLASH_SCREEN", getSplashScreenColourString() == "Dark" ? "1" : "0"); | |||
result.set ("JUCE_PROJUCER_VERSION", "0x" + String::toHexString (ProjectInfo::versionNumber)); | |||
OwnedArray<LibraryModule> modules; | |||
getEnabledModules().createRequiredModules (modules); | |||
for (auto& m : modules) | |||
result.set ("JUCE_MODULE_AVAILABLE_" + m->getID(), "1"); | |||
result.set ("JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED", "1"); | |||
for (auto& m : modules) | |||
{ | |||
OwnedArray<Project::ConfigFlag> flags; | |||
m->getConfigFlags (*this, flags); | |||
for (auto* flag : flags) | |||
if (! flag->value.isUsingDefault()) | |||
result.set (flag->symbol, flag->value.get() ? "1" : "0"); | |||
} | |||
result.addArray (getAudioPluginFlags()); | |||
const auto& type = getProjectType(); | |||
const auto isStandaloneApplication = (! type.isAudioPlugin() && ! type.isDynamicLibrary()); | |||
const auto standaloneValue = [&] | |||
{ | |||
if (result.containsKey ("JucePlugin_Name") && result.containsKey ("JucePlugin_Build_Standalone")) | |||
return "JucePlugin_Build_Standalone"; | |||
return isStandaloneApplication ? "1" : "0"; | |||
}(); | |||
result.set ("JUCE_STANDALONE_APPLICATION", standaloneValue); | |||
return result; | |||
} | |||
StringPairArray Project::getAudioPluginFlags() const | |||
{ | |||
if (! isAudioPluginProject()) | |||
@@ -310,6 +310,7 @@ public: | |||
//============================================================================== | |||
void updateDeprecatedProjectSettingsInteractively(); | |||
StringPairArray getAppConfigDefs(); | |||
StringPairArray getAudioPluginFlags() const; | |||
//============================================================================== | |||
@@ -448,54 +448,11 @@ StringPairArray ProjectExporter::getAllPreprocessorDefs (const BuildConfiguratio | |||
addTargetSpecificPreprocessorDefs (defs, targetType); | |||
if (! project.shouldUseAppConfig()) | |||
defs = mergePreprocessorDefs (defs, getAppConfigDefs()); | |||
defs = mergePreprocessorDefs (defs, project.getAppConfigDefs()); | |||
return defs; | |||
} | |||
StringPairArray ProjectExporter::getAppConfigDefs() const | |||
{ | |||
StringPairArray result; | |||
result.set ("JUCE_DISPLAY_SPLASH_SCREEN", project.shouldDisplaySplashScreen() ? "1" : "0"); | |||
result.set ("JUCE_USE_DARK_SPLASH_SCREEN", project.getSplashScreenColourString() == "Dark" ? "1" : "0"); | |||
result.set ("JUCE_PROJUCER_VERSION", "0x" + String::toHexString (ProjectInfo::versionNumber)); | |||
OwnedArray<LibraryModule> modules; | |||
project.getEnabledModules().createRequiredModules (modules); | |||
for (auto& m : modules) | |||
result.set ("JUCE_MODULE_AVAILABLE_" + m->getID(), "1"); | |||
result.set ("JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED", "1"); | |||
for (auto& m : modules) | |||
{ | |||
OwnedArray<Project::ConfigFlag> flags; | |||
m->getConfigFlags (project, flags); | |||
for (auto* flag : flags) | |||
if (! flag->value.isUsingDefault()) | |||
result.set (flag->symbol, flag->value.get() ? "1" : "0"); | |||
} | |||
result.addArray (project.getAudioPluginFlags()); | |||
const auto& type = project.getProjectType(); | |||
const auto isStandaloneApplication = (! type.isAudioPlugin() && ! type.isDynamicLibrary()); | |||
const auto standaloneValue = [&] | |||
{ | |||
if (result.containsKey ("JucePlugin_Name") && result.containsKey ("JucePlugin_Build_Standalone")) | |||
return "JucePlugin_Build_Standalone"; | |||
return isStandaloneApplication ? "1" : "0"; | |||
}(); | |||
result.set ("JUCE_STANDALONE_APPLICATION", standaloneValue); | |||
return result; | |||
} | |||
StringPairArray ProjectExporter::getAllPreprocessorDefs() const | |||
{ | |||
auto defs = mergePreprocessorDefs (project.getPreprocessorDefs(), | |||
@@ -329,8 +329,6 @@ public: | |||
StringPairArray getAllPreprocessorDefs (const BuildConfiguration& config, const build_tools::ProjectType::Target::Type targetType) const; | |||
// includes exporter + project defs | |||
StringPairArray getAllPreprocessorDefs() const; | |||
// just appconfig defs | |||
StringPairArray getAppConfigDefs() const; | |||
void addTargetSpecificPreprocessorDefs (StringPairArray& defs, const build_tools::ProjectType::Target::Type targetType) const; | |||