mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
macOS/iOS: Add the ability to weak link module frameworks
This commit is contained in:
parent
04e7014d0f
commit
e5cbcd7628
6 changed files with 81 additions and 45 deletions
|
|
@ -23,7 +23,7 @@
|
|||
|
||||
//==============================================================================
|
||||
LibraryModule::LibraryModule (const ModuleDescription& d)
|
||||
: moduleInfo (d)
|
||||
: moduleDescription (d)
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -36,15 +36,15 @@ void LibraryModule::writeIncludes (ProjectSaver& projectSaver, OutputStream& out
|
|||
|
||||
if (modules.shouldCopyModuleFilesLocally (moduleID))
|
||||
{
|
||||
auto juceModuleFolder = moduleInfo.getFolder();
|
||||
auto juceModuleFolder = moduleDescription.getFolder();
|
||||
|
||||
auto localModuleFolder = project.getLocalModuleFolder (moduleID);
|
||||
localModuleFolder.createDirectory();
|
||||
projectSaver.copyFolder (juceModuleFolder, localModuleFolder);
|
||||
}
|
||||
|
||||
out << "#include <" << moduleInfo.getModuleFolder().getFileName() << "/"
|
||||
<< moduleInfo.getHeader().getFileName()
|
||||
out << "#include <" << moduleDescription.getModuleFolder().getFileName() << "/"
|
||||
<< moduleDescription.getHeader().getFileName()
|
||||
<< ">" << newLine;
|
||||
}
|
||||
|
||||
|
|
@ -71,7 +71,7 @@ void LibraryModule::addSearchPathsToExporter (ProjectExporter& exporter) const
|
|||
if (moduleLibDir.exists())
|
||||
exporter.addToModuleLibPaths ({ libSubdirPath, moduleRelativePath.getRoot() });
|
||||
|
||||
auto extraInternalSearchPaths = moduleInfo.getExtraSearchPaths().trim();
|
||||
auto extraInternalSearchPaths = moduleDescription.getExtraSearchPaths().trim();
|
||||
|
||||
if (extraInternalSearchPaths.isNotEmpty())
|
||||
{
|
||||
|
|
@ -84,7 +84,7 @@ void LibraryModule::addSearchPathsToExporter (ProjectExporter& exporter) const
|
|||
|
||||
void LibraryModule::addDefinesToExporter (ProjectExporter& exporter) const
|
||||
{
|
||||
auto extraDefs = moduleInfo.getPreprocessorDefs().trim();
|
||||
auto extraDefs = moduleDescription.getPreprocessorDefs().trim();
|
||||
|
||||
if (extraDefs.isNotEmpty())
|
||||
exporter.getExporterPreprocessorDefsValue() = exporter.getExporterPreprocessorDefsString() + "\n" + extraDefs;
|
||||
|
|
@ -98,7 +98,7 @@ void LibraryModule::addCompileUnitsToExporter (ProjectExporter& exporter, Projec
|
|||
auto moduleID = getID();
|
||||
|
||||
auto localModuleFolder = modules.shouldCopyModuleFilesLocally (moduleID) ? project.getLocalModuleFolder (moduleID)
|
||||
: moduleInfo.getFolder();
|
||||
: moduleDescription.getFolder();
|
||||
|
||||
Array<File> compiled;
|
||||
findAndAddCompiledUnits (exporter, &projectSaver, compiled);
|
||||
|
|
@ -118,6 +118,8 @@ void LibraryModule::addLibsToExporter (ProjectExporter& exporter) const
|
|||
|
||||
auto& project = exporter.getProject();
|
||||
|
||||
auto moduleInfo = moduleDescription.getModuleInfo();
|
||||
|
||||
if (exporter.isXcode())
|
||||
{
|
||||
auto& xcodeExporter = dynamic_cast<XcodeProjectExporter&> (exporter);
|
||||
|
|
@ -130,26 +132,29 @@ void LibraryModule::addLibsToExporter (ProjectExporter& exporter) const
|
|||
xcodeExporter.xcodeFrameworks.add ("AudioUnit");
|
||||
}
|
||||
|
||||
auto frameworks = moduleInfo.getModuleInfo() [xcodeExporter.isOSX() ? "OSXFrameworks" : "iOSFrameworks"].toString();
|
||||
auto frameworks = moduleInfo[xcodeExporter.isOSX() ? "OSXFrameworks" : "iOSFrameworks"].toString();
|
||||
xcodeExporter.xcodeFrameworks.addTokens (frameworks, ", ", {});
|
||||
|
||||
parseAndAddLibsToList (xcodeExporter.xcodeLibs, moduleInfo.getModuleInfo() [exporter.isOSX() ? "OSXLibs" : "iOSLibs"].toString());
|
||||
auto weakFrameworks = moduleInfo[xcodeExporter.isOSX() ? "WeakOSXFrameworks" : "WeakiOSFrameworks"].toString();
|
||||
xcodeExporter.xcodeWeakFrameworks.addTokens (weakFrameworks, ", ", {});
|
||||
|
||||
parseAndAddLibsToList (xcodeExporter.xcodeLibs, moduleInfo[exporter.isOSX() ? "OSXLibs" : "iOSLibs"].toString());
|
||||
}
|
||||
else if (exporter.isLinux())
|
||||
{
|
||||
parseAndAddLibsToList (exporter.linuxLibs, moduleInfo.getModuleInfo() ["linuxLibs"].toString());
|
||||
parseAndAddLibsToList (exporter.linuxPackages, moduleInfo.getModuleInfo() ["linuxPackages"].toString());
|
||||
parseAndAddLibsToList (exporter.linuxLibs, moduleInfo["linuxLibs"].toString());
|
||||
parseAndAddLibsToList (exporter.linuxPackages, moduleInfo["linuxPackages"].toString());
|
||||
}
|
||||
else if (exporter.isWindows())
|
||||
{
|
||||
if (exporter.isCodeBlocks())
|
||||
parseAndAddLibsToList (exporter.mingwLibs, moduleInfo.getModuleInfo() ["mingwLibs"].toString());
|
||||
parseAndAddLibsToList (exporter.mingwLibs, moduleInfo["mingwLibs"].toString());
|
||||
else
|
||||
parseAndAddLibsToList (exporter.windowsLibs, moduleInfo.getModuleInfo() ["windowsLibs"].toString());
|
||||
parseAndAddLibsToList (exporter.windowsLibs, moduleInfo["windowsLibs"].toString());
|
||||
}
|
||||
else if (exporter.isAndroid())
|
||||
{
|
||||
parseAndAddLibsToList (exporter.androidLibs, moduleInfo.getModuleInfo() ["androidLibs"].toString());
|
||||
parseAndAddLibsToList (exporter.androidLibs, moduleInfo["androidLibs"].toString());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -163,7 +168,7 @@ void LibraryModule::addSettingsForModuleToExporter (ProjectExporter& exporter, P
|
|||
|
||||
void LibraryModule::getConfigFlags (Project& project, OwnedArray<Project::ConfigFlag>& flags) const
|
||||
{
|
||||
auto header = moduleInfo.getHeader();
|
||||
auto header = moduleDescription.getHeader();
|
||||
jassert (header.exists());
|
||||
|
||||
StringArray lines;
|
||||
|
|
@ -348,7 +353,7 @@ void LibraryModule::addBrowseableCode (ProjectExporter& exporter, const Array<Fi
|
|||
|
||||
auto sourceGroup = Project::Item::createGroup (exporter.getProject(), getID(), "__mainsourcegroup" + getID(), false);
|
||||
auto moduleFromProject = exporter.getModuleFolderRelativeToProject (getID());
|
||||
auto moduleHeader = moduleInfo.getHeader();
|
||||
auto moduleHeader = moduleDescription.getHeader();
|
||||
|
||||
auto& project = exporter.getProject();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue