# # 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})