diff --git a/.github/workflows/actions.yml b/.github/workflows/actions.yml index d5d909f55..be34f551e 100644 --- a/.github/workflows/actions.yml +++ b/.github/workflows/actions.yml @@ -167,7 +167,8 @@ jobs: -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` + -DUSE_SYSTEM_UTP=OFF `# Not packaged in Ubuntu` \ + -DUSE_SYSTEM_WIDE_INTEGER=OFF `# Not packaged in Ubuntu` - name: Make run: cmake --build obj --config Debug --target libtransmission-test transmission-show - name: Test with sanitizers @@ -217,7 +218,8 @@ jobs: -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` + -DUSE_SYSTEM_UTP=OFF `# Not packaged in Homebrew` \ + -DUSE_SYSTEM_WIDE_INTEGER=OFF `# Not packaged in Homebrew` - name: Make run: cmake --build obj --config Debug --target libtransmission-test transmission-show - name: Test with sanitizers @@ -263,7 +265,8 @@ jobs: -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` + -DUSE_SYSTEM_UTP=OFF `# Not packaged in Ubuntu` \ + -DUSE_SYSTEM_WIDE_INTEGER=OFF `# Not packaged in Ubuntu` - name: Make (Core) run: cmake --build obj --config Debug --target transmission 2>&1 | tee makelog - name: Make (Tests) @@ -406,7 +409,8 @@ jobs: -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` + -DUSE_SYSTEM_UTP=OFF `# Not packaged in Homebrew` \ + -DUSE_SYSTEM_WIDE_INTEGER=OFF `# Not packaged in Homebrew` - name: Make run: cmake --build obj --config RelWithDebInfo - name: Test @@ -495,7 +499,8 @@ jobs: -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` + -DUSE_SYSTEM_UTP=OFF `# Not packaged in Alpine` \ + -DUSE_SYSTEM_WIDE_INTEGER=OFF `# Not packaged in Alpine` - name: Make run: cmake --build obj --config RelWithDebInfo - name: Test @@ -771,7 +776,8 @@ jobs: -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` + -DUSE_SYSTEM_UTP=OFF `# Not packaged in Debian 11` \ + -DUSE_SYSTEM_WIDE_INTEGER=OFF `# Not packaged in Debian 11` - name: Build run: cmake --build obj --config RelWithDebInfo - name: Test @@ -849,7 +855,8 @@ jobs: -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` + -DUSE_SYSTEM_UTP=OFF `# Not packaged in Debian` \ + -DUSE_SYSTEM_WIDE_INTEGER=OFF `# Not packaged in Debian` - name: Build run: cmake --build obj --config RelWithDebInfo - name: Test @@ -927,7 +934,8 @@ jobs: -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` + -DUSE_SYSTEM_UTP=OFF `# Not packaged in Fedora` \ + -DUSE_SYSTEM_WIDE_INTEGER=OFF `# Not packaged in Fedora` - name: Build run: cmake --build obj --config RelWithDebInfo - name: Test @@ -1001,7 +1009,8 @@ jobs: -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` + -DUSE_SYSTEM_UTP=OFF `# Not packaged in Ubuntu` \ + -DUSE_SYSTEM_WIDE_INTEGER=OFF `# Not packaged in Ubuntu` - name: Make run: cmake --build obj --config RelWithDebInfo - name: Test @@ -1115,6 +1124,7 @@ jobs: -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` + -DUSE_SYSTEM_UTP=OFF `# Not packaged in Ubuntu` \ + -DUSE_SYSTEM_WIDE_INTEGER=OFF `# Not packaged in Ubuntu` - name: Make run: cmake --build obj --config RelWithDebInfo -- "-k 0" diff --git a/CMakeLists.txt b/CMakeLists.txt index 3be3f73ba..19a6e795d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -83,6 +83,7 @@ tr_auto_option(USE_SYSTEM_MINIUPNPC "Use system miniupnpc library" ${USE_SYSTEM_ 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_WIDE_INTEGER "Use system WideInteger 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}) @@ -251,7 +252,6 @@ set(SOURCE_ICONS_DIR "${PROJECT_SOURCE_DIR}/icons") find_package(FastFloat) find_package(RapidJSON) find_package(UtfCpp) -find_package(WideInteger) find_package(Threads) find_package(PkgConfig QUIET) @@ -610,6 +610,25 @@ target_compile_definitions(transmission::small INTERFACE SMALL_DISABLE_EXCEPTIONS=1) +tr_add_external_auto_library(WIDE_INTEGER WideInteger + SUBPROJECT + SOURCE_DIR wide-integer) +add_library(transmission::WideInteger INTERFACE IMPORTED) +target_link_libraries(transmission::WideInteger + INTERFACE + WideInteger::WideInteger) +include(CheckCXXSourceCompiles) +check_cxx_source_compiles( +"int main() +{ + unsigned __int128 u; + signed __int128 i; + return 0; +}" TR_HAVE_INT128) +target_compile_definitions(transmission::WideInteger + INTERFACE + $<$:WIDE_INTEGER_HAS_LIMB_TYPE_UINT64>) + 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/FindWideInteger.cmake b/cmake/FindWideInteger.cmake deleted file mode 100644 index 87494b0e7..000000000 --- a/cmake/FindWideInteger.cmake +++ /dev/null @@ -1,21 +0,0 @@ -add_library(WideInteger::WideInteger INTERFACE IMPORTED) - -target_include_directories(WideInteger::WideInteger - INTERFACE - ${TR_THIRD_PARTY_SOURCE_DIR}/wide-integer) - -set(_INT128_TEST_FILE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckInt128.c) -file(WRITE ${_INT128_TEST_FILE} - "int main() - { - unsigned __int128 u; - signed __int128 i; - return 0; - }") -try_compile(_HAVE_INT128 - ${CMAKE_BINARY_DIR} - ${_INT128_TEST_FILE}) -target_compile_definitions(WideInteger::WideInteger - INTERFACE - $<$:WIDE_INTEGER_HAS_LIMB_TYPE_UINT64> -) diff --git a/libtransmission/CMakeLists.txt b/libtransmission/CMakeLists.txt index eaf6e6def..8d507e63a 100644 --- a/libtransmission/CMakeLists.txt +++ b/libtransmission/CMakeLists.txt @@ -287,7 +287,7 @@ target_link_libraries(${TR_NAME} RapidJSON utf8::cpp wildmat - WideInteger::WideInteger + transmission::WideInteger Crc32c::crc32c $<$:crypt32> $<$:shlwapi>