Merge topic 'shared-libs-with-number-suffix'

342fc04 Recognize shared library files with a numerical suffix
This commit is contained in:
Brad King 2013-05-21 15:13:10 -04:00 committed by CMake Topic Stage
commit 52f9b2e803
2 changed files with 12 additions and 5 deletions

View File

@ -882,7 +882,8 @@ void cmComputeLinkInformation::ComputeItemParserInfo()
} }
// Compute a regex to match link extensions. // Compute a regex to match link extensions.
std::string libext = this->CreateExtensionRegex(this->LinkExtensions); std::string libext = this->CreateExtensionRegex(this->LinkExtensions,
LinkUnknown);
// Create regex to remove any library extension. // Create regex to remove any library extension.
std::string reg("(.*)"); std::string reg("(.*)");
@ -916,7 +917,8 @@ void cmComputeLinkInformation::ComputeItemParserInfo()
if(!this->StaticLinkExtensions.empty()) if(!this->StaticLinkExtensions.empty())
{ {
std::string reg_static = reg; std::string reg_static = reg;
reg_static += this->CreateExtensionRegex(this->StaticLinkExtensions); reg_static += this->CreateExtensionRegex(this->StaticLinkExtensions,
LinkStatic);
#ifdef CM_COMPUTE_LINK_INFO_DEBUG #ifdef CM_COMPUTE_LINK_INFO_DEBUG
fprintf(stderr, "static regex [%s]\n", reg_static.c_str()); fprintf(stderr, "static regex [%s]\n", reg_static.c_str());
#endif #endif
@ -928,7 +930,7 @@ void cmComputeLinkInformation::ComputeItemParserInfo()
{ {
std::string reg_shared = reg; std::string reg_shared = reg;
this->SharedRegexString = this->SharedRegexString =
this->CreateExtensionRegex(this->SharedLinkExtensions); this->CreateExtensionRegex(this->SharedLinkExtensions, LinkShared);
reg_shared += this->SharedRegexString; reg_shared += this->SharedRegexString;
#ifdef CM_COMPUTE_LINK_INFO_DEBUG #ifdef CM_COMPUTE_LINK_INFO_DEBUG
fprintf(stderr, "shared regex [%s]\n", reg_shared.c_str()); fprintf(stderr, "shared regex [%s]\n", reg_shared.c_str());
@ -966,7 +968,7 @@ void cmComputeLinkInformation::AddLinkExtension(const char* e, LinkType type)
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
std::string std::string
cmComputeLinkInformation cmComputeLinkInformation
::CreateExtensionRegex(std::vector<std::string> const& exts) ::CreateExtensionRegex(std::vector<std::string> const& exts, LinkType type)
{ {
// Build a list of extension choices. // Build a list of extension choices.
std::string libext = "("; std::string libext = "(";
@ -995,6 +997,10 @@ cmComputeLinkInformation
{ {
libext += "(\\.[0-9]+\\.[0-9]+)?"; libext += "(\\.[0-9]+\\.[0-9]+)?";
} }
else if(type == LinkShared)
{
libext += "(\\.[0-9]+)?";
}
libext += "$"; libext += "$";
return libext; return libext;

View File

@ -134,7 +134,8 @@ private:
bool OpenBSD; bool OpenBSD;
void AddLinkPrefix(const char* p); void AddLinkPrefix(const char* p);
void AddLinkExtension(const char* e, LinkType type); void AddLinkExtension(const char* e, LinkType type);
std::string CreateExtensionRegex(std::vector<std::string> const& exts); std::string CreateExtensionRegex(std::vector<std::string> const& exts,
LinkType type);
std::string NoCaseExpression(const char* str); std::string NoCaseExpression(const char* str);
// Handling of link items. // Handling of link items.