From dea5aa8a2017ec9b9abc16b34683a1e37aafbe46 Mon Sep 17 00:00:00 2001 From: Johannes Schickel Date: Fri, 6 May 2011 20:41:21 +0200 Subject: 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. --- devtools/create_project/create_project.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'devtools') 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; } } -- cgit v1.2.3