summaryrefslogtreecommitdiff
path: root/qpid/cpp/src/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/cpp/src/CMakeLists.txt')
-rw-r--r--qpid/cpp/src/CMakeLists.txt1327
1 files changed, 1327 insertions, 0 deletions
diff --git a/qpid/cpp/src/CMakeLists.txt b/qpid/cpp/src/CMakeLists.txt
new file mode 100644
index 0000000000..8e2b5b73e8
--- /dev/null
+++ b/qpid/cpp/src/CMakeLists.txt
@@ -0,0 +1,1327 @@
+#
+# 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)
+
+# Capture specified C++ compiler (if any)
+if (NOT ENV_CXX)
+ if (NOT "$ENV{CXX}" STREQUAL "")
+ set(CXX $ENV{CXX})
+ else(NOT "$ENV{CXX}" STREQUAL "")
+ set(CXX ${CMAKE_CXX_COMPILER})
+ endif(NOT "$ENV{CXX}" STREQUAL "")
+ set(ENV_CXX ${CXX} CACHE INTERNAL "C++ compiler specified in cmake environment")
+endif (NOT ENV_CXX)
+
+include(CheckFunctionExists)
+include(CheckIncludeFileCXX)
+include(CheckIncludeFiles)
+include(CheckIncludeFileCXX)
+include(CheckLibraryExists)
+include(CheckSymbolExists)
+include(CheckSizetDistinct)
+
+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
+
+# Add a test to check the exported library API against expected API symbols
+MACRO (add_api_test libname)
+ if (NOT CMAKE_SYSTEM_NAME STREQUAL Windows AND BUILD_TESTING)
+ add_test(api_check_${libname} ${CMAKE_CURRENT_SOURCE_DIR}/check-abi "${ENV_CXX}" ${CMAKE_CURRENT_BINARY_DIR}/lib${libname}.so ${CMAKE_CURRENT_SOURCE_DIR}/lib${libname}-api-symbols.txt)
+ endif (NOT CMAKE_SYSTEM_NAME STREQUAL Windows AND BUILD_TESTING)
+ENDMACRO (add_api_test libname)
+
+
+# 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)
+
+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.
+# 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")
+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 ""
+ COMPILE_DEFINITIONS _IN_QPID_BROKER)
+ install (TARGETS xml
+ DESTINATION ${QPIDD_MODULE_DIR}
+ COMPONENT ${QPID_COMPONENT_BROKER})
+
+ set(xml_tests XmlClientSessionTest)
+
+endif (BUILD_XML)
+
+# Build the ACL plugin
+set (acl_default ON)
+
+option(BUILD_ACL "Build ACL enforcement broker plugin" ${acl_default})
+
+if (BUILD_ACL)
+ 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
+ )
+endif (BUILD_ACL)
+
+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/PrimaryTxObserver.cpp
+ qpid/ha/PrimaryTxObserver.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/TxReplicatingSubscription.cpp
+ qpid/ha/TxReplicatingSubscription.h
+ qpid/ha/TxReplicator.cpp
+ qpid/ha/TxReplicator.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 ""
+ COMPILE_DEFINITIONS _IN_QPID_BROKER)
+ 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}
+ COMPILE_DEFINITIONS _IN_QPID_BROKER)
+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)
+set_target_properties (qpidd PROPERTIES COMPILE_DEFINITIONS _IN_QPID_BROKER)
+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})
+