diff options
| author | Alan Conway <aconway@apache.org> | 2014-08-25 20:10:52 +0000 |
|---|---|---|
| committer | Alan Conway <aconway@apache.org> | 2014-08-25 20:10:52 +0000 |
| commit | f0250a03661d18bc130cc00286d5396306a62f53 (patch) | |
| tree | b9424dab718198c184cc2c724f8c6630920d4828 /qpid/cpp/bindings | |
| parent | 5606630b4fff2b8a82b180b7d86c291fb6f24c05 (diff) | |
| download | qpid-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.txt | 22 |
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)) |
