Merge bitcoin/bitcoin#30903: cmake: Add FindZeroMQ module

915640e191 depends: zeromq: don't install .pc files and remove patches for them (Cory Fields)
6b8a74463b 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 https://github.com/bitcoin/bitcoin/issues/30876 for the ZeroMQ package.

ACKs for top commit:
  fanquake:
    ACK 915640e191

Tree-SHA512: 2f17bae21be5d3f280a13425d22f5d1b2e23837a8aaf5ec89c433767509de030a42d598b261e102bdb5b860d8ede98013c124c3d25e081e956d4ee3a81b2584f
This commit is contained in:
merge-script committed 2024-10-29 16:21:07 +00:00
commit dc97e7f6db
6 files changed
+47 -77

No files matched your search

@@ -1,31 +0,0 @@
Fix CMake-generated `libzmq.pc` file
This change mirrors the Autotools-based build system behavior for
cross-compiling for Windows with static linking.
See https://github.com/zeromq/libzmq/pull/4706.
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 03462271..0315e606 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -546,12 +546,18 @@ if(ZMQ_HAVE_WINDOWS)
# Cannot use check_library_exists because the symbol is always declared as char(*)(void)
set(CMAKE_REQUIRED_LIBRARIES "ws2_32.lib")
check_cxx_symbol_exists(WSAStartup "winsock2.h" HAVE_WS2_32)
+ if(HAVE_WS2_32)
+ set(pkg_config_libs_private "${pkg_config_libs_private} -lws2_32")
+ endif()
set(CMAKE_REQUIRED_LIBRARIES "rpcrt4.lib")
check_cxx_symbol_exists(UuidCreateSequential "rpc.h" HAVE_RPCRT4)
set(CMAKE_REQUIRED_LIBRARIES "iphlpapi.lib")
check_cxx_symbol_exists(GetAdaptersAddresses "winsock2.h;iphlpapi.h" HAVE_IPHLAPI)
+ if(HAVE_IPHLAPI)
+ set(pkg_config_libs_private "${pkg_config_libs_private} -liphlpapi")
+ endif()
check_cxx_symbol_exists(if_nametoindex "iphlpapi.h" HAVE_IF_NAMETOINDEX)
set(CMAKE_REQUIRED_LIBRARIES "")
@@ -1,25 +0,0 @@
commit 47d4cd12a2c051815ddda78adebdb3923b260d8a
Author: fanquake <fanquake@gmail.com>
Date: Tue Aug 18 14:45:40 2020 +0800
Remove needless linking against libstdc++
This is broken for a number of reasons, including:
- g++ understands "static-libstdc++ -lstdc++" to mean "link against
whatever libstdc++ exists, probably shared", which in itself is buggy.
- another stdlib (libc++ for example) may be in use
See #11981.
diff --git a/src/libzmq.pc.in b/src/libzmq.pc.in
index 233bc3a..3c2bf0d 100644
--- a/src/libzmq.pc.in
+++ b/src/libzmq.pc.in
@@ -7,6 +7,6 @@ Name: libzmq
Description: 0MQ c++ library
Version: @VERSION@
Libs: -L${libdir} -lzmq
-Libs.private: -lstdc++ @pkg_config_libs_private@
+Libs.private: @pkg_config_libs_private@
Requires.private: @pkg_config_names_private@
Cflags: -I${includedir} @pkg_config_defines@