Removed the Uniquification of the include and link directory list in FinalPass,
and achieved the same effect by makein m_LinkDirectores and m_IncludeDirectories a set rather than vector
This commit is contained in:
parent
8bad4180c7
commit
b24861d895
|
@ -644,11 +644,11 @@ void ElementCombinationGenerator::FindTagSource()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get the makefile's include path.
|
// Get the makefile's include path.
|
||||||
const std::vector<std::string>& includePath =
|
const std::set<std::string>& includePath =
|
||||||
m_Makefile->GetIncludeDirectories();
|
m_Makefile->GetIncludeDirectories();
|
||||||
|
|
||||||
// Search the path for a file called "(m_Tag).h".
|
// Search the path for a file called "(m_Tag).h".
|
||||||
for(std::vector<std::string>::const_iterator dir = includePath.begin();
|
for(std::set<std::string>::const_iterator dir = includePath.begin();
|
||||||
dir != includePath.end(); ++dir)
|
dir != includePath.end(); ++dir)
|
||||||
{
|
{
|
||||||
std::string filePath = *dir;
|
std::string filePath = *dir;
|
||||||
|
|
|
@ -298,9 +298,9 @@ void cmCableWrapTclCommand::GenerateCableClassFiles(const char* name,
|
||||||
commandArgs += m_Makefile->GetStartDirectory();
|
commandArgs += m_Makefile->GetStartDirectory();
|
||||||
commandArgs += "\"";
|
commandArgs += "\"";
|
||||||
|
|
||||||
const std::vector<std::string>& includes =
|
const std::set<std::string>& includes =
|
||||||
m_Makefile->GetIncludeDirectories();
|
m_Makefile->GetIncludeDirectories();
|
||||||
for(std::vector<std::string>::const_iterator i = includes.begin();
|
for(std::set<std::string>::const_iterator i = includes.begin();
|
||||||
i != includes.end(); ++i)
|
i != includes.end(); ++i)
|
||||||
{
|
{
|
||||||
commandArgs += " -I";
|
commandArgs += " -I";
|
||||||
|
|
|
@ -68,8 +68,8 @@ void cmDSPWriter::OutputDSPFile()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Setup /I and /LIBPATH options for the resulting DSP file
|
// Setup /I and /LIBPATH options for the resulting DSP file
|
||||||
std::vector<std::string>& includes = m_Makefile->GetIncludeDirectories();
|
std::set<std::string>& includes = m_Makefile->GetIncludeDirectories();
|
||||||
std::vector<std::string>::iterator i;
|
std::set<std::string>::iterator i;
|
||||||
for(i = includes.begin(); i != includes.end(); ++i)
|
for(i = includes.begin(); i != includes.end(); ++i)
|
||||||
{
|
{
|
||||||
m_IncludeOptions += "/I \"";
|
m_IncludeOptions += "/I \"";
|
||||||
|
@ -504,8 +504,8 @@ void cmDSPWriter::WriteDSPHeader(std::ostream& fout, const char *libName,
|
||||||
libMultiLineOptions += exePath;
|
libMultiLineOptions += exePath;
|
||||||
libMultiLineOptions += "\" \n";
|
libMultiLineOptions += "\" \n";
|
||||||
}
|
}
|
||||||
std::vector<std::string>::iterator i;
|
std::set<std::string>::iterator i;
|
||||||
std::vector<std::string>& libdirs = m_Makefile->GetLinkDirectories();
|
std::set<std::string>& libdirs = m_Makefile->GetLinkDirectories();
|
||||||
for(i = libdirs.begin(); i != libdirs.end(); ++i)
|
for(i = libdirs.begin(); i != libdirs.end(); ++i)
|
||||||
{
|
{
|
||||||
libOptions += " /LIBPATH:\"";
|
libOptions += " /LIBPATH:\"";
|
||||||
|
|
|
@ -90,9 +90,9 @@ void cmMakeDepend::SetMakefile(const cmMakefile* makefile)
|
||||||
m_Makefile->m_ComplainFileRegularExpression.c_str());
|
m_Makefile->m_ComplainFileRegularExpression.c_str());
|
||||||
|
|
||||||
// Now extract any include paths from the makefile flags
|
// Now extract any include paths from the makefile flags
|
||||||
const std::vector<std::string>& includes =
|
const std::set<std::string>& includes =
|
||||||
m_Makefile->GetIncludeDirectories();
|
m_Makefile->GetIncludeDirectories();
|
||||||
for(std::vector<std::string>::const_iterator j = includes.begin();
|
for(std::set<std::string>::const_iterator j = includes.begin();
|
||||||
j != includes.end(); ++j)
|
j != includes.end(); ++j)
|
||||||
{
|
{
|
||||||
std::string path = *j;
|
std::string path = *j;
|
||||||
|
|
|
@ -170,6 +170,17 @@ void cmMakefile::PrintStringVector(const char* s, const std::vector<std::string>
|
||||||
std::cout << " )\n";
|
std::cout << " )\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void cmMakefile::PrintStringVector(const char* s, const std::set<std::string>& v) const
|
||||||
|
{
|
||||||
|
std::cout << s << ": ( \n";
|
||||||
|
for(std::set<std::string>::const_iterator i = v.begin();
|
||||||
|
i != v.end(); ++i)
|
||||||
|
{
|
||||||
|
std::cout << (*i).c_str() << " ";
|
||||||
|
}
|
||||||
|
std::cout << " )\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// call print on all the classes in the makefile
|
// call print on all the classes in the makefile
|
||||||
void cmMakefile::Print() const
|
void cmMakefile::Print() const
|
||||||
|
@ -409,8 +420,6 @@ void cmMakefile::FinalPass()
|
||||||
// do all the variable expansions here
|
// do all the variable expansions here
|
||||||
this->ExpandVariables();
|
this->ExpandVariables();
|
||||||
|
|
||||||
this->StripDuplicateDirectories();
|
|
||||||
|
|
||||||
// give all the commands a chance to do something
|
// give all the commands a chance to do something
|
||||||
// after the file has been parsed before generation
|
// after the file has been parsed before generation
|
||||||
for(std::vector<cmCommand*>::iterator i = m_UsedCommands.begin();
|
for(std::vector<cmCommand*>::iterator i = m_UsedCommands.begin();
|
||||||
|
@ -536,7 +545,7 @@ void cmMakefile::AddLinkLibrary(const char* lib)
|
||||||
|
|
||||||
void cmMakefile::AddLinkDirectory(const char* dir)
|
void cmMakefile::AddLinkDirectory(const char* dir)
|
||||||
{
|
{
|
||||||
m_LinkDirectories.push_back(dir);
|
m_LinkDirectories.insert(dir);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmMakefile::AddSubDirectory(const char* sub)
|
void cmMakefile::AddSubDirectory(const char* sub)
|
||||||
|
@ -546,7 +555,7 @@ void cmMakefile::AddSubDirectory(const char* sub)
|
||||||
|
|
||||||
void cmMakefile::AddIncludeDirectory(const char* inc)
|
void cmMakefile::AddIncludeDirectory(const char* inc)
|
||||||
{
|
{
|
||||||
m_IncludeDirectories.push_back(inc);
|
m_IncludeDirectories.insert(inc);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cmMakefile::AddDefinition(const char* name, const char* value)
|
void cmMakefile::AddDefinition(const char* name, const char* value)
|
||||||
|
@ -730,19 +739,31 @@ std::string cmMakefile::GetParentListFileName(const char *currentFileName)
|
||||||
void cmMakefile::ExpandVariables()
|
void cmMakefile::ExpandVariables()
|
||||||
{
|
{
|
||||||
// Now expand varibles in the include and link strings
|
// Now expand varibles in the include and link strings
|
||||||
std::vector<std::string>::iterator j, begin, end;
|
std::set<std::string>::iterator j, begin, end;
|
||||||
begin = m_IncludeDirectories.begin();
|
begin = m_IncludeDirectories.begin();
|
||||||
end = m_IncludeDirectories.end();
|
end = m_IncludeDirectories.end();
|
||||||
|
std::set<std::string> new_set;
|
||||||
|
std::string x;
|
||||||
|
|
||||||
for(j = begin; j != end; ++j)
|
for(j = begin; j != end; ++j)
|
||||||
{
|
{
|
||||||
this->ExpandVariablesInString(*j);
|
x= *j;
|
||||||
|
this->ExpandVariablesInString(x);
|
||||||
|
new_set.insert(x);
|
||||||
}
|
}
|
||||||
|
m_IncludeDirectories = new_set;
|
||||||
|
|
||||||
|
new_set.clear();
|
||||||
begin = m_LinkDirectories.begin();
|
begin = m_LinkDirectories.begin();
|
||||||
end = m_LinkDirectories.end();
|
end = m_LinkDirectories.end();
|
||||||
for(j = begin; j != end; ++j)
|
for(j = begin; j != end; ++j)
|
||||||
{
|
{
|
||||||
this->ExpandVariablesInString(*j);
|
x = *j;
|
||||||
|
this->ExpandVariablesInString(x);
|
||||||
|
new_set.insert(x);
|
||||||
}
|
}
|
||||||
|
m_LinkDirectories = new_set;
|
||||||
|
|
||||||
cmTarget::LinkLibraries::iterator j2, end2;
|
cmTarget::LinkLibraries::iterator j2, end2;
|
||||||
j2 = m_LinkLibraries.begin();
|
j2 = m_LinkLibraries.begin();
|
||||||
end2 = m_LinkLibraries.end();
|
end2 = m_LinkLibraries.end();
|
||||||
|
@ -793,29 +814,6 @@ int cmMakefile::DumpDocumentationToFile(const char *fileName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Remove duplicate directories from the library and include paths.
|
|
||||||
void cmMakefile::StripDuplicateDirectories()
|
|
||||||
{
|
|
||||||
std::vector<std::string>::iterator begin, end;
|
|
||||||
// remove duplicates from m_IncludeDirectories
|
|
||||||
begin = m_IncludeDirectories.begin();
|
|
||||||
end = m_IncludeDirectories.end();
|
|
||||||
std::list<std::string> 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<std::string> 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
|
void cmMakefile::ExpandVariablesInString(std::string& source) const
|
||||||
{
|
{
|
||||||
this->ExpandVariablesInString(source, false);
|
this->ExpandVariablesInString(source, false);
|
||||||
|
|
|
@ -383,11 +383,11 @@ public:
|
||||||
/**
|
/**
|
||||||
* Get a list of include directories in the build.
|
* Get a list of include directories in the build.
|
||||||
*/
|
*/
|
||||||
std::vector<std::string>& GetIncludeDirectories()
|
std::set<std::string>& GetIncludeDirectories()
|
||||||
{
|
{
|
||||||
return m_IncludeDirectories;
|
return m_IncludeDirectories;
|
||||||
}
|
}
|
||||||
const std::vector<std::string>& GetIncludeDirectories() const
|
const std::set<std::string>& GetIncludeDirectories() const
|
||||||
{
|
{
|
||||||
return m_IncludeDirectories;
|
return m_IncludeDirectories;
|
||||||
}
|
}
|
||||||
|
@ -395,7 +395,7 @@ public:
|
||||||
/**
|
/**
|
||||||
* Get a list of link directories in the build.
|
* Get a list of link directories in the build.
|
||||||
*/
|
*/
|
||||||
std::vector<std::string>& GetLinkDirectories()
|
std::set<std::string>& GetLinkDirectories()
|
||||||
{
|
{
|
||||||
return m_LinkDirectories;
|
return m_LinkDirectories;
|
||||||
}
|
}
|
||||||
|
@ -481,11 +481,6 @@ public:
|
||||||
*/
|
*/
|
||||||
void ExpandVariables();
|
void ExpandVariables();
|
||||||
|
|
||||||
/**
|
|
||||||
* Strip Duplicate directories from Library and Include paths
|
|
||||||
*/
|
|
||||||
void cmMakefile::StripDuplicateDirectories();
|
|
||||||
|
|
||||||
/** Recursivly read and create a cmMakefile object for
|
/** Recursivly read and create a cmMakefile object for
|
||||||
* all CMakeLists.txt files in the GetSubDirectories list.
|
* all CMakeLists.txt files in the GetSubDirectories list.
|
||||||
* Once the file is found, it ReadListFile is called on
|
* Once the file is found, it ReadListFile is called on
|
||||||
|
@ -528,8 +523,8 @@ protected:
|
||||||
SourceMap m_Sources;
|
SourceMap m_Sources;
|
||||||
|
|
||||||
std::vector<std::string> m_SubDirectories; // list of sub directories
|
std::vector<std::string> m_SubDirectories; // list of sub directories
|
||||||
std::vector<std::string> m_IncludeDirectories;
|
std::set<std::string> m_IncludeDirectories;
|
||||||
std::vector<std::string> m_LinkDirectories;
|
std::set<std::string> m_LinkDirectories;
|
||||||
std::vector<std::string> m_ListFiles; // list of command files loaded
|
std::vector<std::string> m_ListFiles; // list of command files loaded
|
||||||
|
|
||||||
|
|
||||||
|
@ -560,6 +555,7 @@ private:
|
||||||
friend class cmMakeDepend; // make depend needs direct access
|
friend class cmMakeDepend; // make depend needs direct access
|
||||||
// to the m_Sources array
|
// to the m_Sources array
|
||||||
void PrintStringVector(const char* s, const std::vector<std::string>& v) const;
|
void PrintStringVector(const char* s, const std::vector<std::string>& v) const;
|
||||||
|
void PrintStringVector(const char* s, const std::set<std::string>& v) const;
|
||||||
void AddDefaultCommands();
|
void AddDefaultCommands();
|
||||||
void AddDefaultDefinitions();
|
void AddDefaultDefinitions();
|
||||||
std::set<cmFunctionBlocker *> m_FunctionBlockers;
|
std::set<cmFunctionBlocker *> m_FunctionBlockers;
|
||||||
|
|
|
@ -65,7 +65,7 @@ void cmUnixMakefileGenerator::GenerateMakefile()
|
||||||
m_LibraryOutputPath += "/";
|
m_LibraryOutputPath += "/";
|
||||||
}
|
}
|
||||||
cmSystemTools::MakeDirectory(m_LibraryOutputPath.c_str());
|
cmSystemTools::MakeDirectory(m_LibraryOutputPath.c_str());
|
||||||
m_Makefile->GetLinkDirectories().push_back(m_LibraryOutputPath);
|
m_Makefile->GetLinkDirectories().insert(m_LibraryOutputPath);
|
||||||
}
|
}
|
||||||
if (m_Makefile->GetDefinition("EXECUTABLE_OUTPUT_PATH"))
|
if (m_Makefile->GetDefinition("EXECUTABLE_OUTPUT_PATH"))
|
||||||
{
|
{
|
||||||
|
@ -76,7 +76,7 @@ void cmUnixMakefileGenerator::GenerateMakefile()
|
||||||
m_ExecutableOutputPath += "/";
|
m_ExecutableOutputPath += "/";
|
||||||
}
|
}
|
||||||
cmSystemTools::MakeDirectory(m_ExecutableOutputPath.c_str());
|
cmSystemTools::MakeDirectory(m_ExecutableOutputPath.c_str());
|
||||||
m_Makefile->GetLinkDirectories().push_back(m_ExecutableOutputPath);
|
m_Makefile->GetLinkDirectories().insert(m_ExecutableOutputPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(m_CacheOnly)
|
if(m_CacheOnly)
|
||||||
|
@ -362,8 +362,8 @@ void cmUnixMakefileGenerator::OutputLinkLibraries(std::ostream& fout,
|
||||||
|
|
||||||
// collect all the flags needed for linking libraries
|
// collect all the flags needed for linking libraries
|
||||||
std::string linkLibs;
|
std::string linkLibs;
|
||||||
std::vector<std::string>& libdirs = m_Makefile->GetLinkDirectories();
|
std::set<std::string>& libdirs = m_Makefile->GetLinkDirectories();
|
||||||
for(std::vector<std::string>::iterator libDir = libdirs.begin();
|
for(std::set<std::string>::iterator libDir = libdirs.begin();
|
||||||
libDir != libdirs.end(); ++libDir)
|
libDir != libdirs.end(); ++libDir)
|
||||||
{
|
{
|
||||||
std::string libpath = cmSystemTools::EscapeSpaces(libDir->c_str());
|
std::string libpath = cmSystemTools::EscapeSpaces(libDir->c_str());
|
||||||
|
@ -653,8 +653,8 @@ void cmUnixMakefileGenerator::OutputMakeFlags(std::ostream& fout)
|
||||||
{
|
{
|
||||||
// Output Include paths
|
// Output Include paths
|
||||||
fout << "INCLUDE_FLAGS = ";
|
fout << "INCLUDE_FLAGS = ";
|
||||||
std::vector<std::string>& includes = m_Makefile->GetIncludeDirectories();
|
std::set<std::string>& includes = m_Makefile->GetIncludeDirectories();
|
||||||
std::vector<std::string>::iterator i;
|
std::set<std::string>::iterator i;
|
||||||
fout << "-I" << m_Makefile->GetStartDirectory() << " ";
|
fout << "-I" << m_Makefile->GetStartDirectory() << " ";
|
||||||
for(i = includes.begin(); i != includes.end(); ++i)
|
for(i = includes.begin(); i != includes.end(); ++i)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue