diff options
| author | Andrew Stitcher <astitcher@apache.org> | 2013-10-28 12:39:56 +0000 |
|---|---|---|
| committer | Andrew Stitcher <astitcher@apache.org> | 2013-10-28 12:39:56 +0000 |
| commit | 265821ba0b9ea2eb77ceb9158ceb83fffe12bc8f (patch) | |
| tree | 24657249764e27d73ab4cad068dc7daee8820bfe /qpid/cpp/bindings | |
| parent | 45a6f4f415108dd26e00f8902db3f4d5d787b835 (diff) | |
| download | qpid-python-265821ba0b9ea2eb77ceb9158ceb83fffe12bc8f.tar.gz | |
QPID-5260: Significant tidy up of cmake build
* Move to cmake 2.6 as minimum required version
(2.4 is extremely long in the tooth now)
* Add control over building individual language bindings
* Make settings you don't usually want to change advanced
so they are hidden by default
* Changed to a uniform naming scheme for options:
** Options controlling what to build are all BUILD_
** Options controlling features of he build are ENABLE_
** Options controlling internal aspects of the qpid runtime are QPID_
* Respect the BUILD_TESTING option so that we won't build the
tests unless it is set (it is by default)
* If we don't find the boost_unit_test_framework then don't fail,
just don't build the unit tests (this is motivated by one of the
Apache Jenkins ubuntu builders which has this set up)
* Tidied up some of the detection of external dependencies to make it
more idiomatic cmake (but there is more to do here)
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1536329 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/bindings')
| -rw-r--r-- | qpid/cpp/bindings/CMakeLists.txt | 123 |
1 files changed, 69 insertions, 54 deletions
diff --git a/qpid/cpp/bindings/CMakeLists.txt b/qpid/cpp/bindings/CMakeLists.txt index 883eef286f..6707d489b7 100644 --- a/qpid/cpp/bindings/CMakeLists.txt +++ b/qpid/cpp/bindings/CMakeLists.txt @@ -18,61 +18,76 @@ # -include(FindSWIG) -include(UseSWIG) -include(FindRuby) -include(FindPythonLibs) -include(FindPerlLibs) - -if ((${CMAKE_MAJOR_VERSION} EQUAL 2) AND (${CMAKE_MINOR_VERSION} LESS 8)) - if (RUBY_INCLUDE_PATH) - set(RUBY_FOUND "TRUE") - else() - set(RUBY_FOUND "FALSE") - endif (RUBY_INCLUDE_PATH) +find_package(SWIG) - if (PERL_FOUND) - # taken from Cmake 2.8 FindPerlLibs.cmake - execute_process( - COMMAND - ${PERL_EXECUTABLE} -V:installarchlib - OUTPUT_VARIABLE PERL_ARCHLIB_OUTPUT_VARIABLE - RESULT_VARIABLE PERL_ARCHLIB_RESULT_VARIABLE - ) - if (NOT PERL_ARCHLIB_RESULT_VARIABLE) - string(REGEX REPLACE "install[a-z]+='([^']+)'.*" "\\1" PERL_ARCHLIB ${PERL_ARCHLIB_OUTPUT_VARIABLE}) - file(TO_CMAKE_PATH "${PERL_ARCHLIB}" PERL_ARCHLIB) - endif () - - IF ( PERL_INCLUDE_PATH MATCHES .*-NOTFOUND ) - EXECUTE_PROCESS ( COMMAND ${PERL_EXECUTABLE} - -MConfig -e "print \$Config{archlibexp}" - OUTPUT_VARIABLE PERL_OUTPUT - RESULT_VARIABLE PERL_RETURN_VALUE ) - IF ( NOT PERL_RETURN_VALUE ) - FIND_PATH ( PERL_INCLUDE_PATH perl.h ${PERL_OUTPUT}/CORE ) - ENDIF ( NOT PERL_RETURN_VALUE ) - ENDIF ( PERL_INCLUDE_PATH MATCHES .*-NOTFOUND ) - - ## Try to fix failure in PERL_LIBRARY - IF ( PERL_LIBRARY MATCHES .*-NOTFOUND ) - EXECUTE_PROCESS ( COMMAND ${PERL_EXECUTABLE} - -MConfig -e "print \$Config{libperl}" - OUTPUT_VARIABLE PERL_OUTPUT - RESULT_VARIABLE PERL_RETURN_VALUE ) - IF ( NOT PERL_RETURN_VALUE ) - FIND_LIBRARY ( PERL_LIBRARY NAMES ${PERL_OUTPUT} - PATHS ${PERL_INCLUDE_PATH} ) - ENDIF ( NOT PERL_RETURN_VALUE ) - ENDIF ( PERL_LIBRARY MATCHES .*-NOTFOUND ) +if (SWIG_FOUND) - endif (PERL_FOUND) -endif ((${CMAKE_MAJOR_VERSION} EQUAL 2) AND (${CMAKE_MINOR_VERSION} LESS 8)) + include(UseSWIG) + find_package(Ruby) + find_package(PythonLibs) + find_package(PerlLibs) + + if ((${CMAKE_MAJOR_VERSION} EQUAL 2) AND (${CMAKE_MINOR_VERSION} LESS 8)) + + if (RUBY_INCLUDE_PATH) + set(RUBY_FOUND "TRUE") + else() + set(RUBY_FOUND "FALSE") + endif (RUBY_INCLUDE_PATH) + + if (PERL_FOUND) + # taken from Cmake 2.8 FindPerlLibs.cmake + execute_process( + COMMAND + ${PERL_EXECUTABLE} -V:installarchlib + OUTPUT_VARIABLE PERL_ARCHLIB_OUTPUT_VARIABLE + RESULT_VARIABLE PERL_ARCHLIB_RESULT_VARIABLE + ) + if (NOT PERL_ARCHLIB_RESULT_VARIABLE) + string(REGEX REPLACE "install[a-z]+='([^']+)'.*" "\\1" PERL_ARCHLIB ${PERL_ARCHLIB_OUTPUT_VARIABLE}) + file(TO_CMAKE_PATH "${PERL_ARCHLIB}" PERL_ARCHLIB) + endif () + + IF ( PERL_INCLUDE_PATH MATCHES .*-NOTFOUND ) + EXECUTE_PROCESS ( COMMAND ${PERL_EXECUTABLE} + -MConfig -e "print \$Config{archlibexp}" + OUTPUT_VARIABLE PERL_OUTPUT + RESULT_VARIABLE PERL_RETURN_VALUE ) + IF ( NOT PERL_RETURN_VALUE ) + FIND_PATH ( PERL_INCLUDE_PATH perl.h ${PERL_OUTPUT}/CORE ) + ENDIF ( NOT PERL_RETURN_VALUE ) + ENDIF ( PERL_INCLUDE_PATH MATCHES .*-NOTFOUND ) + + ## Try to fix failure in PERL_LIBRARY + IF ( PERL_LIBRARY MATCHES .*-NOTFOUND ) + EXECUTE_PROCESS ( COMMAND ${PERL_EXECUTABLE} + -MConfig -e "print \$Config{libperl}" + OUTPUT_VARIABLE PERL_OUTPUT + RESULT_VARIABLE PERL_RETURN_VALUE ) + IF ( NOT PERL_RETURN_VALUE ) + FIND_LIBRARY ( PERL_LIBRARY NAMES ${PERL_OUTPUT} + PATHS ${PERL_INCLUDE_PATH} ) + ENDIF ( NOT PERL_RETURN_VALUE ) + ENDIF ( PERL_LIBRARY MATCHES .*-NOTFOUND ) + + endif (PERL_FOUND) + endif ((${CMAKE_MAJOR_VERSION} EQUAL 2) AND (${CMAKE_MINOR_VERSION} LESS 8)) -if (SWIG_FOUND) set(CMAKE_SWIG_FLAGS "-w361,362,401,467,503") if (PYTHONLIBS_FOUND) + option(BUILD_BINDING_PYTHON "Build Python bindings" ON) + endif (PYTHONLIBS_FOUND) + + if (RUBY_FOUND) + option(BUILD_BINDING_RUBY "Build Ruby bindings" ON) + endif (RUBY_FOUND) + + if (PERL_FOUND) + option(BUILD_BINDING_PERL "Build Perl bindings" ON) + endif (PERL_FOUND) + + if (BUILD_BINDING_PYTHON) message(STATUS "Building Python bindings") execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(True, prefix='${CMAKE_INSTALL_PREFIX}')" @@ -81,9 +96,9 @@ if (SWIG_FOUND) add_subdirectory(qpid/python) add_subdirectory(qmf2/python) - endif (PYTHONLIBS_FOUND) + endif (BUILD_BINDING_PYTHON) - if (RUBY_FOUND) + if (BUILD_BINDING_RUBY) message(STATUS "Building Ruby bindings") execute_process(COMMAND ${RUBY_EXECUTABLE} -r rbconfig -e "puts RbConfig::CONFIG['prefix']" OUTPUT_VARIABLE RUBY_PREFIX @@ -92,9 +107,9 @@ if (SWIG_FOUND) # string(REPLACE ${RUBY_PREFIX} ${CMAKE_INSTALL_PREFIX} RUBY_PFX_ARCH_DIR ${RUBY_ARCH_DIR}) add_subdirectory(qpid/ruby) add_subdirectory(qmf2/ruby) - endif (RUBY_FOUND) + endif (BUILD_BINDING_RUBY) - if (PERLLIBS_FOUND) + if (BUILD_BINDING_PERL) message(STATUS "Building Perl bindings") execute_process(COMMAND ${PERL_EXECUTABLE} "-V::prefix:" OUTPUT_VARIABLE QPERL_PREFIX @@ -103,7 +118,7 @@ if (SWIG_FOUND) string(REPLACE ${PERL_PREFIX} ${CMAKE_INSTALL_PREFIX} PERL_PFX_ARCHLIB ${PERL_ARCHLIB}) add_subdirectory(qpid/perl) - endif (PERLLIBS_FOUND) + endif (BUILD_BINDING_PERL) endif (SWIG_FOUND) add_subdirectory(qmf2/examples/cpp) |
