ENH: fix bug 2087 lib prefix stripped off on windows
This commit is contained in:
parent
b058a5e1aa
commit
e59e9d0e59
|
@ -1352,6 +1352,12 @@ void cmGlobalXCodeGenerator::AddDependAndLinkInformation(cmXCodeObject* target)
|
||||||
{
|
{
|
||||||
orderLibs.AddLinkExtension(ext.c_str());
|
orderLibs.AddLinkExtension(ext.c_str());
|
||||||
}
|
}
|
||||||
|
ext =
|
||||||
|
m_CurrentMakefile->GetSafeDefinition("CMAKE_STATIC_LIBRARY_PREFIX");
|
||||||
|
if(ext.size())
|
||||||
|
{
|
||||||
|
orderLibs.SetLinkPrefix(ext.c_str());
|
||||||
|
}
|
||||||
ext =
|
ext =
|
||||||
m_CurrentMakefile->GetSafeDefinition("CMAKE_SHARED_LIBRARY_SUFFIX");
|
m_CurrentMakefile->GetSafeDefinition("CMAKE_SHARED_LIBRARY_SUFFIX");
|
||||||
if(ext.size())
|
if(ext.size())
|
||||||
|
|
|
@ -1285,6 +1285,12 @@ void cmLocalGenerator::OutputLinkLibraries(std::ostream& fout,
|
||||||
{
|
{
|
||||||
orderLibs.AddLinkExtension(ext.c_str());
|
orderLibs.AddLinkExtension(ext.c_str());
|
||||||
}
|
}
|
||||||
|
ext =
|
||||||
|
m_Makefile->GetSafeDefinition("CMAKE_STATIC_LIBRARY_PREFIX");
|
||||||
|
if(ext.size())
|
||||||
|
{
|
||||||
|
orderLibs.SetLinkPrefix(ext.c_str());
|
||||||
|
}
|
||||||
ext =
|
ext =
|
||||||
m_Makefile->GetSafeDefinition("CMAKE_SHARED_LIBRARY_SUFFIX");
|
m_Makefile->GetSafeDefinition("CMAKE_SHARED_LIBRARY_SUFFIX");
|
||||||
if(ext.size())
|
if(ext.size())
|
||||||
|
|
|
@ -115,17 +115,23 @@ void cmOrderLinkDirectories::CreateRegularExpressions()
|
||||||
}
|
}
|
||||||
first = false;
|
first = false;
|
||||||
libext += "\\";
|
libext += "\\";
|
||||||
#ifndef _WIN32
|
#if defined(_WIN32) && !defined(__CYGWIN__)
|
||||||
libext += *i;
|
|
||||||
#else
|
|
||||||
libext += this->NoCaseExpression(i->c_str());
|
libext += this->NoCaseExpression(i->c_str());
|
||||||
|
#else
|
||||||
|
libext += *i;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
libext += ").*";
|
libext += ").*";
|
||||||
cmStdString reg("(.*)");
|
cmStdString reg("(.*)");
|
||||||
reg += libext;
|
reg += libext;
|
||||||
m_RemoveLibraryExtension.compile(reg.c_str());
|
m_RemoveLibraryExtension.compile(reg.c_str());
|
||||||
reg = "^lib([^/]*)";
|
reg = "";
|
||||||
|
if(m_LinkPrefix.size())
|
||||||
|
{
|
||||||
|
reg = "^";
|
||||||
|
reg += m_LinkPrefix;
|
||||||
|
}
|
||||||
|
reg += "([^/]*)";
|
||||||
reg += libext;
|
reg += libext;
|
||||||
m_ExtractBaseLibraryName.compile(reg.c_str());
|
m_ExtractBaseLibraryName.compile(reg.c_str());
|
||||||
reg = "([^/]*)";
|
reg = "([^/]*)";
|
||||||
|
|
|
@ -67,6 +67,11 @@ public:
|
||||||
{
|
{
|
||||||
m_LinkExtensions.push_back(e);
|
m_LinkExtensions.push_back(e);
|
||||||
}
|
}
|
||||||
|
// should be set from CMAKE_STATIC_LIBRARY_PREFIX
|
||||||
|
void SetLinkPrefix(const char* s)
|
||||||
|
{
|
||||||
|
m_LinkPrefix = s;
|
||||||
|
}
|
||||||
// Return any warnings if the exist
|
// Return any warnings if the exist
|
||||||
std::string GetWarnings();
|
std::string GetWarnings();
|
||||||
// return a list of all full path libraries
|
// return a list of all full path libraries
|
||||||
|
@ -120,6 +125,8 @@ private:
|
||||||
std::set<cmStdString> m_LinkPathSet;
|
std::set<cmStdString> m_LinkPathSet;
|
||||||
// the names of link extensions
|
// the names of link extensions
|
||||||
std::vector<cmStdString> m_LinkExtensions;
|
std::vector<cmStdString> m_LinkExtensions;
|
||||||
|
// the names of link prefixes
|
||||||
|
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_ImposibleDirectories;
|
||||||
// library regular expressions
|
// library regular expressions
|
||||||
|
|
|
@ -56,6 +56,7 @@ bool TestLibraryOrder(bool shouldFail)
|
||||||
orderLibs.DebugOn();
|
orderLibs.DebugOn();
|
||||||
orderLibs.AddLinkExtension(".so");
|
orderLibs.AddLinkExtension(".so");
|
||||||
orderLibs.AddLinkExtension(".a");
|
orderLibs.AddLinkExtension(".a");
|
||||||
|
orderLibs.SetLinkPrefix("lib");
|
||||||
orderLibs.SetLinkInformation(target, cmTarget::GENERAL, "A");
|
orderLibs.SetLinkInformation(target, cmTarget::GENERAL, "A");
|
||||||
bool ret = orderLibs.DetermineLibraryPathOrder();
|
bool ret = orderLibs.DetermineLibraryPathOrder();
|
||||||
orderLibs.GetLinkerInformation(sortedpaths, linkItems);
|
orderLibs.GetLinkerInformation(sortedpaths, linkItems);
|
||||||
|
|
|
@ -56,6 +56,7 @@ bool TestLibraryOrder(bool shouldFail)
|
||||||
orderLibs.DebugOn();
|
orderLibs.DebugOn();
|
||||||
orderLibs.AddLinkExtension(".so");
|
orderLibs.AddLinkExtension(".so");
|
||||||
orderLibs.AddLinkExtension(".a");
|
orderLibs.AddLinkExtension(".a");
|
||||||
|
orderLibs.SetLinkPrefix("lib");
|
||||||
orderLibs.SetLinkInformation(target, cmTarget::GENERAL, "A");
|
orderLibs.SetLinkInformation(target, cmTarget::GENERAL, "A");
|
||||||
bool ret = orderLibs.DetermineLibraryPathOrder();
|
bool ret = orderLibs.DetermineLibraryPathOrder();
|
||||||
orderLibs.GetLinkerInformation(sortedpaths, linkItems);
|
orderLibs.GetLinkerInformation(sortedpaths, linkItems);
|
||||||
|
|
|
@ -56,6 +56,7 @@ bool TestLibraryOrder(bool shouldFail)
|
||||||
orderLibs.DebugOn();
|
orderLibs.DebugOn();
|
||||||
orderLibs.AddLinkExtension(".so");
|
orderLibs.AddLinkExtension(".so");
|
||||||
orderLibs.AddLinkExtension(".a");
|
orderLibs.AddLinkExtension(".a");
|
||||||
|
orderLibs.SetLinkPrefix("lib");
|
||||||
orderLibs.SetLinkInformation(target, cmTarget::GENERAL, "A");
|
orderLibs.SetLinkInformation(target, cmTarget::GENERAL, "A");
|
||||||
bool ret = orderLibs.DetermineLibraryPathOrder();
|
bool ret = orderLibs.DetermineLibraryPathOrder();
|
||||||
orderLibs.GetLinkerInformation(sortedpaths, linkItems);
|
orderLibs.GetLinkerInformation(sortedpaths, linkItems);
|
||||||
|
|
Loading…
Reference in New Issue