summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Stitcher <astitcher@apache.org>2013-10-28 12:39:56 +0000
committerAndrew Stitcher <astitcher@apache.org>2013-10-28 12:39:56 +0000
commit265821ba0b9ea2eb77ceb9158ceb83fffe12bc8f (patch)
tree24657249764e27d73ab4cad068dc7daee8820bfe
parent45a6f4f415108dd26e00f8902db3f4d5d787b835 (diff)
downloadqpid-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.cmake9
-rw-r--r--qpid/cpp/CMakeLists.txt4
-rw-r--r--qpid/cpp/bindings/CMakeLists.txt123
-rw-r--r--qpid/cpp/docs/api/CMakeLists.txt4
-rw-r--r--qpid/cpp/docs/man/CMakeLists.txt2
-rw-r--r--qpid/cpp/etc/CMakeLists.txt2
-rw-r--r--qpid/cpp/src/CMakeLists.txt121
-rw-r--r--qpid/cpp/src/config.h.cmake2
-rw-r--r--qpid/cpp/src/tests/CMakeLists.txt29
-rw-r--r--qpid/cpp/src/tests/legacystore/CMakeLists.txt47
-rwxr-xr-xqpid/cpp/src/tests/sasl_test_setup.sh2
-rw-r--r--qpid/cpp/src/tests/test_env.sh.in1
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