# # 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/Endian.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} LIBRARY DESTINATION ${QPID_INSTALL_LIBDIR} 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} LIBRARY DESTINATION ${QPID_INSTALL_LIBDIR} 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} LIBRARY DESTINATION ${QPID_INSTALL_LIBDIR} 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} LIBRARY DESTINATION ${QPID_INSTALL_LIBDIR} 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} LIBRARY DESTINATION ${QPID_INSTALL_LIBDIR} 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} LIBRARY DESTINATION ${QPID_INSTALL_LIBDIR} 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} LIBRARY DESTINATION ${QPID_INSTALL_LIBDIR} 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} LIBRARY DESTINATION ${QPID_INSTALL_LIBDIR} 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})