| # |
| # 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. |
| # |
| # |
| # Cluster library CMake fragment, to be included in CMakeLists.txt |
| # |
| |
| # Optional cluster support. Requires CPG; if building it, can optionally |
| # include CMAN support as well. |
| |
| include(CheckIncludeFiles) |
| include(CheckLibraryExists) |
| |
| set(LIBCPG_PATH /usr/lib/openais /usr/lib64/openais /usr/lib/corosync /usr/lib64/corosync CACHE STRING "Default locations for libcpg (cluster library)" ) |
| find_library(LIBCPG cpg ${LIBCPG_PATH}) |
| if (LIBCPG) |
| CHECK_LIBRARY_EXISTS (${LIBCPG} cpg_local_get "" HAVE_LIBCPG) |
| CHECK_INCLUDE_FILES (openais/cpg.h HAVE_OPENAIS_CPG_H) |
| CHECK_INCLUDE_FILES (corosync/cpg.h HAVE_COROSYNC_CPG_H) |
| endif (LIBCPG) |
| |
| set (cluster_default ${cluster_force}) |
| if (CMAKE_SYSTEM_NAME STREQUAL Windows) |
| else (CMAKE_SYSTEM_NAME STREQUAL Windows) |
| if (HAVE_LIBCPG) |
| if (HAVE_OPENAIS_CPG_H OR HAVE_COROSYNC_CPG_H) |
| set (cluster_default ON) |
| endif (HAVE_OPENAIS_CPG_H OR HAVE_COROSYNC_CPG_H) |
| endif (HAVE_LIBCPG) |
| endif (CMAKE_SYSTEM_NAME STREQUAL Windows) |
| |
| option(BUILD_CLUSTER "Build with CPG support for clustering" ${cluster_default}) |
| if (BUILD_CLUSTER) |
| |
| if (NOT HAVE_LIBCPG) |
| message(FATAL_ERROR "libcpg not found, install openais-devel or corosync-devel") |
| endif (NOT HAVE_LIBCPG) |
| if (NOT HAVE_OPENAIS_CPG_H AND NOT HAVE_COROSYNC_CPG_H) |
| message(FATAL_ERROR "cpg.h not found, install openais-devel or corosync-devel") |
| endif (NOT HAVE_OPENAIS_CPG_H AND NOT HAVE_COROSYNC_CPG_H) |
| |
| CHECK_LIBRARY_EXISTS (cman cman_is_quorate "" HAVE_LIBCMAN) |
| CHECK_INCLUDE_FILES (libcman.h HAVE_LIBCMAN_H) |
| |
| set(cluster_quorum_default ${cluster_quorum_force}) |
| if (HAVE_LIBCMAN AND HAVE_LIBCMAN_H) |
| set(cluster_quorum_default ON) |
| endif (HAVE_LIBCMAN AND HAVE_LIBCMAN_H) |
| |
| option(BUILD_CLUSTER_QUORUM "Include libcman quorum service integration" ${cluster_quorum_default}) |
| if (BUILD_CLUSTER_QUORUM) |
| if (NOT HAVE_LIBCMAN) |
| message(FATAL_ERROR "libcman not found, install cman-devel or cmanlib-devel") |
| endif (NOT HAVE_LIBCMAN) |
| if (NOT HAVE_LIBCMAN_H) |
| message(FATAL_ERROR "libcman.h not found, install cman-devel or cmanlib-devel") |
| endif (NOT HAVE_LIBCMAN_H) |
| |
| set (CMAN_SOURCES qpid/cluster/Quorum_cman.h qpid/cluster/Quorum_cman.cpp) |
| set (CMAN_LIB cman) |
| else (BUILD_CLUSTER_QUORUM) |
| set (CMAN_SOURCES qpid/cluster/Quorum_null.h) |
| endif (BUILD_CLUSTER_QUORUM) |
| |
| set (cluster_SOURCES |
| ${CMAN_SOURCES} |
| qpid/cluster/Cluster.cpp |
| qpid/cluster/Cluster.h |
| qpid/cluster/ClusterTimer.cpp |
| qpid/cluster/ClusterTimer.h |
| qpid/cluster/Decoder.cpp |
| qpid/cluster/Decoder.h |
| qpid/cluster/PollableQueue.h |
| qpid/cluster/ClusterMap.cpp |
| qpid/cluster/ClusterMap.h |
| qpid/cluster/ClusterPlugin.cpp |
| qpid/cluster/ClusterSettings.h |
| qpid/cluster/Connection.cpp |
| qpid/cluster/Connection.h |
| qpid/cluster/ConnectionCodec.cpp |
| qpid/cluster/ConnectionCodec.h |
| qpid/cluster/Cpg.cpp |
| qpid/cluster/Cpg.h |
| qpid/cluster/Dispatchable.h |
| qpid/cluster/UpdateClient.cpp |
| qpid/cluster/UpdateClient.h |
| qpid/cluster/RetractClient.cpp |
| qpid/cluster/RetractClient.h |
| qpid/cluster/ErrorCheck.cpp |
| qpid/cluster/ErrorCheck.h |
| qpid/cluster/Event.cpp |
| qpid/cluster/Event.h |
| qpid/cluster/EventFrame.h |
| qpid/cluster/EventFrame.cpp |
| qpid/cluster/ExpiryPolicy.h |
| qpid/cluster/ExpiryPolicy.cpp |
| qpid/cluster/FailoverExchange.cpp |
| qpid/cluster/FailoverExchange.h |
| qpid/cluster/UpdateExchange.cpp |
| qpid/cluster/UpdateExchange.h |
| qpid/cluster/UpdateReceiver.h |
| qpid/cluster/LockedConnectionMap.h |
| qpid/cluster/Multicaster.cpp |
| qpid/cluster/Multicaster.h |
| qpid/cluster/McastFrameHandler.h |
| qpid/cluster/NoOpConnectionOutputHandler.h |
| qpid/cluster/Numbering.h |
| qpid/cluster/OutputInterceptor.cpp |
| qpid/cluster/OutputInterceptor.h |
| qpid/cluster/PollerDispatch.cpp |
| qpid/cluster/PollerDispatch.h |
| qpid/cluster/ProxyInputHandler.h |
| qpid/cluster/Quorum.h |
| qpid/cluster/InitialStatusMap.h |
| qpid/cluster/InitialStatusMap.cpp |
| qpid/cluster/MemberSet.h |
| qpid/cluster/MemberSet.cpp |
| qpid/cluster/types.h |
| qpid/cluster/SecureConnectionFactory.h |
| qpid/cluster/SecureConnectionFactory.cpp |
| qpid/cluster/StoreStatus.h |
| qpid/cluster/StoreStatus.cpp |
| qpid/cluster/UpdateDataExchange.h |
| qpid/cluster/UpdateDataExchange.cpp |
| ) |
| |
| add_library (cluster MODULE ${cluster_SOURCES}) |
| target_link_libraries (cluster ${LIBCPG} ${CMAN_LIB} qpidbroker qpidclient ${Boost_FILESYSTEM_LIBRARY} ${Boost_SYSTEM_LIBRARY}) |
| set_target_properties (cluster PROPERTIES PREFIX "") |
| |
| # Create a second shared library for linking with test executables, |
| # cmake will not allow a module to be linked with an executable. |
| add_library (cluster_shared SHARED ${cluster_SOURCES}) |
| target_link_libraries (cluster_shared ${LIBCPG} ${CMAN_LIB} qpidbroker qpidclient ${Boost_FILESYSTEM_LIBRARY}) |
| |
| if (CMAKE_COMPILER_IS_GNUCXX) |
| set_target_properties(cluster PROPERTIES |
| LINK_FLAGS "-Wl,--no-undefined -pthread") |
| endif (CMAKE_COMPILER_IS_GNUCXX) |
| |
| install (TARGETS cluster |
| DESTINATION ${QPIDD_MODULE_DIR} |
| COMPONENT ${QPID_COMPONENT_BROKER}) |
| |
| add_library (watchdog MODULE qpid/cluster/WatchDogPlugin.cpp) |
| set_target_properties (watchdog PROPERTIES PREFIX "") |
| |
| add_executable(qpidd_watchdog qpid/cluster/qpidd_watchdog.cpp) |
| |
| endif (BUILD_CLUSTER) |
| |
| # Distribute all sources. |
| #EXTRA_DIST += qpid/cluster/Quorum_cman.h qpid/cluster/Quorum_cman.cpp qpid/cluster/Quorum_null.h |