From 470553700221d63c213b996dc766f939ab09f4dc Mon Sep 17 00:00:00 2001 From: Tim Wojtulewicz Date: Fri, 15 Aug 2025 16:55:33 -0700 Subject: [PATCH] Enable building ZeroMQ support on Windows --- ci/windows/build.cmd | 2 +- src/cluster/backend/CMakeLists.txt | 12 ++++++++---- src/cluster/backend/zeromq/CMakeLists.txt | 8 +++++--- vcpkg.json | 2 ++ 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/ci/windows/build.cmd b/ci/windows/build.cmd index be1c92eede..a539846c6f 100644 --- a/ci/windows/build.cmd +++ b/ci/windows/build.cmd @@ -7,5 +7,5 @@ call "c:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliar mkdir build cd build -cmake.exe .. -DCMAKE_BUILD_TYPE=release -DVCPKG_TARGET_TRIPLET="x64-windows-static" -DENABLE_ZEEK_UNIT_TESTS=yes -DENABLE_CLUSTER_BACKEND_ZEROMQ=no -G Ninja +cmake.exe .. -DCMAKE_BUILD_TYPE=release -DVCPKG_TARGET_TRIPLET="x64-windows-static" -DENABLE_ZEEK_UNIT_TESTS=yes -G Ninja cmake.exe --build . diff --git a/src/cluster/backend/CMakeLists.txt b/src/cluster/backend/CMakeLists.txt index e577282233..648dd8e265 100644 --- a/src/cluster/backend/CMakeLists.txt +++ b/src/cluster/backend/CMakeLists.txt @@ -1,7 +1,3 @@ -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), @@ -9,6 +5,14 @@ find_package(ZeroMQ) option(ENABLE_CLUSTER_BACKEND_ZEROMQ "Enable the ZeroMQ cluster backend" ON) if (ENABLE_CLUSTER_BACKEND_ZEROMQ) + + if (MSVC) + find_package(ZeroMQ CONFIG REQUIRED) + else () + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/zeromq/cmake") + find_package(ZeroMQ REQUIRED) + endif () + if (NOT ZeroMQ_FOUND) message(FATAL_ERROR "ENABLE_CLUSTER_BACKEND_ZEROMQ set, but ZeroMQ library not available") endif () diff --git a/src/cluster/backend/zeromq/CMakeLists.txt b/src/cluster/backend/zeromq/CMakeLists.txt index 7f97a7878e..f7c8678f73 100644 --- a/src/cluster/backend/zeromq/CMakeLists.txt +++ b/src/cluster/backend/zeromq/CMakeLists.txt @@ -1,6 +1,8 @@ -list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") - -find_package(ZeroMQ REQUIRED) +# On MSVC, ZeroMQ_LIBRARIES may not be set by find_package() earlier in the +# process. If it isn't, set it to the static target generated by vcpkg. +if (MSVC AND NOT ZeroMQ_LIBRARIES) + set(ZeroMQ_LIBRARIES libzmq-static) +endif () zeek_add_plugin( Zeek Cluster_Backend_ZeroMQ diff --git a/vcpkg.json b/vcpkg.json index e680e87aca..82200aea71 100644 --- a/vcpkg.json +++ b/vcpkg.json @@ -3,7 +3,9 @@ "version-string": "latest", "dependencies": [ "c-ares", + "cppzmq", "libpcap", + "zeromq", "zlib" ] }