diff --git a/src/cluster/backend/CMakeLists.txt b/src/cluster/backend/CMakeLists.txt index 0e5d704186..109bdc411f 100644 --- a/src/cluster/backend/CMakeLists.txt +++ b/src/cluster/backend/CMakeLists.txt @@ -1,4 +1,17 @@ -option(ENABLE_CLUSTER_BACKEND_ZEROMQ "Enable the ZeroMQ cluster backend" ON) +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/zeromq/cmake") + +find_package(ZeroMQ) + +# Default to building ZeroMQ only if ZeroMQ was found. +# +# If a user enabled the cluster backend explicitly (-D ENABLE_CLUSTER_BACKEND_ZEROMQ:bool=ON), +# but ZeroMQ wasn' found, hard bail. +option(ENABLE_CLUSTER_BACKEND_ZEROMQ "Enable the ZeroMQ cluster backend" ${ZeroMQ_FOUND}) + if (ENABLE_CLUSTER_BACKEND_ZEROMQ) + if (NOT ZeroMQ_FOUND) + message(FATAL_ERROR "ENABLE_CLUSTER_BACKEND_ZEROMQ set, but ZeroMQ library not available") + endif () + add_subdirectory(zeromq) endif () diff --git a/src/cluster/backend/zeromq/CMakeLists.txt b/src/cluster/backend/zeromq/CMakeLists.txt index a15923445a..9895f4faf2 100644 --- a/src/cluster/backend/zeromq/CMakeLists.txt +++ b/src/cluster/backend/zeromq/CMakeLists.txt @@ -2,8 +2,6 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") find_package(ZeroMQ REQUIRED) -message(STATUS "zeromq: ${ZeroMQ_LIBRARIES} ${ZeroMQ_INCLUDE_DIRS}") - zeek_add_plugin( Zeek Cluster_Backend_ZeroMQ diff --git a/src/cluster/backend/zeromq/cmake/FindZeroMQ.cmake b/src/cluster/backend/zeromq/cmake/FindZeroMQ.cmake index 964f6a457d..92d1e94890 100644 --- a/src/cluster/backend/zeromq/cmake/FindZeroMQ.cmake +++ b/src/cluster/backend/zeromq/cmake/FindZeroMQ.cmake @@ -1,5 +1,7 @@ include(FindPackageHandleStandardArgs) +set(AUXIL_CPPZMQ_DIR ${CMAKE_CURRENT_LIST_DIR}/../auxil/cppzmq) + find_library(ZeroMQ_LIBRARY NAMES zmq HINTS ${ZeroMQ_ROOT_DIR}/lib) find_path(ZeroMQ_INCLUDE_DIR NAMES zmq.h HINTS ${ZeroMQ_ROOT_DIR}/include) @@ -31,18 +33,14 @@ endif () if (NOT ZeroMQ_CPP_VERSION) # Probably no zmq.hpp file, use the version from auxil - set(ZeroMQ_CPP_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/auxil/cppzmq" - CACHE FILEPATH "Include path for cppzmq" FORCE) + set(ZeroMQ_CPP_INCLUDE_DIR ${AUXIL_CPPZMQ_DIR} CACHE FILEPATH "Include path for cppzmq" FORCE) set_cppzmq_version() elseif (ZeroMQ_CPP_VERSION VERSION_LESS "4.9.0") message(STATUS "Found old cppzmq version ${ZeroMQ_CPP_VERSION}, using bundled version") - set(ZeroMQ_CPP_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/auxil/cppzmq" - CACHE FILEPATH "Include path for cppzmq" FORCE) + set(ZeroMQ_CPP_INCLUDE_DIR ${AUXIL_CPPZMQ_DIR} CACHE FILEPATH "Include path for cppzmq" FORCE) set_cppzmq_version() endif () -message(STATUS "Using cppzmq ${ZeroMQ_CPP_VERSION} from ${ZeroMQ_CPP_INCLUDE_DIR}") - find_package_handle_standard_args( ZeroMQ FOUND_VAR ZeroMQ_FOUND REQUIRED_VARS ZeroMQ_LIBRARY ZeroMQ_INCLUDE_DIR ZeroMQ_CPP_INCLUDE_DIR ZeroMQ_CPP_VERSION)