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 | |
| 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
| -rw-r--r-- | qpid/cpp/BuildInstallSettings.cmake | 9 | ||||
| -rw-r--r-- | qpid/cpp/CMakeLists.txt | 4 | ||||
| -rw-r--r-- | qpid/cpp/bindings/CMakeLists.txt | 123 | ||||
| -rw-r--r-- | qpid/cpp/docs/api/CMakeLists.txt | 4 | ||||
| -rw-r--r-- | qpid/cpp/docs/man/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | qpid/cpp/etc/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | qpid/cpp/src/CMakeLists.txt | 121 | ||||
| -rw-r--r-- | qpid/cpp/src/config.h.cmake | 2 | ||||
| -rw-r--r-- | qpid/cpp/src/tests/CMakeLists.txt | 29 | ||||
| -rw-r--r-- | qpid/cpp/src/tests/legacystore/CMakeLists.txt | 47 | ||||
| -rwxr-xr-x | qpid/cpp/src/tests/sasl_test_setup.sh | 2 | ||||
| -rw-r--r-- | qpid/cpp/src/tests/test_env.sh.in | 1 |
12 files changed, 177 insertions, 169 deletions
diff --git a/qpid/cpp/BuildInstallSettings.cmake b/qpid/cpp/BuildInstallSettings.cmake index 6bda220d2b..a8bf3a03c9 100644 --- a/qpid/cpp/BuildInstallSettings.cmake +++ b/qpid/cpp/BuildInstallSettings.cmake @@ -101,6 +101,8 @@ if (WIN32) "Directory to install programming header files") set (QPID_INSTALL_LIBDIR bin CACHE STRING "Directory to install library files") + set (QPID_INSTALL_MANDIR docs CACHE STRING + "Directory to install manual files") set (QPID_INSTALL_SBINDIR bin CACHE STRING "Directory to install system admin executables") set (QPID_INSTALL_TESTDIR bin CACHE STRING @@ -116,9 +118,6 @@ if (WIN32) function(set_absolute_install_path var input) set (${var} ${input} PARENT_SCOPE) endfunction(set_absolute_install_path) - - set (INCLUDE_INSTALL_DIR ${QPID_INSTALL_INCLUDEDIR}) - set (LIB_INSTALL_DIR ${QPID_INSTALL_INCLUDEDIR}) endif (WIN32) if (UNIX) @@ -155,6 +154,7 @@ if (UNIX) set (SYSCONF_INSTALL_DIR etc CACHE PATH "System read only configuration directory") set (SHARE_INSTALL_DIR share CACHE PATH "Shared read only data directory") set (DOC_INSTALL_DIR ${SHARE_INSTALL_DIR}/doc/${CMAKE_PROJECT_NAME}-${QPID_VERSION_FULL} CACHE PATH "Shared read only data directory") + mark_as_advanced(INCLUDE_INSTALL_DIR LIB_INSTALL_DIR SYSCONF_INSTALL_DIR SHARE_INSTALL_DIR DOC_INSTALL_DIR) set (QPID_COMPONENT_BROKER runtime) set (QPID_COMPONENT_CLIENT runtime) @@ -179,8 +179,7 @@ if (UNIX) set (QPID_INSTALL_DOCDIR ${DOC_INSTALL_DIR}) # Directory to install documentation set (QPID_INSTALL_INCLUDEDIR ${INCLUDE_INSTALL_DIR}) set (QPID_INSTALL_LIBDIR ${LIB_INSTALL_DIR}) - set (QPID_LOCALSTATE_DIR var) # Directory to store local state data - set (QPID_MAN_DIR share/man) # Directory to install manual files + set (QPID_INSTALL_MANDIR share/man) # Directory to install manual files set_absolute_install_path (QPIDC_MODULE_DIR ${QPID_INSTALL_LIBDIR}/qpid/client) # Directory to load client plug-in modules from set_absolute_install_path (QPIDD_MODULE_DIR ${QPID_INSTALL_LIBDIR}/qpid/daemon) # Directory to load broker plug-in modules from diff --git a/qpid/cpp/CMakeLists.txt b/qpid/cpp/CMakeLists.txt index ac92e4916e..2dfc3c9b14 100644 --- a/qpid/cpp/CMakeLists.txt +++ b/qpid/cpp/CMakeLists.txt @@ -18,9 +18,9 @@ # project(qpid-cpp) -cmake_minimum_required(VERSION 2.4.0 FATAL_ERROR) +cmake_minimum_required(VERSION 2.6 FATAL_ERROR) if(COMMAND cmake_policy) - cmake_policy(SET CMP0003 NEW) + cmake_policy(VERSION 2.6) endif(COMMAND cmake_policy) include(BuildInstallSettings.cmake) 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) diff --git a/qpid/cpp/docs/api/CMakeLists.txt b/qpid/cpp/docs/api/CMakeLists.txt index 828d706b91..79e0d58db5 100644 --- a/qpid/cpp/docs/api/CMakeLists.txt +++ b/qpid/cpp/docs/api/CMakeLists.txt @@ -17,7 +17,7 @@ # under the License. # -if (GEN_DOXYGEN) +if (BUILD_DOCS) # The user.doxygen.in file was originally written for a # configure-generated situation so makes use of configure names that # need to be set from the CMake equivalents. @@ -42,4 +42,4 @@ if (GEN_DOXYGEN) "${QPID_INSTALL_HTMLDIR}/index.html" "Qpid C++ API Documentation" "https://issues.apache.org/jira/browse/QPID" "Report Qpid Problem") endif (CPACK_GENERATOR STREQUAL "NSIS") -endif (GEN_DOXYGEN) +endif (BUILD_DOCS) diff --git a/qpid/cpp/docs/man/CMakeLists.txt b/qpid/cpp/docs/man/CMakeLists.txt index 3c006900c9..fe94dc25f2 100644 --- a/qpid/cpp/docs/man/CMakeLists.txt +++ b/qpid/cpp/docs/man/CMakeLists.txt @@ -18,5 +18,5 @@ # INSTALL (FILES qpidd.1 - DESTINATION ${QPID_MAN_DIR}/man1) + DESTINATION ${QPID_INSTALL_MANDIR}/man1) diff --git a/qpid/cpp/etc/CMakeLists.txt b/qpid/cpp/etc/CMakeLists.txt index df427347b3..6158b9e27b 100644 --- a/qpid/cpp/etc/CMakeLists.txt +++ b/qpid/cpp/etc/CMakeLists.txt @@ -51,6 +51,6 @@ if (BUILD_SASL) install(FILES sasl2/qpidd.conf DESTINATION ${QPID_INSTALL_SASLDIR} COMPONENT ${QPID_COMPONENT_BROKER} - RENAME ${BROKER_SASL_NAME}.conf) + RENAME ${QPID_BROKER_SASL_NAME}.conf) endif (BUILD_SASL) diff --git a/qpid/cpp/src/CMakeLists.txt b/qpid/cpp/src/CMakeLists.txt index 6d05fe8165..6daac70273 100644 --- a/qpid/cpp/src/CMakeLists.txt +++ b/qpid/cpp/src/CMakeLists.txt @@ -42,16 +42,25 @@ include(CheckIncludeFiles) include(CheckIncludeFileCXX) include(CheckLibraryExists) include(CheckSymbolExists) -include(FindBoost) -include(FindDoxygen) -include(FindRuby) -include(FindPkgConfig) -include(FindPythonInterp) + +find_package(PkgConfig) +find_package(Ruby) +find_package(PythonInterp REQUIRED) + +find_package(Doxygen) find_program(VALGRIND_EXECUTABLE valgrind DOC "Location of the valgrind program") mark_as_advanced(VALGRIND_EXECUTABLE) find_package_handle_standard_args(VALGRIND DEFAULT_MSG VALGRIND_EXECUTABLE) +find_program(SASLPASSWD2_EXECUTABLE saslpasswd2 DOC "Location of the saslpasswd2 program") +mark_as_advanced(SASLPASSWD2_EXECUTABLE) + +# See if Cyrus SASL is desired and available +CHECK_LIBRARY_EXISTS (sasl2 sasl_checkpass "" FOUND_SASL_LIB) +CHECK_INCLUDE_FILES (sasl/sasl.h FOUND_SASL_H) +find_package_handle_standard_args(SASL DEFAULT_MSG FOUND_SASL_LIB FOUND_SASL_H) + #set (CMAKE_VERBOSE_MAKEFILE ON) # for debugging # @@ -261,11 +270,11 @@ else (EXISTS ${AMQP_SPEC}) endif (EXISTS ${AMQP_SPEC}) # FindDoxygen module tries to locate doxygen and Graphviz dot -if (DOXYGEN_EXECUTABLE) - option(GEN_DOXYGEN "Use doxygen to generate user documentation" ON) -else (DOXYGEN_EXECUTABLE) +if (DOXYGEN_FOUND) + option(BUILD_DOCS "Build user documentation" ON) +else (DOXYGEN_FOUND) message(STATUS "Can't locate the doxygen command; user documentation cannot be generated") -endif (DOXYGEN_EXECUTABLE) +endif (DOXYGEN_FOUND) if (VALGRIND_FOUND) option(ENABLE_VALGRIND "Use valgrind to detect run-time problems" ON) @@ -363,9 +372,9 @@ set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMPILER_FLAGS} ${WARNING_FLAGS}") # Expand a bit from the basic Find_Boost; be specific about what's needed. # Boost.system is sometimes needed; it's handled separately, below. if (CMAKE_SYSTEM_NAME STREQUAL Windows) - set (Boost_components program_options date_time thread unit_test_framework regex) + set (Boost_components program_options date_time thread chrono) else (CMAKE_SYSTEM_NAME STREQUAL Windows) - set (Boost_components program_options unit_test_framework) + set (Boost_components program_options) endif (CMAKE_SYSTEM_NAME STREQUAL Windows) # Visual Studio 2010 requires boost 1.45 or better. @@ -379,35 +388,28 @@ if (NOT DEFINED Boost_ADDITIONAL_VERSIONS) "1.51" "1.51.0" "1.52" "1.52.0" "1.53" "1.53.0") endif (NOT DEFINED Boost_ADDITIONAL_VERSIONS) -find_package(Boost 1.33 REQUIRED COMPONENTS ${Boost_components}) -if(NOT Boost_FOUND) - message(FATAL_ERROR "Boost C++ libraries not found. Please install or try setting BOOST_ROOT") -endif(NOT Boost_FOUND) +# Discover Boost version +find_package(Boost 1.33 QUIET REQUIRED) # Boost.system was introduced at Boost 1.35; it's needed secondarily by other # Boost libs Qpid needs, so be sure it's there. if (Boost_VERSION GREATER 103499) - find_package(Boost COMPONENTS system) - - # Allow for cmake pre 2.6 and boost post 1.35 - if (NOT Boost_SYSTEM_LIBRARY) - set(Boost_SYSTEM_LIBRARY boost_system) - endif (NOT Boost_SYSTEM_LIBRARY) + list(APPEND Boost_components system) endif (Boost_VERSION GREATER 103499) -# Versions of cmake pre 2.6 don't set the Boost_*_LIBRARY variables correctly -# these values are correct for Linux -if (NOT Boost_PROGRAM_OPTIONS_LIBRARY) - set(Boost_PROGRAM_OPTIONS_LIBRARY boost_program_options) -endif (NOT Boost_PROGRAM_OPTIONS_LIBRARY) - -if (NOT Boost_UNIT_TEST_FRAMEWORK_LIBRARY) - set(Boost_UNIT_TEST_FRAMEWORK_LIBRARY boost_unit_test_framework) -endif (NOT Boost_UNIT_TEST_FRAMEWORK_LIBRARY) +find_package(Boost 1.33 REQUIRED COMPONENTS ${Boost_components}) +if(NOT Boost_FOUND) + message(FATAL_ERROR "Required Boost C++ libraries not found. Please install or try setting BOOST_ROOT") +endif(NOT Boost_FOUND) -if (NOT Boost_REGEX_LIBRARY) - set(Boost_REGEX_LIBRARY boost_regex) -endif (NOT Boost_REGEX_LIBRARY) +if (BUILD_TESTING) + set (BUILD_TESTING_UNITTESTS ON) + find_package(Boost 1.33 QUIET COMPONENTS unit_test_framework) + if(NOT Boost_UNIT_TEST_FRAMEWORK_LIBRARY) + message(STATUS "Could not find unit testing library - will not build unit tests") + set (BUILD_TESTING_UNITTESTS OFF) + endif(NOT Boost_UNIT_TEST_FRAMEWORK_LIBRARY) +endif (BUILD_TESTING) # The Windows install also wants the Boost DLLs, libs and headers that the # release is built with. The DLLs enable everything to run, and the headers @@ -423,6 +425,8 @@ endif (NOT Boost_REGEX_LIBRARY) # Boost libs based on compile-time touching of the headers. Since we don't # really need to add them to the link lines, set the names to blanks. option(QPID_LINK_BOOST_DYNAMIC "Link with dynamic Boost libs (OFF to link static)" ON) +mark_as_advanced(QPID_LINK_BOOST_DYNAMIC) + if (MSVC) install (PROGRAMS ${Boost_DATE_TIME_LIBRARY_DEBUG} ${Boost_DATE_TIME_LIBRARY_RELEASE} @@ -572,39 +576,27 @@ if (NOT CMAKE_SYSTEM_NAME STREQUAL Windows) if (HAVE_EPOLL) set(poller_default epoll) endif (HAVE_EPOLL) - set(POLLER ${poller_default} CACHE STRING "Poller implementation (poll/epoll)") + set(QPID_POLLER ${poller_default} CACHE STRING "Poller implementation (poll/epoll)") + mark_as_advanced(QPID_POLLER) endif (NOT CMAKE_SYSTEM_NAME STREQUAL Windows) -# See if Cyrus SASL is desired and available -CHECK_LIBRARY_EXISTS (sasl2 sasl_checkpass "" HAVE_SASL) -CHECK_INCLUDE_FILES (sasl/sasl.h HAVE_SASL_H) - -set (sasl_default ${sasl_force}) -if (HAVE_SASL AND HAVE_SASL_H) - set (sasl_default ON) -endif (HAVE_SASL AND HAVE_SASL_H) - -option(BUILD_SASL "Build with Cyrus SASL support" ${sasl_default}) - +option(BUILD_SASL "Build with Cyrus SASL support" ${SASL_FOUND}) if (BUILD_SASL) - if (NOT HAVE_SASL) - message(FATAL_ERROR "Cyrus SASL support requested but libsasl2 not found") - endif (NOT HAVE_SASL) - if (NOT HAVE_SASL_H) - message(FATAL_ERROR "Cyrus SASL support requested but sasl.h not found") - endif (NOT HAVE_SASL_H) - - find_program(SASLPASSWD2 saslpasswd2 DOC "Location of the saslpasswd2 program") - set(BROKER_SASL_NAME "qpidd" CACHE STRING "SASL app name for the qpid broker") + if (NOT SASL_FOUND) + message(FATAL_ERROR "Cyrus SASL support requested but libsasl2 libraryor headers not found") + endif (NOT SASL_FOUND) + set(qpidcommon_sasl_source qpid/sys/cyrus/CyrusSecurityLayer.h qpid/sys/cyrus/CyrusSecurityLayer.cpp ) set(sasl_LIB sasl2) + set(HAVE_SASL 1) else (BUILD_SASL) - set(HAVE_SASL OFF) - set(BROKER_SASL_NAME "qpidd" CACHE STRING "SASL app name for the qpid broker") + set(HAVE_SASL 0) endif (BUILD_SASL) +set(QPID_BROKER_SASL_NAME "qpidd" CACHE STRING "SASL app name for the qpid broker") +mark_as_advanced(QPID_BROKER_SASL_NAME) # Optional SSL/TLS support. Requires Netscape Portable Runtime on Linux. @@ -887,15 +879,15 @@ else (CMAKE_SYSTEM_NAME STREQUAL Windows) # POSIX (Non-Windows) platforms have a lot of overlap in sources; the only # major difference is the poller module. - if (POLLER STREQUAL poll) + if (QPID_POLLER STREQUAL poll) set (qpid_poller_module qpid/sys/posix/PosixPoller.cpp ) - elseif (POLLER STREQUAL epoll) + elseif (QPID_POLLER STREQUAL epoll) set (qpid_poller_module qpid/sys/epoll/EpollPoller.cpp ) - endif (POLLER STREQUAL poll) + endif (QPID_POLLER STREQUAL poll) # Set default System Info module set (qpid_system_module @@ -1402,11 +1394,6 @@ if (CPACK_GENERATOR STREQUAL "NSIS") "qpidd" "Start Qpid Broker") endif (CPACK_GENERATOR STREQUAL "NSIS") -if (UNIX) - install (CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}/${QPID_LOCALSTATE_DIR}/lib/qpidd)") - install (CODE "FILE(MAKE_DIRECTORY \$ENV{DESTDIR}/${QPID_LOCALSTATE_DIR}/spool/qpidd)") -endif (UNIX) - if (NOT WIN32) set (qmf2_platform_headers ../include/qmf/posix/EventNotifier.h @@ -1518,8 +1505,8 @@ add_subdirectory(tests/legacystore) # Compatible variable names used in the pkg config files also for autoconf set (prefix ${CMAKE_INSTALL_PREFIX}) set (exec_prefix ${CMAKE_INSTALL_PREFIX}) -set_absolute_install_path (libdir ${LIB_INSTALL_DIR}) -set_absolute_install_path (includedir ${INCLUDE_INSTALL_DIR}) +set_absolute_install_path (libdir ${QPID_INSTALL_LIBDIR}) +set_absolute_install_path (includedir ${QPID_INSTALL_INCLUDEDIR}) set (VERSION ${QPID_VERSION}) #add_custom_target(pkgconfig ALL echo DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/qpid.pc) @@ -1527,5 +1514,5 @@ set (VERSION ${QPID_VERSION}) configure_file(qpid.pc.in ${CMAKE_CURRENT_BINARY_DIR}/qpid.pc @ONLY) configure_file(qmf2.pc.in ${CMAKE_CURRENT_BINARY_DIR}/qmf2.pc @ONLY) install (FILES ${CMAKE_CURRENT_BINARY_DIR}/qpid.pc ${CMAKE_CURRENT_BINARY_DIR}/qmf2.pc - DESTINATION ${LIB_INSTALL_DIR}/pkgconfig + DESTINATION ${QPID_INSTALL_LIBDIR}/pkgconfig COMPONENT ${QPID_COMPONENT_COMMON}) diff --git a/qpid/cpp/src/config.h.cmake b/qpid/cpp/src/config.h.cmake index 5c8c56c749..0f095f4fbf 100644 --- a/qpid/cpp/src/config.h.cmake +++ b/qpid/cpp/src/config.h.cmake @@ -52,7 +52,7 @@ #cmakedefine QPID_HAS_CLOCK_GETTIME -#cmakedefine BROKER_SASL_NAME "${BROKER_SASL_NAME}" +#define BROKER_SASL_NAME "${QPID_BROKER_SASL_NAME}" #cmakedefine HAVE_SASL ${HAVE_SASL} #cmakedefine HAVE_OPENAIS_CPG_H ${HAVE_OPENAIS_CPG_H} diff --git a/qpid/cpp/src/tests/CMakeLists.txt b/qpid/cpp/src/tests/CMakeLists.txt index 72ab6ae0d6..c5ea0a89e5 100644 --- a/qpid/cpp/src/tests/CMakeLists.txt +++ b/qpid/cpp/src/tests/CMakeLists.txt @@ -131,9 +131,15 @@ endif (CMAKE_SYSTEM_NAME STREQUAL Windows) # Copy qpidd-p0 script to build directory so tests can find it. configure_file (${CMAKE_CURRENT_SOURCE_DIR}/qpidd-p0 ${CMAKE_CURRENT_BINARY_DIR} COPYONLY) -# Like this to work with cmake 2.4 on Unix -set (qpid_test_boost_libs - ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY} ${Boost_SYSTEM_LIBRARY}) +if (CMAKE_SYSTEM_NAME STREQUAL Windows) + set (ENV{OUTDIR} ${EXECUTABLE_OUTPUT_PATH}) + set (test_script_suffix ".ps1") + set (shell "powershell") +endif (CMAKE_SYSTEM_NAME STREQUAL Windows) + +set(test_wrap ${shell} ${CMAKE_CURRENT_SOURCE_DIR}/run_test${test_script_suffix}) + +if (BUILD_TESTING_UNITTESTS) # # Unit test program @@ -142,6 +148,10 @@ set (qpid_test_boost_libs # when running the tests. If you want to build a subset of the tests run # ccmake and set unit_tests_to_build to the set you want to build. +# Like this to work with cmake 2.4 on Unix +set (qpid_test_boost_libs + ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY} ${Boost_SYSTEM_LIBRARY}) + set(all_unit_tests AccumulatedAckTest Array @@ -217,6 +227,10 @@ target_link_libraries (unit_test set_target_properties (unit_test PROPERTIES COMPILE_DEFINITIONS _IN_QPID_BROKER) remember_location(unit_test) +add_test (unit_test ${test_wrap} ${unit_test_LOCATION}) + +endif (BUILD_TESTING_UNITTESTS) + add_library (shlibtest MODULE shlibtest.cpp) if (BUILD_SASL) @@ -296,15 +310,6 @@ if (PYTHON_EXECUTABLE) WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/../python) endif (PYTHON_EXECUTABLE) -if (CMAKE_SYSTEM_NAME STREQUAL Windows) - set (ENV{OUTDIR} ${EXECUTABLE_OUTPUT_PATH}) - set (test_script_suffix ".ps1") - set (shell "powershell") -endif (CMAKE_SYSTEM_NAME STREQUAL Windows) - -set(test_wrap ${shell} ${CMAKE_CURRENT_SOURCE_DIR}/run_test${test_script_suffix}) - -add_test (unit_test ${test_wrap} ${unit_test_LOCATION}) if (BUILD_SASL) add_test (sasl_fed ${shell} ${CMAKE_CURRENT_SOURCE_DIR}/sasl_fed${test_script_suffix}) add_test (sasl_fed_ex_dynamic ${shell} ${CMAKE_CURRENT_SOURCE_DIR}/sasl_fed_ex_dynamic${test_script_suffix}) diff --git a/qpid/cpp/src/tests/legacystore/CMakeLists.txt b/qpid/cpp/src/tests/legacystore/CMakeLists.txt index ab0eb55922..3b4f50327d 100644 --- a/qpid/cpp/src/tests/legacystore/CMakeLists.txt +++ b/qpid/cpp/src/tests/legacystore/CMakeLists.txt @@ -21,16 +21,15 @@ if(BUILD_LEGACYSTORE AND BUILD_TESTING) message(STATUS "Building legacystore tests") -# Make sure that everything get built before the tests -# Need to create a var with all the necessary top level targets - -# If we're linking Boost for DLLs, turn that on for the unit test too. +# If we're linking Boost for DLLs, turn that on for the tests too. if (QPID_LINK_BOOST_DYNAMIC) add_definitions(-DBOOST_TEST_DYN_LINK) endif (QPID_LINK_BOOST_DYNAMIC) include_directories( ${CMAKE_CURRENT_SOURCE_DIR} ) +if (BUILD_TESTING_UNITTESTS) + # Like this to work with cmake 2.4 on Unix set (qpid_test_boost_libs ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY} ${Boost_SYSTEM_LIBRARY}) @@ -99,25 +98,6 @@ define_journal_test (_ut_lpmgr LONG) define_journal_test (_st_basic LONG) define_journal_test (_st_read LONG) -add_executable(jtt - jrnl/jtt/args.cpp - jrnl/jtt/data_src.cpp - jrnl/jtt/jrnl_init_params.cpp - jrnl/jtt/jrnl_instance.cpp - jrnl/jtt/main.cpp - jrnl/jtt/read_arg.cpp - jrnl/jtt/test_case.cpp - jrnl/jtt/test_case_result.cpp - jrnl/jtt/test_case_result_agregation.cpp - jrnl/jtt/test_case_set.cpp - jrnl/jtt/test_mgr.cpp) - -target_link_libraries (jtt - ${Boost_PROGRAM_OPTIONS_LIBRARY} - ${clock_gettime_LIB} legacystore_shared) - -add_test(journal_jtt ${CMAKE_CURRENT_BINARY_DIR}/jtt -c ${CMAKE_CURRENT_SOURCE_DIR}/jrnl/jtt/jtt.csv) - add_executable (jtt__ut jrnl/jtt/_ut_data_src.cpp jrnl/jtt/_ut_jrnl_init_params.cpp @@ -145,10 +125,31 @@ target_link_libraries (jtt__ut add_test(NAME journal_jtt_ut WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/jrnl/jtt COMMAND ${CMAKE_CURRENT_BINARY_DIR}/jtt__ut) +endif (BUILD_TESTING_UNITTESTS) + # # Other test programs # +add_executable(jtt + jrnl/jtt/args.cpp + jrnl/jtt/data_src.cpp + jrnl/jtt/jrnl_init_params.cpp + jrnl/jtt/jrnl_instance.cpp + jrnl/jtt/main.cpp + jrnl/jtt/read_arg.cpp + jrnl/jtt/test_case.cpp + jrnl/jtt/test_case_result.cpp + jrnl/jtt/test_case_result_agregation.cpp + jrnl/jtt/test_case_set.cpp + jrnl/jtt/test_mgr.cpp) + +target_link_libraries (jtt + ${Boost_PROGRAM_OPTIONS_LIBRARY} + ${clock_gettime_LIB} legacystore_shared) + +add_test(journal_jtt ${CMAKE_CURRENT_BINARY_DIR}/jtt -c ${CMAKE_CURRENT_SOURCE_DIR}/jrnl/jtt/jtt.csv) + add_test (legacystore_python_tests ${shell} ${CMAKE_CURRENT_SOURCE_DIR}/run_python_tests${test_script_suffix}) endif (BUILD_LEGACYSTORE AND BUILD_TESTING) diff --git a/qpid/cpp/src/tests/sasl_test_setup.sh b/qpid/cpp/src/tests/sasl_test_setup.sh index 3947986517..28ea97e117 100755 --- a/qpid/cpp/src/tests/sasl_test_setup.sh +++ b/qpid/cpp/src/tests/sasl_test_setup.sh @@ -18,8 +18,8 @@ # specific language governing permissions and limitations # under the License. # +source ./test_env.sh -SASL_PW=/usr/sbin/saslpasswd2 test -x $SASL_PW || { echo Skipping SASL test, saslpasswd2 not found; exit 0; } mkdir -p sasl_config diff --git a/qpid/cpp/src/tests/test_env.sh.in b/qpid/cpp/src/tests/test_env.sh.in index c85e1d651a..2247469cc3 100644 --- a/qpid/cpp/src/tests/test_env.sh.in +++ b/qpid/cpp/src/tests/test_env.sh.in @@ -35,6 +35,7 @@ enable_valgrind=${enable_valgrind-@ENABLE_VALGRIND@} if [ "$enable_valgrind" = "ON" ] ; then export VALGRIND=@VALGRIND_EXECUTABLE@ fi +export SASL_PW=@SASLPASSWD2_EXECUTABLE@ # Python paths and directories export PYTHON_DIR=$builddir/python |
