blob: ef203e53b68d591eda2be97a2f40b6b4b5b785ed [file] [log] [blame]
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
# library versions
include (versions.cmake)
# Option to require building optional plugins
foreach (r ${REQUIRE})
set(${r}_force ON)
message(STATUS "Forcing ${r} to ${${r}_force}")
endforeach(r)
include(CheckFunctionExists)
include(CheckIncludeFileCXX)
include(CheckIncludeFiles)
include(CheckIncludeFileCXX)
include(CheckLibraryExists)
include(CheckSymbolExists)
include(CheckSizetDistinct)
find_package(PkgConfig)
find_package(Ruby)
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
if (NOT CMAKE_SYSTEM_NAME STREQUAL Windows AND BUILD_TESTING)
# Executables used in testing the library ABIs
add_executable(cppabi cppabi.cpp)
add_executable(expand_types expand_types.cpp)
# Add a test to check the exported library API against expected API symbols
MACRO (add_api_test libname)
add_test(api_check_${libname} ${CMAKE_CURRENT_SOURCE_DIR}/check-abi ${CMAKE_CURRENT_BINARY_DIR}/lib${libname}.so ${CMAKE_CURRENT_SOURCE_DIR}/lib${libname}-api-symbols.txt)
ENDMACRO (add_api_test libname)
else (NOT CMAKE_SYSTEM_NAME STREQUAL Windows AND BUILD_TESTING)
# If the test isn't applicable use a dummy macro
MACRO (add_api_test libname)
ENDMACRO (add_api_test libname)
endif (NOT CMAKE_SYSTEM_NAME STREQUAL Windows AND BUILD_TESTING)
# check if we generate source as part of the build
# - rubygen generates the amqp spec
# - managementgen generates the broker management code
#
# rubygen subdir is excluded from stable distributions
# If the main AMQP spec is present, then check if ruby and python are
# present, and if any sources have changed, forcing a re-gen of source code.
find_file(QPID_AMQP_SPEC NAMES amqp.0-10-qpid-errata.stripped.xml PATHS ${qpid-cpp_SOURCE_DIR}/specs ${qpid-cpp_SOURCE_DIR}/../specs NO_DEFAULT_PATH)
mark_as_advanced(QPID_AMQP_SPEC)
if (NOT QPID_AMQP_SPEC)
message(FATAL_ERROR "Can't find amqp 0-10 spec for framing code generation")
endif (NOT QPID_AMQP_SPEC)
if (NOT RUBY_EXECUTABLE)
message(FATAL_ERROR "Can't locate ruby, needed to generate amqp 0-10 framing code.")
endif (NOT RUBY_EXECUTABLE)
set(specs ${QPID_AMQP_SPEC})
set(regen_amqp OFF)
set(rgen_dir ${qpid-cpp_SOURCE_DIR}/rubygen)
file(GLOB_RECURSE rgen_progs ${rgen_dir}/*.rb)
# If any of the specs, or any of the sources used to generate code, change
# then regenerate the sources.
foreach (spec_file ${specs} ${rgen_progs})
if (${spec_file} IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/rubygen.cmake)
set(regen_amqp ON)
endif (${spec_file} IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/rubygen.cmake)
endforeach (spec_file ${specs})
if (regen_amqp)
message(STATUS "Regenerating AMQP protocol sources")
execute_process(COMMAND ${RUBY_EXECUTABLE} -I ${rgen_dir} ${rgen_dir}/generate ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/../include ${specs} all rubygen.cmake
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
else (regen_amqp)
message(STATUS "No need to generate AMQP protocol sources")
endif (regen_amqp)
find_file(QPID_BROKER_MANAGEMENT_SPEC NAMES management-schema.xml PATHS ${CMAKE_CURRENT_SOURCE_DIR}/qpid/broker ${qpid-cpp_SOURCE_DIR}/../specs NO_DEFAULT_PATH)
mark_as_advanced(QPID_BROKER_MANAGEMENT_SPEC)
if (NOT QPID_BROKER_MANAGEMENT_SPEC)
message(FATAL_ERROR "Can't find broker management spec for code generation")
endif (NOT QPID_BROKER_MANAGEMENT_SPEC)
if (NOT PYTHON_EXECUTABLE)
message(FATAL_ERROR "Can't locate python, needed to generate broker management code.")
endif (NOT PYTHON_EXECUTABLE)
set(mgmt_specs ${QPID_BROKER_MANAGEMENT_SPEC}
${CMAKE_CURRENT_SOURCE_DIR}/qpid/acl/management-schema.xml
${CMAKE_CURRENT_SOURCE_DIR}/qpid/ha/management-schema.xml
${CMAKE_CURRENT_SOURCE_DIR}/qpid/legacystore/management-schema.xml
${CMAKE_CURRENT_SOURCE_DIR}/qpid/linearstore/management-schema.xml
)
set(mgen_dir ${qpid-cpp_SOURCE_DIR}/managementgen)
set(regen_mgmt OFF)
foreach (spec_file ${mgmt_specs})
if (${spec_file} IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/managementgen.cmake)
message(STATUS "${spec_file} is newer")
set(regen_mgmt ON)
endif (${spec_file} IS_NEWER_THAN ${CMAKE_CURRENT_BINARY_DIR}/managementgen.cmake)
endforeach (spec_file ${mgmt_specs})
if (regen_mgmt)
message(STATUS "Regenerating Qpid Management Framework sources")
execute_process(COMMAND ${PYTHON_EXECUTABLE} ${mgen_dir}/qmf-gen -c managementgen.cmake -b -l -q -o ${CMAKE_CURRENT_BINARY_DIR}/qmf ${mgmt_specs}
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
else (regen_mgmt)
message(STATUS "No need to generate Qpid Management Framework sources")
endif (regen_mgmt)
# Pull in the names of the generated files, i.e. ${rgen_framing_srcs}
include (${CMAKE_CURRENT_BINARY_DIR}/rubygen.cmake)
include (${CMAKE_CURRENT_BINARY_DIR}/managementgen.cmake)
# FindDoxygen module tries to locate doxygen and Graphviz dot
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_FOUND)
if (VALGRIND_FOUND)
option(ENABLE_VALGRIND "Use valgrind to detect run-time problems" ON)
endif (VALGRIND_FOUND)
option(ENABLE_WARNINGS "Enable lots of compiler warnings (recommended)" ON)
if (NOT ENABLE_WARNINGS)
set (WARNING_FLAGS "")
endif (NOT ENABLE_WARNINGS)
if (GCC_VERSION AND NOT GCC_VERSION VERSION_LESS 5.1)
option(ENABLE_GLIBCXX_OLD_ABI "Enable old (pre GCC 5.1) C++ ABI" OFF)
endif ()
if (ENABLE_GLIBCXX_OLD_ABI)
set (ABI_DEF "-D_GLIBCXX_USE_CXX11_ABI=0")
endif (ENABLE_GLIBCXX_OLD_ABI)
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ABI_DEF} ${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.
# There may be different minimum versions of boost for Windows and Unix
if (CMAKE_SYSTEM_NAME STREQUAL Windows)
set (Boost_components program_options date_time thread)
set (Boost_minversion 1.44)
else (CMAKE_SYSTEM_NAME STREQUAL Windows)
set (Boost_components program_options)
set (Boost_minversion 1.33)
endif (CMAKE_SYSTEM_NAME STREQUAL Windows)
# Visual Studio 2010 requires boost 1.45 or better.
# The choice here is to fail demanding the user to update CMake to version N
# where Boost 1.45 is supported, or we can just accept some versions using
# the Additional_versions variable.
if (NOT DEFINED Boost_ADDITIONAL_VERSIONS)
set (Boost_ADDITIONAL_VERSIONS
"1.45" "1.45.0" "1.46" "1.46.0" "1.47" "1.47.0"
"1.48" "1.48.0" "1.49" "1.49.0" "1.50" "1.50.0"
"1.51" "1.51.0" "1.52" "1.52.0" "1.53" "1.53.0"
"1.54" "1.54.0" "1.55" "1.55.0" "1.56" "1.56.0"
"1.57" "1.57.0" "1.58" "1.58.0")
endif (NOT DEFINED Boost_ADDITIONAL_VERSIONS)
# Discover Boost version
find_package(Boost ${Boost_minversion} 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)
list(APPEND Boost_components system)
endif (Boost_VERSION GREATER 103499)
# Boost.chrono was introduced at Boost 1.47; it's needed secondarily by other
# Boost libs Qpid needs on Windows, so be sure it's there on Windows.
if (Boost_VERSION GREATER 104699 AND CMAKE_SYSTEM_NAME STREQUAL Windows)
list(APPEND Boost_components chrono)
endif (Boost_VERSION GREATER 104699 AND CMAKE_SYSTEM_NAME STREQUAL Windows)
find_package(Boost ${Boost_minversion} 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 (BUILD_TESTING)
set (BUILD_TESTING_UNITTESTS ON)
find_package(Boost ${Boost_minversion} 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
# and libs ensure that users building Qpid C++ client programs can compile
# (the C++ API still exposes Boost headers, but hopefully this will be fixed
# in the future).
#
# On Windows you can pick whether the static or dynamic versions of the libs
# are used; allow this choice to the user. Since we also install the Boost
# DLLs that are needed for the Windows package, none are needed for the
# static link case; else drop them into the install. Do this all first, since
# Boost on Windows can use automatic linking to pick up the correct
# 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)
if (QPID_LINK_BOOST_DYNAMIC)
add_definitions( /D BOOST_ALL_DYN_LINK)
string (REPLACE .lib .dll
_boost_date_time_debug ${Boost_DATE_TIME_LIBRARY_DEBUG})
string (REPLACE .lib .dll
_boost_date_time_release ${Boost_DATE_TIME_LIBRARY_RELEASE})
string (REPLACE .lib .dll
_boost_program_options_debug ${Boost_PROGRAM_OPTIONS_LIBRARY_DEBUG})
string (REPLACE .lib .dll
_boost_program_options_release ${Boost_PROGRAM_OPTIONS_LIBRARY_RELEASE})
string (REPLACE .lib .dll
_boost_thread_debug ${Boost_THREAD_LIBRARY_DEBUG})
string (REPLACE .lib .dll
_boost_thread_release ${Boost_THREAD_LIBRARY_RELEASE})
if (NOT Boost_VERSION LESS 103500)
string (REPLACE .lib .dll
_boost_system_debug ${Boost_SYSTEM_LIBRARY_DEBUG})
string (REPLACE .lib .dll
_boost_system_release ${Boost_SYSTEM_LIBRARY_RELEASE})
endif (NOT Boost_VERSION LESS 103500)
if (NOT Boost_VERSION LESS 104700)
string (REPLACE .lib .dll
_boost_chrono_debug ${Boost_CHRONO_LIBRARY_DEBUG})
string (REPLACE .lib .dll
_boost_chrono_release ${Boost_CHRONO_LIBRARY_RELEASE})
endif (NOT Boost_VERSION LESS 104700)
install (PROGRAMS
${_boost_date_time_debug} ${_boost_date_time_release}
${_boost_program_options_debug} ${_boost_program_options_release}
${_boost_thread_debug} ${_boost_thread_release}
${_boost_chrono_debug} ${_boost_chrono_release}
${_boost_system_debug} ${_boost_system_release}
DESTINATION ${QPID_INSTALL_BINDIR}
COMPONENT ${QPID_COMPONENT_COMMON})
endif (QPID_LINK_BOOST_DYNAMIC)
set(Boost_DATE_TIME_LIBRARY "")
set(Boost_THREAD_LIBRARY "")
set(Boost_PROGRAM_OPTIONS_LIBRARY "")
set(Boost_UNIT_TEST_FRAMEWORK_LIBRARY "")
set(Boost_SYSTEM_LIBRARY "")
set(Boost_CHRONO_LIBRARY "")
include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/windows/resources )
endif (MSVC)
include_directories( ${Boost_INCLUDE_DIR} )
include_directories( ${CMAKE_CURRENT_SOURCE_DIR} )
include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/../include )
include_directories( ${CMAKE_CURRENT_BINARY_DIR} )
include_directories( ${CMAKE_CURRENT_BINARY_DIR}/../include )
link_directories( ${Boost_LIBRARY_DIRS} )
CHECK_SYMBOL_EXISTS(uuid_generate "uuid/uuid.h" UUID_GENERATE_IN_LIBC)
if (UUID_GENERATE_IN_LIBC)
set(uuid_SRC "")
set(uuid_LIB "")
else (UUID_GENERATE_IN_LIBC)
CHECK_LIBRARY_EXISTS (uuid uuid_generate "" UUID_GENERATE_IN_UUID)
if (UUID_GENERATE_IN_UUID)
set(uuid_SRC "")
set(uuid_LIB uuid)
else (UUID_GENERATE_IN_UUID)
CHECK_SYMBOL_EXISTS(uuid_create "uuid.h" UUID_CREATE_IN_LIBC)
if (UUID_CREATE_IN_LIBC)
set(uuid_SRC qpid/sys/FreeBSD/uuid.cpp)
set(uuid_LIB "")
else (UUID_CREATE_IN_LIBC)
CHECK_SYMBOL_EXISTS(UuidToString "rpc.h" WIN_UUID)
if (WIN_UUID)
set(uuid_SRC qpid/sys/windows/uuid.cpp)
set(uuid_LIB rpcrt4)
else (WIN_UUID)
message(FATAL_ERROR "No Uuid API found")
endif (WIN_UUID)
endif (UUID_CREATE_IN_LIBC)
endif (UUID_GENERATE_IN_UUID)
endif (UUID_GENERATE_IN_LIBC)
# These dependencies aren't found on windows
if (NOT CMAKE_SYSTEM_NAME STREQUAL Windows)
# Ensure we have clock_gettime
CHECK_FUNCTION_EXISTS (clock_gettime CLOCK_GETTIME_IN_LIBC)
if (NOT CLOCK_GETTIME_IN_LIBC)
CHECK_LIBRARY_EXISTS (rt clock_gettime "" CLOCK_GETTIME_IN_RT)
if (CLOCK_GETTIME_IN_RT)
set(clock_gettime_LIB "rt")
else ()
message(FATAL_ERROR "Cannot find clock_gettime()")
endif (CLOCK_GETTIME_IN_RT)
endif (NOT CLOCK_GETTIME_IN_LIBC)
# Check for header file for dtrace static probes
check_include_files(sys/sdt.h HAVE_SDT)
if (HAVE_SDT)
# Only enable by default on Linux
if (CMAKE_SYSTEM_NAME STREQUAL Linux)
set(probes_default ON)
endif (CMAKE_SYSTEM_NAME STREQUAL Linux)
option(BUILD_PROBES "Build with DTrace/systemtap static probes" "${probes_default}")
endif (HAVE_SDT)
if (BUILD_PROBES)
set (HAVE_SYS_SDT_H 1)
else (HAVE_SDT)
set (HAVE_SYS_SDT_H 0)
endif (BUILD_PROBES)
# Check for poll/epoll header files
check_include_files(sys/poll.h HAVE_POLL)
check_include_files(sys/epoll.h HAVE_EPOLL)
# Set default poller implementation (check from general to specific to allow overriding)
if (HAVE_POLL)
set(poller_default poll)
endif (HAVE_POLL)
if (HAVE_EPOLL)
set(poller_default epoll)
endif (HAVE_EPOLL)
set(QPID_POLLER ${poller_default} CACHE STRING "Poller implementation (poll/epoll)")
mark_as_advanced(QPID_POLLER)
endif (NOT CMAKE_SYSTEM_NAME STREQUAL Windows)
check_size_t_distinct (QPID_SIZE_T_DISTINCT)
option(BUILD_SASL "Build with Cyrus SASL support" ${SASL_FOUND})
if (BUILD_SASL)
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 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.
# According to some cmake docs this is not a reliable way to detect
# pkg-configed libraries, but it's no worse than what we did under
# autotools
pkg_check_modules(NSS nss)
set (ssl_default ${ssl_force})
if (CMAKE_SYSTEM_NAME STREQUAL Windows)
set (ssl_default ON)
else (CMAKE_SYSTEM_NAME STREQUAL Windows)
if (NSS_FOUND)
set (ssl_default ON)
endif (NSS_FOUND)
endif (CMAKE_SYSTEM_NAME STREQUAL Windows)
option(BUILD_SSL "Build with support for SSL" ${ssl_default})
if (BUILD_SSL)
if (CMAKE_SYSTEM_NAME STREQUAL Windows)
set (sslcommon_SOURCES
qpid/sys/windows/SslAsynchIO.cpp
qpid/sys/windows/SslCredential.cpp
qpid/sys/windows/SslCredential.h
qpid/sys/windows/util.cpp
qpid/sys/windows/util.h
)
set (ssl_SOURCES
qpid/broker/windows/SslProtocolFactory.cpp
)
set (sslconnector_SOURCES
qpid/client/windows/SslConnector.cpp
)
set (ssl_INCLUDES "")
set (ssl_LIBDIRS "")
set (ssl_LIBS Crypt32.lib Secur32.lib)
set (ssl_server_LIBS Crypt32.lib Secur32.lib)
else (CMAKE_SYSTEM_NAME STREQUAL Windows)
if (NOT NSS_FOUND)
message(FATAL_ERROR "nss/nspr not found, required for ssl support")
endif (NOT NSS_FOUND)
set (sslcommon_SOURCES
qpid/sys/ssl/check.h
qpid/sys/ssl/check.cpp
qpid/sys/ssl/util.h
qpid/sys/ssl/util.cpp
qpid/sys/ssl/SslSocket.h
qpid/sys/ssl/SslSocket.cpp
)
set (ssl_SOURCES
qpid/sys/SslPlugin.cpp
)
set (sslconnector_SOURCES
qpid/client/SslConnector.cpp
qpid/messaging/amqp/SslTransport.cpp
)
set (ssl_INCLUDES "${NSS_INCLUDE_DIRS}")
set (ssl_LIBDIRS "${NSS_LIBRARY_DIRS}")
set (ssl_LIBS "${NSS_LIBRARIES}")
set (ssl_server_LIBS "${NSS_LIBRARIES}")
endif (CMAKE_SYSTEM_NAME STREQUAL Windows)
# Add include directories and link directories for NSS
# unfortunately this doesn't get done automatically for
# libraries detected by FindPkgConfig
include_directories(${ssl_INCLUDES})
link_directories(${ssl_LIBDIRS})
endif (BUILD_SSL)
# See if XML Exchange is desired and prerequisites are available
CHECK_LIBRARY_EXISTS (xerces-c _init "" HAVE_XERCES)
CHECK_INCLUDE_FILE_CXX (xercesc/framework/MemBufInputSource.hpp HAVE_XERCES_H)
CHECK_INCLUDE_FILE_CXX (xqilla/xqilla-simple.hpp HAVE_XQILLA_H)
CHECK_INCLUDE_FILE_CXX (xqilla/ast/XQEffectiveBooleanValue.hpp HAVE_XQ_EBV)
set (xml_default ${xml_force})
if (CMAKE_SYSTEM_NAME STREQUAL Windows)
else (CMAKE_SYSTEM_NAME STREQUAL Windows)
if (HAVE_XERCES AND HAVE_XERCES_H)
if (HAVE_XQILLA_H)
set (xml_default ON)
endif (HAVE_XQILLA_H)
endif (HAVE_XERCES AND HAVE_XERCES_H)
endif (CMAKE_SYSTEM_NAME STREQUAL Windows)
option(BUILD_XML "Build with XML Exchange" ${xml_default})
if (BUILD_XML)
if (NOT HAVE_XERCES)
message(FATAL_ERROR "XML Exchange support requested but xerces-c library not found")
endif (NOT HAVE_XERCES)
if (NOT HAVE_XERCES_H)
message(FATAL_ERROR "XML Exchange support requested but Xerces-C headers not found")
endif (NOT HAVE_XERCES_H)
if (NOT HAVE_XQILLA_H)
message(FATAL_ERROR "XML Exchange support requested but XQilla headers not found")
endif (NOT HAVE_XQILLA_H)
if (HAVE_XQ_EBV)
add_definitions(-DXQ_EFFECTIVE_BOOLEAN_VALUE_HPP)
endif (HAVE_XQ_EBV)
add_library (xml MODULE
qpid/xml/XmlExchange.cpp
qpid/xml/XmlExchange.h
qpid/xml/XmlExchangePlugin.cpp)
target_link_libraries (xml xerces-c xqilla qpidbroker qpidcommon)
set_target_properties (xml PROPERTIES
PREFIX "")
install (TARGETS xml
DESTINATION ${QPIDD_MODULE_DIR}
COMPONENT ${QPID_COMPONENT_BROKER})
set(xml_tests XmlClientSessionTest)
endif (BUILD_XML)
set (acl_SOURCES
qpid/acl/Acl.cpp
qpid/acl/Acl.h
qpid/acl/AclConnectionCounter.cpp
qpid/acl/AclConnectionCounter.h
qpid/acl/AclData.cpp
qpid/acl/AclData.h
qpid/acl/AclLexer.cpp
qpid/acl/AclLexer.h
qpid/acl/AclPlugin.cpp
qpid/acl/AclReader.cpp
qpid/acl/AclReader.h
qpid/acl/AclResourceCounter.cpp
qpid/acl/AclResourceCounter.h
qpid/acl/AclValidator.cpp
qpid/acl/AclValidator.h
)
set (ha_default ON)
option(BUILD_HA "Build Active-Passive HA plugin" ${ha_default})
if (BUILD_HA)
set (ha_SOURCES
qpid/ha/AlternateExchangeSetter.h
qpid/ha/Backup.cpp
qpid/ha/Backup.h
qpid/ha/BackupConnectionExcluder.h
qpid/ha/BrokerInfo.cpp
qpid/ha/BrokerInfo.h
qpid/ha/BrokerReplicator.cpp
qpid/ha/BrokerReplicator.h
qpid/ha/ConnectionObserver.cpp
qpid/ha/ConnectionObserver.h
qpid/ha/Event.cpp
qpid/ha/Event.h
qpid/ha/FailoverExchange.cpp
qpid/ha/FailoverExchange.h
qpid/ha/HaBroker.cpp
qpid/ha/HaBroker.h
qpid/ha/HaPlugin.cpp
qpid/ha/IdSetter.h
qpid/ha/LogPrefix.cpp
qpid/ha/LogPrefix.h
qpid/ha/Membership.cpp
qpid/ha/Membership.h
qpid/ha/Primary.cpp
qpid/ha/Primary.h
qpid/ha/PrimaryQueueLimits.h
qpid/ha/QueueGuard.cpp
qpid/ha/QueueGuard.h
qpid/ha/QueueReplicator.cpp
qpid/ha/QueueReplicator.h
qpid/ha/QueueSnapshot.h
qpid/ha/QueueSnapshot.h
qpid/ha/RemoteBackup.cpp
qpid/ha/RemoteBackup.h
qpid/ha/ReplicatingSubscription.cpp
qpid/ha/ReplicatingSubscription.h
qpid/ha/ReplicationTest.cpp
qpid/ha/ReplicationTest.h
qpid/ha/Role.h
qpid/ha/Settings.h
qpid/ha/StandAlone.h
qpid/ha/StatusCheck.cpp
qpid/ha/StatusCheck.h
qpid/ha/types.cpp
qpid/ha/types.h
)
add_library (ha MODULE ${ha_SOURCES})
target_link_libraries (ha
qpidtypes qpidcommon qpidbroker qpidmessaging
${Boost_PROGRAM_OPTIONS_LIBRARY})
set_target_properties (ha PROPERTIES
PREFIX "")
install (TARGETS ha
DESTINATION ${QPIDD_MODULE_DIR}
COMPONENT ${QPID_COMPONENT_BROKER})
endif (BUILD_HA)
# Check for optional RDMA support requirements
include (rdma.cmake)
# Check for optional AMQP 1.0 support requirements
include (amqp.cmake)
# Check for syslog capabilities not present on all systems
check_symbol_exists (LOG_AUTHPRIV "sys/syslog.h" HAVE_LOG_AUTHPRIV)
check_symbol_exists (LOG_FTP "sys/syslog.h" HAVE_LOG_FTP)
# Set default Memory Status module (Null implementation)
set (qpid_memstat_module
qpid/sys/MemStat.cpp
)
if (CMAKE_SYSTEM_NAME STREQUAL Windows)
set (qpidcommon_platform_SOURCES
qpid/log/windows/SinkOptions.cpp
qpid/sys/windows/AsynchIO.cpp
qpid/sys/windows/Path.cpp
qpid/sys/windows/FileSysDir.cpp
qpid/sys/windows/IocpPoller.cpp
qpid/sys/windows/IOHandle.cpp
qpid/sys/windows/LockFile.cpp
qpid/sys/windows/MemoryMappedFile.cpp
qpid/sys/windows/PipeHandle.cpp
qpid/sys/windows/PollableCondition.cpp
qpid/sys/windows/Shlib.cpp
qpid/sys/windows/WinSocket.cpp
qpid/sys/windows/SocketAddress.cpp
qpid/sys/windows/StrError.cpp
qpid/sys/windows/SystemInfo.cpp
qpid/sys/windows/Thread.cpp
qpid/sys/windows/Time.cpp
qpid/client/windows/SaslFactory.cpp
)
set (qpidcommon_platform_LIBS
${Boost_THREAD_LIBRARY}
${Boost_DATE_TIME_LIBRARY}
${Boost_SYSTEM_LIBRARY}
ws2_32
)
set (qpidbroker_platform_SOURCES
qpid/broker/windows/BrokerDefaults.cpp
qpid/broker/windows/SaslAuthenticator.cpp
)
set (qpidclient_platform_SOURCES
qpid/client/windows/ClientDllMain.cpp
)
set (qpidd_platform_SOURCES
windows/QpiddBroker.cpp
windows/SCM.cpp
)
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 (QPID_POLLER STREQUAL poll)
set (qpid_poller_module
qpid/sys/posix/PosixPoller.cpp
)
elseif (QPID_POLLER STREQUAL epoll)
set (qpid_poller_module
qpid/sys/epoll/EpollPoller.cpp
)
endif (QPID_POLLER STREQUAL poll)
# Set default System Info module
set (qpid_system_module
qpid/sys/posix/SystemInfo.cpp
)
if (CMAKE_SYSTEM_NAME STREQUAL Linux)
# On Linux override memory status module
set (qpid_memstat_module
qpid/sys/posix/MemStat.cpp
)
endif (CMAKE_SYSTEM_NAME STREQUAL Linux)
if (CMAKE_SYSTEM_NAME STREQUAL SunOS)
# On Solaris override the system info module
set (qpid_system_module
qpid/sys/solaris/SystemInfo.cpp
)
# On Sun we want -lpthread -lthread as the 2nd last and last libs passed to linker
set (qpidtypes_platform_LIBS ${qpidtypes_platform_LIBS}
pthread
thread
)
endif (CMAKE_SYSTEM_NAME STREQUAL SunOS)
if (CMAKE_SYSTEM_NAME STREQUAL AIX)
set (qpid_system_module
qpid/sys/aix/SystemInfo.cpp
)
endif (CMAKE_SYSTEM_NAME STREQUAL AIX)
if (CMAKE_CXX_COMPILER_ID STREQUAL SunPro)
# -lmalloc needed for mallinfo.
set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lmalloc")
set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -lmalloc")
endif (CMAKE_CXX_COMPILER_ID STREQUAL SunPro)
set (qpidcommon_platform_SOURCES
qpid/sys/posix/AsynchIO.cpp
qpid/sys/posix/Condition.cpp
qpid/sys/posix/Fork.cpp
qpid/sys/posix/Path.cpp
qpid/sys/posix/FileSysDir.cpp
qpid/sys/posix/IOHandle.cpp
qpid/sys/posix/LockFile.cpp
qpid/sys/posix/MemoryMappedFile.cpp
qpid/sys/posix/Mutex.cpp
qpid/sys/posix/PipeHandle.cpp
qpid/sys/posix/PollableCondition.cpp
qpid/sys/posix/Shlib.cpp
qpid/log/posix/SinkOptions.cpp
qpid/sys/posix/BSDSocket.cpp
qpid/sys/posix/SocketAddress.cpp
qpid/sys/posix/StrError.cpp
qpid/sys/posix/Thread.cpp
qpid/sys/posix/Time.cpp
qpid/SaslFactory.cpp
${qpid_system_module}
${qpid_poller_module}
)
set (qpidcommon_platform_LIBS
"${CMAKE_DL_LIBS}"
"${clock_gettime_LIB}"
)
set (qpidbroker_platform_SOURCES
qpid/broker/Daemon.cpp
qpid/broker/SaslAuthenticator.cpp
qpid/broker/SignalHandler.h
qpid/broker/SignalHandler.cpp
qpid/broker/posix/BrokerDefaults.cpp
qpid/broker/posix/SocketFDPlugin.cpp
)
set (qpidclient_platform_SOURCES
)
set (qpidd_platform_SOURCES
posix/QpiddBroker.cpp
)
endif (CMAKE_SYSTEM_NAME STREQUAL Windows)
set (qpidcommon_SOURCES
${rgen_framing_srcs}
${qpidcommon_platform_SOURCES}
${qpidcommon_sasl_source}
${sslcommon_SOURCES}
qpid/assert.cpp
qpid/AclHost.cpp
qpid/Address.cpp
qpid/DataDir.cpp
qpid/Exception.cpp
qpid/Modules.cpp
qpid/Options.cpp
qpid/Plugin.cpp
qpid/RefCountedBuffer.cpp
qpid/SessionState.cpp
qpid/SessionId.cpp
qpid/StringUtils.cpp
qpid/Url.cpp
qpid/UrlArray.cpp
qpid/NullSaslClient.cpp
qpid/NullSaslServer.cpp
qpid/amqp_0_10/SessionHandler.cpp
qpid/framing/AccumulatedAck.cpp
qpid/framing/AMQBody.cpp
qpid/framing/AMQMethodBody.cpp
qpid/framing/AMQContentBody.cpp
qpid/framing/AMQFrame.cpp
qpid/framing/AMQHeaderBody.cpp
qpid/framing/AMQHeartbeatBody.cpp
qpid/framing/Array.cpp
qpid/framing/Buffer.cpp
qpid/framing/FieldTable.cpp
qpid/framing/FieldValue.cpp
qpid/framing/FrameSet.cpp
qpid/framing/FrameDecoder.cpp
qpid/framing/List.cpp
qpid/framing/ProtocolInitiation.cpp
qpid/framing/ProtocolVersion.cpp
qpid/framing/SendContent.cpp
qpid/framing/SequenceNumber.cpp
qpid/framing/SequenceNumberSet.cpp
qpid/framing/SequenceSet.cpp
qpid/framing/Proxy.cpp
qpid/framing/Uuid.cpp
qpid/framing/TransferContent.cpp
qpid/log/Logger.cpp
qpid/log/Options.cpp
qpid/log/OstreamOutput.cpp
qpid/log/Selector.cpp
qpid/log/Statement.cpp
qpid/management/Buffer.cpp
qpid/management/ConnectionSettings.cpp
qpid/management/Mutex.cpp
qpid/management/Manageable.cpp
qpid/management/ManagementObject.cpp
qpid/sys/AggregateOutput.cpp
qpid/sys/AsynchIOHandler.cpp
qpid/sys/Dispatcher.cpp
qpid/sys/DispatchHandle.cpp
qpid/sys/Runnable.cpp
qpid/sys/Shlib.cpp
qpid/sys/Timer.cpp
qpid/sys/TimerWarnings.cpp
qpid/amqp_0_10/Codecs.cpp
qpid/amqp/CharSequence.h
qpid/amqp/CharSequence.cpp
qpid/amqp/DataBuilder.h
qpid/amqp/DataBuilder.cpp
qpid/amqp/Decoder.h
qpid/amqp/Decoder.cpp
qpid/amqp/Descriptor.h
qpid/amqp/Descriptor.cpp
qpid/amqp/Encoder.h
qpid/amqp/Encoder.cpp
qpid/amqp/ListBuilder.h
qpid/amqp/ListBuilder.cpp
qpid/amqp/MapHandler.h
qpid/amqp/MapEncoder.h
qpid/amqp/MapEncoder.cpp
qpid/amqp/MapSizeCalculator.h
qpid/amqp/MapSizeCalculator.cpp
qpid/amqp/MapBuilder.h
qpid/amqp/MapBuilder.cpp
qpid/amqp/MapReader.h
qpid/amqp/MapReader.cpp
qpid/amqp/MessageEncoder.h
qpid/amqp/MessageEncoder.cpp
qpid/amqp/MessageId.h
qpid/amqp/MessageId.cpp
qpid/amqp/MessageReader.h
qpid/amqp/MessageReader.cpp
qpid/amqp/Reader.h
qpid/amqp/Sasl.h
qpid/amqp/Sasl.cpp
qpid/amqp/SaslClient.h
qpid/amqp/SaslClient.cpp
qpid/amqp/SaslServer.h
qpid/amqp/SaslServer.cpp
qpid/messaging/amqp/Transport.h
qpid/messaging/amqp/Transport.cpp
qpid/messaging/amqp/TransportContext.h
${qpid_memstat_module}
)
add_msvc_version (qpidcommon library dll)
add_library (qpidcommon SHARED ${qpidcommon_SOURCES})
target_link_libraries (qpidcommon qpidtypes
${qpidcommon_platform_LIBS}
${Boost_PROGRAM_OPTIONS_LIBRARY}
"${sasl_LIB}"
${ssl_LIBS})
set_target_properties (qpidcommon PROPERTIES
VERSION ${qpidcommon_version}
SOVERSION ${qpidcommon_version_major})
install (TARGETS qpidcommon
RUNTIME DESTINATION ${QPID_INSTALL_BINDIR} COMPONENT ${QPID_COMPONENT_COMMON}
LIBRARY DESTINATION ${QPID_INSTALL_LIBDIR} COMPONENT ${QPID_COMPONENT_COMMON}
ARCHIVE DESTINATION ${QPID_INSTALL_LIBDIR} COMPONENT ${QPID_COMPONENT_COMMON})
install_pdb (qpidcommon ${QPID_COMPONENT_COMMON})
set(qpidtypes_SOURCES
qpid/types/Exception.cpp
qpid/types/Uuid.cpp
qpid/types/Variant.cpp
${uuid_SRC}
)
set_source_files_properties(
${qpidtypes_SOURCES}
PROPERTIES
COMPILE_FLAGS "${HIDE_SYMBOL_FLAGS}")
add_msvc_version (qpidtypes library dll)
add_library(qpidtypes SHARED ${qpidtypes_SOURCES})
target_link_libraries(qpidtypes "${uuid_LIB}")
set_target_properties (qpidtypes PROPERTIES
LINK_FLAGS "${HIDE_SYMBOL_FLAGS} ${LINK_VERSION_SCRIPT_FLAG}"
VERSION ${qpidtypes_version}
SOVERSION ${qpidtypes_version_major})
install(TARGETS qpidtypes
RUNTIME DESTINATION ${QPID_INSTALL_BINDIR} COMPONENT ${QPID_COMPONENT_COMMON}
LIBRARY DESTINATION ${QPID_INSTALL_LIBDIR} COMPONENT ${QPID_COMPONENT_COMMON}
ARCHIVE DESTINATION ${QPID_INSTALL_LIBDIR} COMPONENT ${QPID_COMPONENT_COMMON})
install_pdb (qpidtypes ${QPID_COMPONENT_COMMON})
add_api_test(qpidtypes)
set (qpidclient_SOURCES
${rgen_client_srcs}
${qpidclient_platform_SOURCES}
${sslconnector_SOURCES}
qpid/client/Bounds.cpp
qpid/client/Completion.cpp
qpid/client/CompletionImpl.cpp
qpid/client/Connection.cpp
qpid/client/ConnectionHandler.cpp
qpid/client/ConnectionImpl.cpp
qpid/client/ConnectionSettings.cpp
qpid/client/Connector.cpp
qpid/client/Demux.cpp
qpid/client/Dispatcher.cpp
qpid/client/FailoverManager.cpp
qpid/client/FailoverListener.cpp
qpid/client/Future.cpp
qpid/client/FutureCompletion.cpp
qpid/client/FutureResult.cpp
qpid/client/LoadPlugins.cpp
qpid/client/LocalQueue.cpp
qpid/client/LocalQueueImpl.cpp
qpid/client/Message.cpp
qpid/client/MessageImpl.cpp
qpid/client/MessageListener.cpp
qpid/client/MessageReplayTracker.cpp
qpid/client/QueueOptions.cpp
qpid/client/Results.cpp
qpid/client/SessionBase_0_10.cpp
qpid/client/SessionBase_0_10Access.h
qpid/client/ConnectionAccess.h
qpid/client/SessionImpl.cpp
qpid/client/StateManager.cpp
qpid/client/Subscription.cpp
qpid/client/SubscriptionImpl.cpp
qpid/client/SubscriptionManager.cpp
qpid/client/SubscriptionManagerImpl.cpp
qpid/client/TCPConnector.cpp
)
add_msvc_version (qpidclient library dll)
add_library (qpidclient SHARED ${qpidclient_SOURCES})
target_link_libraries (qpidclient qpidcommon qpidtypes
${ssl_LIBS})
set_target_properties (qpidclient PROPERTIES
VERSION ${qpidclient_version}
SOVERSION ${qpidclient_version_major})
install (TARGETS qpidclient
RUNTIME DESTINATION ${QPID_INSTALL_BINDIR} COMPONENT ${QPID_COMPONENT_CLIENT}
LIBRARY DESTINATION ${QPID_INSTALL_LIBDIR} COMPONENT ${QPID_COMPONENT_CLIENT}
ARCHIVE DESTINATION ${QPID_INSTALL_LIBDIR} COMPONENT ${QPID_COMPONENT_CLIENT})
install (DIRECTORY ../include/qpid
DESTINATION ${QPID_INSTALL_INCLUDEDIR}
COMPONENT ${QPID_COMPONENT_CLIENT_INCLUDE}
PATTERN ".svn" EXCLUDE)
install_pdb (qpidclient ${QPID_COMPONENT_CLIENT})
set (qpidmessaging_SOURCES
${amqpc_SOURCES}
qpid/messaging/AddressImpl.h
qpid/messaging/ConnectionImpl.h
qpid/messaging/ReceiverImpl.h
qpid/messaging/SessionImpl.h
qpid/messaging/SenderImpl.h
qpid/client/amqp0_10/AcceptTracker.h
qpid/client/amqp0_10/AcceptTracker.cpp
qpid/client/amqp0_10/AddressResolution.h
qpid/client/amqp0_10/AddressResolution.cpp
qpid/client/amqp0_10/ConnectionImpl.h
qpid/client/amqp0_10/ConnectionImpl.cpp
qpid/client/amqp0_10/IncomingMessages.h
qpid/client/amqp0_10/IncomingMessages.cpp
qpid/client/amqp0_10/MessageSink.h
qpid/client/amqp0_10/MessageSource.h
qpid/client/amqp0_10/OutgoingMessage.h
qpid/client/amqp0_10/OutgoingMessage.cpp
qpid/client/amqp0_10/ReceiverImpl.h
qpid/client/amqp0_10/ReceiverImpl.cpp
qpid/client/amqp0_10/SessionImpl.h
qpid/client/amqp0_10/SessionImpl.cpp
qpid/client/amqp0_10/SenderImpl.h
qpid/client/amqp0_10/SenderImpl.cpp
qpid/messaging/Address.cpp
qpid/messaging/AddressParser.h
qpid/messaging/AddressParser.cpp # The functions in here are not in the public interface, but qmf uses them
qpid/messaging/Connection.cpp
qpid/messaging/Duration.cpp
qpid/messaging/exceptions.cpp
qpid/messaging/FailoverUpdates.cpp
qpid/messaging/Logger.cpp
qpid/messaging/Message.cpp
qpid/messaging/Receiver.cpp
qpid/messaging/Session.cpp
qpid/messaging/Sender.cpp
#functions from the following are not in the public interface but are used by the AMQP 1.0 client module
qpid/messaging/ConnectionOptions.h
qpid/messaging/ConnectionOptions.cpp
qpid/messaging/MessageImpl.h
qpid/messaging/MessageImpl.cpp
qpid/messaging/Message_io.cpp
qpid/messaging/ProtocolRegistry.cpp
qpid/messaging/amqp/EncodedMessage.h
qpid/messaging/amqp/EncodedMessage.cpp
)
add_msvc_version (qpidmessaging library dll)
add_library (qpidmessaging SHARED ${qpidmessaging_SOURCES})
target_link_libraries (qpidmessaging qpidtypes qpidclient qpidcommon ${Proton_LIBRARIES})
set_target_properties (qpidmessaging PROPERTIES
LINK_FLAGS "${HIDE_SYMBOL_FLAGS} ${LINK_VERSION_SCRIPT_FLAG}"
COMPILE_FLAGS "${HIDE_SYMBOL_FLAGS}"
VERSION ${qpidmessaging_version}
SOVERSION ${qpidmessaging_version_major})
install (TARGETS qpidmessaging
RUNTIME DESTINATION ${QPID_INSTALL_BINDIR} COMPONENT ${QPID_COMPONENT_CLIENT}
LIBRARY DESTINATION ${QPID_INSTALL_LIBDIR} COMPONENT ${QPID_COMPONENT_CLIENT}
ARCHIVE DESTINATION ${QPID_INSTALL_LIBDIR} COMPONENT ${QPID_COMPONENT_CLIENT})
install_pdb (qpidmessaging ${QPID_COMPONENT_CLIENT})
add_api_test(qpidmessaging)
if (MSVC)
# Install the DtcPlugin project and call it qpidxarm.
set(AMQP_WCF_DIR ${qpid-cpp_SOURCE_DIR}/../wcf)
set(qpidxarm_SOURCES ${AMQP_WCF_DIR}/src/Apache/Qpid/DtcPlugin/DtcPlugin.cpp)
if (EXISTS ${qpidxarm_SOURCES})
add_msvc_version (qpidxarm library dll)
add_library (qpidxarm SHARED ${qpidxarm_SOURCES})
target_link_libraries (qpidxarm qpidclient qpidcommon)
install (TARGETS qpidxarm
RUNTIME DESTINATION ${QPID_INSTALL_BINDIR} COMPONENT ${QPID_COMPONENT_CLIENT}
LIBRARY DESTINATION ${QPID_INSTALL_LIBDIR} COMPONENT ${QPID_COMPONENT_CLIENT}
ARCHIVE DESTINATION ${QPID_INSTALL_LIBDIR} COMPONENT ${QPID_COMPONENT_CLIENT})
install_pdb (qpidxarm ${QPID_COMPONENT_CLIENT})
endif (EXISTS ${qpidxarm_SOURCES})
endif (MSVC)
set (qpidbroker_SOURCES
${mgen_broker_cpp}
${qpidbroker_platform_SOURCES}
${acl_SOURCES}
${ssl_SOURCES}
qpid/amqp_0_10/Connection.h
qpid/amqp_0_10/Connection.cpp
qpid/broker/AsyncCommandCallback.h
qpid/broker/AsyncCommandCallback.cpp
qpid/broker/Broker.cpp
qpid/broker/Credit.cpp
qpid/broker/Exchange.cpp
qpid/broker/Fairshare.cpp
qpid/broker/MessageDeque.cpp
qpid/broker/MessageMap.cpp
qpid/broker/ObjectFactory.h
qpid/broker/ObjectFactory.cpp
qpid/broker/PriorityQueue.cpp
qpid/broker/Protocol.cpp
qpid/broker/Queue.cpp
qpid/broker/QueueCleaner.cpp
qpid/broker/QueueListeners.cpp
qpid/broker/FifoDistributor.cpp
qpid/broker/MessageGroupManager.cpp
qpid/broker/PersistableMessage.cpp
qpid/broker/PersistableObject.cpp
qpid/broker/Bridge.cpp
qpid/broker/amqp_0_10/Connection.cpp
qpid/broker/ConnectionHandler.cpp
qpid/broker/DeliverableMessage.cpp
qpid/broker/DeliveryRecord.cpp
qpid/broker/DirectExchange.cpp
qpid/broker/DtxAck.cpp
qpid/broker/DtxBuffer.cpp
qpid/broker/DtxManager.cpp
qpid/broker/DtxTimeout.cpp
qpid/broker/DtxWorkRecord.cpp
qpid/broker/ExchangeRegistry.cpp
qpid/broker/FanOutExchange.cpp
qpid/broker/HeadersExchange.cpp
qpid/broker/IngressCompletion.cpp
qpid/broker/Link.cpp
qpid/broker/LinkRegistry.cpp
qpid/broker/LossyLvq.cpp
qpid/broker/LossyQueue.cpp
qpid/broker/Lvq.cpp
qpid/broker/Message.cpp
qpid/broker/MessageAdapter.cpp
qpid/broker/MessageBuilder.cpp
qpid/broker/MessageStoreModule.cpp
qpid/broker/NameGenerator.cpp
qpid/broker/NullMessageStore.cpp
qpid/broker/PagedQueue.cpp
qpid/broker/QueueBindings.cpp
qpid/broker/QueuedMessage.cpp
qpid/broker/QueueCursor.cpp
qpid/broker/QueueDepth.cpp
qpid/broker/QueueFactory.cpp
qpid/broker/QueueRegistry.cpp
qpid/broker/QueueSettings.cpp
qpid/broker/QueueFlowLimit.cpp
qpid/broker/RecoveryManagerImpl.cpp
qpid/broker/RecoveredEnqueue.cpp
qpid/broker/RecoveredDequeue.cpp
qpid/broker/RetryList.cpp
qpid/broker/SecureConnection.cpp
qpid/broker/Selector.h
qpid/broker/Selector.cpp
qpid/broker/SelectorExpression.h
qpid/broker/SelectorExpression.cpp
qpid/broker/SelectorToken.h
qpid/broker/SelectorToken.cpp
qpid/broker/SelectorValue.h
qpid/broker/SelectorValue.cpp
qpid/broker/SelfDestructQueue.cpp
qpid/broker/SemanticState.h
qpid/broker/SemanticState.cpp
qpid/broker/SessionAdapter.cpp
qpid/broker/SessionState.h
qpid/broker/SessionState.cpp
qpid/broker/SessionManager.h
qpid/broker/SessionManager.cpp
qpid/broker/SessionContext.h
qpid/broker/SessionHandler.h
qpid/broker/SessionHandler.cpp
qpid/broker/System.cpp
qpid/broker/ThresholdAlerts.cpp
qpid/broker/TopicExchange.cpp
qpid/broker/TxAccept.cpp
qpid/broker/TxBuffer.cpp
qpid/broker/TxDequeue.h
qpid/broker/TxDequeue.cpp
qpid/broker/Vhost.cpp
qpid/broker/amqp_0_10/MessageTransfer.cpp
qpid/management/ManagementAgent.cpp
qpid/management/ManagementDirectExchange.cpp
qpid/management/ManagementTopicExchange.cpp
qpid/sys/SocketTransport.cpp
qpid/sys/TCPIOPlugin.cpp
)
add_msvc_version (qpidbroker library dll)
add_library (qpidbroker SHARED ${qpidbroker_SOURCES})
target_link_libraries (qpidbroker qpidcommon qpidtypes
"${sasl_LIB}"
${ssl_server_LIBS})
set_target_properties (qpidbroker PROPERTIES
VERSION ${qpidbroker_version}
SOVERSION ${qpidbroker_version_major})
if (CMAKE_CXX_COMPILER_ID MATCHES XL)
set_target_properties (qpidbroker PROPERTIES LINK_FLAGS -Wl,-bbigtoc)
endif (CMAKE_CXX_COMPILER_ID MATCHES XL)
if (MSVC)
set_target_properties (qpidbroker PROPERTIES COMPILE_FLAGS /wd4290)
endif (MSVC)
install (TARGETS qpidbroker
RUNTIME DESTINATION ${QPID_INSTALL_BINDIR} COMPONENT ${QPID_COMPONENT_BROKER}
LIBRARY DESTINATION ${QPID_INSTALL_LIBDIR} COMPONENT ${QPID_COMPONENT_BROKER}
ARCHIVE DESTINATION ${QPID_INSTALL_LIBDIR} COMPONENT ${QPID_COMPONENT_BROKER})
install_pdb (qpidbroker ${QPID_COMPONENT_BROKER})
set (qpidd_SOURCES
${qpidd_platform_SOURCES}
qpidd.cpp
qpidd.h
)
add_msvc_version (qpidd application exe)
add_executable (qpidd ${qpidd_SOURCES})
target_link_libraries (qpidd qpidbroker qpidcommon)
install (TARGETS qpidd
RUNTIME DESTINATION ${QPID_INSTALL_SBINDIR} COMPONENT ${QPID_COMPONENT_BROKER}
LIBRARY DESTINATION ${QPID_INSTALL_LIBDIR} COMPONENT ${QPID_COMPONENT_BROKER}
ARCHIVE DESTINATION ${QPID_INSTALL_LIBDIR} COMPONENT ${QPID_COMPONENT_BROKER})
if (CPACK_GENERATOR STREQUAL "NSIS")
set (CPACK_NSIS_MENU_LINKS
"qpidd" "Start Qpid Broker")
endif (CPACK_GENERATOR STREQUAL "NSIS")
if (NOT WIN32)
set (qmf2_platform_headers
../include/qmf/posix/EventNotifier.h
)
set (qmf2_platform_sources
qmf/PosixEventNotifier.cpp
qmf/PosixEventNotifierImpl.cpp
)
endif (NOT WIN32)
set (qmf2_HEADERS
../include/qmf/AgentEvent.h
../include/qmf/Agent.h
../include/qmf/AgentSession.h
../include/qmf/ConsoleEvent.h
../include/qmf/ConsoleSession.h
../include/qmf/DataAddr.h
../include/qmf/Data.h
../include/qmf/exceptions.h
../include/qmf/Handle.h
../include/qmf/ImportExport.h
../include/qmf/Query.h
../include/qmf/Schema.h
../include/qmf/SchemaId.h
../include/qmf/SchemaMethod.h
../include/qmf/SchemaProperty.h
../include/qmf/SchemaTypes.h
../include/qmf/Subscription.h
${qmf2_platform_headers}
)
set (qmf2_SOURCES
${qmf2_HEADERS}
qmf/agentCapability.h
qmf/Agent.cpp
qmf/AgentEvent.cpp
qmf/AgentEventImpl.h
qmf/AgentImpl.h
qmf/AgentSession.cpp
qmf/AgentSubscription.cpp
qmf/AgentSubscription.h
qmf/ConsoleEvent.cpp
qmf/ConsoleEventImpl.h
qmf/ConsoleSession.cpp
qmf/ConsoleSessionImpl.h
qmf/constants.cpp
qmf/constants.h
qmf/DataAddr.cpp
qmf/DataAddrImpl.h
qmf/Data.cpp
qmf/DataImpl.h
qmf/EventNotifierImpl.h
qmf/EventNotifierImpl.cpp
qmf/exceptions.cpp
qmf/Expression.cpp
qmf/Expression.h
qmf/Hash.cpp
qmf/Hash.h
qmf/PrivateImplRef.h
qmf/Query.cpp
qmf/QueryImpl.h
qmf/Schema.cpp
qmf/SchemaCache.cpp
qmf/SchemaCache.h
qmf/SchemaId.cpp
qmf/SchemaIdImpl.h
qmf/SchemaImpl.h
qmf/SchemaMethod.cpp
qmf/SchemaMethodImpl.h
qmf/SchemaProperty.cpp
qmf/SchemaPropertyImpl.h
qmf/Subscription.cpp
qmf/SubscriptionImpl.h
${qmf2_platform_sources}
)
add_msvc_version (qmf2 library dll)
add_library (qmf2 SHARED ${qmf2_SOURCES})
target_link_libraries (qmf2 qpidmessaging qpidtypes qpidclient qpidcommon)
set_target_properties (qmf2 PROPERTIES
VERSION ${qmf2_version}
SOVERSION ${qmf2_version_major})
install (TARGETS qmf2 OPTIONAL
RUNTIME DESTINATION ${QPID_INSTALL_BINDIR} COMPONENT ${QPID_COMPONENT_QMF}
LIBRARY DESTINATION ${QPID_INSTALL_LIBDIR} COMPONENT ${QPID_COMPONENT_QMF}
ARCHIVE DESTINATION ${QPID_INSTALL_LIBDIR} COMPONENT ${QPID_COMPONENT_QMF})
install (FILES ${qmf2_HEADERS}
DESTINATION ${QPID_INSTALL_INCLUDEDIR}/qmf
COMPONENT ${QPID_COMPONENT_QMF})
install_pdb (qmf2 ${QPID_COMPONENT_QMF})
#
# Legacy store
#
include (legacystore.cmake)
#
# Linear store
#
include (linearstore.cmake)
# Now create the config file from all the info learned above.
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake
${CMAKE_CURRENT_BINARY_DIR}/config.h)
add_subdirectory(qpid/store)
add_subdirectory(tests)
add_subdirectory(tests/legacystore)
add_subdirectory(tests/linearstore)
# Support for pkg-config
# 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 ${QPID_INSTALL_LIBDIR})
set_absolute_install_path (includedir ${QPID_INSTALL_INCLUDEDIR})
set (VERSION ${QPID_VERSION_FULL})
#add_custom_target(pkgconfig ALL echo DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/qpid.pc)
#add_dependencies(pkgconfig ${CMAKE_CURRENT_BINARY_DIR}/qmf2.pc)
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 ${QPID_INSTALL_LIBDIR}/pkgconfig
COMPONENT ${QPID_COMPONENT_COMMON})
if (DEFINED CMAKE_IMPORT_LIBRARY_PREFIX)
set(QPIDMSGLIB ${CMAKE_IMPORT_LIBRARY_PREFIX}qpidmessaging${CMAKE_IMPORT_LIBRARY_SUFFIX})
set(QPIDMSGLIBDEBUG ${CMAKE_IMPORT_LIBRARY_PREFIX}qpidmessaging${CMAKE_DEBUG_POSTFIX}${CMAKE_IMPORT_LIBRARY_SUFFIX})
set(QPIDTYPESLIB ${CMAKE_IMPORT_LIBRARY_PREFIX}qpidtypes${CMAKE_IMPORT_LIBRARY_SUFFIX})
set(QPIDTYPESLIBDEBUG ${CMAKE_IMPORT_LIBRARY_PREFIX}qpidtypes${CMAKE_DEBUG_POSTFIX}${CMAKE_IMPORT_LIBRARY_SUFFIX})
else ()
set(QPIDMSGLIB ${CMAKE_SHARED_LIBRARY_PREFIX}qpidmessaging${CMAKE_SHARED_LIBRARY_SUFFIX})
set(QPIDMSGLIBDEBUG ${CMAKE_SHARED_LIBRARY_PREFIX}qpidmessaging${CMAKE_DEBUG_POSTFIX}${CMAKE_SHARED_LIBRARY_SUFFIX})
set(QPIDTYPESLIB ${CMAKE_SHARED_LIBRARY_PREFIX}qpidtypes${CMAKE_SHARED_LIBRARY_SUFFIX})
set(QPIDTYPESLIBDEBUG ${CMAKE_SHARED_LIBRARY_PREFIX}qpidtypes${CMAKE_DEBUG_POSTFIX}${CMAKE_SHARED_LIBRARY_SUFFIX})
endif ()
configure_file(QpidConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/QpidConfig.cmake @ONLY)
configure_file(QpidConfigVersion.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/QpidConfigVersion.cmake @ONLY)
install (FILES
${CMAKE_CURRENT_BINARY_DIR}/QpidConfig.cmake
${CMAKE_CURRENT_BINARY_DIR}/QpidConfigVersion.cmake
DESTINATION ${QPID_INSTALL_LIBDIR}/cmake/Qpid
COMPONENT ${QPID_COMPONENT_COMMON})