From 732b4e97271b00d5a5859b45386b1b18ad787fbf Mon Sep 17 00:00:00 2001 From: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> Date: Sun, 21 Apr 2024 19:28:05 +0100 Subject: [PATCH] cmake [KILL 3-STATE]: Switch `WITH_ZMQ` to boolean w/ default OFF --- CMakeLists.txt | 16 +++++++++++++++- cmake/optional.cmake | 28 ---------------------------- depends/toolchain.cmake.in | 6 ++++-- src/CMakeLists.txt | 2 +- src/zmq/CMakeLists.txt | 4 +++- 5 files changed, 23 insertions(+), 33 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a7e877af81578..e773e86c88710 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,7 +81,21 @@ if(WITH_MINIUPNPC) find_package(MiniUPnPc MODULE REQUIRED) endif() -tristate_option(WITH_ZMQ "Enable ZMQ notifications." "if libzmq is found." AUTO) +option(WITH_ZMQ "Enable ZMQ notifications." OFF) +if(WITH_ZMQ) + if(VCPKG_TARGET_TRIPLET) + find_package(ZeroMQ CONFIG REQUIRED) + else() + # The ZeroMQ project has provided config files since v4.2.2. + # TODO: Switch to find_package(ZeroMQ) at some point in the future. + include(CrossPkgConfig) + cross_pkg_check_modules(libzmq REQUIRED IMPORTED_TARGET libzmq>=4) + target_link_libraries(PkgConfig::libzmq INTERFACE + $<$:iphlpapi;ws2_32> + ) + endif() +endif() + tristate_option(WITH_USDT "Enable tracepoints for Userspace, Statically Defined Tracing." "if sys/sdt.h is found." diff --git a/cmake/optional.cmake b/cmake/optional.cmake index f998aab16868d..8819a493b9eeb 100644 --- a/cmake/optional.cmake +++ b/cmake/optional.cmake @@ -50,34 +50,6 @@ if(CCACHE) mark_as_advanced(CCACHE_COMMAND) endif() -if(WITH_ZMQ) - if(MSVC) - find_package(ZeroMQ CONFIG) - else() - # The ZeroMQ project has provided config files since v4.2.2. - # TODO: Switch to find_package(ZeroMQ) at some point in the future. - include(CrossPkgConfig) - cross_pkg_check_modules(libzmq IMPORTED_TARGET libzmq>=4) - if(libzmq_FOUND AND TARGET PkgConfig::libzmq) - target_compile_definitions(PkgConfig::libzmq INTERFACE - $<$:ZMQ_STATIC> - ) - target_link_libraries(PkgConfig::libzmq INTERFACE - $<$:iphlpapi;ws2_32> - ) - endif() - endif() - if(TARGET libzmq OR TARGET PkgConfig::libzmq) - set(WITH_ZMQ ON) - elseif(WITH_ZMQ STREQUAL "AUTO") - message(WARNING "libzmq not found, disabling.\n" - "To skip libzmq check, use \"-DWITH_ZMQ=OFF\".\n") - set(WITH_ZMQ OFF) - else() - message(FATAL_ERROR "libzmq requested, but not found.") - endif() -endif() - if(WITH_USDT) find_path(SystemTap_INCLUDE_DIR NAMES sys/sdt.h diff --git a/depends/toolchain.cmake.in b/depends/toolchain.cmake.in index 86a97a5c08d16..bda59d32bf328 100644 --- a/depends/toolchain.cmake.in +++ b/depends/toolchain.cmake.in @@ -122,8 +122,10 @@ if(NOT WITH_QRENCODE AND "@no_qr@" STREQUAL "1") set(WITH_QRENCODE OFF CACHE STRING "Enable QR code support.") endif() -if(NOT WITH_ZMQ AND "@no_zmq@" STREQUAL "1") - set(WITH_ZMQ OFF CACHE STRING "Enable ZMQ notifications.") +if("@no_zmq@") + set(WITH_ZMQ OFF CACHE BOOL "") +else() + set(WITH_ZMQ ON CACHE BOOL "") endif() if(NOT ENABLE_WALLET AND "@no_wallet@" STREQUAL "1") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2100664b4c200..6409965a1f3c0 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -68,7 +68,7 @@ target_link_libraries(bitcoin_consensus ) if(WITH_ZMQ) - add_subdirectory(zmq EXCLUDE_FROM_ALL) + add_subdirectory(zmq) endif() # Home for common functionality shared by different executables and libraries. diff --git a/src/zmq/CMakeLists.txt b/src/zmq/CMakeLists.txt index 61fdaa819ff1e..8ecb236b46003 100644 --- a/src/zmq/CMakeLists.txt +++ b/src/zmq/CMakeLists.txt @@ -2,7 +2,7 @@ # Distributed under the MIT software license, see the accompanying # file COPYING or https://opensource.org/license/mit/. -add_library(bitcoin_zmq STATIC +add_library(bitcoin_zmq STATIC EXCLUDE_FROM_ALL zmqabstractnotifier.cpp zmqnotificationinterface.cpp zmqpublishnotifier.cpp @@ -12,6 +12,8 @@ add_library(bitcoin_zmq STATIC target_compile_definitions(bitcoin_zmq INTERFACE ENABLE_ZMQ=1 + PRIVATE + $<$,$>:ZMQ_STATIC> ) target_link_libraries(bitcoin_zmq PRIVATE