From bcac3bd461055276d487f11df3dc994a5bf34cf9 Mon Sep 17 00:00:00 2001 From: Yat Ho Date: Tue, 27 Jan 2026 00:01:51 +0800 Subject: [PATCH] build: support building with system small (#8208) --- .github/workflows/actions.yml | 10 ++++++++++ CMakeLists.txt | 15 ++++++++++++++- cmake/FindSmall.cmake | 9 --------- libtransmission/CMakeLists.txt | 2 +- 4 files changed, 25 insertions(+), 11 deletions(-) delete mode 100644 cmake/FindSmall.cmake diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index 97314d015..d5d909f55 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_SMALL=OFF `# Not packaged in Ubuntu` \ -DUSE_SYSTEM_UTP=OFF `# Not packaged in Ubuntu` - name: Make run: cmake --build obj --config Debug --target libtransmission-test transmission-show @@ -215,6 +216,7 @@ jobs: -DRUN_CLANG_TIDY=OFF \ -DUSE_SYSTEM_DEFAULT=ON \ -DUSE_SYSTEM_DHT=OFF `# Not packaged in Homebrew` \ + -DUSE_SYSTEM_SMALL=OFF `# Not packaged in Homebrew` \ -DUSE_SYSTEM_UTP=OFF `# Not packaged in Homebrew` - name: Make run: cmake --build obj --config Debug --target libtransmission-test transmission-show @@ -260,6 +262,7 @@ jobs: -DUSE_SYSTEM_DEFAULT=ON \ -DUSE_SYSTEM_CRC32C=OFF `# Not packaged in Ubuntu` \ -DUSE_SYSTEM_DHT=OFF `# Not packaged in Ubuntu` \ + -DUSE_SYSTEM_SMALL=OFF `# Not packaged in Ubuntu` \ -DUSE_SYSTEM_UTP=OFF `# Not packaged in Ubuntu` - name: Make (Core) run: cmake --build obj --config Debug --target transmission 2>&1 | tee makelog @@ -402,6 +405,7 @@ jobs: -DRUN_CLANG_TIDY=OFF \ -DUSE_SYSTEM_DEFAULT=ON \ -DUSE_SYSTEM_DHT=OFF `# Not packaged in Homebrew` \ + -DUSE_SYSTEM_SMALL=OFF `# Not packaged in Homebrew` \ -DUSE_SYSTEM_UTP=OFF `# Not packaged in Homebrew` - name: Make run: cmake --build obj --config RelWithDebInfo @@ -490,6 +494,7 @@ jobs: -DUSE_SYSTEM_DEFAULT=ON \ -DUSE_SYSTEM_B64=OFF `# Not packaged in Alpine` \ -DUSE_SYSTEM_DHT=OFF `# Not packaged in Alpine` \ + -DUSE_SYSTEM_SMALL=OFF `# Not packaged in Alpine` \ -DUSE_SYSTEM_UTP=OFF `# Not packaged in Alpine` - name: Make run: cmake --build obj --config RelWithDebInfo @@ -765,6 +770,7 @@ jobs: -DUSE_SYSTEM_CRC32C=OFF `# Not packaged in Debian 11` \ -DUSE_SYSTEM_DHT=OFF `# Not packaged in Debian 11` \ -DUSE_SYSTEM_FMT=OFF `# Debian 11 package too old` \ + -DUSE_SYSTEM_SMALL=OFF `# Not packaged in Debian 11` \ -DUSE_SYSTEM_UTP=OFF `# Not packaged in Debian 11` - name: Build run: cmake --build obj --config RelWithDebInfo @@ -842,6 +848,7 @@ jobs: -DUSE_SYSTEM_DEFAULT=ON \ -DUSE_SYSTEM_CRC32C=OFF `# Not packaged in Debian` \ -DUSE_SYSTEM_DHT=OFF `# Not packaged in Debian` \ + -DUSE_SYSTEM_SMALL=OFF `# Not packaged in Debian` \ -DUSE_SYSTEM_UTP=OFF `# Not packaged in Debian` - name: Build run: cmake --build obj --config RelWithDebInfo @@ -919,6 +926,7 @@ jobs: -DRUN_CLANG_TIDY=OFF \ -DUSE_SYSTEM_DEFAULT=ON \ -DUSE_SYSTEM_DHT=OFF `# Not packaged in Fedora` \ + -DUSE_SYSTEM_SMALL=OFF `# Not packaged in Fedora` \ -DUSE_SYSTEM_UTP=OFF `# Not packaged in Fedora` - name: Build run: cmake --build obj --config RelWithDebInfo @@ -992,6 +1000,7 @@ jobs: -DUSE_SYSTEM_DEFAULT=ON \ -DUSE_SYSTEM_CRC32C=OFF `# Not packaged in Ubuntu` \ -DUSE_SYSTEM_DHT=OFF `# Not packaged in Ubuntu` \ + -DUSE_SYSTEM_SMALL=OFF `# Not packaged in Ubuntu` \ -DUSE_SYSTEM_UTP=OFF `# Not packaged in Ubuntu` - name: Make run: cmake --build obj --config RelWithDebInfo @@ -1105,6 +1114,7 @@ jobs: -DUSE_SYSTEM_DEFAULT=ON \ -DUSE_SYSTEM_CRC32C=OFF `# Not packaged in Ubuntu` \ -DUSE_SYSTEM_DHT=OFF `# Not packaged in Ubuntu` \ + -DUSE_SYSTEM_SMALL=OFF `# Not packaged in Ubuntu` \ -DUSE_SYSTEM_UTP=OFF `# Not packaged in Ubuntu` - name: Make run: cmake --build obj --config RelWithDebInfo -- "-k 0" diff --git a/CMakeLists.txt b/CMakeLists.txt index 1f6b847d3..3be3f73ba 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,6 +56,7 @@ set(MBEDTLS_MINIMUM 2.7) 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(SMALL_MINIMUM 0.2.2) option(ENABLE_DAEMON "Build daemon" ON) tr_auto_option(ENABLE_GTK "Build GTK client" AUTO) @@ -80,6 +81,7 @@ tr_auto_option(USE_SYSTEM_DHT "Use system dht library" ${USE_SYSTEM_DEFAULT}) 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_SMALL "Use system small library" ${USE_SYSTEM_DEFAULT}) tr_auto_option(USE_SYSTEM_UTP "Use system utp library" ${USE_SYSTEM_DEFAULT}) tr_auto_option(USE_SYSTEM_B64 "Use system b64 library" ${USE_SYSTEM_DEFAULT}) tr_auto_option(USE_SYSTEM_PSL "Use system psl library" ${USE_SYSTEM_DEFAULT}) @@ -248,7 +250,6 @@ set(SOURCE_ICONS_DIR "${PROJECT_SOURCE_DIR}/icons") find_package(FastFloat) find_package(RapidJSON) -find_package(Small) find_package(UtfCpp) find_package(WideInteger) @@ -597,6 +598,18 @@ tr_add_external_auto_library(FMT fmt -DFMT_INSTALL=OFF -DFMT_SYSTEM_HEADERS=ON) +tr_add_external_auto_library(SMALL small + SUBPROJECT + CMAKE_ARGS + -DSMALL_BUILD_WITH_EXCEPTIONS=OFF) +add_library(transmission::small INTERFACE IMPORTED) +target_link_libraries(transmission::small + INTERFACE + small::small) +target_compile_definitions(transmission::small + INTERFACE + SMALL_DISABLE_EXCEPTIONS=1) + set(TR_WEB_ASSETS ${PROJECT_SOURCE_DIR}/web/public_html) if(REBUILD_WEB) tr_get_required_flag(REBUILD_WEB NPM_IS_REQUIRED) diff --git a/cmake/FindSmall.cmake b/cmake/FindSmall.cmake deleted file mode 100644 index 0a1f3b947..000000000 --- a/cmake/FindSmall.cmake +++ /dev/null @@ -1,9 +0,0 @@ -add_library(small::small INTERFACE IMPORTED) - -target_include_directories(small::small - INTERFACE - ${TR_THIRD_PARTY_SOURCE_DIR}/small/include) - -target_compile_definitions(small::small - INTERFACE - SMALL_DISABLE_EXCEPTIONS=1) diff --git a/libtransmission/CMakeLists.txt b/libtransmission/CMakeLists.txt index b3f5c815f..eaf6e6def 100644 --- a/libtransmission/CMakeLists.txt +++ b/libtransmission/CMakeLists.txt @@ -297,7 +297,7 @@ target_link_libraries(${TR_NAME} PUBLIC transmission::crypto_impl fmt::fmt-header-only - small::small + transmission::small libevent::event) if(INSTALL_LIB)