aboutsummaryrefslogtreecommitdiff
path: root/devtools
diff options
context:
space:
mode:
authorThierry Crozat2017-02-06 23:18:02 +0000
committerThierry Crozat2017-02-06 23:18:02 +0000
commit2f4d14aba50ef437c24af905aeec6e95437eb8fa (patch)
treee673a9700d23fcac7d21d694c9b446b529772a6b /devtools
parent14dcdb6103852be0ae716ee1aa84da07bbdc9638 (diff)
downloadscummvm-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.cpp23
-rw-r--r--devtools/create_project/create_project.h5
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