From b6e88694d130a42490f0746fbcc4cfb8d11175eb Mon Sep 17 00:00:00 2001 From: jules Date: Mon, 25 Apr 2016 10:47:23 +0100 Subject: [PATCH] Projucer: Fixed module dependency checker --- .../Projucer/Source/Project/jucer_Module.cpp | 36 +++++++++---------- extras/Projucer/Source/Project/jucer_Module.h | 1 + 2 files changed, 17 insertions(+), 20 deletions(-) diff --git a/extras/Projucer/Source/Project/jucer_Module.cpp b/extras/Projucer/Source/Project/jucer_Module.cpp index cf5b978928..8383f46e43 100644 --- a/extras/Projucer/Source/Project/jucer_Module.cpp +++ b/extras/Projucer/Source/Project/jucer_Module.cpp @@ -105,6 +105,14 @@ File ModuleDescription::getHeader() const return File(); } +StringArray ModuleDescription::getDependencies() const +{ + StringArray deps = StringArray::fromTokens (moduleInfo ["dependencies"].toString(), " \t;,", "\"'"); + deps.trim(); + deps.removeEmptyStrings(); + return deps; +} + //============================================================================== ModuleList::ModuleList() { @@ -127,6 +135,7 @@ const ModuleDescription* ModuleList::getModuleWithID (const String& moduleID) co for (int i = 0; i < modules.size(); ++i) { ModuleDescription* m = modules.getUnchecked(i); + if (m->getID() == moduleID) return m; } @@ -694,25 +703,12 @@ static void getDependencies (Project& project, const String& moduleID, StringArr { ModuleDescription info (project.getModules().getModuleInfo (moduleID)); - if (info.isValid()) + for (auto uid : info.getDependencies()) { - const var depsArray (info.moduleInfo ["dependencies"]); - - if (const Array* const deps = depsArray.getArray()) + if (! dependencies.contains (uid, true)) { - for (int i = 0; i < deps->size(); ++i) - { - const var& d = deps->getReference(i); - - String uid (d [Ids::ID].toString()); - String version (d [Ids::version].toString()); - - if (! dependencies.contains (uid, true)) - { - dependencies.add (uid); - getDependencies (project, uid, dependencies); - } - } + dependencies.add (uid); + getDependencies (project, uid, dependencies); } } } @@ -722,9 +718,9 @@ StringArray EnabledModuleList::getExtraDependenciesNeeded (const String& moduleI StringArray dependencies, extraDepsNeeded; getDependencies (project, moduleID, dependencies); - for (int i = 0; i < dependencies.size(); ++i) - if ((! isModuleEnabled (dependencies[i])) && dependencies[i] != moduleID) - extraDepsNeeded.add (dependencies[i]); + for (auto dep : dependencies) + if (dep != moduleID && ! isModuleEnabled (dep)) + extraDepsNeeded.add (dep); return extraDepsNeeded; } diff --git a/extras/Projucer/Source/Project/jucer_Module.h b/extras/Projucer/Source/Project/jucer_Module.h index b4f0926396..49d2037088 100644 --- a/extras/Projucer/Source/Project/jucer_Module.h +++ b/extras/Projucer/Source/Project/jucer_Module.h @@ -51,6 +51,7 @@ struct ModuleDescription String getLicense() const { return moduleInfo [Ids::license].toString(); } String getPreprocessorDefs() const { return moduleInfo [Ids::defines].toString(); } String getExtraSearchPaths() const { return moduleInfo [Ids::searchpaths].toString(); } + StringArray getDependencies() const; File getFolder() const { jassert (moduleFolder != File()); return moduleFolder; } File getHeader() const;