BUG: Deal with case insensitivity on windows linker paths. Also fixed spelling typo.
This commit is contained in:
parent
3f978317b7
commit
e31f93ea3f
|
@ -212,7 +212,7 @@ void cmOrderLinkDirectories::OrderPaths(std::vector<cmStdString>&
|
||||||
= m_DirectoryToAfterList.begin();
|
= m_DirectoryToAfterList.begin();
|
||||||
i != m_DirectoryToAfterList.end(); ++i)
|
i != m_DirectoryToAfterList.end(); ++i)
|
||||||
{
|
{
|
||||||
m_ImposibleDirectories.insert(i->first);
|
m_ImpossibleDirectories.insert(i->first);
|
||||||
// still put it in the path list in the order we find them
|
// still put it in the path list in the order we find them
|
||||||
orderedPaths.push_back(i->first);
|
orderedPaths.push_back(i->first);
|
||||||
}
|
}
|
||||||
|
@ -297,6 +297,17 @@ bool cmOrderLinkDirectories::DetermineLibraryPathOrder()
|
||||||
{
|
{
|
||||||
cmSystemTools::SplitProgramPath(m_RawLinkItems[i].c_str(),
|
cmSystemTools::SplitProgramPath(m_RawLinkItems[i].c_str(),
|
||||||
dir, file);
|
dir, file);
|
||||||
|
#ifdef _WIN32
|
||||||
|
// Avoid case problems for windows paths.
|
||||||
|
if(dir.size() > 2 && dir[1] == ':')
|
||||||
|
{
|
||||||
|
if(dir[0] >= 'A' && dir[0] <= 'Z')
|
||||||
|
{
|
||||||
|
dir[0] += 'a' - 'A';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dir = cmSystemTools::GetActualCaseForPath(dir.c_str());
|
||||||
|
#endif
|
||||||
m_DirectoryToAfterList[dir] = empty;
|
m_DirectoryToAfterList[dir] = empty;
|
||||||
m_LinkPathSet.insert(dir);
|
m_LinkPathSet.insert(dir);
|
||||||
aLib.FullPath = m_RawLinkItems[i];
|
aLib.FullPath = m_RawLinkItems[i];
|
||||||
|
@ -336,7 +347,7 @@ bool cmOrderLinkDirectories::DetermineLibraryPathOrder()
|
||||||
// now turn libfoo.a into foo and foo.a into foo
|
// now turn libfoo.a into foo and foo.a into foo
|
||||||
// This will prepare the link items for -litem
|
// This will prepare the link items for -litem
|
||||||
this->PrepareLinkTargets();
|
this->PrepareLinkTargets();
|
||||||
if(m_ImposibleDirectories.size())
|
if(m_ImpossibleDirectories.size())
|
||||||
{
|
{
|
||||||
cmSystemTools::Message(this->GetWarnings().c_str());
|
cmSystemTools::Message(this->GetWarnings().c_str());
|
||||||
return false;
|
return false;
|
||||||
|
@ -347,8 +358,8 @@ bool cmOrderLinkDirectories::DetermineLibraryPathOrder()
|
||||||
std::string cmOrderLinkDirectories::GetWarnings()
|
std::string cmOrderLinkDirectories::GetWarnings()
|
||||||
{
|
{
|
||||||
std::string warning = "It is impossible to order the linker search path in such a way that libraries specified as full paths will be picked by the linker.\nDirectories and libraries involved are:\n";
|
std::string warning = "It is impossible to order the linker search path in such a way that libraries specified as full paths will be picked by the linker.\nDirectories and libraries involved are:\n";
|
||||||
for(std::set<cmStdString>::iterator i = m_ImposibleDirectories.begin();
|
for(std::set<cmStdString>::iterator i = m_ImpossibleDirectories.begin();
|
||||||
i != m_ImposibleDirectories.end(); ++i)
|
i != m_ImpossibleDirectories.end(); ++i)
|
||||||
{
|
{
|
||||||
warning += "Directory: ";
|
warning += "Directory: ";
|
||||||
warning += *i;
|
warning += *i;
|
||||||
|
|
|
@ -137,7 +137,7 @@ private:
|
||||||
// the names of link prefixes
|
// the names of link prefixes
|
||||||
cmStdString m_LinkPrefix;
|
cmStdString m_LinkPrefix;
|
||||||
// set of directories that can not be put in the correct order
|
// set of directories that can not be put in the correct order
|
||||||
std::set<cmStdString> m_ImposibleDirectories;
|
std::set<cmStdString> m_ImpossibleDirectories;
|
||||||
// Name of target
|
// Name of target
|
||||||
cmStdString m_TargetName;
|
cmStdString m_TargetName;
|
||||||
// library regular expressions
|
// library regular expressions
|
||||||
|
|
Loading…
Reference in New Issue