diff options
author | Thierry Crozat | 2017-02-06 23:18:02 +0000 |
---|---|---|
committer | Thierry Crozat | 2017-02-06 23:18:02 +0000 |
commit | 2f4d14aba50ef437c24af905aeec6e95437eb8fa (patch) | |
tree | e673a9700d23fcac7d21d694c9b446b529772a6b /devtools | |
parent | 14dcdb6103852be0ae716ee1aa84da07bbdc9638 (diff) | |
download | scummvm-rg350-2f4d14aba50ef437c24af905aeec6e95437eb8fa.tar.gz scummvm-rg350-2f4d14aba50ef437c24af905aeec6e95437eb8fa.tar.bz2 scummvm-rg350-2f4d14aba50ef437c24af905aeec6e95437eb8fa.zip |
CREATE_PROJECT: Disable engines for which required features are not available
Diffstat (limited to 'devtools')
-rw-r--r-- | devtools/create_project/create_project.cpp | 23 | ||||
-rw-r--r-- | devtools/create_project/create_project.h | 5 |
2 files changed, 26 insertions, 2 deletions
diff --git a/devtools/create_project/create_project.cpp b/devtools/create_project/create_project.cpp index 9b171af804..2baaf91a71 100644 --- a/devtools/create_project/create_project.cpp +++ b/devtools/create_project/create_project.cpp @@ -300,6 +300,19 @@ int main(int argc, char *argv[]) { for (EngineDescList::iterator j = setup.engines.begin(); j != setup.engines.end(); ++j) j->enable = false; } + + // Disable engines for which we are missing dependencies + for (EngineDescList::const_iterator i = setup.engines.begin(); i != setup.engines.end(); ++i) { + if (i->enable) { + for (StringList::const_iterator ef = i->requiredFeatures.begin(); ef != i->requiredFeatures.end(); ++ef) { + FeatureList::iterator feature = std::find(setup.features.begin(), setup.features.end(), *ef); + if (feature != setup.features.end() && !feature->enable) { + setEngineBuildState(i->name, setup.engines, false); + break; + } + } + } + } // Print status cout << "Enabled engines:\n\n"; @@ -906,7 +919,7 @@ namespace { */ bool parseEngine(const std::string &line, EngineDesc &engine) { // Format: - // add_engine engine_name "Readable Description" enable_default ["SubEngineList"] + // add_engine engine_name "Readable Description" enable_default ["SubEngineList"] ["base games"] ["dependencies"] TokenList tokens = tokenize(line); if (tokens.size() < 4) @@ -921,8 +934,14 @@ bool parseEngine(const std::string &line, EngineDesc &engine) { engine.name = *token; ++token; engine.desc = *token; ++token; engine.enable = (*token == "yes"); ++token; - if (token != tokens.end()) + if (token != tokens.end()) { engine.subEngines = tokenize(*token); + ++token; + if (token != tokens.end()) + ++token; + if (token != tokens.end()) + engine.requiredFeatures = tokenize(*token); + } return true; } diff --git a/devtools/create_project/create_project.h b/devtools/create_project/create_project.h index bd0dcf6be9..9f662ae806 100644 --- a/devtools/create_project/create_project.h +++ b/devtools/create_project/create_project.h @@ -86,6 +86,11 @@ struct EngineDesc { * Whether the engine should be included in the build or not. */ bool enable; + + /** + * Features required for this engine. + */ + StringList requiredFeatures; /** * A list of all available sub engine names. Sub engines are engines |