build: add USE_SYSTEM_DEFAULT option (#8176)

* build: add `USE_SYSTEM_DEFAULT` option

* ci: use `USE_SYSTEM_DEFAULT`
This commit is contained in:
Yat Ho
2026-01-21 23:08:04 +08:00
committed by GitHub
parent 7f5730984a
commit 6327cc6c2e
3 changed files with 71 additions and 36 deletions

View File

@@ -51,6 +51,7 @@ runs:
dnf install -y \
fmt-devel \
google-crc32c-devel \
libb64-devel \
libcurl-devel \
libdeflate-devel \
libevent-devel \
@@ -96,6 +97,7 @@ runs:
ca-certificates
cmake
gettext
libb64-dev
libcurl4-openssl-dev
libdeflate-dev
libevent-dev
@@ -195,12 +197,16 @@ runs:
# Base packages for macOS
BASE_PACKAGES=(cmake gettext ninja node pkgconf)
# Additional packages for some builds
if [[ "${{ inputs.enable-gtk }}" == "true" || "${{ inputs.enable-qt }}" != "false" ]]; then
BASE_PACKAGES+=(libdeflate libevent libpsl miniupnpc crc32c)
else
BASE_PACKAGES+=(libdeflate libevent libpsl miniupnpc)
fi
# Transmission-specific libraries
BASE_PACKAGES+=(
crc32c
libb64
libdeflate
libevent
libnatpmp
libpsl
miniupnpc
)
brew install --formulae "${BASE_PACKAGES[@]}"

View File

@@ -162,7 +162,11 @@ jobs:
-DENABLE_TESTS=ON \
-DENABLE_UTILS=ON \
-DREBUILD_WEB=OFF \
-DRUN_CLANG_TIDY=OFF
-DRUN_CLANG_TIDY=OFF \
-DUSE_SYSTEM_DEFAULT=ON \
-DUSE_SYSTEM_CRC32C=OFF `# Not packaged in Ubuntu` \
-DUSE_SYSTEM_DHT=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
- name: Test with sanitizers
@@ -208,7 +212,10 @@ jobs:
-DENABLE_TESTS=ON \
-DENABLE_UTILS=ON \
-DREBUILD_WEB=OFF \
-DRUN_CLANG_TIDY=OFF
-DRUN_CLANG_TIDY=OFF \
-DUSE_SYSTEM_DEFAULT=ON \
-DUSE_SYSTEM_DHT=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
- name: Test with sanitizers
@@ -249,7 +256,11 @@ jobs:
-DCMAKE_C_COMPILER='clang' \
-DCMAKE_INSTALL_PREFIX=pfx \
-DENABLE_TESTS=${{ (needs.what-to-make.outputs.make-tests == 'true') && 'ON' || 'OFF' }} \
-DRUN_CLANG_TIDY=ON
-DRUN_CLANG_TIDY=ON \
-DUSE_SYSTEM_DEFAULT=ON \
-DUSE_SYSTEM_CRC32C=OFF `# Not packaged in Ubuntu` \
-DUSE_SYSTEM_DHT=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
- name: Make (Tests)
@@ -288,7 +299,8 @@ jobs:
-DCMAKE_BUILD_TYPE=Debug `
-DCMAKE_PREFIX_PATH="${Env:DEPS_PREFIX}" `
-DENABLE_TESTS=${{ (needs.what-to-make.outputs.make-tests == 'true') && 'ON' || 'OFF' }} `
-DRUN_CLANG_TIDY=ON
-DRUN_CLANG_TIDY=ON `
-DUSE_SYSTEM_DEFAULT=OFF
- name: Make (Core)
run: |
Import-VisualStudioVars -VisualStudioVersion 2022 -Architecture x64
@@ -386,7 +398,9 @@ jobs:
-DREBUILD_WEB=${{ (needs.what-to-make.outputs.make-web == 'true') && 'ON' || 'OFF' }} \
-DENABLE_WERROR=ON \
-DRUN_CLANG_TIDY=OFF \
-DUSE_SYSTEM_Crc32c=ON
-DUSE_SYSTEM_DEFAULT=ON \
-DUSE_SYSTEM_DHT=OFF `# Not packaged in Homebrew` \
-DUSE_SYSTEM_UTP=OFF `# Not packaged in Homebrew`
- name: Make
run: cmake --build obj --config RelWithDebInfo
- name: Test
@@ -430,8 +444,11 @@ jobs:
fmt-dev \
gettext-dev \
git \
libdeflate-dev \
libdeflate-static \
libevent-dev \
libpsl \
libnatpmp-dev \
libpsl-dev \
linux-headers \
miniupnpc-dev \
ninja \
@@ -468,7 +485,10 @@ jobs:
-DREBUILD_WEB=${{ (needs.what-to-make.outputs.make-web == 'true') && 'ON' || 'OFF' }} \
-DENABLE_WERROR=ON \
-DRUN_CLANG_TIDY=OFF \
-DUSE_SYSTEM_CRC32C=ON
-DUSE_SYSTEM_DEFAULT=ON \
-DUSE_SYSTEM_B64=OFF `# Not packaged in Alpine` \
-DUSE_SYSTEM_DHT=OFF `# Not packaged in Alpine` \
-DUSE_SYSTEM_UTP=OFF `# Not packaged in Alpine`
- name: Make
run: cmake --build obj --config RelWithDebInfo
- name: Test
@@ -533,7 +553,8 @@ jobs:
-DENABLE_UTILS=ON `
-DREBUILD_WEB=${{ (needs.what-to-make.outputs.make-web == 'true') && 'ON' || 'OFF' }} `
-DENABLE_WERROR=ON `
-DRUN_CLANG_TIDY=OFF
-DRUN_CLANG_TIDY=OFF `
-DUSE_SYSTEM_DEFAULT=OFF
- name: Make
run: |
Import-VisualStudioVars -VisualStudioVersion 2022 -Architecture ${{ matrix.arch }}
@@ -666,14 +687,7 @@ jobs:
-DREBUILD_WEB=${{ (needs.what-to-make.outputs.make-web == 'true') && 'ON' || 'OFF' }} \
-DENABLE_WERROR=ON \
-DRUN_CLANG_TIDY=OFF \
-DUSE_SYSTEM_EVENT2=OFF \
-DUSE_SYSTEM_DEFLATE=OFF \
-DUSE_SYSTEM_DHT=OFF \
-DUSE_SYSTEM_MINIUPNPC=OFF \
-DUSE_SYSTEM_NATPMP=OFF \
-DUSE_SYSTEM_UTP=OFF \
-DUSE_SYSTEM_B64=OFF \
-DUSE_SYSTEM_PSL=OFF
-DUSE_SYSTEM_DEFAULT=OFF
- name: Make
run: cmake --build obj --config RelWithDebInfo
- name: Test
@@ -744,7 +758,11 @@ jobs:
-DENABLE_UTILS=${{ (needs.what-to-make.outputs.make-utils == 'true') && 'ON' || 'OFF' }} \
-DREBUILD_WEB=${{ (needs.what-to-make.outputs.make-web == 'true') && 'ON' || 'OFF' }} \
-DENABLE_WERROR=ON \
-DRUN_CLANG_TIDY=OFF
-DRUN_CLANG_TIDY=OFF \
-DUSE_SYSTEM_DEFAULT=ON \
-DUSE_SYSTEM_CRC32C=OFF `# Not packaged in Debian 11` \
-DUSE_SYSTEM_DHT=OFF `# Not packaged in Debian 11` \
-DUSE_SYSTEM_UTP=OFF `# Not packaged in Debian 11`
- name: Build
run: cmake --build obj --config RelWithDebInfo
- name: Test
@@ -819,7 +837,9 @@ jobs:
-DENABLE_DEPRECATED=ON \
-DENABLE_WERROR=OFF \
-DRUN_CLANG_TIDY=OFF \
-DUSE_SYSTEM_Crc32c=ON
-DUSE_SYSTEM_DEFAULT=ON \
-DUSE_SYSTEM_DHT=OFF `# Not packaged in Fedora` \
-DUSE_SYSTEM_UTP=OFF `# Not packaged in Fedora`
- name: Build
run: cmake --build obj --config RelWithDebInfo
- name: Test
@@ -888,7 +908,11 @@ jobs:
-DENABLE_UTILS=${{ (needs.what-to-make.outputs.make-utils == 'true') && 'ON' || 'OFF' }} \
-DREBUILD_WEB=${{ (needs.what-to-make.outputs.make-web == 'true') && 'ON' || 'OFF' }} \
-DENABLE_WERROR=ON \
-DRUN_CLANG_TIDY=OFF
-DRUN_CLANG_TIDY=OFF \
-DUSE_SYSTEM_DEFAULT=ON \
-DUSE_SYSTEM_CRC32C=OFF `# Not packaged in Ubuntu` \
-DUSE_SYSTEM_DHT=OFF `# Not packaged in Ubuntu` \
-DUSE_SYSTEM_UTP=OFF `# Not packaged in Ubuntu`
- name: Make
run: cmake --build obj --config RelWithDebInfo
- name: Test
@@ -997,6 +1021,10 @@ jobs:
-DENABLE_UTILS=${{ (needs.what-to-make.outputs.make-utils == 'true') && 'ON' || 'OFF' }} \
-DREBUILD_WEB=OFF \
-DENABLE_WERROR=ON \
-DRUN_CLANG_TIDY=OFF
-DRUN_CLANG_TIDY=OFF \
-DUSE_SYSTEM_DEFAULT=ON \
-DUSE_SYSTEM_CRC32C=OFF `# Not packaged in Ubuntu` \
-DUSE_SYSTEM_DHT=OFF `# Not packaged in Ubuntu` \
-DUSE_SYSTEM_UTP=OFF `# Not packaged in Ubuntu`
- name: Make
run: cmake --build obj --config RelWithDebInfo -- "-k 0"

View File

@@ -70,16 +70,17 @@ option(ENABLE_NLS "Enable native language support" ON)
option(INSTALL_DOC "Build/install documentation" ON)
option(INSTALL_LIB "Install the library" OFF)
tr_auto_option(ENABLE_DEPRECATED "Allow deprecated API use of upstream packages, e.g. GTK" AUTO)
tr_auto_option(RUN_CLANG_TIDY "Run clang-tidy on the code" AUTO)
tr_auto_option(USE_SYSTEM_EVENT2 "Use system event2 library" AUTO)
tr_auto_option(USE_SYSTEM_DEFLATE "Use system deflate library" AUTO)
tr_auto_option(USE_SYSTEM_DHT "Use system dht library" AUTO)
tr_auto_option(USE_SYSTEM_MINIUPNPC "Use system miniupnpc library" AUTO)
tr_auto_option(USE_SYSTEM_NATPMP "Use system natpmp library" AUTO)
tr_auto_option(USE_SYSTEM_UTP "Use system utp library" AUTO)
tr_auto_option(USE_SYSTEM_B64 "Use system b64 library" AUTO)
tr_auto_option(USE_SYSTEM_PSL "Use system psl library" AUTO)
tr_auto_option(USE_SYSTEM_CRC32C "Use system crc32c library" AUTO)
tr_auto_option(USE_SYSTEM_DEFAULT "Default value for USE_SYSTEM_* options" AUTO)
tr_auto_option(RUN_CLANG_TIDY "Run clang-tidy on the code" ${USE_SYSTEM_DEFAULT})
tr_auto_option(USE_SYSTEM_EVENT2 "Use system event2 library" ${USE_SYSTEM_DEFAULT})
tr_auto_option(USE_SYSTEM_DEFLATE "Use system deflate library" ${USE_SYSTEM_DEFAULT})
tr_auto_option(USE_SYSTEM_DHT "Use system dht 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_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})
tr_auto_option(USE_SYSTEM_CRC32C "Use system crc32c library" ${USE_SYSTEM_DEFAULT})
tr_list_option(USE_GTK_VERSION "Use specific GTK version" AUTO 3 4)
tr_list_option(USE_QT_VERSION "Use specific Qt version" AUTO 5 6)
tr_list_option(WITH_CRYPTO "Use specified crypto library" AUTO ccrypto mbedtls openssl wolfssl)