Skip to content

Commit dc97e7f

Browse files
committed
Merge bitcoin#30903: cmake: Add FindZeroMQ module
915640e depends: zeromq: don't install .pc files and remove patches for them (Cory Fields) 6b8a744 cmake: Add `FindZeroMQ` module (Hennadii Stepanov) Pull request description: This PR introduces the `FindZeroMQ` module, which first attempts to find the `libzmq` library using CMake's `find_package()` and falls back to `pkg_check_modules()` if unsuccessful. Addresses bitcoin#30876 for the ZeroMQ package. ACKs for top commit: fanquake: ACK 915640e Tree-SHA512: 2f17bae21be5d3f280a13425d22f5d1b2e23837a8aaf5ec89c433767509de030a42d598b261e102bdb5b860d8ede98013c124c3d25e081e956d4ee3a81b2584f
2 parents da10e0b + 915640e commit dc97e7f

File tree

6 files changed

+47
-77
lines changed

6 files changed

+47
-77
lines changed

CMakeLists.txt

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -123,16 +123,7 @@ option(WITH_CCACHE "Attempt to use ccache for compiling." ON)
123123

124124
option(WITH_ZMQ "Enable ZMQ notifications." OFF)
125125
if(WITH_ZMQ)
126-
if(VCPKG_TARGET_TRIPLET)
127-
find_package(ZeroMQ CONFIG REQUIRED)
128-
else()
129-
# The ZeroMQ project has provided config files since v4.2.2.
130-
# However, mainstream distributions do not yet provide CMake
131-
# config files for ZeroMQ packages. If they do in the future,
132-
# find_package(ZeroMQ) may be used instead.
133-
find_package(PkgConfig REQUIRED)
134-
pkg_check_modules(libzmq REQUIRED IMPORTED_TARGET libzmq>=4)
135-
endif()
126+
find_package(ZeroMQ 4.0.0 MODULE REQUIRED)
136127
endif()
137128

138129
option(WITH_USDT "Enable tracepoints for Userspace, Statically Defined Tracing." OFF)

cmake/module/FindZeroMQ.cmake

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Copyright (c) 2024-present The Bitcoin Core developers
2+
# Distributed under the MIT software license, see the accompanying
3+
# file COPYING or https://opensource.org/license/mit/.
4+
5+
#[=======================================================================[
6+
FindZeroMQ
7+
----------
8+
9+
Finds the ZeroMQ headers and library.
10+
11+
This is a wrapper around find_package()/pkg_check_modules() commands that:
12+
- facilitates searching in various build environments
13+
- prints a standard log message
14+
15+
#]=======================================================================]
16+
17+
include(FindPackageHandleStandardArgs)
18+
find_package(ZeroMQ ${ZeroMQ_FIND_VERSION} NO_MODULE QUIET)
19+
if(ZeroMQ_FOUND)
20+
find_package_handle_standard_args(ZeroMQ
21+
REQUIRED_VARS ZeroMQ_DIR
22+
VERSION_VAR ZeroMQ_VERSION
23+
)
24+
if(TARGET libzmq)
25+
add_library(zeromq ALIAS libzmq)
26+
elseif(TARGET libzmq-static)
27+
add_library(zeromq ALIAS libzmq-static)
28+
endif()
29+
mark_as_advanced(ZeroMQ_DIR)
30+
else()
31+
find_package(PkgConfig REQUIRED)
32+
pkg_check_modules(libzmq QUIET
33+
IMPORTED_TARGET
34+
libzmq>=${ZeroMQ_FIND_VERSION}
35+
)
36+
find_package_handle_standard_args(ZeroMQ
37+
REQUIRED_VARS libzmq_LIBRARY_DIRS
38+
VERSION_VAR libzmq_VERSION
39+
)
40+
add_library(zeromq ALIAS PkgConfig::libzmq)
41+
endif()

depends/packages/zeromq.mk

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,13 @@ $(package)_download_path=https://github.com/zeromq/libzmq/releases/download/v$($
44
$(package)_file_name=$(package)-$($(package)_version).tar.gz
55
$(package)_sha256_hash=6653ef5910f17954861fe72332e68b03ca6e4d9c7160eb3a8de5a5a913bfab43
66
$(package)_build_subdir=build
7-
$(package)_patches = remove_libstd_link.patch
8-
$(package)_patches += macos_mktemp_check.patch
7+
$(package)_patches = macos_mktemp_check.patch
98
$(package)_patches += builtin_sha1.patch
109
$(package)_patches += fix_have_windows.patch
1110
$(package)_patches += openbsd_kqueue_headers.patch
1211
$(package)_patches += cmake_minimum.patch
1312
$(package)_patches += cacheline_undefined.patch
1413
$(package)_patches += no_librt.patch
15-
$(package)_patches += fix_mingw_link.patch
1614

1715
define $(package)_set_vars
1816
$(package)_config_opts := -DCMAKE_BUILD_TYPE=None -DWITH_DOCS=OFF -DWITH_LIBSODIUM=OFF
@@ -24,15 +22,13 @@ define $(package)_set_vars
2422
endef
2523

2624
define $(package)_preprocess_cmds
27-
patch -p1 < $($(package)_patch_dir)/remove_libstd_link.patch && \
2825
patch -p1 < $($(package)_patch_dir)/macos_mktemp_check.patch && \
2926
patch -p1 < $($(package)_patch_dir)/builtin_sha1.patch && \
3027
patch -p1 < $($(package)_patch_dir)/cacheline_undefined.patch && \
3128
patch -p1 < $($(package)_patch_dir)/fix_have_windows.patch && \
3229
patch -p1 < $($(package)_patch_dir)/openbsd_kqueue_headers.patch && \
3330
patch -p1 < $($(package)_patch_dir)/cmake_minimum.patch && \
34-
patch -p1 < $($(package)_patch_dir)/no_librt.patch && \
35-
patch -p1 < $($(package)_patch_dir)/fix_mingw_link.patch
31+
patch -p1 < $($(package)_patch_dir)/no_librt.patch
3632
endef
3733

3834
define $(package)_config_cmds
@@ -48,5 +44,6 @@ define $(package)_stage_cmds
4844
endef
4945

5046
define $(package)_postprocess_cmds
51-
rm -rf share
47+
rm -rf share && \
48+
rm -rf lib/pkgconfig
5249
endef

depends/patches/zeromq/fix_mingw_link.patch

Lines changed: 0 additions & 31 deletions
This file was deleted.

depends/patches/zeromq/remove_libstd_link.patch

Lines changed: 0 additions & 25 deletions
This file was deleted.

src/zmq/CMakeLists.txt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,10 @@ add_library(bitcoin_zmq STATIC EXCLUDE_FROM_ALL
1212
target_compile_definitions(bitcoin_zmq
1313
INTERFACE
1414
ENABLE_ZMQ=1
15-
PRIVATE
16-
$<$<AND:$<PLATFORM_ID:Windows>,$<CXX_COMPILER_ID:GNU>>:ZMQ_STATIC>
1715
)
1816
target_link_libraries(bitcoin_zmq
1917
PRIVATE
2018
core_interface
2119
univalue
22-
$<TARGET_NAME_IF_EXISTS:libzmq>
23-
$<TARGET_NAME_IF_EXISTS:PkgConfig::libzmq>
20+
zeromq
2421
)

0 commit comments

Comments
 (0)