summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad King <brad.king@kitware.com>2009-06-03 19:08:30 (GMT)
committerBrad King <brad.king@kitware.com>2009-06-03 19:08:30 (GMT)
commitd2b108150f5549e7012609bc4a48f34a1b963654 (patch)
tree53918a1bf02a8951bf20a5d830965883785e1a84
parent1d3320f1268bc147d32368489c9ee5cc22047dec (diff)
downloadCMake-d2b108150f5549e7012609bc4a48f34a1b963654.zip
CMake-d2b108150f5549e7012609bc4a48f34a1b963654.tar.gz
CMake-d2b108150f5549e7012609bc4a48f34a1b963654.tar.bz2
BUG: Recognize .so shared libraries on HP-UX
HP-UX uses both .sl and .so as extensions for shared libraries. This teaches CMake to recognize .so shared libraries so they are treated properly during link dependency analysis.
-rw-r--r--Modules/Platform/HP-UX.cmake1
-rw-r--r--Source/cmComputeLinkInformation.cxx11
-rw-r--r--Source/cmDocumentVariables.cxx9
3 files changed, 21 insertions, 0 deletions
diff --git a/Modules/Platform/HP-UX.cmake b/Modules/Platform/HP-UX.cmake
index 381ef39..9191cef 100644
--- a/Modules/Platform/HP-UX.cmake
+++ b/Modules/Platform/HP-UX.cmake
@@ -1,6 +1,7 @@
SET(CMAKE_SHARED_LIBRARY_SUFFIX ".sl") # .so
SET(CMAKE_DL_LIBS "dld")
SET(CMAKE_FIND_LIBRARY_SUFFIXES ".sl" ".so" ".a")
+SET(CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES ".so")
# The HP linker needs to find transitive shared library dependencies
# in the -L path. Therefore the runtime path must be added to the
diff --git a/Source/cmComputeLinkInformation.cxx b/Source/cmComputeLinkInformation.cxx
index 331e3fd..058a0d4 100644
--- a/Source/cmComputeLinkInformation.cxx
+++ b/Source/cmComputeLinkInformation.cxx
@@ -814,6 +814,17 @@ void cmComputeLinkInformation::ComputeItemParserInfo()
this->AddLinkExtension(i->c_str(), LinkUnknown);
}
}
+ if(const char* sharedSuffixes =
+ mf->GetDefinition("CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES"))
+ {
+ std::vector<std::string> sharedSuffixVec;
+ cmSystemTools::ExpandListArgument(sharedSuffixes, sharedSuffixVec);
+ for(std::vector<std::string>::iterator i = sharedSuffixVec.begin();
+ i != sharedSuffixVec.end(); ++i)
+ {
+ this->AddLinkExtension(i->c_str(), LinkShared);
+ }
+ }
// Compute a regex to match link extensions.
std::string libext = this->CreateExtensionRegex(this->LinkExtensions);
diff --git a/Source/cmDocumentVariables.cxx b/Source/cmDocumentVariables.cxx
index cf5337b..32c8d69 100644
--- a/Source/cmDocumentVariables.cxx
+++ b/Source/cmDocumentVariables.cxx
@@ -377,6 +377,15 @@ void cmDocumentVariables::DefineVariables(cmake* cm)
"The suffix to use for the end of a static library, .lib on Windows.",
false,
"Variables that Provide Information");
+ cm->DefineProperty
+ ("CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES", cmProperty::VARIABLE,
+ "Additional suffixes for shared libraries.",
+ "Extensions for shared libraries other than that specified by "
+ "CMAKE_SHARED_LIBRARY_SUFFIX, if any. "
+ "CMake uses this to recognize external shared library files during "
+ "analysis of libraries linked by a target.",
+ false,
+ "Variables that Provide Information");
// Variables defined by cmake, that change the behavior