From 39803eb0f092ec0e19e71a878e93733a7e453323 Mon Sep 17 00:00:00 2001 From: Yat Ho Date: Thu, 5 Feb 2026 12:46:16 +0800 Subject: [PATCH] build: support building with system sigslot (#8371) --- .github/workflows/actions.yml | 10 ++++++++++ CMakeLists.txt | 6 ++++++ libtransmission/CMakeLists.txt | 4 +--- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index 614a40ad3..e7e7a421c 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -166,6 +166,7 @@ jobs: -DUSE_SYSTEM_DEFAULT=ON \ -DUSE_SYSTEM_CRC32C=OFF `# Not packaged in Ubuntu` \ -DUSE_SYSTEM_DHT=OFF `# Not packaged in Ubuntu` \ + -DUSE_SYSTEM_SIGSLOT=OFF `# Not packaged in Ubuntu` \ -DUSE_SYSTEM_SMALL=OFF `# Not packaged in Ubuntu` \ -DUSE_SYSTEM_UTP=OFF `# Not packaged in Ubuntu` \ -DUSE_SYSTEM_WIDE_INTEGER=OFF `# Not packaged in Ubuntu` @@ -217,6 +218,7 @@ jobs: -DRUN_CLANG_TIDY=OFF \ -DUSE_SYSTEM_DEFAULT=ON \ -DUSE_SYSTEM_DHT=OFF `# Not packaged in Homebrew` \ + -DUSE_SYSTEM_SIGSLOT=OFF `# Not packaged in Homebrew` \ -DUSE_SYSTEM_SMALL=OFF `# Not packaged in Homebrew` \ -DUSE_SYSTEM_UTP=OFF `# Not packaged in Homebrew` \ -DUSE_SYSTEM_WIDE_INTEGER=OFF `# Not packaged in Homebrew` @@ -264,6 +266,7 @@ jobs: -DUSE_SYSTEM_DEFAULT=ON \ -DUSE_SYSTEM_CRC32C=OFF `# Not packaged in Ubuntu` \ -DUSE_SYSTEM_DHT=OFF `# Not packaged in Ubuntu` \ + -DUSE_SYSTEM_SIGSLOT=OFF `# Not packaged in Ubuntu` \ -DUSE_SYSTEM_SMALL=OFF `# Not packaged in Ubuntu` \ -DUSE_SYSTEM_UTP=OFF `# Not packaged in Ubuntu` \ -DUSE_SYSTEM_WIDE_INTEGER=OFF `# Not packaged in Ubuntu` @@ -408,6 +411,7 @@ jobs: -DRUN_CLANG_TIDY=OFF \ -DUSE_SYSTEM_DEFAULT=ON \ -DUSE_SYSTEM_DHT=OFF `# Not packaged in Homebrew` \ + -DUSE_SYSTEM_SIGSLOT=OFF `# Not packaged in Homebrew` \ -DUSE_SYSTEM_SMALL=OFF `# Not packaged in Homebrew` \ -DUSE_SYSTEM_UTP=OFF `# Not packaged in Homebrew` \ -DUSE_SYSTEM_WIDE_INTEGER=OFF `# Not packaged in Homebrew` @@ -500,6 +504,7 @@ jobs: -DUSE_SYSTEM_DEFAULT=ON \ -DUSE_SYSTEM_B64=OFF `# Not packaged in Alpine` \ -DUSE_SYSTEM_DHT=OFF `# Not packaged in Alpine` \ + -DUSE_SYSTEM_SIGSLOT=OFF `# Not packaged in Alpine` \ -DUSE_SYSTEM_SMALL=OFF `# Not packaged in Alpine` \ -DUSE_SYSTEM_UTP=OFF `# Not packaged in Alpine` \ -DUSE_SYSTEM_WIDE_INTEGER=OFF `# Not packaged in Alpine` @@ -779,6 +784,7 @@ jobs: -DUSE_SYSTEM_DHT=OFF `# Not packaged in Debian 11` \ -DUSE_SYSTEM_FAST_FLOAT=OFF `# Not packaged in Debian 11` \ -DUSE_SYSTEM_FMT=OFF `# Debian 11 package too old` \ + -DUSE_SYSTEM_SIGSLOT=OFF `# Not packaged in Debian 11` \ -DUSE_SYSTEM_SMALL=OFF `# Not packaged in Debian 11` \ -DUSE_SYSTEM_UTF8CPP=OFF `# Debian 11 package too old` \ -DUSE_SYSTEM_UTP=OFF `# Not packaged in Debian 11` \ @@ -860,6 +866,7 @@ jobs: -DUSE_SYSTEM_DEFAULT=ON \ -DUSE_SYSTEM_CRC32C=OFF `# Not packaged in Debian` \ -DUSE_SYSTEM_DHT=OFF `# Not packaged in Debian` \ + -DUSE_SYSTEM_SIGSLOT=OFF `# Not packaged in Debian` \ -DUSE_SYSTEM_SMALL=OFF `# Not packaged in Debian` \ -DUSE_SYSTEM_UTP=OFF `# Not packaged in Debian` \ -DUSE_SYSTEM_WIDE_INTEGER=OFF `# Not packaged in Debian` @@ -939,6 +946,7 @@ jobs: -DRUN_CLANG_TIDY=OFF \ -DUSE_SYSTEM_DEFAULT=ON \ -DUSE_SYSTEM_DHT=OFF `# Not packaged in Fedora` \ + -DUSE_SYSTEM_SIGSLOT=OFF `# Not packaged in Fedora` \ -DUSE_SYSTEM_SMALL=OFF `# Not packaged in Fedora` \ -DUSE_SYSTEM_UTP=OFF `# Not packaged in Fedora` \ -DUSE_SYSTEM_WIDE_INTEGER=OFF `# Not packaged in Fedora` @@ -1021,6 +1029,7 @@ jobs: -DUSE_SYSTEM_DEFAULT=ON \ -DUSE_SYSTEM_CRC32C=OFF `# Not packaged in Ubuntu` \ -DUSE_SYSTEM_DHT=OFF `# Not packaged in Ubuntu` \ + -DUSE_SYSTEM_SIGSLOT=OFF `# Not packaged in Ubuntu` \ -DUSE_SYSTEM_SMALL=OFF `# Not packaged in Ubuntu` \ -DUSE_SYSTEM_UTP=OFF `# Not packaged in Ubuntu` \ -DUSE_SYSTEM_WIDE_INTEGER=OFF `# Not packaged in Ubuntu` @@ -1136,6 +1145,7 @@ jobs: -DUSE_SYSTEM_DEFAULT=ON \ -DUSE_SYSTEM_CRC32C=OFF `# Not packaged in Ubuntu` \ -DUSE_SYSTEM_DHT=OFF `# Not packaged in Ubuntu` \ + -DUSE_SYSTEM_SIGSLOT=OFF `# Not packaged in Ubuntu` \ -DUSE_SYSTEM_SMALL=OFF `# Not packaged in Ubuntu` \ -DUSE_SYSTEM_UTP=OFF `# Not packaged in Ubuntu` \ -DUSE_SYSTEM_WIDE_INTEGER=OFF `# Not packaged in Ubuntu` diff --git a/CMakeLists.txt b/CMakeLists.txt index c2dbfce03..38c0e112b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -60,6 +60,7 @@ set(MINIUPNPC_MINIMUM 2.2.1) set(NPM_MINIMUM 10.2.3) # Node.js 20.10 (eslint-plugin-unicorn) set(PSL_MINIMUM 0.21.0) set(QT_MINIMUM 5.15) +set(SIGSLOT_MINIMUM 1.2.3) set(SMALL_MINIMUM 0.2.2) # utf8cpp v4's version file is configured with `COMPATIBILITY SameMajorVersion` # and does not support version range. @@ -89,6 +90,7 @@ tr_auto_option(USE_SYSTEM_FAST_FLOAT "Use system fast_float library" ${USE_SYSTE tr_auto_option(USE_SYSTEM_FMT "Use system fmt library" ${USE_SYSTEM_DEFAULT}) tr_auto_option(USE_SYSTEM_MINIUPNPC "Use system miniupnpc library" ${USE_SYSTEM_DEFAULT}) tr_auto_option(USE_SYSTEM_NATPMP "Use system natpmp library" ${USE_SYSTEM_DEFAULT}) +tr_auto_option(USE_SYSTEM_SIGSLOT "Use system sigslot library" ${USE_SYSTEM_DEFAULT}) tr_auto_option(USE_SYSTEM_SMALL "Use system small library" ${USE_SYSTEM_DEFAULT}) tr_auto_option(USE_SYSTEM_UTF8CPP "Use system uft8cpp library" ${USE_SYSTEM_DEFAULT}) tr_auto_option(USE_SYSTEM_UTP "Use system utp library" ${USE_SYSTEM_DEFAULT}) @@ -622,6 +624,10 @@ tr_add_external_auto_library(FMT fmt -DFMT_INSTALL=OFF -DFMT_SYSTEM_HEADERS=ON) +tr_add_external_auto_library(SIGSLOT PalSigslot + SUBPROJECT + SOURCE_DIR sigslot) + tr_add_external_auto_library(SMALL small SUBPROJECT CMAKE_ARGS diff --git a/libtransmission/CMakeLists.txt b/libtransmission/CMakeLists.txt index ffacddbd9..355e82fae 100644 --- a/libtransmission/CMakeLists.txt +++ b/libtransmission/CMakeLists.txt @@ -12,8 +12,6 @@ add_compile_options( # equivalent of XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES for this directory $<$,$,$>,$,$>>:-fobjc-arc>) -add_subdirectory(${CMAKE_SOURCE_DIR}/third-party/sigslot ${CMAKE_BINARY_DIR}/third-party/sigslot) - add_library(${TR_NAME} STATIC) set(IS_APPLE_CLANG FALSE) @@ -287,7 +285,7 @@ target_link_libraries(${TR_NAME} PUBLIC transmission::crypto_impl fmt::fmt-header-only - sigslot + Pal::Sigslot transmission::small libevent::core libevent::extra)