summaryrefslogtreecommitdiff
path: root/qpid/cpp/bindings
diff options
context:
space:
mode:
authorAlan Conway <aconway@apache.org>2014-08-25 20:10:52 +0000
committerAlan Conway <aconway@apache.org>2014-08-25 20:10:52 +0000
commitf0250a03661d18bc130cc00286d5396306a62f53 (patch)
treeb9424dab718198c184cc2c724f8c6630920d4828 /qpid/cpp/bindings
parent5606630b4fff2b8a82b180b7d86c291fb6f24c05 (diff)
downloadqpid-python-f0250a03661d18bc130cc00286d5396306a62f53.tar.gz
NO-JIRA: Work-around bug in older cmake, finds static python library instead of shared.
FindPythonLibs on older versions of cmake (observed on cmake-2.6.4-5.el5.4) sometimes finds the static archive library (.a) before the shared object library (.so) This is almost never what you want. Newer versions (e.g. cmake-2.8.12.2-2.fc20.x86_64) explicitly look for the .so first and look for the .a library second. This workaround fixes the problem as follows: - It is a no-op except on Unix platforms that use the .so prefix. - On those platforms it does a search for .so only first. - Finally we do a default search for other platforms (or if .so was not found) git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1620424 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/bindings')
-rw-r--r--qpid/cpp/bindings/CMakeLists.txt22
1 files changed, 20 insertions, 2 deletions
diff --git a/qpid/cpp/bindings/CMakeLists.txt b/qpid/cpp/bindings/CMakeLists.txt
index d64d59b9d6..f5d0023a28 100644
--- a/qpid/cpp/bindings/CMakeLists.txt
+++ b/qpid/cpp/bindings/CMakeLists.txt
@@ -17,14 +17,32 @@
# under the License.
#
+# Work-around for bug in older versions of cmake where find_package(PythonLib)
+# finds the static .a library before the the dynamic .so one on Unix.
+# Force search for .so first (this is exactly what newer versions of cmake do.)
+#
+function(find_python_libs)
+ # Only do this on unix-like systems that use the .so library suffix.
+ if(UNIX AND CMAKE_FIND_LIBRARY_SUFFIXES MATCHES "\\.so")
+ set(SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES}) # Save the suffixes.
+ # Look just for shared libraries.
+ set(CMAKE_FIND_LIBRARY_SUFFIXES ".so")
+ find_package(PythonLibs)
+ # Restore the suffixes
+ set(CMAKE_FIND_LIBRARY_SUFFIXES ${SUFFIXES})
+ endif()
+ # Run a regular search in case we're not on unix or the .so search didn't find
+ # anything. This will be a no-op if we did already find the library.
+ find_package(PythonLibs)
+endfunction(find_python_libs)
-find_package(SWIG)
+find_package(SWIG)
if (SWIG_FOUND)
include(UseSWIG)
find_package(Ruby)
- find_package(PythonLibs)
+ find_python_libs()
find_package(PerlLibs)
if ((${CMAKE_MAJOR_VERSION} EQUAL 2) AND (${CMAKE_MINOR_VERSION} LESS 8))