mirror of
https://github.com/transmission/transmission.git
synced 2026-02-14 23:19:34 +00:00
build: support building with system wide-integer (#8209)
This commit is contained in:
30
.github/workflows/actions.yml
vendored
30
.github/workflows/actions.yml
vendored
@@ -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"
|
||||
|
||||
@@ -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
|
||||
$<$<BOOL:${TR_HAVE_INT128}>: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)
|
||||
|
||||
@@ -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
|
||||
$<$<BOOL:${_HAVE_INT128}>:WIDE_INTEGER_HAS_LIMB_TYPE_UINT64>
|
||||
)
|
||||
@@ -287,7 +287,7 @@ target_link_libraries(${TR_NAME}
|
||||
RapidJSON
|
||||
utf8::cpp
|
||||
wildmat
|
||||
WideInteger::WideInteger
|
||||
transmission::WideInteger
|
||||
Crc32c::crc32c
|
||||
$<$<BOOL:${WIN32}>:crypt32>
|
||||
$<$<BOOL:${WIN32}>:shlwapi>
|
||||
|
||||
Reference in New Issue
Block a user