From 4878ed3d2937b717f31eb398db0121ec1f246d80 Mon Sep 17 00:00:00 2001 From: Ian Scott Date: Fri, 27 Jul 2001 13:06:05 -0400 Subject: MAkefile now strips duplicate directores from the libraries and include paths --- Source/cmMakefile.cxx | 26 ++++++++++++++++++++++++++ Source/cmMakefile.h | 5 +++++ 2 files changed, 31 insertions(+) diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index 5c8aad2..f9db806 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -408,6 +408,9 @@ void cmMakefile::FinalPass() { // do all the variable expansions here this->ExpandVariables(); + + this->StripDuplicateDirectories(); + // give all the commands a chance to do something // after the file has been parsed before generation for(std::vector::iterator i = m_UsedCommands.begin(); @@ -790,6 +793,29 @@ int cmMakefile::DumpDocumentationToFile(const char *fileName) } + // Remove duplicate directories from the library and include paths. +void cmMakefile::StripDuplicateDirectories() +{ + std::vector::iterator begin, end; + // remove duplicates from m_IncludeDirectories + begin = m_IncludeDirectories.begin(); + end = m_IncludeDirectories.end(); + std::list tmp1(begin, end); + tmp1.sort(); + m_IncludeDirectories.clear(); + std::unique_copy(tmp1.begin(), tmp1.end(), std::back_inserter(m_IncludeDirectories)); + + // remove duplicates from m_LinkDirectories + begin = m_LinkDirectories.begin(); + end = m_LinkDirectories.end(); + std::list tmp2(begin, end); + tmp2.sort(); + m_LinkDirectories.clear(); + std::unique_copy(tmp2.begin(), tmp2.end(), std::back_inserter(m_LinkDirectories)); +} + + + void cmMakefile::ExpandVariablesInString(std::string& source) const { this->ExpandVariablesInString(source, false); diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index bfdd520..e44d73d 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -480,6 +480,11 @@ public: * Expand variables in the makefiles ivars such as link directories etc */ void ExpandVariables(); + + /** + * Strip Duplicate directories from Library and Include paths + */ + void cmMakefile::StripDuplicateDirectories(); /** Recursivly read and create a cmMakefile object for * all CMakeLists.txt files in the GetSubDirectories list. -- cgit v0.12