aboutsummaryrefslogtreecommitdiff
path: root/devtools
diff options
context:
space:
mode:
authorJohannes Schickel2011-05-06 20:41:21 +0200
committerJohannes Schickel2011-05-06 20:41:21 +0200
commitdea5aa8a2017ec9b9abc16b34683a1e37aafbe46 (patch)
tree93b441a0f5ce435f0326c5f8fd62362d3d328d24 /devtools
parent29bc72a627ece0ba87509585651f25765bb64865 (diff)
downloadscummvm-rg350-dea5aa8a2017ec9b9abc16b34683a1e37aafbe46.tar.gz
scummvm-rg350-dea5aa8a2017ec9b9abc16b34683a1e37aafbe46.tar.bz2
scummvm-rg350-dea5aa8a2017ec9b9abc16b34683a1e37aafbe46.zip
CREATE_PROJECT: Fix module.mk parsing.
Formerly create_project incorrectly assumed that a given object file is only present once in an module.mk file. This is not the case for backends/module.mk for example. There the Windows FS object files are in two different if blocks. In this particular case it resulted in the object file being added to both the include list and the exclude list. Now the module.mk handler prefers files being in the include list.
Diffstat (limited to 'devtools')
-rw-r--r--devtools/create_project/create_project.cpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/devtools/create_project/create_project.cpp b/devtools/create_project/create_project.cpp
index 7d112c7ffe..de82dd1698 100644
--- a/devtools/create_project/create_project.cpp
+++ b/devtools/create_project/create_project.cpp
@@ -1225,10 +1225,20 @@ void ProjectProvider::createModuleList(const std::string &moduleDir, const Strin
tokens = tokenize(line);
i = tokens.begin();
} else {
- if (shouldInclude.top())
- includeList.push_back(moduleDir + "/" + unifyPath(*i));
- else
- excludeList.push_back(moduleDir + "/" + unifyPath(*i));
+ const std::string filename = moduleDir + "/" + unifyPath(*i);
+
+ if (shouldInclude.top()) {
+ // In case we should include a file, we need to make
+ // sure it is not in the exclude list already. If it
+ // is we just drop it from the exclude list.
+ excludeList.remove(filename);
+
+ includeList.push_back(filename);
+ } else if (std::find(includeList.begin(), includeList.end(), filename) == includeList.end()) {
+ // We only add the file to the exclude list in case it
+ // has not yet been added to the include list.
+ excludeList.push_back(filename);
+ }
++i;
}
}