aboutsummaryrefslogtreecommitdiff
path: root/depends
diff options
context:
space:
mode:
authormerge-script <fanquake@gmail.com>2024-07-22 17:49:27 +0100
committermerge-script <fanquake@gmail.com>2024-07-22 17:49:27 +0100
commitc69ba20bce482d1466d6af664330c910f3f955df (patch)
tree422ed7a1fe4b06e844e6b423d22f08942d1d95a0 /depends
parent98537a0212045b8411919749a0396d122796a0bb (diff)
parent0388ad0d65b6c9ee802ca641eb01d69fcdd5605d (diff)
Merge bitcoin/bitcoin#29723: depends: build zeromq with CMake
0388ad0d65b6c9ee802ca641eb01d69fcdd5605d depends: switch zmq to CMake (Cory Fields) fefb3bbe5b538f8faa59de191914ad0c22c3ade6 depends: add zeromq no librt patch (fanquake) a522ef15424110f76172b3c0603fa08f7291c9fc depends: add zeromq cmake minimum patch (fanquake) cbbc229adf4c12ad4bd7edde71425b8ef217edfc depends: add zeromq windows usage patch (fanquake) 2de68d6d388b9a33c57234d3161f6ffc4c2a0246 depends: add zeromq builtin sha1 patch (fanquake) 0c8605253ae887dac316264cb969b752027d277a depends: add zeromq mktemp macos patch (fanquake) Pull request description: This picks up a change, which is a switch to building zeromq with CMake. It includes a number of patches, some which have already been upstreamed (see each patch for details). ACKs for top commit: hebasto: ACK 0388ad0d65b6c9ee802ca641eb01d69fcdd5605d. Tree-SHA512: 5567e432b4e4e0446c41d502bd61810a80b329dea2399b5d9d9f6e79acc450d1c6ba861c8238ba895de98338cfc5dc44ad2bf86ee8c222ecb3fbf47d6eb60da4
Diffstat (limited to 'depends')
-rw-r--r--depends/packages/zeromq.mk34
-rw-r--r--depends/patches/zeromq/builtin_sha1.patch17
-rw-r--r--depends/patches/zeromq/cmake_minimum.patch18
-rw-r--r--depends/patches/zeromq/fix_have_windows.patch54
-rw-r--r--depends/patches/zeromq/macos_mktemp_check.patch16
-rw-r--r--depends/patches/zeromq/no_librt.patch54
6 files changed, 181 insertions, 12 deletions
diff --git a/depends/packages/zeromq.mk b/depends/packages/zeromq.mk
index bfa5e97c60..23bd58bf53 100644
--- a/depends/packages/zeromq.mk
+++ b/depends/packages/zeromq.mk
@@ -3,32 +3,42 @@ $(package)_version=4.3.5
$(package)_download_path=https://github.com/zeromq/libzmq/releases/download/v$($(package)_version)/
$(package)_file_name=$(package)-$($(package)_version).tar.gz
$(package)_sha256_hash=6653ef5910f17954861fe72332e68b03ca6e4d9c7160eb3a8de5a5a913bfab43
-$(package)_patches=remove_libstd_link.patch
+$(package)_build_subdir=build
+$(package)_patches = remove_libstd_link.patch
+$(package)_patches += macos_mktemp_check.patch
+$(package)_patches += builtin_sha1.patch
+$(package)_patches += fix_have_windows.patch
+$(package)_patches += cmake_minimum.patch
+$(package)_patches += no_librt.patch
define $(package)_set_vars
- $(package)_config_opts = --without-docs --disable-shared --disable-valgrind
- $(package)_config_opts += --disable-perf --disable-curve-keygen --disable-curve --disable-libbsd
- $(package)_config_opts += --without-libsodium --without-libgssapi_krb5 --without-pgm --without-norm --without-vmci
- $(package)_config_opts += --disable-libunwind --disable-radix-tree --without-gcov --disable-dependency-tracking
- $(package)_config_opts += --disable-Werror --disable-drafts --enable-option-checking
+ $(package)_config_opts := -DCMAKE_BUILD_TYPE=None -DWITH_DOCS=OFF -DWITH_LIBSODIUM=OFF
+ $(package)_config_opts += -DWITH_LIBBSD=OFF -DENABLE_CURVE=OFF -DENABLE_CPACK=OFF
+ $(package)_config_opts += -DBUILD_SHARED=OFF -DBUILD_TESTS=OFF -DZMQ_BUILD_TESTS=OFF
+ $(package)_config_opts += -DENABLE_DRAFTS=OFF -DZMQ_BUILD_TESTS=OFF
+ $(package)_cxxflags += -ffile-prefix-map=$($(package)_extract_dir)=/usr
+ $(package)_config_opts_mingw32 += -DZMQ_WIN32_WINNT=0x0601 -DZMQ_HAVE_IPC=OFF
endef
define $(package)_preprocess_cmds
- patch -p1 < $($(package)_patch_dir)/remove_libstd_link.patch
+ patch -p1 < $($(package)_patch_dir)/remove_libstd_link.patch && \
+ patch -p1 < $($(package)_patch_dir)/macos_mktemp_check.patch && \
+ patch -p1 < $($(package)_patch_dir)/builtin_sha1.patch && \
+ patch -p1 < $($(package)_patch_dir)/fix_have_windows.patch && \
+ patch -p1 < $($(package)_patch_dir)/cmake_minimum.patch && \
+ patch -p1 < $($(package)_patch_dir)/no_librt.patch
endef
define $(package)_config_cmds
- ./autogen.sh && \
- cp -f $(BASEDIR)/config.guess $(BASEDIR)/config.sub config && \
- $($(package)_autoconf)
+ $($(package)_cmake) -S .. -B .
endef
define $(package)_build_cmds
- $(MAKE) src/libzmq.la
+ $(MAKE)
endef
define $(package)_stage_cmds
- $(MAKE) DESTDIR=$($(package)_staging_dir) install-libLTLIBRARIES install-includeHEADERS install-pkgconfigDATA
+ $(MAKE) DESTDIR=$($(package)_staging_dir) install
endef
define $(package)_postprocess_cmds
diff --git a/depends/patches/zeromq/builtin_sha1.patch b/depends/patches/zeromq/builtin_sha1.patch
new file mode 100644
index 0000000000..5481c9dbdd
--- /dev/null
+++ b/depends/patches/zeromq/builtin_sha1.patch
@@ -0,0 +1,17 @@
+Don't use builtin sha1 if not using ws
+
+The builtin SHA1 (ZMQ_USE_BUILTIN_SHA1) is only used in the websocket
+engine (ws_engine.cpp).
+Upstreamed in https://github.com/zeromq/libzmq/pull/4670.
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -234,7 +234,7 @@ if(NOT ZMQ_USE_GNUTLS)
+ endif()
+ endif()
+ endif()
+- if(NOT ZMQ_USE_NSS)
++ if(ENABLE_WS AND NOT ZMQ_USE_NSS)
+ list(APPEND sources ${CMAKE_CURRENT_SOURCE_DIR}/external/sha1/sha1.c
+ ${CMAKE_CURRENT_SOURCE_DIR}/external/sha1/sha1.h)
+ message(STATUS "Using builtin sha1")
diff --git a/depends/patches/zeromq/cmake_minimum.patch b/depends/patches/zeromq/cmake_minimum.patch
new file mode 100644
index 0000000000..d6b6b5fae7
--- /dev/null
+++ b/depends/patches/zeromq/cmake_minimum.patch
@@ -0,0 +1,18 @@
+Set a more sane cmake_minimum_required.
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,12 +1,7 @@
+ # CMake build script for ZeroMQ
++cmake_minimum_required(VERSION 3.16)
+ project(ZeroMQ)
+
+-if(${CMAKE_SYSTEM_NAME} STREQUAL Darwin)
+- cmake_minimum_required(VERSION 3.0.2)
+-else()
+- cmake_minimum_required(VERSION 2.8.12)
+-endif()
+-
+ include(CheckIncludeFiles)
+ include(CheckCCompilerFlag)
+ include(CheckCXXCompilerFlag)
diff --git a/depends/patches/zeromq/fix_have_windows.patch b/depends/patches/zeromq/fix_have_windows.patch
new file mode 100644
index 0000000000..e77ef31adf
--- /dev/null
+++ b/depends/patches/zeromq/fix_have_windows.patch
@@ -0,0 +1,54 @@
+This fixes several instances where _MSC_VER was
+used to determine whether to use afunix.h or not.
+
+See https://github.com/zeromq/libzmq/pull/4678.
+--- a/src/ipc_address.hpp
++++ b/src/ipc_address.hpp
+@@ -7,7 +7,7 @@
+
+ #include <string>
+
+-#if defined _MSC_VER
++#if defined ZMQ_HAVE_WINDOWS
+ #include <afunix.h>
+ #else
+ #include <sys/socket.h>
+diff --git a/src/ipc_connecter.cpp b/src/ipc_connecter.cpp
+index 3f988745..ed2a0645 100644
+--- a/src/ipc_connecter.cpp
++++ b/src/ipc_connecter.cpp
+@@ -16,7 +16,7 @@
+ #include "ipc_address.hpp"
+ #include "session_base.hpp"
+
+-#ifdef _MSC_VER
++#if defined ZMQ_HAVE_WINDOWS
+ #include <afunix.h>
+ #else
+ #include <unistd.h>
+diff --git a/src/ipc_listener.cpp b/src/ipc_listener.cpp
+index 50126040..5428579b 100644
+--- a/src/ipc_listener.cpp
++++ b/src/ipc_listener.cpp
+@@ -17,7 +17,7 @@
+ #include "socket_base.hpp"
+ #include "address.hpp"
+
+-#ifdef _MSC_VER
++#ifdef ZMQ_HAVE_WINDOWS
+ #ifdef ZMQ_IOTHREAD_POLLER_USE_SELECT
+ #error On Windows, IPC does not work with POLLER=select, use POLLER=epoll instead, or disable IPC transport
+ #endif
+diff --git a/tests/testutil.cpp b/tests/testutil.cpp
+index bdc80283..6f21e8f6 100644
+--- a/tests/testutil.cpp
++++ b/tests/testutil.cpp
+@@ -7,7 +7,7 @@
+
+ #if defined _WIN32
+ #include "../src/windows.hpp"
+-#if defined _MSC_VER
++#if defined ZMQ_HAVE_WINDOWS
+ #if defined ZMQ_HAVE_IPC
+ #include <direct.h>
+ #include <afunix.h>
diff --git a/depends/patches/zeromq/macos_mktemp_check.patch b/depends/patches/zeromq/macos_mktemp_check.patch
new file mode 100644
index 0000000000..c703abcd71
--- /dev/null
+++ b/depends/patches/zeromq/macos_mktemp_check.patch
@@ -0,0 +1,16 @@
+build: fix mkdtemp check on macOS
+
+On macOS, mkdtemp is in unistd.h. Fix the CMake check so that is works.
+Upstreamed in https://github.com/zeromq/libzmq/pull/4668.
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -599,7 +599,7 @@ if(NOT MSVC)
+
+ check_cxx_symbol_exists(fork unistd.h HAVE_FORK)
+ check_cxx_symbol_exists(gethrtime sys/time.h HAVE_GETHRTIME)
+- check_cxx_symbol_exists(mkdtemp stdlib.h HAVE_MKDTEMP)
++ check_cxx_symbol_exists(mkdtemp "stdlib.h;unistd.h" HAVE_MKDTEMP)
+ check_cxx_symbol_exists(accept4 sys/socket.h HAVE_ACCEPT4)
+ check_cxx_symbol_exists(strnlen string.h HAVE_STRNLEN)
+ else()
diff --git a/depends/patches/zeromq/no_librt.patch b/depends/patches/zeromq/no_librt.patch
new file mode 100644
index 0000000000..b63854c95b
--- /dev/null
+++ b/depends/patches/zeromq/no_librt.patch
@@ -0,0 +1,54 @@
+We don't use librt, so don't try and link against it.
+
+Related to: https://github.com/zeromq/libzmq/pull/4702.
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 03462271..87ceab3c 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -564,13 +564,6 @@ else()
+ check_cxx_symbol_exists(SO_BUSY_POLL sys/socket.h ZMQ_HAVE_BUSY_POLL)
+ endif()
+
+-if(NOT MINGW)
+- find_library(RT_LIBRARY rt)
+- if(RT_LIBRARY)
+- set(pkg_config_libs_private "${pkg_config_libs_private} -lrt")
+- endif()
+-endif()
+-
+ find_package(Threads)
+
+ if(WIN32 AND NOT CYGWIN)
+@@ -588,9 +581,7 @@ if(WIN32 AND NOT CYGWIN)
+ endif()
+
+ if(NOT MSVC)
+- set(CMAKE_REQUIRED_LIBRARIES rt)
+ check_cxx_symbol_exists(clock_gettime time.h HAVE_CLOCK_GETTIME)
+- set(CMAKE_REQUIRED_LIBRARIES)
+
+ check_cxx_symbol_exists(fork unistd.h HAVE_FORK)
+ check_cxx_symbol_exists(gethrtime sys/time.h HAVE_GETHRTIME)
+@@ -1503,10 +1494,6 @@ if(BUILD_SHARED)
+ target_link_libraries(libzmq iphlpapi)
+ endif()
+
+- if(RT_LIBRARY)
+- target_link_libraries(libzmq -lrt)
+- endif()
+-
+ if(norm_FOUND)
+ target_link_libraries(libzmq norm::norm)
+ endif()
+@@ -1553,10 +1540,6 @@ if(BUILD_STATIC)
+ target_link_libraries(libzmq-static iphlpapi)
+ endif()
+
+- if(RT_LIBRARY)
+- target_link_libraries(libzmq-static -lrt)
+- endif()
+-
+ if(CMAKE_SYSTEM_NAME MATCHES "QNX")
+ add_definitions(-DUNITY_EXCLUDE_MATH_H)
+ endif()