Modernize CMake code (ongoing refactoring) (#4507)
* Reformat CMake code * Bump minimum CMake version to 3.12 * Add target sources separately via `target_source()` * Make `tr_win32_app_info()` add target sources on its own * Don't use `include_directories()` * Don't use `add_definitions()` * Limit use of `add_compile_options()` * Move VDKQueue target declaration to a subdirectory * Add `tr_disable_source_files_compile()` helper * Add `tr_target_glib_resources()` helper * Add `tr_gettext_msgfmt()` helper * Enable AUTOUIC for Qt client * Enable AUTORCC for Qt client * Remove AUTO{MOC,RCC,UIC} source group overrides * Add `tr_target_idl_files()` helper * Move source group setup to `tr_qt_add_translation()` * Add `tr_target_xib_files()` helper * Prefer `target_sources()` to intermediate variables * Use explicit visibility versions of `target_*()` commands * Prefer genexes to conditions in `target_*()` commands * Add `tr_allow_compile_if()` helper * Leave only top-level `project()`, remove the rest * Minor fixups * Fixup Mac QL plugin install * Fixup IDE target folders and source groups
This commit is contained in:
parent
453836f324
commit
bc380511db
292
CMakeLists.txt
292
CMakeLists.txt
|
@ -1,4 +1,4 @@
|
||||||
cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
|
cmake_minimum_required(VERSION 3.12 FATAL_ERROR)
|
||||||
|
|
||||||
if(POLICY CMP0092)
|
if(POLICY CMP0092)
|
||||||
cmake_policy(SET CMP0092 NEW)
|
cmake_policy(SET CMP0092 NEW)
|
||||||
|
@ -10,7 +10,9 @@ set(MACOS_SUPPORT_MINIMUM 10.13)
|
||||||
# The value of this variable should be set prior to the first project() command invocation.
|
# The value of this variable should be set prior to the first project() command invocation.
|
||||||
# See: https://cmake.org/cmake/help/latest/variable/CMAKE_OSX_DEPLOYMENT_TARGET.html
|
# See: https://cmake.org/cmake/help/latest/variable/CMAKE_OSX_DEPLOYMENT_TARGET.html
|
||||||
if(NOT CMAKE_OSX_DEPLOYMENT_TARGET)
|
if(NOT CMAKE_OSX_DEPLOYMENT_TARGET)
|
||||||
set(CMAKE_OSX_DEPLOYMENT_TARGET ${MACOS_SUPPORT_MINIMUM} CACHE STRING "Minimum macOS version to target for deployment" FORCE)
|
set(CMAKE_OSX_DEPLOYMENT_TARGET ${MACOS_SUPPORT_MINIMUM}
|
||||||
|
CACHE STRING "Minimum macOS version to target for deployment"
|
||||||
|
FORCE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
project(transmission)
|
project(transmission)
|
||||||
|
@ -23,60 +25,60 @@ include(CheckIncludeFile)
|
||||||
include(CheckIncludeFiles)
|
include(CheckIncludeFiles)
|
||||||
include(CheckFunctionExists)
|
include(CheckFunctionExists)
|
||||||
include(CheckLibraryExists)
|
include(CheckLibraryExists)
|
||||||
include(CheckSymbolExists)
|
|
||||||
include(ExternalProject)
|
include(ExternalProject)
|
||||||
include(GNUInstallDirs)
|
include(GNUInstallDirs)
|
||||||
include(TrMacros)
|
include(TrMacros)
|
||||||
|
|
||||||
set(CURL_MINIMUM 7.28.0)
|
set(CURL_MINIMUM 7.28.0)
|
||||||
set(WOLFSSL_MINIMUM 3.4)
|
set(WOLFSSL_MINIMUM 3.4)
|
||||||
set(DEFLATE_MINIMUM 1.10)
|
set(DEFLATE_MINIMUM 1.10)
|
||||||
set(EVENT2_MINIMUM 2.1.0)
|
set(EVENT2_MINIMUM 2.1.0)
|
||||||
set(GIOMM_MINIMUM 2.26.0)
|
set(GIOMM_MINIMUM 2.26.0)
|
||||||
set(GLIBMM_MINIMUM 2.60.0)
|
set(GLIBMM_MINIMUM 2.60.0)
|
||||||
set(GTKMM_MINIMUM 3.24.0)
|
set(GTKMM_MINIMUM 3.24.0)
|
||||||
set(OPENSSL_MINIMUM 0.9.7)
|
set(OPENSSL_MINIMUM 0.9.7)
|
||||||
set(MBEDTLS_MINIMUM 1.3)
|
set(MBEDTLS_MINIMUM 1.3)
|
||||||
set(PSL_MINIMUM 0.21.1)
|
set(PSL_MINIMUM 0.21.1)
|
||||||
set(QT_MINIMUM 5.6)
|
set(QT_MINIMUM 5.6)
|
||||||
|
|
||||||
option(ENABLE_DAEMON "Build daemon" ON)
|
option(ENABLE_DAEMON "Build daemon" ON)
|
||||||
tr_auto_option(ENABLE_GTK "Build GTK client" AUTO)
|
tr_auto_option(ENABLE_GTK "Build GTK client" AUTO)
|
||||||
tr_auto_option(ENABLE_QT "Build Qt client" AUTO)
|
tr_auto_option(ENABLE_QT "Build Qt client" AUTO)
|
||||||
tr_auto_option(ENABLE_MAC "Build Mac client" AUTO)
|
tr_auto_option(ENABLE_MAC "Build Mac client" AUTO)
|
||||||
option(ENABLE_WEB "Build Web client" OFF)
|
option(ENABLE_WEB "Build Web client" OFF)
|
||||||
option(ENABLE_UTILS "Build utils (create, edit, show)" ON)
|
option(ENABLE_UTILS "Build utils (create, edit, show)" ON)
|
||||||
option(ENABLE_CLI "Build command-line client" OFF)
|
option(ENABLE_CLI "Build command-line client" OFF)
|
||||||
option(ENABLE_TESTS "Build unit tests" ON)
|
option(ENABLE_TESTS "Build unit tests" ON)
|
||||||
option(ENABLE_LIGHTWEIGHT "Optimize libtransmission for low-resource systems: smaller cache size, prefer unencrypted peer connections, etc." OFF)
|
option(ENABLE_LIGHTWEIGHT
|
||||||
option(ENABLE_UTP "Build µTP support" ON)
|
"Optimize libtransmission for low-resource systems: smaller cache size, prefer unencrypted peer connections, etc."
|
||||||
option(ENABLE_WERROR "Treat warnings as errors" OFF)
|
OFF)
|
||||||
option(ENABLE_NLS "Enable native language support" ON)
|
option(ENABLE_UTP "Build µTP support" ON)
|
||||||
option(INSTALL_DOC "Build/install documentation" ON)
|
option(ENABLE_WERROR "Treat warnings as errors" OFF)
|
||||||
option(INSTALL_LIB "Install the library" OFF)
|
option(ENABLE_NLS "Enable native language support" ON)
|
||||||
tr_auto_option(RUN_CLANG_TIDY "Run clang-tidy on the code" AUTO)
|
option(INSTALL_DOC "Build/install documentation" ON)
|
||||||
tr_auto_option(USE_SYSTEM_EVENT2 "Use system event2 library" AUTO)
|
option(INSTALL_LIB "Install the library" OFF)
|
||||||
tr_auto_option(USE_SYSTEM_DEFLATE "Use system deflate library" AUTO)
|
tr_auto_option(RUN_CLANG_TIDY "Run clang-tidy on the code" AUTO)
|
||||||
tr_auto_option(USE_SYSTEM_DHT "Use system dht library" 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_MINIUPNPC "Use system miniupnpc library" AUTO)
|
||||||
tr_auto_option(USE_SYSTEM_NATPMP "Use system natpmp 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_UTP "Use system utp library" AUTO)
|
||||||
tr_auto_option(USE_SYSTEM_B64 "Use system b64 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_PSL "Use system psl library" AUTO)
|
||||||
tr_list_option(USE_GTK_VERSION "Use specific GTK version" AUTO 3 4)
|
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(USE_QT_VERSION "Use specific Qt version" AUTO 5 6)
|
||||||
tr_list_option(WITH_CRYPTO "Use specified crypto library" AUTO ccrypto mbedtls openssl wolfssl)
|
tr_list_option(WITH_CRYPTO "Use specified crypto library" AUTO ccrypto mbedtls openssl wolfssl)
|
||||||
tr_auto_option(WITH_INOTIFY "Enable inotify support (on systems that support it)" AUTO)
|
tr_auto_option(WITH_INOTIFY "Enable inotify support (on systems that support it)" AUTO)
|
||||||
tr_auto_option(WITH_KQUEUE "Enable kqueue support (on systems that support it)" AUTO)
|
tr_auto_option(WITH_KQUEUE "Enable kqueue support (on systems that support it)" AUTO)
|
||||||
tr_auto_option(WITH_APPINDICATOR "Use appindicator for system tray icon in GTK client (GTK+ 3 only)" AUTO)
|
tr_auto_option(WITH_APPINDICATOR "Use appindicator for system tray icon in GTK client (GTK+ 3 only)" AUTO)
|
||||||
tr_auto_option(WITH_SYSTEMD "Add support for systemd startup notification (on systems that support it)" AUTO)
|
tr_auto_option(WITH_SYSTEMD "Add support for systemd startup notification (on systems that support it)" AUTO)
|
||||||
|
|
||||||
set(TR_NAME ${PROJECT_NAME})
|
set(TR_NAME ${PROJECT_NAME})
|
||||||
|
|
||||||
# major.minor.patch[-[beta.N.]dev]+commit_hash
|
# major.minor.patch[-[beta.N.]dev]+commit_hash
|
||||||
# dev builds come between releases, e.g. autobuilds from CI
|
# dev builds come between releases, e.g. autobuilds from CI
|
||||||
|
|
||||||
|
|
||||||
# these should be the only five lines you need to change
|
# these should be the only five lines you need to change
|
||||||
set(TR_VERSION_MAJOR "4")
|
set(TR_VERSION_MAJOR "4")
|
||||||
set(TR_VERSION_MINOR "0")
|
set(TR_VERSION_MINOR "0")
|
||||||
|
@ -85,9 +87,9 @@ set(TR_VERSION_BETA_NUMBER "2") # empty string for not beta
|
||||||
set(TR_VERSION_DEV TRUE)
|
set(TR_VERSION_DEV TRUE)
|
||||||
|
|
||||||
# derived from above: release type
|
# derived from above: release type
|
||||||
if (TR_VERSION_DEV)
|
if(TR_VERSION_DEV)
|
||||||
set(TR_NIGHTLY_RELEASE 1)
|
set(TR_NIGHTLY_RELEASE 1)
|
||||||
elseif (NOT "${TR_VERSION_BETA_NUMBER}" STREQUAL "")
|
elseif(NOT "${TR_VERSION_BETA_NUMBER}" STREQUAL "")
|
||||||
set(TR_BETA_RELEASE 1)
|
set(TR_BETA_RELEASE 1)
|
||||||
else()
|
else()
|
||||||
set(TR_STABLE_RELEASE 1)
|
set(TR_STABLE_RELEASE 1)
|
||||||
|
@ -99,15 +101,15 @@ endif()
|
||||||
# '4.0.0-beta.2'
|
# '4.0.0-beta.2'
|
||||||
# '4.0.0'
|
# '4.0.0'
|
||||||
set(TR_SEMVER "${TR_VERSION_MAJOR}.${TR_VERSION_MINOR}.${TR_VERSION_PATCH}")
|
set(TR_SEMVER "${TR_VERSION_MAJOR}.${TR_VERSION_MINOR}.${TR_VERSION_PATCH}")
|
||||||
if (TR_VERSION_DEV OR NOT "${TR_VERSION_BETA_NUMBER}" STREQUAL "")
|
if(TR_VERSION_DEV OR NOT "${TR_VERSION_BETA_NUMBER}" STREQUAL "")
|
||||||
string(APPEND TR_SEMVER "-")
|
string(APPEND TR_SEMVER "-")
|
||||||
if (NOT "${TR_VERSION_BETA_NUMBER}" STREQUAL "")
|
if(NOT "${TR_VERSION_BETA_NUMBER}" STREQUAL "")
|
||||||
string(APPEND TR_SEMVER "beta.${TR_VERSION_BETA_NUMBER}")
|
string(APPEND TR_SEMVER "beta.${TR_VERSION_BETA_NUMBER}")
|
||||||
endif()
|
endif()
|
||||||
if (TR_VERSION_DEV AND NOT "${TR_VERSION_BETA_NUMBER}" STREQUAL "")
|
if(TR_VERSION_DEV AND NOT "${TR_VERSION_BETA_NUMBER}" STREQUAL "")
|
||||||
string(APPEND TR_SEMVER ".")
|
string(APPEND TR_SEMVER ".")
|
||||||
endif()
|
endif()
|
||||||
if (TR_VERSION_DEV)
|
if(TR_VERSION_DEV)
|
||||||
string(APPEND TR_SEMVER "dev")
|
string(APPEND TR_SEMVER "dev")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
@ -127,16 +129,15 @@ string(SUBSTRING "${BASE62}" "${TR_VERSION_MINOR}" 1 TMPSTR)
|
||||||
string(APPEND TR_PEER_ID_PREFIX "${TMPSTR}")
|
string(APPEND TR_PEER_ID_PREFIX "${TMPSTR}")
|
||||||
string(SUBSTRING "${BASE62}" "${TR_VERSION_PATCH}" 1 TMPSTR)
|
string(SUBSTRING "${BASE62}" "${TR_VERSION_PATCH}" 1 TMPSTR)
|
||||||
string(APPEND TR_PEER_ID_PREFIX "${TMPSTR}")
|
string(APPEND TR_PEER_ID_PREFIX "${TMPSTR}")
|
||||||
if (TR_VERSION_DEV)
|
if(TR_VERSION_DEV)
|
||||||
string(APPEND TR_PEER_ID_PREFIX "Z")
|
string(APPEND TR_PEER_ID_PREFIX "Z")
|
||||||
elseif (NOT "${TR_VERSION_BETA_NUMBER}" STREQUAL "")
|
elseif(NOT "${TR_VERSION_BETA_NUMBER}" STREQUAL "")
|
||||||
string(APPEND TR_PEER_ID_PREFIX "B")
|
string(APPEND TR_PEER_ID_PREFIX "B")
|
||||||
else()
|
else()
|
||||||
string(APPEND TR_PEER_ID_PREFIX "0")
|
string(APPEND TR_PEER_ID_PREFIX "0")
|
||||||
endif()
|
endif()
|
||||||
string(APPEND TR_PEER_ID_PREFIX "-")
|
string(APPEND TR_PEER_ID_PREFIX "-")
|
||||||
|
|
||||||
|
|
||||||
set(TR_VCS_REVISION_FILE "${CMAKE_SOURCE_DIR}/REVISION")
|
set(TR_VCS_REVISION_FILE "${CMAKE_SOURCE_DIR}/REVISION")
|
||||||
|
|
||||||
if(EXISTS ${CMAKE_SOURCE_DIR}/.git)
|
if(EXISTS ${CMAKE_SOURCE_DIR}/.git)
|
||||||
|
@ -149,14 +150,10 @@ elseif(NOT "$ENV{TEAMCITY_PROJECT_NAME}" STREQUAL "" AND NOT "$ENV{BUILD_VCS_NUM
|
||||||
set(TR_VCS_REVISION "$ENV{BUILD_VCS_NUMBER}")
|
set(TR_VCS_REVISION "$ENV{BUILD_VCS_NUMBER}")
|
||||||
elseif(GIT_FOUND)
|
elseif(GIT_FOUND)
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND
|
COMMAND ${GIT_EXECUTABLE} rev-list --max-count=1 HEAD
|
||||||
${GIT_EXECUTABLE} rev-list --max-count=1 HEAD
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
WORKING_DIRECTORY
|
OUTPUT_VARIABLE TR_VCS_REVISION
|
||||||
${CMAKE_SOURCE_DIR}
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
OUTPUT_VARIABLE
|
|
||||||
TR_VCS_REVISION
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
||||||
)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if("${TR_VCS_REVISION}" STREQUAL "" AND EXISTS "${TR_VCS_REVISION_FILE}")
|
if("${TR_VCS_REVISION}" STREQUAL "" AND EXISTS "${TR_VCS_REVISION_FILE}")
|
||||||
|
@ -196,9 +193,12 @@ if(WIN32)
|
||||||
endforeach()
|
endforeach()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
set(CMAKE_FOLDER "third-party")
|
||||||
|
|
||||||
find_package(Fmt)
|
find_package(Fmt)
|
||||||
add_definitions(-DFMT_HEADER_ONLY -DFMT_EXCEPTIONS=0)
|
add_definitions(
|
||||||
include_directories(SYSTEM ${LIBFMT_INCLUDE_DIRS})
|
-DFMT_HEADER_ONLY
|
||||||
|
-DFMT_EXCEPTIONS=0)
|
||||||
|
|
||||||
find_package(WideInteger)
|
find_package(WideInteger)
|
||||||
find_package(FastFloat)
|
find_package(FastFloat)
|
||||||
|
@ -221,7 +221,9 @@ endif()
|
||||||
set(CRYPTO_PKG "")
|
set(CRYPTO_PKG "")
|
||||||
if(WITH_CRYPTO STREQUAL "AUTO" OR WITH_CRYPTO STREQUAL "ccrypto")
|
if(WITH_CRYPTO STREQUAL "AUTO" OR WITH_CRYPTO STREQUAL "ccrypto")
|
||||||
tr_get_required_flag(WITH_CRYPTO CCRYPTO_IS_REQUIRED)
|
tr_get_required_flag(WITH_CRYPTO CCRYPTO_IS_REQUIRED)
|
||||||
find_path(CCRYPTO_INCLUDE_DIR NAMES CommonCrypto/CommonCrypto.h ${CCRYPTO_IS_REQUIRED})
|
find_path(CCRYPTO_INCLUDE_DIR
|
||||||
|
NAMES CommonCrypto/CommonCrypto.h
|
||||||
|
${CCRYPTO_IS_REQUIRED})
|
||||||
mark_as_advanced(CCRYPTO_INCLUDE_DIR)
|
mark_as_advanced(CCRYPTO_INCLUDE_DIR)
|
||||||
tr_fixup_list_option(WITH_CRYPTO "ccrypto" CCRYPTO_INCLUDE_DIR "AUTO" CCRYPTO_IS_REQUIRED)
|
tr_fixup_list_option(WITH_CRYPTO "ccrypto" CCRYPTO_INCLUDE_DIR "AUTO" CCRYPTO_IS_REQUIRED)
|
||||||
if(WITH_CRYPTO STREQUAL "ccrypto")
|
if(WITH_CRYPTO STREQUAL "ccrypto")
|
||||||
|
@ -318,8 +320,17 @@ if(ENABLE_QT)
|
||||||
set(ENABLE_QT_COM_INTEROP OFF)
|
set(ENABLE_QT_COM_INTEROP OFF)
|
||||||
set(ENABLE_QT_DBUS_INTEROP OFF)
|
set(ENABLE_QT_DBUS_INTEROP OFF)
|
||||||
|
|
||||||
set(QT_REQUIRED_MODULES Core Gui Widgets Network Svg LinguistTools)
|
set(QT_REQUIRED_MODULES
|
||||||
set(QT_OPTIONAL_MODULES DBus AxContainer AxServer)
|
Core
|
||||||
|
Gui
|
||||||
|
Widgets
|
||||||
|
Network
|
||||||
|
Svg
|
||||||
|
LinguistTools)
|
||||||
|
set(QT_OPTIONAL_MODULES
|
||||||
|
DBus
|
||||||
|
AxContainer
|
||||||
|
AxServer)
|
||||||
set(MISSING_QT_MODULE)
|
set(MISSING_QT_MODULE)
|
||||||
|
|
||||||
set(Qt_NAMES Qt6 Qt5)
|
set(Qt_NAMES Qt6 Qt5)
|
||||||
|
@ -413,7 +424,7 @@ tr_add_external_auto_library(EVENT2 libevent event
|
||||||
|
|
||||||
tr_add_external_auto_library(NATPMP libnatpmp natpmp)
|
tr_add_external_auto_library(NATPMP libnatpmp natpmp)
|
||||||
if(NOT USE_SYSTEM_NATPMP)
|
if(NOT USE_SYSTEM_NATPMP)
|
||||||
set(NATPMP_DEFINITIONS -DNATPMP_STATICLIB)
|
set(NATPMP_DEFINITIONS NATPMP_STATICLIB)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
tr_add_external_auto_library(MINIUPNPC miniupnpc miniupnpc
|
tr_add_external_auto_library(MINIUPNPC miniupnpc miniupnpc
|
||||||
|
@ -421,9 +432,9 @@ tr_add_external_auto_library(MINIUPNPC miniupnpc miniupnpc
|
||||||
-DUPNPC_BUILD_STATIC=ON
|
-DUPNPC_BUILD_STATIC=ON
|
||||||
-DUPNPC_BUILD_SHARED=OFF
|
-DUPNPC_BUILD_SHARED=OFF
|
||||||
-DUPNPC_BUILD_TESTS=OFF)
|
-DUPNPC_BUILD_TESTS=OFF)
|
||||||
set(MINIUPNPC_DEFINITIONS -DSYSTEM_MINIUPNP)
|
set(MINIUPNPC_DEFINITIONS SYSTEM_MINIUPNP)
|
||||||
if(NOT USE_SYSTEM_MINIUPNPC)
|
if(NOT USE_SYSTEM_MINIUPNPC)
|
||||||
list(APPEND MINIUPNPC_DEFINITIONS -DMINIUPNP_STATICLIB)
|
list(APPEND MINIUPNPC_DEFINITIONS MINIUPNP_STATICLIB)
|
||||||
set(MINIUPNPC_VERSION 1.9)
|
set(MINIUPNPC_VERSION 1.9)
|
||||||
set(MINIUPNPC_API_VERSION 12)
|
set(MINIUPNPC_API_VERSION 12)
|
||||||
endif()
|
endif()
|
||||||
|
@ -437,15 +448,18 @@ tr_add_external_auto_library(PSL libpsl psl)
|
||||||
|
|
||||||
if(ENABLE_UTP)
|
if(ENABLE_UTP)
|
||||||
tr_add_external_auto_library(UTP libutp utp
|
tr_add_external_auto_library(UTP libutp utp
|
||||||
CMAKE_ARGS
|
CMAKE_ARGS -DLIBUTP_BUILD_PROGRAMS=OFF)
|
||||||
-DLIBUTP_BUILD_PROGRAMS=OFF)
|
|
||||||
|
|
||||||
if(UTP_UPSTREAM_TARGET)
|
if(UTP_UPSTREAM_TARGET)
|
||||||
# Use C++ linker for anything that depends on static libutp
|
# Use C++ linker for anything that depends on static libutp
|
||||||
# TODO: switch to imported targets for all the dependencies
|
# TODO: switch to imported targets for all the dependencies
|
||||||
add_library(UTP::UTP STATIC IMPORTED)
|
add_library(UTP::UTP STATIC IMPORTED)
|
||||||
set_property(TARGET UTP::UTP PROPERTY IMPORTED_LOCATION "${UTP_LIBRARIES}")
|
set_property(
|
||||||
set_property(TARGET UTP::UTP PROPERTY IMPORTED_LINK_INTERFACE_LANGUAGES "CXX")
|
TARGET UTP::UTP
|
||||||
|
PROPERTY IMPORTED_LOCATION "${UTP_LIBRARIES}")
|
||||||
|
set_property(
|
||||||
|
TARGET UTP::UTP
|
||||||
|
PROPERTY IMPORTED_LINK_INTERFACE_LANGUAGES "CXX")
|
||||||
set(UTP_LIBRARIES UTP::UTP)
|
set(UTP_LIBRARIES UTP::UTP)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
@ -484,8 +498,6 @@ if(WITH_SYSTEMD)
|
||||||
tr_fixup_auto_option(WITH_SYSTEMD SYSTEMD_FOUND SYSTEMD_IS_REQUIRED)
|
tr_fixup_auto_option(WITH_SYSTEMD SYSTEMD_FOUND SYSTEMD_IS_REQUIRED)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include_directories(${CMAKE_BINARY_DIR})
|
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
foreach(L C CXX)
|
foreach(L C CXX)
|
||||||
# Filter out needless definitions
|
# Filter out needless definitions
|
||||||
|
@ -493,6 +505,8 @@ if(WIN32)
|
||||||
endforeach()
|
endforeach()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
unset(CMAKE_FOLDER)
|
||||||
|
|
||||||
## Compiler standard version
|
## Compiler standard version
|
||||||
|
|
||||||
set(CMAKE_C_STANDARD 11)
|
set(CMAKE_C_STANDARD 11)
|
||||||
|
@ -509,8 +523,7 @@ include(CheckCCompilerFlag)
|
||||||
include(CheckCXXCompilerFlag)
|
include(CheckCXXCompilerFlag)
|
||||||
|
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
set(WARNING_CANDIDATES
|
set(WARNING_CANDIDATES /W4)
|
||||||
/W4)
|
|
||||||
|
|
||||||
foreach(FLAG ${WARNING_CANDIDATES})
|
foreach(FLAG ${WARNING_CANDIDATES})
|
||||||
list(APPEND C_WARNING_FLAGS ${FLAG})
|
list(APPEND C_WARNING_FLAGS ${FLAG})
|
||||||
|
@ -573,7 +586,7 @@ else()
|
||||||
set(CACHE_ID "${CMAKE_C_COMPILER_ID}_C_HAS${FLAG_ID}")
|
set(CACHE_ID "${CMAKE_C_COMPILER_ID}_C_HAS${FLAG_ID}")
|
||||||
string(TOLOWER "${CACHE_ID}" CACHE_ID)
|
string(TOLOWER "${CACHE_ID}" CACHE_ID)
|
||||||
check_c_compiler_flag(${FLAG} ${CACHE_ID})
|
check_c_compiler_flag(${FLAG} ${CACHE_ID})
|
||||||
if (${CACHE_ID})
|
if(${CACHE_ID})
|
||||||
# Make sure the next loop only adds flags that are relevant for a particular language
|
# Make sure the next loop only adds flags that are relevant for a particular language
|
||||||
set(CMAKE_REQUIRED_FLAGS ${FLAG})
|
set(CMAKE_REQUIRED_FLAGS ${FLAG})
|
||||||
break()
|
break()
|
||||||
|
@ -587,7 +600,7 @@ else()
|
||||||
set(CACHE_ID "${CMAKE_C_COMPILER_ID}_C_HAS${FLAG_ID}")
|
set(CACHE_ID "${CMAKE_C_COMPILER_ID}_C_HAS${FLAG_ID}")
|
||||||
string(TOLOWER "${CACHE_ID}" CACHE_ID)
|
string(TOLOWER "${CACHE_ID}" CACHE_ID)
|
||||||
check_c_compiler_flag(${FLAG} ${CACHE_ID})
|
check_c_compiler_flag(${FLAG} ${CACHE_ID})
|
||||||
if (${CACHE_ID})
|
if(${CACHE_ID})
|
||||||
list(APPEND C_WARNING_FLAGS ${FLAG})
|
list(APPEND C_WARNING_FLAGS ${FLAG})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -595,7 +608,7 @@ else()
|
||||||
set(CACHE_ID "${CMAKE_CXX_COMPILER_ID}_CXX_HAS${FLAG_ID}")
|
set(CACHE_ID "${CMAKE_CXX_COMPILER_ID}_CXX_HAS${FLAG_ID}")
|
||||||
string(TOLOWER "${CACHE_ID}" CACHE_ID)
|
string(TOLOWER "${CACHE_ID}" CACHE_ID)
|
||||||
check_cxx_compiler_flag(${FLAG} ${CACHE_ID})
|
check_cxx_compiler_flag(${FLAG} ${CACHE_ID})
|
||||||
if (${CACHE_ID})
|
if(${CACHE_ID})
|
||||||
list(APPEND CXX_WARNING_FLAGS ${FLAG})
|
list(APPEND CXX_WARNING_FLAGS ${FLAG})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -616,83 +629,11 @@ add_compile_options(
|
||||||
|
|
||||||
include(LargeFileSupport)
|
include(LargeFileSupport)
|
||||||
|
|
||||||
set(NEEDED_HEADERS
|
|
||||||
sys/signalfd.h
|
|
||||||
sys/statvfs.h
|
|
||||||
xfs/xfs.h
|
|
||||||
xlocale.h)
|
|
||||||
|
|
||||||
if(ENABLE_NLS)
|
|
||||||
check_library_exists(intl libintl_gettext "" HAVE_LIBINTL)
|
|
||||||
if(HAVE_LIBINTL)
|
|
||||||
set(LIBINTL_LIBRARY intl)
|
|
||||||
# check_function_exists() below may need this
|
|
||||||
# when looking for gettext() and ngettext()
|
|
||||||
list(APPEND CMAKE_REQUIRED_LIBRARIES intl)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
list(APPEND NEEDED_HEADERS libintl.h)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
foreach(H ${NEEDED_HEADERS})
|
|
||||||
tr_make_id("${H}" H_ID)
|
|
||||||
check_include_file(${H} HAVE_${H_ID})
|
|
||||||
if(HAVE_${H_ID})
|
|
||||||
add_definitions(-DHAVE_${H_ID})
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
set(NEEDED_FUNCTIONS
|
|
||||||
_configthreadlocale
|
|
||||||
copy_file_range
|
|
||||||
copyfile
|
|
||||||
daemon
|
|
||||||
fallocate64
|
|
||||||
flock
|
|
||||||
getmntent
|
|
||||||
gettext
|
|
||||||
htonll
|
|
||||||
mkdtemp
|
|
||||||
ngettext
|
|
||||||
ntohll
|
|
||||||
posix_fadvise
|
|
||||||
posix_fallocate
|
|
||||||
pread
|
|
||||||
pwrite
|
|
||||||
sendfile64
|
|
||||||
statvfs
|
|
||||||
strlcpy
|
|
||||||
syslog)
|
|
||||||
|
|
||||||
foreach(F ${NEEDED_FUNCTIONS})
|
|
||||||
tr_make_id("${F}" F_ID)
|
|
||||||
check_function_exists(${F} HAVE_${F_ID})
|
|
||||||
if(HAVE_${F_ID})
|
|
||||||
add_definitions(-DHAVE_${F_ID})
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
if(ICONV_FOUND)
|
|
||||||
add_definitions(-DHAVE_ICONV)
|
|
||||||
if(ICONV_SECOND_ARGUMENT_IS_CONST)
|
|
||||||
add_definitions(-DICONV_SECOND_ARGUMENT_IS_CONST)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# if(MINGW)
|
|
||||||
# check_function_exists(__mingw_printf HAVE_MINGW_PRINTF)
|
|
||||||
# if(HAVE_MINGW_PRINTF)
|
|
||||||
# add_definitions(-D__USE_MINGW_ANSI_STDIO=1 -D__STDC_FORMAT_MACROS=1)
|
|
||||||
# endif()
|
|
||||||
# endif()
|
|
||||||
|
|
||||||
check_library_exists(m sqrt "" HAVE_LIBM)
|
check_library_exists(m sqrt "" HAVE_LIBM)
|
||||||
if(HAVE_LIBM)
|
if(HAVE_LIBM)
|
||||||
set(LIBM_LIBRARY m)
|
set(LIBM_LIBRARY m)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
check_symbol_exists(SO_REUSEPORT "sys/types.h;sys/socket.h" HAVE_SO_REUSEPORT)
|
|
||||||
|
|
||||||
set(TR_NETWORK_LIBRARIES)
|
set(TR_NETWORK_LIBRARIES)
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
list(APPEND TR_NETWORK_LIBRARIES iphlpapi ws2_32)
|
list(APPEND TR_NETWORK_LIBRARIES iphlpapi ws2_32)
|
||||||
|
@ -709,7 +650,7 @@ else()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(RUN_CLANG_TIDY STREQUAL "AUTO")
|
if(RUN_CLANG_TIDY STREQUAL "AUTO")
|
||||||
if (DEFINED ENV{LGTM_SRC} OR DEFINED ENV{APPVEYOR}) # skip clang-tidy on LGTM/appveyor
|
if(DEFINED ENV{LGTM_SRC} OR DEFINED ENV{APPVEYOR}) # skip clang-tidy on LGTM/appveyor
|
||||||
set(RUN_CLANG_TIDY OFF)
|
set(RUN_CLANG_TIDY OFF)
|
||||||
else()
|
else()
|
||||||
set(RUN_CLANG_TIDY ON)
|
set(RUN_CLANG_TIDY ON)
|
||||||
|
@ -719,7 +660,7 @@ endif()
|
||||||
if(RUN_CLANG_TIDY)
|
if(RUN_CLANG_TIDY)
|
||||||
message(STATUS "Looking for clang-tidy")
|
message(STATUS "Looking for clang-tidy")
|
||||||
find_program(CLANG_TIDY clang-tidy)
|
find_program(CLANG_TIDY clang-tidy)
|
||||||
if (CLANG_TIDY STREQUAL "CLANG_TIDY-NOTFOUND")
|
if(CLANG_TIDY STREQUAL "CLANG_TIDY-NOTFOUND")
|
||||||
message(STATUS "Looking for clang-tidy - not found")
|
message(STATUS "Looking for clang-tidy - not found")
|
||||||
else()
|
else()
|
||||||
message(STATUS "Looking for clang-tidy - found")
|
message(STATUS "Looking for clang-tidy - found")
|
||||||
|
@ -733,7 +674,9 @@ if(ENABLE_TESTS)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
function(tr_install_web DST_DIR)
|
function(tr_install_web DST_DIR)
|
||||||
install(DIRECTORY ${CMAKE_SOURCE_DIR}/web/public_html DESTINATION ${DST_DIR})
|
install(
|
||||||
|
DIRECTORY ${CMAKE_SOURCE_DIR}/web/public_html
|
||||||
|
DESTINATION ${DST_DIR})
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
add_subdirectory(libtransmission)
|
add_subdirectory(libtransmission)
|
||||||
|
@ -760,8 +703,17 @@ if(ENABLE_DAEMON OR ENABLE_GTK OR ENABLE_QT)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(INSTALL_DOC)
|
if(INSTALL_DOC)
|
||||||
install(FILES AUTHORS COPYING README.md docs/rpc-spec.md extras/send-email-when-torrent-done.sh DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
install(
|
||||||
install(DIRECTORY news DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
FILES
|
||||||
|
AUTHORS
|
||||||
|
COPYING
|
||||||
|
README.md
|
||||||
|
docs/rpc-spec.md
|
||||||
|
extras/send-email-when-torrent-done.sh
|
||||||
|
DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
||||||
|
install(
|
||||||
|
DIRECTORY news
|
||||||
|
DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(MSVC AND ENABLE_DAEMON AND ENABLE_QT AND ENABLE_UTILS AND WITH_CRYPTO STREQUAL "openssl")
|
if(MSVC AND ENABLE_DAEMON AND ENABLE_QT AND ENABLE_UTILS AND WITH_CRYPTO STREQUAL "openssl")
|
||||||
|
@ -781,33 +733,27 @@ endif()
|
||||||
list(APPEND CPACK_SOURCE_IGNORE_FILES
|
list(APPEND CPACK_SOURCE_IGNORE_FILES
|
||||||
"${CMAKE_BINARY_DIR}"
|
"${CMAKE_BINARY_DIR}"
|
||||||
"[.]git"
|
"[.]git"
|
||||||
"node_modules"
|
"node_modules")
|
||||||
)
|
|
||||||
|
|
||||||
## Code Formatting
|
## Code Formatting
|
||||||
|
|
||||||
if(GIT_FOUND)
|
if(GIT_FOUND)
|
||||||
execute_process(COMMAND
|
execute_process(
|
||||||
"${GIT_EXECUTABLE}" rev-parse --show-toplevel
|
COMMAND "${GIT_EXECUTABLE}" rev-parse --show-toplevel
|
||||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
OUTPUT_VARIABLE TR_GIT_ROOT
|
OUTPUT_VARIABLE TR_GIT_ROOT
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
)
|
|
||||||
if(TR_GIT_ROOT AND IS_DIRECTORY "${TR_GIT_ROOT}/.git")
|
if(TR_GIT_ROOT AND IS_DIRECTORY "${TR_GIT_ROOT}/.git")
|
||||||
configure_file(
|
configure_file("${CMAKE_SOURCE_DIR}/extras/pre-commit" "${TR_GIT_ROOT}/.git/hooks/pre-commit" COPYONLY)
|
||||||
"${CMAKE_SOURCE_DIR}/extras/pre-commit"
|
|
||||||
"${TR_GIT_ROOT}/.git/hooks/pre-commit"
|
|
||||||
COPYONLY
|
|
||||||
)
|
|
||||||
add_custom_target(check-format
|
add_custom_target(check-format
|
||||||
COMMAND "${CMAKE_SOURCE_DIR}/code_style.sh" --check
|
COMMAND "${CMAKE_SOURCE_DIR}/code_style.sh" --check
|
||||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
|
||||||
)
|
|
||||||
add_custom_target(format
|
add_custom_target(format
|
||||||
COMMAND "${CMAKE_SOURCE_DIR}/code_style.sh"
|
COMMAND "${CMAKE_SOURCE_DIR}/code_style.sh"
|
||||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}")
|
||||||
)
|
set_property(
|
||||||
set_property(TARGET check-format format PROPERTY FOLDER "utility")
|
TARGET check-format format
|
||||||
|
PROPERTY FOLDER "utility")
|
||||||
endif()
|
endif()
|
||||||
unset(TR_GIT_ROOT)
|
unset(TR_GIT_ROOT)
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -1,18 +1,33 @@
|
||||||
project(trcli)
|
add_executable(${TR_NAME}-cli)
|
||||||
|
|
||||||
include_directories(${CMAKE_SOURCE_DIR})
|
target_sources(${TR_NAME}-cli
|
||||||
|
PRIVATE
|
||||||
|
cli.cc)
|
||||||
|
|
||||||
tr_win32_app_info(${PROJECT_NAME}_WIN32_RC_FILE
|
target_include_directories(${TR_NAME}-cli
|
||||||
|
PRIVATE
|
||||||
|
${CMAKE_SOURCE_DIR})
|
||||||
|
|
||||||
|
target_include_directories(${TR_NAME}-cli SYSTEM
|
||||||
|
PRIVATE
|
||||||
|
${LIBFMT_INCLUDE_DIRS}
|
||||||
|
${CURL_INCLUDE_DIRS})
|
||||||
|
|
||||||
|
target_link_libraries(${TR_NAME}-cli
|
||||||
|
PRIVATE
|
||||||
|
${TR_NAME})
|
||||||
|
|
||||||
|
tr_win32_app_info(${TR_NAME}-cli
|
||||||
"Transmission Utility ('cli', obsolete)"
|
"Transmission Utility ('cli', obsolete)"
|
||||||
"${TR_NAME}-cli"
|
"${TR_NAME}-cli"
|
||||||
"${TR_NAME}-cli.exe")
|
"${TR_NAME}-cli.exe")
|
||||||
|
|
||||||
add_executable(${TR_NAME}-cli cli.cc ${${PROJECT_NAME}_WIN32_RC_FILE})
|
install(
|
||||||
include_directories(${TR_NAME}-cli ${CURL_INCLUDE_DIRS})
|
TARGETS ${TR_NAME}-cli
|
||||||
target_link_libraries(${TR_NAME}-cli ${TR_NAME})
|
DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
|
|
||||||
install(TARGETS ${TR_NAME}-cli DESTINATION ${CMAKE_INSTALL_BINDIR})
|
|
||||||
|
|
||||||
if(INSTALL_DOC)
|
if(INSTALL_DOC)
|
||||||
install(FILES ${TR_NAME}-cli.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
|
install(
|
||||||
|
FILES ${TR_NAME}-cli.1
|
||||||
|
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -1,8 +1,14 @@
|
||||||
find_package(PkgConfig QUIET)
|
find_package(PkgConfig QUIET)
|
||||||
|
|
||||||
pkg_check_modules(PC_AYATANA_APPINDICATOR QUIET ayatana-appindicator3-0.1)
|
pkg_check_modules(PC_AYATANA_APPINDICATOR QUIET ayatana-appindicator3-0.1)
|
||||||
find_path(AYATANA_APPINDICATOR_INCLUDE_DIR NAMES libayatana-appindicator/app-indicator.h HINTS ${PC_AYATANA_APPINDICATOR_INCLUDE_DIRS})
|
find_path(AYATANA_APPINDICATOR_INCLUDE_DIR
|
||||||
find_library(AYATANA_APPINDICATOR_LIBRARY NAMES ayatana-appindicator3 ayatana-appindicator HINTS ${PC_AYATANA_APPINDICATOR_LIBRARY_DIRS})
|
NAMES libayatana-appindicator/app-indicator.h
|
||||||
|
HINTS ${PC_AYATANA_APPINDICATOR_INCLUDE_DIRS})
|
||||||
|
find_library(AYATANA_APPINDICATOR_LIBRARY
|
||||||
|
NAMES
|
||||||
|
ayatana-appindicator3
|
||||||
|
ayatana-appindicator
|
||||||
|
HINTS ${PC_AYATANA_APPINDICATOR_LIBRARY_DIRS})
|
||||||
|
|
||||||
if(AYATANA_APPINDICATOR_INCLUDE_DIR AND AYATANA_APPINDICATOR_LIBRARY)
|
if(AYATANA_APPINDICATOR_INCLUDE_DIR AND AYATANA_APPINDICATOR_LIBRARY)
|
||||||
set(APPINDICATOR_INCLUDE_DIR ${AYATANA_APPINDICATOR_INCLUDE_DIR})
|
set(APPINDICATOR_INCLUDE_DIR ${AYATANA_APPINDICATOR_INCLUDE_DIR})
|
||||||
|
@ -10,8 +16,14 @@ if(AYATANA_APPINDICATOR_INCLUDE_DIR AND AYATANA_APPINDICATOR_LIBRARY)
|
||||||
set(APPINDICATOR_IS_AYATANA ON)
|
set(APPINDICATOR_IS_AYATANA ON)
|
||||||
else()
|
else()
|
||||||
pkg_check_modules(PC_APPINDICATOR QUIET appindicator3-0.1)
|
pkg_check_modules(PC_APPINDICATOR QUIET appindicator3-0.1)
|
||||||
find_path(APPINDICATOR_INCLUDE_DIR NAMES libappindicator/app-indicator.h HINTS ${PC_APPINDICATOR_INCLUDE_DIRS})
|
find_path(APPINDICATOR_INCLUDE_DIR
|
||||||
find_library(APPINDICATOR_LIBRARY NAMES appindicator3 appindicator HINTS ${PC_APPINDICATOR_LIBRARY_DIRS})
|
NAMES libappindicator/app-indicator.h
|
||||||
|
HINTS ${PC_APPINDICATOR_INCLUDE_DIRS})
|
||||||
|
find_library(APPINDICATOR_LIBRARY
|
||||||
|
NAMES
|
||||||
|
appindicator3
|
||||||
|
appindicator
|
||||||
|
HINTS ${PC_APPINDICATOR_LIBRARY_DIRS})
|
||||||
set(APPINDICATOR_IS_AYATANA OFF)
|
set(APPINDICATOR_IS_AYATANA OFF)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
@ -20,8 +32,7 @@ include(FindPackageHandleStandardArgs)
|
||||||
find_package_handle_standard_args(APPINDICATOR
|
find_package_handle_standard_args(APPINDICATOR
|
||||||
REQUIRED_VARS
|
REQUIRED_VARS
|
||||||
APPINDICATOR_LIBRARY
|
APPINDICATOR_LIBRARY
|
||||||
APPINDICATOR_INCLUDE_DIR
|
APPINDICATOR_INCLUDE_DIR)
|
||||||
)
|
|
||||||
|
|
||||||
mark_as_advanced(AYATANA_APPINDICATOR_INCLUDE_DIR AYATANA_APPINDICATOR_LIBRARY)
|
mark_as_advanced(AYATANA_APPINDICATOR_INCLUDE_DIR AYATANA_APPINDICATOR_LIBRARY)
|
||||||
mark_as_advanced(APPINDICATOR_INCLUDE_DIR APPINDICATOR_LIBRARY)
|
mark_as_advanced(APPINDICATOR_INCLUDE_DIR APPINDICATOR_LIBRARY)
|
||||||
|
|
|
@ -12,8 +12,14 @@ if(UNIX)
|
||||||
pkg_check_modules(_B64 QUIET libb64)
|
pkg_check_modules(_B64 QUIET libb64)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_path(B64_INCLUDE_DIR NAMES b64/cdecode.h b64/cencode.h HINTS ${_B64_INCLUDEDIR})
|
find_path(B64_INCLUDE_DIR
|
||||||
find_library(B64_LIBRARY NAMES b64 HINTS ${_B64_LIBDIR})
|
NAMES
|
||||||
|
b64/cdecode.h
|
||||||
|
b64/cencode.h
|
||||||
|
HINTS ${_B64_INCLUDEDIR})
|
||||||
|
find_library(B64_LIBRARY
|
||||||
|
NAMES b64
|
||||||
|
HINTS ${_B64_LIBDIR})
|
||||||
|
|
||||||
set(B64_INCLUDE_DIRS ${B64_INCLUDE_DIR})
|
set(B64_INCLUDE_DIRS ${B64_INCLUDE_DIR})
|
||||||
set(B64_LIBRARIES ${B64_LIBRARY})
|
set(B64_LIBRARIES ${B64_LIBRARY})
|
||||||
|
@ -23,8 +29,7 @@ include(FindPackageHandleStandardArgs)
|
||||||
find_package_handle_standard_args(B64
|
find_package_handle_standard_args(B64
|
||||||
REQUIRED_VARS
|
REQUIRED_VARS
|
||||||
B64_LIBRARY
|
B64_LIBRARY
|
||||||
B64_INCLUDE_DIR
|
B64_INCLUDE_DIR)
|
||||||
)
|
|
||||||
|
|
||||||
mark_as_advanced(B64_INCLUDE_DIR B64_LIBRARY)
|
mark_as_advanced(B64_INCLUDE_DIR B64_LIBRARY)
|
||||||
|
|
||||||
|
|
|
@ -8,13 +8,17 @@ if(DEFLATE_PREFER_STATIC_LIB)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(UNIX)
|
if(UNIX)
|
||||||
find_package(PkgConfig QUIET)
|
find_package(PkgConfig QUIET)
|
||||||
# pkg-config support added in libdeflate v1.9
|
# pkg-config support added in libdeflate v1.9
|
||||||
pkg_check_modules(_DEFLATE libdeflate>=${DEFLATE_MINIMUM})
|
pkg_check_modules(_DEFLATE libdeflate>=${DEFLATE_MINIMUM})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_path(DEFLATE_INCLUDE_DIR NAMES libdeflate.h HINTS ${_DEFLATE_INCLUDEDIR})
|
find_path(DEFLATE_INCLUDE_DIR
|
||||||
find_library(DEFLATE_LIBRARY NAMES deflate HINTS ${_DEFLATE_LIBDIR})
|
NAMES libdeflate.h
|
||||||
|
HINTS ${_DEFLATE_INCLUDEDIR})
|
||||||
|
find_library(DEFLATE_LIBRARY
|
||||||
|
NAMES deflate
|
||||||
|
HINTS ${_DEFLATE_LIBDIR})
|
||||||
|
|
||||||
set(DEFLATE_INCLUDE_DIRS ${DEFLATE_INCLUDE_DIR})
|
set(DEFLATE_INCLUDE_DIRS ${DEFLATE_INCLUDE_DIR})
|
||||||
set(DEFLATE_LIBRARIES ${DEFLATE_LIBRARY})
|
set(DEFLATE_LIBRARIES ${DEFLATE_LIBRARY})
|
||||||
|
@ -26,8 +30,7 @@ find_package_handle_standard_args(DEFLATE
|
||||||
REQUIRED_VARS
|
REQUIRED_VARS
|
||||||
DEFLATE_INCLUDE_DIR
|
DEFLATE_INCLUDE_DIR
|
||||||
DEFLATE_LIBRARY
|
DEFLATE_LIBRARY
|
||||||
DEFLATE_VERSION
|
DEFLATE_VERSION)
|
||||||
)
|
|
||||||
|
|
||||||
mark_as_advanced(DEFLATE_INCLUDE_DIR DEFLATE_LIBRARY)
|
mark_as_advanced(DEFLATE_INCLUDE_DIR DEFLATE_LIBRARY)
|
||||||
|
|
||||||
|
|
|
@ -8,12 +8,16 @@ if(DHT_PREFER_STATIC_LIB)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(UNIX)
|
if(UNIX)
|
||||||
find_package(PkgConfig QUIET)
|
find_package(PkgConfig QUIET)
|
||||||
pkg_check_modules(_DHT QUIET libdht)
|
pkg_check_modules(_DHT QUIET libdht)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_path(DHT_INCLUDE_DIR NAMES dht/dht.h HINTS ${_DHT_INCLUDEDIR})
|
find_path(DHT_INCLUDE_DIR
|
||||||
find_library(DHT_LIBRARY NAMES dht HINTS ${_DHT_LIBDIR})
|
NAMES dht/dht.h
|
||||||
|
HINTS ${_DHT_INCLUDEDIR})
|
||||||
|
find_library(DHT_LIBRARY
|
||||||
|
NAMES dht
|
||||||
|
HINTS ${_DHT_LIBDIR})
|
||||||
|
|
||||||
set(DHT_INCLUDE_DIRS ${DHT_INCLUDE_DIR})
|
set(DHT_INCLUDE_DIRS ${DHT_INCLUDE_DIR})
|
||||||
set(DHT_LIBRARIES ${DHT_LIBRARY})
|
set(DHT_LIBRARIES ${DHT_LIBRARY})
|
||||||
|
@ -23,8 +27,7 @@ include(FindPackageHandleStandardArgs)
|
||||||
find_package_handle_standard_args(DHT
|
find_package_handle_standard_args(DHT
|
||||||
REQUIRED_VARS
|
REQUIRED_VARS
|
||||||
DHT_LIBRARY
|
DHT_LIBRARY
|
||||||
DHT_INCLUDE_DIR
|
DHT_INCLUDE_DIR)
|
||||||
)
|
|
||||||
|
|
||||||
mark_as_advanced(DHT_INCLUDE_DIR DHT_LIBRARY)
|
mark_as_advanced(DHT_INCLUDE_DIR DHT_LIBRARY)
|
||||||
|
|
||||||
|
|
|
@ -8,18 +8,25 @@ if(EVENT2_PREFER_STATIC_LIB)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(UNIX)
|
if(UNIX)
|
||||||
find_package(PkgConfig QUIET)
|
find_package(PkgConfig QUIET)
|
||||||
pkg_check_modules(_EVENT2 QUIET libevent)
|
pkg_check_modules(_EVENT2 QUIET libevent)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_path(EVENT2_INCLUDE_DIR NAMES event2/event.h HINTS ${_EVENT2_INCLUDEDIR})
|
find_path(EVENT2_INCLUDE_DIR
|
||||||
find_library(EVENT2_LIBRARY NAMES event-2.1 event HINTS ${_EVENT2_LIBDIR})
|
NAMES event2/event.h
|
||||||
|
HINTS ${_EVENT2_INCLUDEDIR})
|
||||||
|
find_library(EVENT2_LIBRARY
|
||||||
|
NAMES
|
||||||
|
event-2.1
|
||||||
|
event
|
||||||
|
HINTS ${_EVENT2_LIBDIR})
|
||||||
|
|
||||||
if(EVENT2_INCLUDE_DIR)
|
if(EVENT2_INCLUDE_DIR)
|
||||||
if(_EVENT2_VERSION)
|
if(_EVENT2_VERSION)
|
||||||
set(EVENT2_VERSION ${_EVENT2_VERSION})
|
set(EVENT2_VERSION ${_EVENT2_VERSION})
|
||||||
else()
|
else()
|
||||||
file(STRINGS "${EVENT2_INCLUDE_DIR}/event2/event-config.h" EVENT2_VERSION_STR REGEX "^#define[\t ]+_EVENT_VERSION[\t ]+\"[^\"]+\"")
|
file(STRINGS "${EVENT2_INCLUDE_DIR}/event2/event-config.h" EVENT2_VERSION_STR
|
||||||
|
REGEX "^#define[\t ]+_EVENT_VERSION[\t ]+\"[^\"]+\"")
|
||||||
if(EVENT2_VERSION_STR MATCHES "\"([^\"]+)\"")
|
if(EVENT2_VERSION_STR MATCHES "\"([^\"]+)\"")
|
||||||
set(EVENT2_VERSION "${CMAKE_MATCH_1}")
|
set(EVENT2_VERSION "${CMAKE_MATCH_1}")
|
||||||
endif()
|
endif()
|
||||||
|
@ -35,9 +42,7 @@ find_package_handle_standard_args(EVENT2
|
||||||
REQUIRED_VARS
|
REQUIRED_VARS
|
||||||
EVENT2_LIBRARY
|
EVENT2_LIBRARY
|
||||||
EVENT2_INCLUDE_DIR
|
EVENT2_INCLUDE_DIR
|
||||||
VERSION_VAR
|
VERSION_VAR EVENT2_VERSION)
|
||||||
EVENT2_VERSION
|
|
||||||
)
|
|
||||||
|
|
||||||
mark_as_advanced(EVENT2_INCLUDE_DIR EVENT2_LIBRARY)
|
mark_as_advanced(EVENT2_INCLUDE_DIR EVENT2_LIBRARY)
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,13 @@
|
||||||
# Grabbed from http://public.kitware.com/Bug/view.php?id=13517 and slightly modified.
|
# Grabbed from http://public.kitware.com/Bug/view.php?id=13517 and slightly modified.
|
||||||
|
|
||||||
find_path(ICONV_INCLUDE_DIR iconv.h)
|
find_path(ICONV_INCLUDE_DIR
|
||||||
find_library(ICONV_LIBRARY NAMES iconv libiconv libiconv-2 c)
|
NAMES iconv.h)
|
||||||
|
find_library(ICONV_LIBRARY
|
||||||
|
NAMES
|
||||||
|
iconv
|
||||||
|
libiconv
|
||||||
|
libiconv-2
|
||||||
|
c)
|
||||||
|
|
||||||
set(ICONV_INCLUDE_DIRS ${ICONV_INCLUDE_DIR})
|
set(ICONV_INCLUDE_DIRS ${ICONV_INCLUDE_DIR})
|
||||||
set(ICONV_LIBRARIES ${ICONV_LIBRARY})
|
set(ICONV_LIBRARIES ${ICONV_LIBRARY})
|
||||||
|
@ -12,9 +18,7 @@ find_package_handle_standard_args(ICONV
|
||||||
REQUIRED_VARS
|
REQUIRED_VARS
|
||||||
ICONV_LIBRARY
|
ICONV_LIBRARY
|
||||||
ICONV_INCLUDE_DIR
|
ICONV_INCLUDE_DIR
|
||||||
VERSION_VAR
|
VERSION_VAR ICONV_VERSION)
|
||||||
ICONV_VERSION
|
|
||||||
)
|
|
||||||
|
|
||||||
if(ICONV_FOUND AND NOT DEFINED ICONV_SECOND_ARGUMENT_IS_CONST)
|
if(ICONV_FOUND AND NOT DEFINED ICONV_SECOND_ARGUMENT_IS_CONST)
|
||||||
include(CheckCXXSourceCompiles)
|
include(CheckCXXSourceCompiles)
|
||||||
|
@ -38,8 +42,7 @@ if(ICONV_FOUND AND NOT DEFINED ICONV_SECOND_ARGUMENT_IS_CONST)
|
||||||
FAIL_REGEX "discards qualifiers in nested pointer types"
|
FAIL_REGEX "discards qualifiers in nested pointer types"
|
||||||
FAIL_REGEX "incompatible pointer type"
|
FAIL_REGEX "incompatible pointer type"
|
||||||
FAIL_REGEX "invalid conversion"
|
FAIL_REGEX "invalid conversion"
|
||||||
FAIL_REGEX "no matching function"
|
FAIL_REGEX "no matching function")
|
||||||
)
|
|
||||||
|
|
||||||
set(CMAKE_REQUIRED_INCLUDES)
|
set(CMAKE_REQUIRED_INCLUDES)
|
||||||
set(CMAKE_REQUIRED_LIBRARIES)
|
set(CMAKE_REQUIRED_LIBRARIES)
|
||||||
|
|
|
@ -8,18 +8,25 @@ if(MINIUPNPC_PREFER_STATIC_LIB)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(UNIX)
|
if(UNIX)
|
||||||
find_package(PkgConfig QUIET)
|
find_package(PkgConfig QUIET)
|
||||||
pkg_check_modules(_MINIUPNPC QUIET libminiupnpc)
|
pkg_check_modules(_MINIUPNPC QUIET libminiupnpc)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_path(MINIUPNPC_INCLUDE_DIR NAMES miniupnpc/miniupnpc.h HINTS ${_MINIUPNPC_INCLUDEDIR})
|
find_path(MINIUPNPC_INCLUDE_DIR
|
||||||
find_library(MINIUPNPC_LIBRARY NAMES miniupnpc libminiupnpc HINTS ${_MINIUPNPC_LIBDIR})
|
NAMES miniupnpc/miniupnpc.h
|
||||||
|
HINTS ${_MINIUPNPC_INCLUDEDIR})
|
||||||
|
find_library(MINIUPNPC_LIBRARY
|
||||||
|
NAMES
|
||||||
|
miniupnpc
|
||||||
|
libminiupnpc
|
||||||
|
HINTS ${_MINIUPNPC_LIBDIR})
|
||||||
|
|
||||||
if(MINIUPNPC_INCLUDE_DIR)
|
if(MINIUPNPC_INCLUDE_DIR)
|
||||||
if(_MINIUPNPC_VERSION)
|
if(_MINIUPNPC_VERSION)
|
||||||
set(MINIUPNPC_VERSION ${_MINIUPNPC_VERSION})
|
set(MINIUPNPC_VERSION ${_MINIUPNPC_VERSION})
|
||||||
else()
|
else()
|
||||||
file(STRINGS "${MINIUPNPC_INCLUDE_DIR}/miniupnpc/miniupnpc.h" MINIUPNPC_VERSION_STR REGEX "^#define[\t ]+MINIUPNPC_VERSION[\t ]+\"[^\"]+\"")
|
file(STRINGS "${MINIUPNPC_INCLUDE_DIR}/miniupnpc/miniupnpc.h" MINIUPNPC_VERSION_STR
|
||||||
|
REGEX "^#define[\t ]+MINIUPNPC_VERSION[\t ]+\"[^\"]+\"")
|
||||||
if(MINIUPNPC_VERSION_STR MATCHES "\"([^\"]+)\"")
|
if(MINIUPNPC_VERSION_STR MATCHES "\"([^\"]+)\"")
|
||||||
set(MINIUPNPC_VERSION "${CMAKE_MATCH_1}")
|
set(MINIUPNPC_VERSION "${CMAKE_MATCH_1}")
|
||||||
endif()
|
endif()
|
||||||
|
@ -27,7 +34,8 @@ if(MINIUPNPC_INCLUDE_DIR)
|
||||||
# Let's hope it's 1.7 or higher, since it provides
|
# Let's hope it's 1.7 or higher, since it provides
|
||||||
# MINIUPNPC_API_VERSION and we won't have to figure
|
# MINIUPNPC_API_VERSION and we won't have to figure
|
||||||
# it out on our own
|
# it out on our own
|
||||||
file(STRINGS "${MINIUPNPC_INCLUDE_DIR}/miniupnpc/miniupnpc.h" MINIUPNPC_API_VERSION_STR REGEX "^#define[\t ]+MINIUPNPC_API_VERSION[\t ]+[0-9]+")
|
file(STRINGS "${MINIUPNPC_INCLUDE_DIR}/miniupnpc/miniupnpc.h" MINIUPNPC_API_VERSION_STR
|
||||||
|
REGEX "^#define[\t ]+MINIUPNPC_API_VERSION[\t ]+[0-9]+")
|
||||||
if(MINIUPNPC_API_VERSION_STR MATCHES "^#define[\t ]+MINIUPNPC_API_VERSION[\t ]+([0-9]+)")
|
if(MINIUPNPC_API_VERSION_STR MATCHES "^#define[\t ]+MINIUPNPC_API_VERSION[\t ]+([0-9]+)")
|
||||||
set(MINIUPNPC_API_VERSION "${CMAKE_MATCH_1}")
|
set(MINIUPNPC_API_VERSION "${CMAKE_MATCH_1}")
|
||||||
endif()
|
endif()
|
||||||
|
@ -37,8 +45,7 @@ if(MINIUPNPC_INCLUDE_DIR)
|
||||||
# Or maybe it's miniupnp 1.6
|
# Or maybe it's miniupnp 1.6
|
||||||
if(NOT DEFINED MINIUPNPC_API_VERSION)
|
if(NOT DEFINED MINIUPNPC_API_VERSION)
|
||||||
file(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckMiniUPnPC_1.6.c
|
file(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckMiniUPnPC_1.6.c
|
||||||
"
|
"#include <stdlib.h>
|
||||||
#include <stdlib.h>
|
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <miniupnpc/miniupnpc.h>
|
#include <miniupnpc/miniupnpc.h>
|
||||||
#include <miniupnpc/upnpcommands.h>
|
#include <miniupnpc/upnpcommands.h>
|
||||||
|
@ -52,12 +59,11 @@ if(MINIUPNPC_INCLUDE_DIR)
|
||||||
char intPort[8];
|
char intPort[8];
|
||||||
char intClient[16];
|
char intClient[16];
|
||||||
upnpDiscover( 2000, NULL, NULL, 0, 0, &errno );
|
upnpDiscover( 2000, NULL, NULL, 0, 0, &errno );
|
||||||
UPNP_GetValidIGD( devlist, &urls, &data, lanaddr, sizeof( lanaddr ) );
|
UPNP_GetValidIGD( devlist, &urls, &data, lanaddr, sizeof( lanaddr ) );
|
||||||
UPNP_GetSpecificPortMappingEntry( urls.controlURL, data.first.servicetype,
|
UPNP_GetSpecificPortMappingEntry( urls.controlURL, data.first.servicetype,
|
||||||
portStr, \"TCP\", intClient, intPort, NULL, NULL, NULL );
|
portStr, \"TCP\", intClient, intPort, NULL, NULL, NULL );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}")
|
||||||
")
|
|
||||||
try_compile(_MINIUPNPC_HAVE_VERSION_1_6
|
try_compile(_MINIUPNPC_HAVE_VERSION_1_6
|
||||||
${CMAKE_BINARY_DIR}
|
${CMAKE_BINARY_DIR}
|
||||||
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckMiniUPnPC_1.6.c
|
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckMiniUPnPC_1.6.c
|
||||||
|
@ -75,8 +81,7 @@ if(MINIUPNPC_INCLUDE_DIR)
|
||||||
# Or maybe it's miniupnp 1.5
|
# Or maybe it's miniupnp 1.5
|
||||||
if(NOT DEFINED MINIUPNPC_API_VERSION)
|
if(NOT DEFINED MINIUPNPC_API_VERSION)
|
||||||
file(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckMiniUPnPC_1.5.c
|
file(WRITE ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckMiniUPnPC_1.5.c
|
||||||
"
|
"#include <stdlib.h>
|
||||||
#include <stdlib.h>
|
|
||||||
#include <miniupnpc/miniupnpc.h>
|
#include <miniupnpc/miniupnpc.h>
|
||||||
#include <miniupnpc/upnpcommands.h>
|
#include <miniupnpc/upnpcommands.h>
|
||||||
int main()
|
int main()
|
||||||
|
@ -89,12 +94,11 @@ if(MINIUPNPC_INCLUDE_DIR)
|
||||||
char intPort[8];
|
char intPort[8];
|
||||||
char intClient[16];
|
char intClient[16];
|
||||||
upnpDiscover( 2000, NULL, NULL, 0 );
|
upnpDiscover( 2000, NULL, NULL, 0 );
|
||||||
UPNP_GetValidIGD( devlist, &urls, &data, lanaddr, sizeof( lanaddr ) );
|
UPNP_GetValidIGD( devlist, &urls, &data, lanaddr, sizeof( lanaddr ) );
|
||||||
UPNP_GetSpecificPortMappingEntry( urls.controlURL, data.first.servicetype,
|
UPNP_GetSpecificPortMappingEntry( urls.controlURL, data.first.servicetype,
|
||||||
portStr, \"TCP\", intClient, intPort );
|
portStr, \"TCP\", intClient, intPort );
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}")
|
||||||
")
|
|
||||||
try_compile(_MINIUPNPC_HAVE_VERSION_1_5
|
try_compile(_MINIUPNPC_HAVE_VERSION_1_5
|
||||||
${CMAKE_BINARY_DIR}
|
${CMAKE_BINARY_DIR}
|
||||||
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckMiniUPnPC_1.5.c
|
${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/CheckMiniUPnPC_1.5.c
|
||||||
|
@ -121,9 +125,7 @@ find_package_handle_standard_args(MINIUPNPC
|
||||||
MINIUPNPC_LIBRARY
|
MINIUPNPC_LIBRARY
|
||||||
MINIUPNPC_INCLUDE_DIR
|
MINIUPNPC_INCLUDE_DIR
|
||||||
MINIUPNPC_API_VERSION
|
MINIUPNPC_API_VERSION
|
||||||
VERSION_VAR
|
VERSION_VAR MINIUPNPC_VERSION)
|
||||||
MINIUPNPC_VERSION
|
|
||||||
)
|
|
||||||
|
|
||||||
mark_as_advanced(MINIUPNPC_INCLUDE_DIR MINIUPNPC_LIBRARY)
|
mark_as_advanced(MINIUPNPC_INCLUDE_DIR MINIUPNPC_LIBRARY)
|
||||||
|
|
||||||
|
|
|
@ -12,14 +12,21 @@ if(UNIX)
|
||||||
pkg_check_modules(_MBEDTLS QUIET mbedtls)
|
pkg_check_modules(_MBEDTLS QUIET mbedtls)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_path(MBEDTLS_INCLUDE_DIR NAMES mbedtls/version.h HINTS ${_MBEDTLS_INCLUDEDIR})
|
find_path(MBEDTLS_INCLUDE_DIR
|
||||||
find_library(MBEDTLS_LIBRARY NAMES mbedtls HINTS ${_MBEDTLS_LIBDIR})
|
NAMES mbedtls/version.h
|
||||||
find_library(MBEDCRYPTO_LIBRARY NAMES mbedcrypto HINTS ${_MBEDTLS_LIBDIR})
|
HINTS ${_MBEDTLS_INCLUDEDIR})
|
||||||
|
find_library(MBEDTLS_LIBRARY
|
||||||
|
NAMES mbedtls
|
||||||
|
HINTS ${_MBEDTLS_LIBDIR})
|
||||||
|
find_library(MBEDCRYPTO_LIBRARY
|
||||||
|
NAMES mbedcrypto
|
||||||
|
HINTS ${_MBEDTLS_LIBDIR})
|
||||||
|
|
||||||
if(_MBEDTLS_VERSION)
|
if(_MBEDTLS_VERSION)
|
||||||
set(MBEDTLS_VERSION ${_MBEDTLS_VERSION})
|
set(MBEDTLS_VERSION ${_MBEDTLS_VERSION})
|
||||||
elseif(MBEDTLS_INCLUDE_DIR)
|
elseif(MBEDTLS_INCLUDE_DIR)
|
||||||
file(STRINGS "${MBEDTLS_INCLUDE_DIR}/mbedtls/version.h" MBEDTLS_VERSION_STR REGEX "^#define[\t ]+MBEDTLS_VERSION_STRING[\t ]+\"[^\"]+\"")
|
file(STRINGS "${MBEDTLS_INCLUDE_DIR}/mbedtls/version.h" MBEDTLS_VERSION_STR
|
||||||
|
REGEX "^#define[\t ]+MBEDTLS_VERSION_STRING[\t ]+\"[^\"]+\"")
|
||||||
if(MBEDTLS_VERSION_STR MATCHES "\"([^\"]+)\"")
|
if(MBEDTLS_VERSION_STR MATCHES "\"([^\"]+)\"")
|
||||||
set(MBEDTLS_VERSION "${CMAKE_MATCH_1}")
|
set(MBEDTLS_VERSION "${CMAKE_MATCH_1}")
|
||||||
endif()
|
endif()
|
||||||
|
@ -34,9 +41,7 @@ find_package_handle_standard_args(MbedTLS
|
||||||
REQUIRED_VARS
|
REQUIRED_VARS
|
||||||
MBEDTLS_LIBRARY
|
MBEDTLS_LIBRARY
|
||||||
MBEDTLS_INCLUDE_DIR
|
MBEDTLS_INCLUDE_DIR
|
||||||
VERSION_VAR
|
VERSION_VAR MBEDTLS_VERSION)
|
||||||
MBEDTLS_VERSION
|
|
||||||
)
|
|
||||||
|
|
||||||
mark_as_advanced(MBEDTLS_INCLUDE_DIR MBEDTLS_LIBRARY MBEDCRYPTO_LIBRARY)
|
mark_as_advanced(MBEDTLS_INCLUDE_DIR MBEDTLS_LIBRARY MBEDCRYPTO_LIBRARY)
|
||||||
|
|
||||||
|
|
|
@ -8,12 +8,16 @@ if(NATPMP_PREFER_STATIC_LIB)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(UNIX)
|
if(UNIX)
|
||||||
find_package(PkgConfig QUIET)
|
find_package(PkgConfig QUIET)
|
||||||
pkg_check_modules(_NATPMP QUIET libnatpmp)
|
pkg_check_modules(_NATPMP QUIET libnatpmp)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_path(NATPMP_INCLUDE_DIR NAMES natpmp.h HINTS ${_NATPMP_INCLUDEDIR})
|
find_path(NATPMP_INCLUDE_DIR
|
||||||
find_library(NATPMP_LIBRARY NAMES natpmp HINTS ${_NATPMP_LIBDIR})
|
NAMES natpmp.h
|
||||||
|
HINTS ${_NATPMP_INCLUDEDIR})
|
||||||
|
find_library(NATPMP_LIBRARY
|
||||||
|
NAMES natpmp
|
||||||
|
HINTS ${_NATPMP_LIBDIR})
|
||||||
|
|
||||||
set(NATPMP_INCLUDE_DIRS ${NATPMP_INCLUDE_DIR})
|
set(NATPMP_INCLUDE_DIRS ${NATPMP_INCLUDE_DIR})
|
||||||
set(NATPMP_LIBRARIES ${NATPMP_LIBRARY})
|
set(NATPMP_LIBRARIES ${NATPMP_LIBRARY})
|
||||||
|
@ -23,8 +27,7 @@ include(FindPackageHandleStandardArgs)
|
||||||
find_package_handle_standard_args(NATPMP
|
find_package_handle_standard_args(NATPMP
|
||||||
REQUIRED_VARS
|
REQUIRED_VARS
|
||||||
NATPMP_LIBRARY
|
NATPMP_LIBRARY
|
||||||
NATPMP_INCLUDE_DIR
|
NATPMP_INCLUDE_DIR)
|
||||||
)
|
|
||||||
|
|
||||||
mark_as_advanced(NATPMP_INCLUDE_DIR NATPMP_LIBRARY)
|
mark_as_advanced(NATPMP_INCLUDE_DIR NATPMP_LIBRARY)
|
||||||
|
|
||||||
|
|
|
@ -8,12 +8,16 @@ if(PSL_PREFER_STATIC_LIB)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(UNIX)
|
if(UNIX)
|
||||||
find_package(PkgConfig QUIET)
|
find_package(PkgConfig QUIET)
|
||||||
pkg_check_modules(_PSL QUIET libpsl)
|
pkg_check_modules(_PSL QUIET libpsl)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_path(PSL_INCLUDE_DIR NAMES libpsl.h HINTS ${_PSL_INCLUDEDIR})
|
find_path(PSL_INCLUDE_DIR
|
||||||
find_library(PSL_LIBRARY NAMES psl HINTS ${_PSL_LIBDIR})
|
NAMES libpsl.h
|
||||||
|
HINTS ${_PSL_INCLUDEDIR})
|
||||||
|
find_library(PSL_LIBRARY
|
||||||
|
NAMES psl
|
||||||
|
HINTS ${_PSL_LIBDIR})
|
||||||
|
|
||||||
set(PSL_INCLUDE_DIRS ${PSL_INCLUDE_DIR})
|
set(PSL_INCLUDE_DIRS ${PSL_INCLUDE_DIR})
|
||||||
set(PSL_LIBRARIES ${PSL_LIBRARY})
|
set(PSL_LIBRARIES ${PSL_LIBRARY})
|
||||||
|
@ -23,8 +27,7 @@ include(FindPackageHandleStandardArgs)
|
||||||
find_package_handle_standard_args(PSL
|
find_package_handle_standard_args(PSL
|
||||||
REQUIRED_VARS
|
REQUIRED_VARS
|
||||||
PSL_LIBRARY
|
PSL_LIBRARY
|
||||||
PSL_INCLUDE_DIR
|
PSL_INCLUDE_DIR)
|
||||||
)
|
|
||||||
|
|
||||||
mark_as_advanced(PSL_INCLUDE_DIR PSL_LIBRARY)
|
mark_as_advanced(PSL_INCLUDE_DIR PSL_LIBRARY)
|
||||||
|
|
||||||
|
|
|
@ -3,16 +3,19 @@ if(UNIX)
|
||||||
pkg_check_modules(PC_SYSTEMD QUIET libsystemd)
|
pkg_check_modules(PC_SYSTEMD QUIET libsystemd)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_path(SYSTEMD_INCLUDE_DIR NAMES systemd/sd-daemon.h HINTS ${PC_SYSTEMD_INCLUDE_DIRS})
|
find_path(SYSTEMD_INCLUDE_DIR
|
||||||
find_library(SYSTEMD_LIBRARY NAMES systemd HINTS ${PC_SYSTEMD_LIBRARY_DIRS})
|
NAMES systemd/sd-daemon.h
|
||||||
|
HINTS ${PC_SYSTEMD_INCLUDE_DIRS})
|
||||||
|
find_library(SYSTEMD_LIBRARY
|
||||||
|
NAMES systemd
|
||||||
|
HINTS ${PC_SYSTEMD_LIBRARY_DIRS})
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
find_package_handle_standard_args(SYSTEMD
|
find_package_handle_standard_args(SYSTEMD
|
||||||
REQUIRED_VARS
|
REQUIRED_VARS
|
||||||
SYSTEMD_LIBRARY
|
SYSTEMD_LIBRARY
|
||||||
SYSTEMD_INCLUDE_DIR
|
SYSTEMD_INCLUDE_DIR)
|
||||||
)
|
|
||||||
|
|
||||||
mark_as_advanced(SYSTEMD_INCLUDE_DIR SYSTEMD_LIBRARY)
|
mark_as_advanced(SYSTEMD_INCLUDE_DIR SYSTEMD_LIBRARY)
|
||||||
|
|
||||||
|
|
|
@ -8,12 +8,16 @@ if(UTP_PREFER_STATIC_LIB)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(UNIX)
|
if(UNIX)
|
||||||
find_package(PkgConfig QUIET)
|
find_package(PkgConfig QUIET)
|
||||||
pkg_check_modules(_UTP QUIET libutp)
|
pkg_check_modules(_UTP QUIET libutp)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_path(UTP_INCLUDE_DIR NAMES libutp/utp.h HINTS ${_UTP_INCLUDEDIR})
|
find_path(UTP_INCLUDE_DIR
|
||||||
find_library(UTP_LIBRARY NAMES utp HINTS ${_UTP_LIBDIR})
|
NAMES libutp/utp.h
|
||||||
|
HINTS ${_UTP_INCLUDEDIR})
|
||||||
|
find_library(UTP_LIBRARY
|
||||||
|
NAMES utp
|
||||||
|
HINTS ${_UTP_LIBDIR})
|
||||||
|
|
||||||
if(UTP_INCLUDE_DIR AND UTP_LIBRARY)
|
if(UTP_INCLUDE_DIR AND UTP_LIBRARY)
|
||||||
include(CheckSymbolExists)
|
include(CheckSymbolExists)
|
||||||
|
@ -36,8 +40,7 @@ if(UTP_INCLUDE_DIR AND UTP_LIBRARY)
|
||||||
utp_set_callback
|
utp_set_callback
|
||||||
utp_set_userdata
|
utp_set_userdata
|
||||||
utp_write
|
utp_write
|
||||||
utp_writev
|
utp_writev)
|
||||||
)
|
|
||||||
|
|
||||||
set(_UTP_OLD_CMAKE_REQUIRED_INCLUDES "${CMAKE_REQUIRED_INCLUDES}")
|
set(_UTP_OLD_CMAKE_REQUIRED_INCLUDES "${CMAKE_REQUIRED_INCLUDES}")
|
||||||
set(_UTP_OLD_CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES}")
|
set(_UTP_OLD_CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES}")
|
||||||
|
@ -71,8 +74,7 @@ include(FindPackageHandleStandardArgs)
|
||||||
find_package_handle_standard_args(UTP
|
find_package_handle_standard_args(UTP
|
||||||
REQUIRED_VARS
|
REQUIRED_VARS
|
||||||
UTP_LIBRARY
|
UTP_LIBRARY
|
||||||
UTP_INCLUDE_DIR
|
UTP_INCLUDE_DIR)
|
||||||
)
|
|
||||||
|
|
||||||
mark_as_advanced(UTP_INCLUDE_DIR UTP_LIBRARY)
|
mark_as_advanced(UTP_INCLUDE_DIR UTP_LIBRARY)
|
||||||
|
|
||||||
|
|
|
@ -12,13 +12,18 @@ if(UNIX)
|
||||||
pkg_check_modules(_WOLFSSL QUIET wolfssl)
|
pkg_check_modules(_WOLFSSL QUIET wolfssl)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
find_path(WOLFSSL_INCLUDE_DIR NAMES wolfssl/version.h HINTS ${_WOLFSSL_INCLUDEDIR})
|
find_path(WOLFSSL_INCLUDE_DIR
|
||||||
find_library(WOLFSSL_LIBRARY NAMES wolfssl HINTS ${_WOLFSSL_LIBDIR})
|
NAMES wolfssl/version.h
|
||||||
|
HINTS ${_WOLFSSL_INCLUDEDIR})
|
||||||
|
find_library(WOLFSSL_LIBRARY
|
||||||
|
NAMES wolfssl
|
||||||
|
HINTS ${_WOLFSSL_LIBDIR})
|
||||||
|
|
||||||
if(_WOLFSSL_VERSION)
|
if(_WOLFSSL_VERSION)
|
||||||
set(WOLFSSL_VERSION ${_WOLFSSL_VERSION})
|
set(WOLFSSL_VERSION ${_WOLFSSL_VERSION})
|
||||||
elseif(WOLFSSL_INCLUDE_DIR)
|
elseif(WOLFSSL_INCLUDE_DIR)
|
||||||
file(STRINGS "${WOLFSSL_INCLUDE_DIR}/wolfssl/version.h" WOLFSSL_VERSION_STR REGEX "^#define[\t ]+LIBWOLFSSL_VERSION_STRING[\t ]+\"[^\"]+\"")
|
file(STRINGS "${WOLFSSL_INCLUDE_DIR}/wolfssl/version.h" WOLFSSL_VERSION_STR
|
||||||
|
REGEX "^#define[\t ]+LIBWOLFSSL_VERSION_STRING[\t ]+\"[^\"]+\"")
|
||||||
if(WOLFSSL_VERSION_STR MATCHES "\"([^\"]+)\"")
|
if(WOLFSSL_VERSION_STR MATCHES "\"([^\"]+)\"")
|
||||||
set(WOLFSSL_VERSION "${CMAKE_MATCH_1}")
|
set(WOLFSSL_VERSION "${CMAKE_MATCH_1}")
|
||||||
endif()
|
endif()
|
||||||
|
@ -33,9 +38,7 @@ find_package_handle_standard_args(WolfSSL
|
||||||
REQUIRED_VARS
|
REQUIRED_VARS
|
||||||
WOLFSSL_LIBRARY
|
WOLFSSL_LIBRARY
|
||||||
WOLFSSL_INCLUDE_DIR
|
WOLFSSL_INCLUDE_DIR
|
||||||
VERSION_VAR
|
VERSION_VAR WOLFSSL_VERSION)
|
||||||
WOLFSSL_VERSION
|
|
||||||
)
|
|
||||||
|
|
||||||
mark_as_advanced(WOLFSSL_INCLUDE_DIR WOLFSSL_LIBRARY)
|
mark_as_advanced(WOLFSSL_INCLUDE_DIR WOLFSSL_LIBRARY)
|
||||||
|
|
||||||
|
|
|
@ -7,12 +7,11 @@ if(NOT DEFINED NO_LFS_MACROS_REQUIRED)
|
||||||
# We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
# We can't simply define LARGE_OFF_T to be 9223372036854775807,
|
||||||
# since some C++ compilers masquerading as C compilers
|
# since some C++ compilers masquerading as C compilers
|
||||||
# incorrectly reject 9223372036854775807.
|
# incorrectly reject 9223372036854775807.
|
||||||
set(LFS_TEST_PROGRAM "
|
set(LFS_TEST_PROGRAM
|
||||||
#include <sys/types.h>
|
"#include <sys/types.h>
|
||||||
#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
|
#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
|
||||||
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1];
|
int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 && LARGE_OFF_T % 2147483647 == 1) ? 1 : -1];
|
||||||
int main() { return 0; }
|
int main() { return 0; }")
|
||||||
")
|
|
||||||
|
|
||||||
check_c_source_compiles("${LFS_TEST_PROGRAM}" NO_LFS_MACROS_REQUIRED)
|
check_c_source_compiles("${LFS_TEST_PROGRAM}" NO_LFS_MACROS_REQUIRED)
|
||||||
if(NOT NO_LFS_MACROS_REQUIRED)
|
if(NOT NO_LFS_MACROS_REQUIRED)
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
include(CheckFunctionExists)
|
||||||
|
include(CheckIncludeFile)
|
||||||
|
|
||||||
macro(tr_auto_option_changed NAME ACC VAL FIL STK)
|
macro(tr_auto_option_changed NAME ACC VAL FIL STK)
|
||||||
if(NOT ("${VAL}" STREQUAL "AUTO" OR "${VAL}" STREQUAL "ON" OR "${VAL}" STREQUAL "OFF"))
|
if(NOT ("${VAL}" STREQUAL "AUTO" OR "${VAL}" STREQUAL "ON" OR "${VAL}" STREQUAL "OFF"))
|
||||||
if("${VAL}" STREQUAL "0" OR "${VAL}" STREQUAL "NO" OR "${VAL}" STREQUAL "FALSE" OR "${VAL}" STREQUAL "N")
|
if("${VAL}" STREQUAL "0" OR "${VAL}" STREQUAL "NO" OR "${VAL}" STREQUAL "FALSE" OR "${VAL}" STREQUAL "N")
|
||||||
|
@ -11,7 +14,8 @@ macro(tr_auto_option_changed NAME ACC VAL FIL STK)
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
macro(tr_auto_option NAME DESC VAL)
|
macro(tr_auto_option NAME DESC VAL)
|
||||||
set(${NAME} "${VAL}" CACHE STRING "${DESC}")
|
set(${NAME} "${VAL}"
|
||||||
|
CACHE STRING "${DESC}")
|
||||||
set_property(CACHE ${NAME} PROPERTY STRINGS "AUTO;ON;OFF")
|
set_property(CACHE ${NAME} PROPERTY STRINGS "AUTO;ON;OFF")
|
||||||
variable_watch(${NAME} tr_auto_option_changed)
|
variable_watch(${NAME} tr_auto_option_changed)
|
||||||
endmacro()
|
endmacro()
|
||||||
|
@ -57,7 +61,7 @@ endmacro()
|
||||||
|
|
||||||
macro(tr_get_required_flag IVAR OVAR)
|
macro(tr_get_required_flag IVAR OVAR)
|
||||||
set(${OVAR})
|
set(${OVAR})
|
||||||
if (${IVAR} AND NOT ${IVAR} STREQUAL "AUTO")
|
if(${IVAR} AND NOT ${IVAR} STREQUAL "AUTO")
|
||||||
set(${OVAR} REQUIRED)
|
set(${OVAR} REQUIRED)
|
||||||
endif()
|
endif()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
@ -69,6 +73,61 @@ function(tr_make_id INPUT OVAR)
|
||||||
set(${OVAR} "${ID}" PARENT_SCOPE)
|
set(${OVAR} "${ID}" PARENT_SCOPE)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
function(tr_string_unindent RESULT_VAR TEXT)
|
||||||
|
if(TEXT MATCHES [==[^([ ]+)]==])
|
||||||
|
string(REGEX REPLACE "(^|\n)${CMAKE_MATCH_1}($|.)" "\\1\\2" TEXT "${TEXT}")
|
||||||
|
endif()
|
||||||
|
set(${RESULT_VAR} "${TEXT}" PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
macro(tr_eval SCRIPT)
|
||||||
|
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.18)
|
||||||
|
cmake_language(EVAL CODE "${SCRIPT}")
|
||||||
|
else()
|
||||||
|
tr_string_unindent(_TR_EVAL_SCRIPT "${SCRIPT}")
|
||||||
|
|
||||||
|
string(SHA1 _TR_EVAL_TMP_FILE "${_TR_EVAL_SCRIPT}")
|
||||||
|
string(SUBSTRING "${_TR_EVAL_TMP_FILE}" 0 10 _TR_EVAL_TMP_FILE)
|
||||||
|
set(_TR_EVAL_TMP_FILE "${CMAKE_BINARY_DIR}/.tr-cache/tr_eval.${_TR_EVAL_TMP_FILE}.cmake")
|
||||||
|
|
||||||
|
if(NOT EXISTS "${_TR_EVAL_TMP_FILE}")
|
||||||
|
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/.tr-cache")
|
||||||
|
file(WRITE "${_TR_EVAL_TMP_FILE}" "${_TR_EVAL_SCRIPT}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
include("${_TR_EVAL_TMP_FILE}")
|
||||||
|
|
||||||
|
unset(_TR_EVAL_TMP_FILE)
|
||||||
|
unset(_TR_EVAL_SCRIPT)
|
||||||
|
endif()
|
||||||
|
endmacro()
|
||||||
|
|
||||||
|
function(tr_process_list_conditions VAR_PREFIX)
|
||||||
|
set(ALLOWED_ITEMS)
|
||||||
|
set(DISALLOWED_ITEMS)
|
||||||
|
|
||||||
|
set(ALLOW TRUE)
|
||||||
|
foreach(ARG IN LISTS ARGN)
|
||||||
|
if(ARG MATCHES [==[^\[(.+)\]$]==])
|
||||||
|
set(COND "${CMAKE_MATCH_1}")
|
||||||
|
string(STRIP "${COND}" COND)
|
||||||
|
tr_eval("\
|
||||||
|
if(${COND})
|
||||||
|
set(ALLOW TRUE)
|
||||||
|
else()
|
||||||
|
set(ALLOW FALSE)
|
||||||
|
endif()")
|
||||||
|
elseif(ALLOW)
|
||||||
|
list(APPEND ALLOWED_ITEMS "${ARG}")
|
||||||
|
else()
|
||||||
|
list(APPEND DISALLOWED_ITEMS "${ARG}")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
set(${VAR_PREFIX}_ALLOWED "${ALLOWED_ITEMS}" PARENT_SCOPE)
|
||||||
|
set(${VAR_PREFIX}_DISALLOWED "${DISALLOWED_ITEMS}" PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
macro(tr_add_external_auto_library ID DIRNAME LIBNAME)
|
macro(tr_add_external_auto_library ID DIRNAME LIBNAME)
|
||||||
if(USE_SYSTEM_${ID})
|
if(USE_SYSTEM_${ID})
|
||||||
tr_get_required_flag(USE_SYSTEM_${ID} SYSTEM_${ID}_IS_REQUIRED)
|
tr_get_required_flag(USE_SYSTEM_${ID} SYSTEM_${ID}_IS_REQUIRED)
|
||||||
|
@ -82,8 +141,10 @@ macro(tr_add_external_auto_library ID DIRNAME LIBNAME)
|
||||||
set(${ID}_UPSTREAM_TARGET ${LIBNAME})
|
set(${ID}_UPSTREAM_TARGET ${LIBNAME})
|
||||||
set(${ID}_PREFIX "${CMAKE_BINARY_DIR}/third-party/${${ID}_UPSTREAM_TARGET}")
|
set(${ID}_PREFIX "${CMAKE_BINARY_DIR}/third-party/${${ID}_UPSTREAM_TARGET}")
|
||||||
|
|
||||||
set(${ID}_INCLUDE_DIR "${${ID}_PREFIX}/include" CACHE INTERNAL "")
|
set(${ID}_INCLUDE_DIR "${${ID}_PREFIX}/include"
|
||||||
set(${ID}_LIBRARY "${${ID}_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}${LIBNAME}${CMAKE_STATIC_LIBRARY_SUFFIX}" CACHE INTERNAL "")
|
CACHE INTERNAL "")
|
||||||
|
set(${ID}_LIBRARY "${${ID}_PREFIX}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}${LIBNAME}${CMAKE_STATIC_LIBRARY_SUFFIX}"
|
||||||
|
CACHE INTERNAL "")
|
||||||
|
|
||||||
set(${ID}_INCLUDE_DIRS ${${ID}_INCLUDE_DIR})
|
set(${ID}_INCLUDE_DIRS ${${ID}_INCLUDE_DIR})
|
||||||
set(${ID}_LIBRARIES ${${ID}_LIBRARY})
|
set(${ID}_LIBRARIES ${${ID}_LIBRARY})
|
||||||
|
@ -114,8 +175,7 @@ macro(tr_add_external_auto_library ID DIRNAME LIBNAME)
|
||||||
"-DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>"
|
"-DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>"
|
||||||
"-DCMAKE_INSTALL_LIBDIR:STRING=lib"
|
"-DCMAKE_INSTALL_LIBDIR:STRING=lib"
|
||||||
${${ID}_EXT_PROJ_CMAKE_ARGS}
|
${${ID}_EXT_PROJ_CMAKE_ARGS}
|
||||||
BUILD_BYPRODUCTS "${${ID}_LIBRARY}"
|
BUILD_BYPRODUCTS "${${ID}_LIBRARY}")
|
||||||
)
|
|
||||||
|
|
||||||
set_property(TARGET ${${ID}_UPSTREAM_TARGET} PROPERTY FOLDER "third-party")
|
set_property(TARGET ${${ID}_UPSTREAM_TARGET} PROPERTY FOLDER "third-party")
|
||||||
endif()
|
endif()
|
||||||
|
@ -129,7 +189,47 @@ function(tr_append_target_property TGT PROP VAL)
|
||||||
set_target_properties(${TGT} PROPERTIES ${PROP} "${VAL}")
|
set_target_properties(${TGT} PROPERTIES ${PROP} "${VAL}")
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(tr_win32_app_info OVAR DESCR INTNAME ORIGFNAME)
|
function(tr_target_compile_definitions_for_headers TGT)
|
||||||
|
cmake_parse_arguments(ARG "" "" "PRIVATE;PUBLIC" ${ARGN})
|
||||||
|
foreach(VISIBILITY IN ITEMS PRIVATE PUBLIC)
|
||||||
|
foreach(H IN LISTS ARG_${VISIBILITY})
|
||||||
|
tr_make_id("HAVE_${H}" H_ID)
|
||||||
|
check_include_file(${H} ${H_ID})
|
||||||
|
target_compile_definitions(${TGT}
|
||||||
|
${VISIBILITY}
|
||||||
|
$<$<BOOL:${${H_ID}}>:${H_ID}>)
|
||||||
|
endforeach()
|
||||||
|
endforeach()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(tr_target_compile_definitions_for_functions TGT)
|
||||||
|
cmake_parse_arguments(ARG "" "" "PRIVATE;PUBLIC;REQUIRED_LIBS" ${ARGN})
|
||||||
|
set(CMAKE_REQUIRED_LIBRARIES "${ARG_REQUIRED_LIBS}")
|
||||||
|
foreach(VISIBILITY IN ITEMS PRIVATE PUBLIC)
|
||||||
|
foreach(F IN LISTS ARG_${VISIBILITY})
|
||||||
|
tr_make_id("HAVE_${F}" F_ID)
|
||||||
|
check_function_exists(${F} ${F_ID})
|
||||||
|
target_compile_definitions(${TGT}
|
||||||
|
${VISIBILITY}
|
||||||
|
$<$<BOOL:${${F_ID}}>:${F_ID}>)
|
||||||
|
endforeach()
|
||||||
|
endforeach()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(tr_disable_source_files_compile)
|
||||||
|
if(ARGN)
|
||||||
|
set_property(
|
||||||
|
SOURCE ${ARGN}
|
||||||
|
PROPERTY HEADER_FILE_ONLY ON)
|
||||||
|
endif()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(tr_allow_compile_if)
|
||||||
|
tr_process_list_conditions(FILES ${ARGN})
|
||||||
|
tr_disable_source_files_compile(${FILES_DISALLOWED})
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(tr_win32_app_info TGT DESCR INTNAME ORIGFNAME)
|
||||||
if(NOT WIN32)
|
if(NOT WIN32)
|
||||||
return()
|
return()
|
||||||
endif()
|
endif()
|
||||||
|
@ -143,7 +243,9 @@ function(tr_win32_app_info OVAR DESCR INTNAME ORIGFNAME)
|
||||||
|
|
||||||
configure_file("${CMAKE_SOURCE_DIR}/cmake/Transmission.rc.in" "${INTNAME}-app-info.rc")
|
configure_file("${CMAKE_SOURCE_DIR}/cmake/Transmission.rc.in" "${INTNAME}-app-info.rc")
|
||||||
|
|
||||||
set(${OVAR} "${CMAKE_CURRENT_BINARY_DIR}/${INTNAME}-app-info.rc" PARENT_SCOPE)
|
target_sources(${TGT}
|
||||||
|
PRIVATE
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/${INTNAME}-app-info.rc")
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
function(tr_select_library LIBNAMES FUNCNAME DIRS OVAR)
|
function(tr_select_library LIBNAMES FUNCNAME DIRS OVAR)
|
||||||
|
@ -180,7 +282,10 @@ function(tr_fixup_bundle_item BUNDLE_DIR BUNDLE_ITEMS DEP_DIRS)
|
||||||
set(DEP_BUNDLE_PATH "Contents/MacOS/${DEP_NAME}")
|
set(DEP_BUNDLE_PATH "Contents/MacOS/${DEP_NAME}")
|
||||||
elseif(DEP_FULL_PATH MATCHES "^(.+)/(([^/]+[.]framework)/.+)$")
|
elseif(DEP_FULL_PATH MATCHES "^(.+)/(([^/]+[.]framework)/.+)$")
|
||||||
set(DEP_NAME "${CMAKE_MATCH_2}")
|
set(DEP_NAME "${CMAKE_MATCH_2}")
|
||||||
file(COPY "${CMAKE_MATCH_1}/${CMAKE_MATCH_3}" DESTINATION "${BUNDLE_DIR}/Contents/Frameworks/" PATTERN "Headers" EXCLUDE)
|
file(
|
||||||
|
COPY "${CMAKE_MATCH_1}/${CMAKE_MATCH_3}"
|
||||||
|
DESTINATION "${BUNDLE_DIR}/Contents/Frameworks/"
|
||||||
|
PATTERN "Headers" EXCLUDE)
|
||||||
set(DEP_BUNDLE_PATH "Contents/Frameworks/${DEP_NAME}")
|
set(DEP_BUNDLE_PATH "Contents/Frameworks/${DEP_NAME}")
|
||||||
else()
|
else()
|
||||||
message(FATAL_ERROR "Don't know how to fixup '${DEP_FULL_PATH}'")
|
message(FATAL_ERROR "Don't know how to fixup '${DEP_FULL_PATH}'")
|
||||||
|
@ -198,28 +303,221 @@ function(tr_fixup_bundle_item BUNDLE_DIR BUNDLE_ITEMS DEP_DIRS)
|
||||||
endwhile()
|
endwhile()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
macro(tr_qt_wrap_ui)
|
function(tr_glib_compile_resources TGT NAME INPUT_DIR INPUT_FILE OUTPUT_FILE_BASE)
|
||||||
if(Qt_VERSION_MAJOR EQUAL 6)
|
if(NOT GLIB_COMPILE_RESOURCES_EXECUTABLE)
|
||||||
qt6_wrap_ui(${ARGN})
|
execute_process(
|
||||||
else()
|
COMMAND ${PKG_CONFIG_EXECUTABLE} gio-2.0 --variable glib_compile_resources
|
||||||
qt5_wrap_ui(${ARGN})
|
OUTPUT_VARIABLE GLIB_COMPILE_RESOURCES_EXECUTABLE
|
||||||
endif()
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
endmacro()
|
|
||||||
|
|
||||||
macro(tr_qt_add_resources)
|
if(NOT GLIB_COMPILE_RESOURCES_EXECUTABLE)
|
||||||
if(Qt_VERSION_MAJOR EQUAL 6)
|
message(SEND_ERROR "Unable to find glib-compile-resources executable")
|
||||||
qt6_add_resources(${ARGN})
|
endif()
|
||||||
else()
|
|
||||||
qt5_add_resources(${ARGN})
|
|
||||||
endif()
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
macro(tr_qt_add_translation)
|
set(GLIB_COMPILE_RESOURCES_EXECUTABLE "${GLIB_COMPILE_RESOURCES_EXECUTABLE}"
|
||||||
|
CACHE STRING "glib-compile-resources executable")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set_property(
|
||||||
|
DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
APPEND PROPERTY CMAKE_CONFIGURE_DEPENDS
|
||||||
|
"${INPUT_DIR}/${INPUT_FILE}")
|
||||||
|
|
||||||
|
file(STRINGS "${INPUT_DIR}/${INPUT_FILE}" INPUT_LINES)
|
||||||
|
set(OUTPUT_DEPENDS)
|
||||||
|
foreach(INPUT_LINE IN LISTS INPUT_LINES)
|
||||||
|
if(INPUT_LINE MATCHES ">([^<]+)</file>")
|
||||||
|
list(APPEND OUTPUT_DEPENDS "${INPUT_DIR}/${CMAKE_MATCH_1}")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_FILE_BASE}.c"
|
||||||
|
COMMAND
|
||||||
|
"${GLIB_COMPILE_RESOURCES_EXECUTABLE}"
|
||||||
|
"--target=${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_FILE_BASE}.c"
|
||||||
|
"--sourcedir=${INPUT_DIR}"
|
||||||
|
--generate-source
|
||||||
|
--c-name "${NAME}"
|
||||||
|
"${INPUT_DIR}/${INPUT_FILE}"
|
||||||
|
DEPENDS
|
||||||
|
"${INPUT_DIR}/${INPUT_FILE}"
|
||||||
|
${OUTPUT_DEPENDS}
|
||||||
|
WORKING_DIRECTORY "${INPUT_DIR}")
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_FILE_BASE}.h"
|
||||||
|
COMMAND
|
||||||
|
"${GLIB_COMPILE_RESOURCES_EXECUTABLE}"
|
||||||
|
"--target=${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_FILE_BASE}.h"
|
||||||
|
"--sourcedir=${INPUT_DIR}"
|
||||||
|
--generate-header
|
||||||
|
--c-name "${NAME}"
|
||||||
|
"${INPUT_DIR}/${INPUT_FILE}"
|
||||||
|
DEPENDS
|
||||||
|
"${INPUT_DIR}/${INPUT_FILE}"
|
||||||
|
${OUTPUT_DEPENDS}
|
||||||
|
WORKING_DIRECTORY "${INPUT_DIR}")
|
||||||
|
|
||||||
|
target_sources(${TGT}
|
||||||
|
PRIVATE
|
||||||
|
"${INPUT_DIR}/${INPUT_FILE}"
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_FILE_BASE}.c"
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_FILE_BASE}.h")
|
||||||
|
|
||||||
|
source_group("Generated Files"
|
||||||
|
FILES
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_FILE_BASE}.c"
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_FILE_BASE}.h")
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(tr_target_glib_resources TGT)
|
||||||
|
foreach(ARG IN LISTS ARGN)
|
||||||
|
get_filename_component(ARG_PATH "${ARG}" ABSOLUTE)
|
||||||
|
string(SHA1 ARG_HASH "${ARG_PATH}")
|
||||||
|
string(SUBSTRING "${ARG_HASH}" 0 10 ARG_HASH)
|
||||||
|
|
||||||
|
get_filename_component(ARG_NAME_WE "${ARG}" NAME_WE)
|
||||||
|
string(MAKE_C_IDENTIFIER "${ARG_NAME_WE}" ARG_ID)
|
||||||
|
|
||||||
|
get_filename_component(ARG_DIR "${ARG_PATH}" DIRECTORY)
|
||||||
|
get_filename_component(ARG_NAME "${ARG}" NAME)
|
||||||
|
|
||||||
|
tr_glib_compile_resources(${TGT}
|
||||||
|
"${ARG_ID}_${ARG_HASH}"
|
||||||
|
"${ARG_DIR}"
|
||||||
|
"${ARG_NAME}"
|
||||||
|
"${ARG_ID}-${ARG_HASH}")
|
||||||
|
endforeach()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(tr_gettext_msgfmt TGT OUTPUT_FILE INPUT_FILE)
|
||||||
|
get_filename_component(OUTPUT_FILE_EXT "${OUTPUT_FILE}" LAST_EXT)
|
||||||
|
if(OUTPUT_FILE_EXT STREQUAL ".desktop")
|
||||||
|
set(MODE_ARG "--desktop")
|
||||||
|
elseif(OUTPUT_FILE_EXT STREQUAL ".xml")
|
||||||
|
set(MODE_ARG "--xml")
|
||||||
|
else()
|
||||||
|
message(FATAL_ERROR "Unsupported output file extension: '${OUTPUT_FILE_EXT}'")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${OUTPUT_FILE}
|
||||||
|
COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} ${MODE_ARG} -d ${CMAKE_SOURCE_DIR}/po --template ${INPUT_FILE} -o ${OUTPUT_FILE}
|
||||||
|
DEPENDS ${INPUT_FILE}
|
||||||
|
VERBATIM)
|
||||||
|
|
||||||
|
target_sources(${TGT}
|
||||||
|
PRIVATE
|
||||||
|
"${INPUT_FILE}"
|
||||||
|
"${OUTPUT_FILE}")
|
||||||
|
|
||||||
|
source_group("Generated Files"
|
||||||
|
FILES
|
||||||
|
"${OUTPUT_FILE}")
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
macro(tr_qt_add_translation OUTPUT_FILES_VAR)
|
||||||
if(Qt_VERSION_MAJOR EQUAL 6)
|
if(Qt_VERSION_MAJOR EQUAL 6)
|
||||||
qt6_add_translation(${ARGN} OPTIONS -silent)
|
qt6_add_translation(${OUTPUT_FILES_VAR} ${ARGN} OPTIONS -silent)
|
||||||
elseif(Qt_VERSION GREATER_EQUAL 5.11)
|
elseif(Qt_VERSION GREATER_EQUAL 5.11)
|
||||||
qt5_add_translation(${ARGN} OPTIONS -silent)
|
qt5_add_translation(${OUTPUT_FILES_VAR} ${ARGN} OPTIONS -silent)
|
||||||
else()
|
else()
|
||||||
qt5_add_translation(${ARGN})
|
qt5_add_translation(${OUTPUT_FILES_VAR} ${ARGN})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
source_group("Generated Files"
|
||||||
|
FILES ${${OUTPUT_FILES_VAR}})
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
|
function(tr_wrap_idl TGT INPUT_FILE OUTPUT_FILE_BASE)
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_FILE_BASE}.tlb
|
||||||
|
COMMAND ${MIDL_EXECUTABLE} /tlb ${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_FILE_BASE}.tlb ${INPUT_FILE}
|
||||||
|
DEPENDS ${INPUT_FILE}
|
||||||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
|
|
||||||
|
configure_file("${CMAKE_SOURCE_DIR}/cmake/Transmission.tlb.rc.in" ${OUTPUT_FILE_BASE}.tlb.rc)
|
||||||
|
|
||||||
|
target_sources(${TGT}
|
||||||
|
PRIVATE
|
||||||
|
${INPUT_FILE}
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_FILE_BASE}.tlb
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_FILE_BASE}.tlb.rc)
|
||||||
|
|
||||||
|
source_group("Generated Files"
|
||||||
|
FILES
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_FILE_BASE}.tlb
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_FILE_BASE}.tlb.rc)
|
||||||
|
|
||||||
|
tr_disable_source_files_compile(
|
||||||
|
${INPUT_FILE}
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_FILE_BASE}.tlb)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(tr_target_idl_files TGT)
|
||||||
|
foreach(ARG IN LISTS ARGN)
|
||||||
|
get_filename_component(ARG_PATH "${ARG}" ABSOLUTE)
|
||||||
|
string(SHA1 ARG_HASH "${ARG_PATH}")
|
||||||
|
string(SUBSTRING "${ARG_HASH}" 0 10 ARG_HASH)
|
||||||
|
|
||||||
|
get_filename_component(ARG_NAME_WE "${ARG}" NAME_WE)
|
||||||
|
string(MAKE_C_IDENTIFIER "${ARG_NAME_WE}" ARG_ID)
|
||||||
|
|
||||||
|
tr_wrap_idl(${TGT}
|
||||||
|
"${ARG}"
|
||||||
|
"${ARG_ID}-${ARG_HASH}")
|
||||||
|
endforeach()
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(tr_wrap_xib TGT INPUT_FILE OUTPUT_FILE OUTPUT_FOLDER)
|
||||||
|
if(NOT IBTOOL_EXECUTABLE)
|
||||||
|
find_program(IBTOOL_EXECUTABLE ibtool REQUIRED)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(OUTPUT_FOLDER)
|
||||||
|
string(PREPEND OUTPUT_FOLDER "/")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
get_filename_component(OUTPUT_FILE_DIR "${OUTPUT_FILE}" DIRECTORY)
|
||||||
|
|
||||||
|
add_custom_command(
|
||||||
|
OUTPUT ${OUTPUT_FILE}
|
||||||
|
COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPUT_FILE_DIR}
|
||||||
|
COMMAND ${IBTOOL_EXECUTABLE} --compile ${OUTPUT_FILE} ${INPUT_FILE}
|
||||||
|
DEPENDS ${INPUT_FILE}
|
||||||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
VERBATIM)
|
||||||
|
|
||||||
|
target_sources(${TGT}
|
||||||
|
PRIVATE
|
||||||
|
${INPUT_FILE}
|
||||||
|
${OUTPUT_FILE})
|
||||||
|
|
||||||
|
set(RESOURCES_DIR Resources)
|
||||||
|
if(NOT CMAKE_GENERATOR STREQUAL Xcode)
|
||||||
|
string(APPEND RESOURCES_DIR "${OUTPUT_FOLDER}")
|
||||||
|
endif()
|
||||||
|
set_source_files_properties(
|
||||||
|
${OUTPUT_FILE}
|
||||||
|
PROPERTIES
|
||||||
|
MACOSX_PACKAGE_LOCATION "${RESOURCES_DIR}")
|
||||||
|
|
||||||
|
source_group("Resources${OUTPUT_FOLDER}"
|
||||||
|
FILES ${INPUT_FILE})
|
||||||
|
|
||||||
|
source_group("Generated Files${OUTPUT_FOLDER}"
|
||||||
|
FILES ${OUTPUT_FILE})
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
function(tr_target_xib_files TGT)
|
||||||
|
foreach(ARG IN LISTS ARGN)
|
||||||
|
get_filename_component(ARG_DIR "${ARG}" DIRECTORY)
|
||||||
|
get_filename_component(ARG_NAME_WLE "${ARG}" NAME_WLE)
|
||||||
|
|
||||||
|
tr_wrap_xib(${TGT}
|
||||||
|
"${ARG}"
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/${ARG_DIR}/${ARG_NAME_WLE}.nib"
|
||||||
|
"${ARG_DIR}")
|
||||||
|
endforeach()
|
||||||
|
endfunction()
|
||||||
|
|
|
@ -0,0 +1,6 @@
|
||||||
|
#include "winresrc.h"
|
||||||
|
|
||||||
|
#pragma code_page(1252)
|
||||||
|
|
||||||
|
LANGUAGE 0, 0
|
||||||
|
1 TYPELIB "${OUTPUT_FILE_BASE}.tlb"
|
|
@ -1,58 +1,61 @@
|
||||||
project(trdaemon)
|
add_executable(${TR_NAME}-daemon)
|
||||||
|
|
||||||
if(WITH_SYSTEMD)
|
target_sources(${TR_NAME}-daemon
|
||||||
add_definitions(-DUSE_SYSTEMD)
|
PRIVATE
|
||||||
endif()
|
daemon.cc
|
||||||
|
daemon.h
|
||||||
|
daemon-posix.cc
|
||||||
|
daemon-win32.cc)
|
||||||
|
|
||||||
include_directories(
|
tr_allow_compile_if(
|
||||||
${CMAKE_SOURCE_DIR}
|
[=[[WIN32]]=]
|
||||||
)
|
daemon-win32.cc
|
||||||
include_directories(
|
[=[[NOT WIN32]]=]
|
||||||
SYSTEM
|
daemon-posix.cc)
|
||||||
${CURL_INCLUDE_DIRS}
|
|
||||||
${EVENT2_INCLUDE_DIRS}
|
|
||||||
)
|
|
||||||
|
|
||||||
set(${PROJECT_NAME}_SOURCES
|
target_compile_definitions(${TR_NAME}-daemon
|
||||||
daemon.cc
|
PRIVATE
|
||||||
daemon-posix.cc
|
$<$<BOOL:${WITH_SYSTEMD}>:USE_SYSTEMD>)
|
||||||
daemon-win32.cc
|
|
||||||
)
|
|
||||||
|
|
||||||
if(WIN32)
|
tr_target_compile_definitions_for_headers(${TR_NAME}-daemon
|
||||||
set_source_files_properties(daemon-posix.cc PROPERTIES HEADER_FILE_ONLY ON)
|
PRIVATE
|
||||||
else()
|
sys/signalfd.h)
|
||||||
set_source_files_properties(daemon-win32.cc PROPERTIES HEADER_FILE_ONLY ON)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(${PROJECT_NAME}_HEADERS
|
tr_target_compile_definitions_for_functions(${TR_NAME}-daemon
|
||||||
daemon.h
|
PRIVATE
|
||||||
)
|
daemon
|
||||||
|
syslog)
|
||||||
|
|
||||||
tr_win32_app_info(${PROJECT_NAME}_WIN32_RC_FILE
|
target_include_directories(${TR_NAME}-daemon
|
||||||
|
PRIVATE
|
||||||
|
${CMAKE_SOURCE_DIR})
|
||||||
|
|
||||||
|
target_include_directories(${TR_NAME}-daemon SYSTEM
|
||||||
|
PRIVATE
|
||||||
|
${LIBFMT_INCLUDE_DIRS}
|
||||||
|
${CURL_INCLUDE_DIRS}
|
||||||
|
${EVENT2_INCLUDE_DIRS}
|
||||||
|
$<$<BOOL:${WITH_SYSTEMD}>:${SYSTEMD_INCLUDE_DIRS}>)
|
||||||
|
|
||||||
|
target_link_libraries(${TR_NAME}-daemon
|
||||||
|
PRIVATE
|
||||||
|
${TR_NAME}
|
||||||
|
${EVENT2_LIBRARIES}
|
||||||
|
$<$<BOOL:${WITH_SYSTEMD}>:${SYSTEMD_LIBRARIES}>)
|
||||||
|
|
||||||
|
tr_win32_app_info(${TR_NAME}-daemon
|
||||||
"Transmission Daemon"
|
"Transmission Daemon"
|
||||||
"${TR_NAME}-daemon"
|
"${TR_NAME}-daemon"
|
||||||
"${TR_NAME}-daemon.exe")
|
"${TR_NAME}-daemon.exe")
|
||||||
|
|
||||||
add_executable(${TR_NAME}-daemon
|
|
||||||
${${PROJECT_NAME}_SOURCES}
|
|
||||||
${${PROJECT_NAME}_HEADERS}
|
|
||||||
${${PROJECT_NAME}_WIN32_RC_FILE})
|
|
||||||
|
|
||||||
target_link_libraries(${TR_NAME}-daemon
|
|
||||||
${TR_NAME}
|
|
||||||
${EVENT2_LIBRARIES}
|
|
||||||
)
|
|
||||||
|
|
||||||
if(WITH_SYSTEMD)
|
|
||||||
target_include_directories(${TR_NAME}-daemon PRIVATE ${SYSTEMD_INCLUDE_DIRS})
|
|
||||||
target_link_libraries(${TR_NAME}-daemon ${SYSTEMD_LIBRARIES})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
foreach(P daemon)
|
foreach(P daemon)
|
||||||
install(TARGETS ${TR_NAME}-${P} DESTINATION ${CMAKE_INSTALL_BINDIR})
|
install(
|
||||||
|
TARGETS ${TR_NAME}-${P}
|
||||||
|
DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
|
|
||||||
if(INSTALL_DOC)
|
if(INSTALL_DOC)
|
||||||
install(FILES ${TR_NAME}-${P}.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
|
install(
|
||||||
|
FILES ${TR_NAME}-${P}.1
|
||||||
|
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
project(tr-dist-msi)
|
|
||||||
|
|
||||||
include(UtilityFunctions.cmake)
|
include(UtilityFunctions.cmake)
|
||||||
|
|
||||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||||
|
@ -56,7 +54,9 @@ else()
|
||||||
set(TR_OPENSSL_SSL_NAME "ssleay32.dll")
|
set(TR_OPENSSL_SSL_NAME "ssleay32.dll")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
file(COPY "${CMAKE_SOURCE_DIR}/qt/icons/transmission.ico" DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
|
file(
|
||||||
|
COPY "${CMAKE_SOURCE_DIR}/qt/icons/transmission.ico"
|
||||||
|
DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
|
||||||
set(WEBSRCDIR "${CMAKE_INSTALL_PREFIX}/share/transmission/public_html")
|
set(WEBSRCDIR "${CMAKE_INSTALL_PREFIX}/share/transmission/public_html")
|
||||||
set(TRQMSRCDIR "${CMAKE_INSTALL_PREFIX}/share/transmission/translations")
|
set(TRQMSRCDIR "${CMAKE_INSTALL_PREFIX}/share/transmission/translations")
|
||||||
|
@ -66,11 +66,11 @@ configure_file(TransmissionConfig.wxi.in TransmissionConfig.wxi)
|
||||||
|
|
||||||
wix_heat(WebUi.wxs "${WEBSRCDIR}" WebUiComponents WEBINSTALLDIR var.WebSrcDir)
|
wix_heat(WebUi.wxs "${WEBSRCDIR}" WebUiComponents WEBINSTALLDIR var.WebSrcDir)
|
||||||
wix_heat(QtClientTranslations.wxs "${TRQMSRCDIR}" QtClientTranslationsComponents QMINSTALLDIR var.TrQmSrcDir)
|
wix_heat(QtClientTranslations.wxs "${TRQMSRCDIR}" QtClientTranslationsComponents QMINSTALLDIR var.TrQmSrcDir)
|
||||||
wix_heat(QtTranslations.wxs "${QTQMSRCDIR}" QtTranslationsComponents QMINSTALLDIR var.QtQmSrcDir XSL_TRANSFORM QtTranslations.xsl)
|
wix_heat(QtTranslations.wxs "${QTQMSRCDIR}" QtTranslationsComponents QMINSTALLDIR var.QtQmSrcDir
|
||||||
|
XSL_TRANSFORM QtTranslations.xsl)
|
||||||
|
|
||||||
wix_candle(${PROJECT_NAME}_OBJS
|
wix_candle(WIX_OBJS
|
||||||
ARCHITECTURE
|
ARCHITECTURE ${ARCH}
|
||||||
${ARCH}
|
|
||||||
SOURCES
|
SOURCES
|
||||||
components/CliTools.wxs
|
components/CliTools.wxs
|
||||||
components/CommonLibs.wxs
|
components/CommonLibs.wxs
|
||||||
|
@ -95,14 +95,11 @@ wix_candle(${PROJECT_NAME}_OBJS
|
||||||
"MsvcCrtMsmFile=${TR_MSVC_CRT_MSM_FILE}"
|
"MsvcCrtMsmFile=${TR_MSVC_CRT_MSM_FILE}"
|
||||||
"OpenSslCryptoName=${TR_OPENSSL_CRYPTO_NAME}"
|
"OpenSslCryptoName=${TR_OPENSSL_CRYPTO_NAME}"
|
||||||
"OpenSslSslName=${TR_OPENSSL_SSL_NAME}"
|
"OpenSslSslName=${TR_OPENSSL_SSL_NAME}"
|
||||||
EXTRA_DEPENDS
|
EXTRA_DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/TransmissionConfig.wxi")
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/TransmissionConfig.wxi")
|
|
||||||
|
|
||||||
wix_light(${PROJECT_NAME}_OUTPUT
|
wix_light(WIX_OUTPUT
|
||||||
NAME
|
NAME transmission-${MSI_FILENAME_VERSION}-${ARCH}
|
||||||
transmission-${MSI_FILENAME_VERSION}-${ARCH}
|
OBJECTS ${WIX_OBJS}
|
||||||
OBJECTS
|
|
||||||
${${PROJECT_NAME}_OBJS}
|
|
||||||
EXTENSIONS
|
EXTENSIONS
|
||||||
WixUIExtension
|
WixUIExtension
|
||||||
WixUtilExtension
|
WixUtilExtension
|
||||||
|
@ -119,5 +116,4 @@ add_custom_target(pack-msi
|
||||||
QtTranslations.xsl
|
QtTranslations.xsl
|
||||||
Transmission.wxs
|
Transmission.wxs
|
||||||
TransmissionConfig.wxi.in
|
TransmissionConfig.wxi.in
|
||||||
DEPENDS
|
DEPENDS "${WIX_OUTPUT}")
|
||||||
"${${PROJECT_NAME}_OUTPUT}")
|
|
||||||
|
|
|
@ -22,8 +22,12 @@ function(find_msvc_crt_msm OUTPUT_VAR)
|
||||||
set(CMN_PF_DIR "CommonProgramFiles(x86)")
|
set(CMN_PF_DIR "CommonProgramFiles(x86)")
|
||||||
find_file(${OUTPUT_VAR}
|
find_file(${OUTPUT_VAR}
|
||||||
NAMES "${MSM_FILE}"
|
NAMES "${MSM_FILE}"
|
||||||
PATHS ${VC_VER_DIRS} $ENV{${CMN_PF_DIR}}
|
PATHS
|
||||||
PATH_SUFFIXES "MergeModules" "Merge Modules")
|
${VC_VER_DIRS}
|
||||||
|
$ENV{${CMN_PF_DIR}}
|
||||||
|
PATH_SUFFIXES
|
||||||
|
"MergeModules"
|
||||||
|
"Merge Modules")
|
||||||
message(STATUS " * Result: ${${OUTPUT_VAR}}")
|
message(STATUS " * Result: ${${OUTPUT_VAR}}")
|
||||||
|
|
||||||
set(${OUTPUT_VAR} "${${OUTPUT_VAR}}" PARENT_SCOPE)
|
set(${OUTPUT_VAR} "${${OUTPUT_VAR}}" PARENT_SCOPE)
|
||||||
|
@ -76,7 +80,9 @@ function(wix_candle OUTPUT_VAR)
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT "${CANDLE_OUTPUT}"
|
OUTPUT "${CANDLE_OUTPUT}"
|
||||||
COMMAND candle ${OPTIONS} "${F}" -out "${CANDLE_OUTPUT}"
|
COMMAND candle ${OPTIONS} "${F}" -out "${CANDLE_OUTPUT}"
|
||||||
DEPENDS "${F}" ${CANDLE_EXTRA_DEPENDS})
|
DEPENDS
|
||||||
|
"${F}"
|
||||||
|
${CANDLE_EXTRA_DEPENDS})
|
||||||
list(APPEND ${OUTPUT_VAR} "${CANDLE_OUTPUT}")
|
list(APPEND ${OUTPUT_VAR} "${CANDLE_OUTPUT}")
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
|
@ -96,7 +102,9 @@ function(wix_light OUTPUT_VAR)
|
||||||
OUTPUT ${LIGHT_OUTPUT}
|
OUTPUT ${LIGHT_OUTPUT}
|
||||||
BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/${LIGHT_NAME}.wixpdb"
|
BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/${LIGHT_NAME}.wixpdb"
|
||||||
COMMAND light ${OPTIONS} -out "${CMAKE_CURRENT_BINARY_DIR}/${LIGHT_NAME}.msi" ${LIGHT_OBJECTS}
|
COMMAND light ${OPTIONS} -out "${CMAKE_CURRENT_BINARY_DIR}/${LIGHT_NAME}.msi" ${LIGHT_OBJECTS}
|
||||||
DEPENDS ${LIGHT_OBJECTS} ${LIGHT_EXTRA_DEPENDS})
|
DEPENDS
|
||||||
|
${LIGHT_OBJECTS}
|
||||||
|
${LIGHT_EXTRA_DEPENDS})
|
||||||
|
|
||||||
list(APPEND ${OUTPUT_VAR} ${LIGHT_OUTPUT})
|
list(APPEND ${OUTPUT_VAR} ${LIGHT_OUTPUT})
|
||||||
set(${OUTPUT_VAR} "${${OUTPUT_VAR}}" PARENT_SCOPE)
|
set(${OUTPUT_VAR} "${${OUTPUT_VAR}}" PARENT_SCOPE)
|
||||||
|
|
|
@ -1,279 +1,245 @@
|
||||||
project(trgtk)
|
|
||||||
|
|
||||||
if(ENABLE_WERROR)
|
|
||||||
add_compile_options($<IF:$<CXX_COMPILER_ID:MSVC>,/WX,-Werror>)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
execute_process(
|
|
||||||
COMMAND
|
|
||||||
${PKG_CONFIG_EXECUTABLE} gio-2.0 --variable glib_compile_resources
|
|
||||||
OUTPUT_VARIABLE
|
|
||||||
GLIB_COMPILE_RESOURCES_EXECUTABLE
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
||||||
)
|
|
||||||
|
|
||||||
if(NOT GLIB_COMPILE_RESOURCES_EXECUTABLE)
|
|
||||||
message(SEND_ERROR "Unable to find glib-compile-resources executable")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_program(APPSTREAM appstreamcli)
|
find_program(APPSTREAM appstreamcli)
|
||||||
|
|
||||||
|
add_executable(${TR_NAME}-gtk WIN32)
|
||||||
|
|
||||||
|
target_sources(${TR_NAME}-gtk
|
||||||
|
PRIVATE
|
||||||
|
Actions.cc
|
||||||
|
Actions.h
|
||||||
|
Application.cc
|
||||||
|
Application.h
|
||||||
|
DetailsDialog.cc
|
||||||
|
DetailsDialog.h
|
||||||
|
Dialogs.cc
|
||||||
|
Dialogs.h
|
||||||
|
FaviconCache.cc
|
||||||
|
FaviconCache.h
|
||||||
|
FileList.cc
|
||||||
|
FileList.h
|
||||||
|
FilterBar.cc
|
||||||
|
FilterBar.h
|
||||||
|
Flags.h
|
||||||
|
FreeSpaceLabel.cc
|
||||||
|
FreeSpaceLabel.h
|
||||||
|
GtkCompat.h
|
||||||
|
HigWorkarea.h
|
||||||
|
IconCache.cc
|
||||||
|
IconCache.h
|
||||||
|
ListModelAdapter.cc
|
||||||
|
ListModelAdapter.h
|
||||||
|
main.cc
|
||||||
|
MainWindow.cc
|
||||||
|
MainWindow.h
|
||||||
|
MakeDialog.cc
|
||||||
|
MakeDialog.h
|
||||||
|
MessageLogWindow.cc
|
||||||
|
MessageLogWindow.h
|
||||||
|
Notify.cc
|
||||||
|
Notify.h
|
||||||
|
OptionsDialog.cc
|
||||||
|
OptionsDialog.h
|
||||||
|
PathButton.cc
|
||||||
|
PathButton.h
|
||||||
|
Prefs.cc
|
||||||
|
Prefs.h
|
||||||
|
PrefsDialog.cc
|
||||||
|
PrefsDialog.h
|
||||||
|
RelocateDialog.cc
|
||||||
|
RelocateDialog.h
|
||||||
|
Session.cc
|
||||||
|
Session.h
|
||||||
|
StatsDialog.cc
|
||||||
|
StatsDialog.h
|
||||||
|
SystemTrayIcon.cc
|
||||||
|
SystemTrayIcon.h
|
||||||
|
Torrent.cc
|
||||||
|
Torrent.h
|
||||||
|
TorrentCellRenderer.cc
|
||||||
|
TorrentCellRenderer.h
|
||||||
|
TorrentFilter.cc
|
||||||
|
TorrentFilter.h
|
||||||
|
TorrentSorter.cc
|
||||||
|
TorrentSorter.h
|
||||||
|
Utils.cc
|
||||||
|
Utils.h)
|
||||||
|
|
||||||
|
target_sources(${TR_NAME}-gtk
|
||||||
|
PRIVATE
|
||||||
|
ui/gtk3/AddTrackerDialog.ui
|
||||||
|
ui/gtk3/DetailsDialog.ui
|
||||||
|
ui/gtk3/EditTrackersDialog.ui
|
||||||
|
ui/gtk3/FilterBar.ui
|
||||||
|
ui/gtk3/MainWindow.ui
|
||||||
|
ui/gtk3/MakeDialog.ui
|
||||||
|
ui/gtk3/MakeProgressDialog.ui
|
||||||
|
ui/gtk3/MessageLogWindow.ui
|
||||||
|
ui/gtk3/OptionsDialog.ui
|
||||||
|
ui/gtk3/PrefsDialog.ui
|
||||||
|
ui/gtk3/RelocateDialog.ui
|
||||||
|
ui/gtk3/StatsDialog.ui
|
||||||
|
ui/gtk3/TorrentUrlChooserDialog.ui)
|
||||||
|
|
||||||
|
source_group(Ui/GTK3
|
||||||
|
REGULAR_EXPRESSION [[ui/gtk3/.*\.ui$]])
|
||||||
|
|
||||||
|
target_sources(${TR_NAME}-gtk
|
||||||
|
PRIVATE
|
||||||
|
ui/gtk4/AddTrackerDialog.ui
|
||||||
|
ui/gtk4/DetailsDialog.ui
|
||||||
|
ui/gtk4/EditTrackersDialog.ui
|
||||||
|
ui/gtk4/FilterBar.ui
|
||||||
|
ui/gtk4/MainWindow.ui
|
||||||
|
ui/gtk4/MakeDialog.ui
|
||||||
|
ui/gtk4/MakeProgressDialog.ui
|
||||||
|
ui/gtk4/MessageLogWindow.ui
|
||||||
|
ui/gtk4/OptionsDialog.ui
|
||||||
|
ui/gtk4/PrefsDialog.ui
|
||||||
|
ui/gtk4/RelocateDialog.ui
|
||||||
|
ui/gtk4/StatsDialog.ui
|
||||||
|
ui/gtk4/TorrentUrlChooserDialog.ui)
|
||||||
|
|
||||||
|
source_group(Ui/GTK4
|
||||||
|
REGULAR_EXPRESSION [[ui/gtk4/.*\.ui$]])
|
||||||
|
|
||||||
|
target_link_directories(${TR_NAME}-gtk
|
||||||
|
PRIVATE
|
||||||
|
${GTK${GTK_VERSION}_LIBRARY_DIRS})
|
||||||
|
|
||||||
|
if(WITH_APPINDICATOR)
|
||||||
|
set_property(
|
||||||
|
SOURCE SystemTrayIcon.cc
|
||||||
|
APPEND
|
||||||
|
PROPERTY COMPILE_DEFINITIONS
|
||||||
|
HAVE_APPINDICATOR)
|
||||||
|
if(APPINDICATOR_IS_AYATANA)
|
||||||
|
set_property(
|
||||||
|
SOURCE SystemTrayIcon.cc
|
||||||
|
APPEND
|
||||||
|
PROPERTY COMPILE_DEFINITIONS
|
||||||
|
APPINDICATOR_IS_AYATANA)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
if(GTK_VERSION EQUAL 4)
|
if(GTK_VERSION EQUAL 4)
|
||||||
set(UI_SUBDIR ui/gtk4)
|
set(UI_SUBDIR ui/gtk4)
|
||||||
else()
|
else()
|
||||||
set(UI_SUBDIR ui/gtk3)
|
set(UI_SUBDIR ui/gtk3)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(${PROJECT_NAME}_UI_FILES
|
tr_target_glib_resources(${TR_NAME}-gtk
|
||||||
${UI_SUBDIR}/AddTrackerDialog.ui
|
transmission.gresource.xml
|
||||||
${UI_SUBDIR}/DetailsDialog.ui
|
${UI_SUBDIR}/transmission-ui.gresource.xml)
|
||||||
${UI_SUBDIR}/EditTrackersDialog.ui
|
|
||||||
${UI_SUBDIR}/FilterBar.ui
|
|
||||||
${UI_SUBDIR}/MainWindow.ui
|
|
||||||
${UI_SUBDIR}/MakeDialog.ui
|
|
||||||
${UI_SUBDIR}/MakeProgressDialog.ui
|
|
||||||
${UI_SUBDIR}/MessageLogWindow.ui
|
|
||||||
${UI_SUBDIR}/OptionsDialog.ui
|
|
||||||
${UI_SUBDIR}/PrefsDialog.ui
|
|
||||||
${UI_SUBDIR}/RelocateDialog.ui
|
|
||||||
${UI_SUBDIR}/StatsDialog.ui
|
|
||||||
${UI_SUBDIR}/TorrentUrlChooserDialog.ui
|
|
||||||
)
|
|
||||||
|
|
||||||
macro(gtr_compile_resources NAME INPUT_DIR INPUT_FILE OUTPUT_FILE_BASE)
|
|
||||||
add_custom_command(
|
|
||||||
OUTPUT
|
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_FILE_BASE}.c"
|
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_FILE_BASE}.h"
|
|
||||||
COMMAND
|
|
||||||
"${GLIB_COMPILE_RESOURCES_EXECUTABLE}"
|
|
||||||
"--target=${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_FILE_BASE}.c"
|
|
||||||
"--sourcedir=${INPUT_DIR}"
|
|
||||||
--generate-source
|
|
||||||
--c-name "${NAME}"
|
|
||||||
"${INPUT_DIR}/${INPUT_FILE}"
|
|
||||||
COMMAND
|
|
||||||
"${GLIB_COMPILE_RESOURCES_EXECUTABLE}"
|
|
||||||
"--target=${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_FILE_BASE}.h"
|
|
||||||
"--sourcedir=${INPUT_DIR}"
|
|
||||||
--generate-header
|
|
||||||
--c-name "${NAME}"
|
|
||||||
"${INPUT_DIR}/${INPUT_FILE}"
|
|
||||||
DEPENDS
|
|
||||||
"${INPUT_DIR}/${INPUT_FILE}"
|
|
||||||
${ARGN}
|
|
||||||
WORKING_DIRECTORY
|
|
||||||
"${INPUT_DIR}"
|
|
||||||
)
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
gtr_compile_resources(transmission ${CMAKE_CURRENT_SOURCE_DIR} transmission.gresource.xml transmission-resources
|
|
||||||
icons/hicolor_apps_scalable_transmission.svg
|
|
||||||
icons/lock.svg
|
|
||||||
icons/options-symbolic.svg
|
|
||||||
icons/ratio-symbolic.svg
|
|
||||||
icons/turtle-symbolic.svg
|
|
||||||
transmission-ui.css
|
|
||||||
transmission-ui.xml
|
|
||||||
)
|
|
||||||
gtr_compile_resources(transmission_ui ${CMAKE_CURRENT_SOURCE_DIR}/${UI_SUBDIR} transmission-ui.gresource.xml transmission-ui-resources
|
|
||||||
${${PROJECT_NAME}_UI_FILES}
|
|
||||||
)
|
|
||||||
|
|
||||||
if(ENABLE_NLS)
|
if(ENABLE_NLS)
|
||||||
set(${PROJECT_NAME}_DESKTOP_FILE "${PROJECT_BINARY_DIR}/${TR_NAME}-gtk.desktop")
|
set(DESKTOP_FILE "${CMAKE_CURRENT_BINARY_DIR}/${TR_NAME}-gtk.desktop")
|
||||||
add_custom_command(
|
tr_gettext_msgfmt(${TR_NAME}-gtk
|
||||||
OUTPUT ${${PROJECT_NAME}_DESKTOP_FILE}
|
${DESKTOP_FILE}
|
||||||
COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} --desktop -d ${CMAKE_SOURCE_DIR}/po --template ${PROJECT_SOURCE_DIR}/transmission-gtk.desktop.in -o ${${PROJECT_NAME}_DESKTOP_FILE}
|
${CMAKE_CURRENT_SOURCE_DIR}/transmission-gtk.desktop.in)
|
||||||
DEPENDS ${PROJECT_SOURCE_DIR}/transmission-gtk.desktop.in
|
target_sources(${TR_NAME}-gtk
|
||||||
VERBATIM
|
PRIVATE
|
||||||
)
|
${DESKTOP_FILE})
|
||||||
|
|
||||||
set(${PROJECT_NAME}_METAINFO_FILE "${PROJECT_BINARY_DIR}/${TR_NAME}-gtk.metainfo.xml")
|
set(METAINFO_FILE "${CMAKE_CURRENT_BINARY_DIR}/${TR_NAME}-gtk.metainfo.xml")
|
||||||
add_custom_command(
|
tr_gettext_msgfmt(${TR_NAME}-gtk
|
||||||
OUTPUT ${${PROJECT_NAME}_METAINFO_FILE}
|
${METAINFO_FILE}
|
||||||
COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} --xml -d ${CMAKE_SOURCE_DIR}/po --template ${PROJECT_SOURCE_DIR}/transmission-gtk.metainfo.xml.in -o ${${PROJECT_NAME}_METAINFO_FILE}
|
${CMAKE_CURRENT_SOURCE_DIR}/transmission-gtk.metainfo.xml.in)
|
||||||
DEPENDS ${PROJECT_SOURCE_DIR}/transmission-gtk.metainfo.xml.in
|
target_sources(${TR_NAME}-gtk
|
||||||
VERBATIM
|
PRIVATE
|
||||||
)
|
${METAINFO_FILE})
|
||||||
|
|
||||||
source_group("Generated Files" FILES ${${PROJECT_NAME}_DESKTOP_FILE} ${${PROJECT_NAME}_METAINFO_FILE})
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(${PROJECT_NAME}_SOURCES
|
target_compile_definitions(${TR_NAME}-gtk
|
||||||
Actions.cc
|
PRIVATE
|
||||||
Application.cc
|
TRANSMISSIONLOCALEDIR="${CMAKE_INSTALL_FULL_LOCALEDIR}"
|
||||||
DetailsDialog.cc
|
GETTEXT_PACKAGE="${TR_NAME}-gtk"
|
||||||
Dialogs.cc
|
G_DISABLE_DEPRECATED
|
||||||
FaviconCache.cc
|
GDK_PIXBUF_DISABLE_DEPRECATED
|
||||||
FileList.cc
|
GDK_DISABLE_DEPRECATED
|
||||||
FilterBar.cc
|
GTK_DISABLE_DEPRECATED
|
||||||
FreeSpaceLabel.cc
|
PANGO_DISABLE_DEPRECATED
|
||||||
IconCache.cc
|
# FIXME: these break libnotify's headers
|
||||||
ListModelAdapter.cc
|
# G_DISABLE_SINGLE_INCLUDES
|
||||||
main.cc
|
# GTK_DISABLE_SINGLE_INCLUDES
|
||||||
MainWindow.cc
|
GDKMM_DISABLE_DEPRECATED
|
||||||
MakeDialog.cc
|
GIOMM_DISABLE_DEPRECATED
|
||||||
MessageLogWindow.cc
|
GLIBMM_DISABLE_DEPRECATED
|
||||||
Notify.cc
|
GTKMM_DISABLE_DEPRECATED
|
||||||
OptionsDialog.cc
|
PANGOMM_DISABLE_DEPRECATED
|
||||||
PathButton.cc
|
SIGCXX_DISABLE_DEPRECATED
|
||||||
Prefs.cc
|
$<$<BOOL:${ENABLE_UTP}>:WITH_UTP>)
|
||||||
PrefsDialog.cc
|
|
||||||
RelocateDialog.cc
|
|
||||||
Session.cc
|
|
||||||
StatsDialog.cc
|
|
||||||
SystemTrayIcon.cc
|
|
||||||
Torrent.cc
|
|
||||||
TorrentCellRenderer.cc
|
|
||||||
TorrentFilter.cc
|
|
||||||
TorrentSorter.cc
|
|
||||||
Utils.cc
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/transmission-resources.c
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/transmission-ui-resources.c
|
|
||||||
)
|
|
||||||
|
|
||||||
set(${PROJECT_NAME}_HEADERS
|
target_compile_options(${TR_NAME}-gtk
|
||||||
Actions.h
|
PRIVATE
|
||||||
Application.h
|
${GTK${GTK_VERSION}_CFLAGS_OTHER}
|
||||||
DetailsDialog.h
|
$<$<BOOL:${ENABLE_WERROR}>:$<IF:$<CXX_COMPILER_ID:MSVC>,/WX,-Werror>>
|
||||||
Dialogs.h
|
$<$<NOT:$<CXX_COMPILER_ID:MSVC>>:-Wno-exit-time-destructors>)
|
||||||
FaviconCache.h
|
|
||||||
FileList.h
|
|
||||||
FilterBar.h
|
|
||||||
Flags.h
|
|
||||||
FreeSpaceLabel.h
|
|
||||||
GtkCompat.h
|
|
||||||
HigWorkarea.h
|
|
||||||
IconCache.h
|
|
||||||
ListModelAdapter.h
|
|
||||||
MainWindow.h
|
|
||||||
MakeDialog.h
|
|
||||||
MessageLogWindow.h
|
|
||||||
Notify.h
|
|
||||||
OptionsDialog.h
|
|
||||||
PathButton.h
|
|
||||||
Prefs.h
|
|
||||||
PrefsDialog.h
|
|
||||||
RelocateDialog.h
|
|
||||||
Session.h
|
|
||||||
StatsDialog.h
|
|
||||||
SystemTrayIcon.h
|
|
||||||
Torrent.h
|
|
||||||
TorrentCellRenderer.h
|
|
||||||
TorrentFilter.h
|
|
||||||
TorrentSorter.h
|
|
||||||
Utils.h
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/transmission-resources.h
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/transmission-ui-resources.h
|
|
||||||
)
|
|
||||||
|
|
||||||
include_directories(
|
target_include_directories(${TR_NAME}-gtk
|
||||||
${CMAKE_SOURCE_DIR}
|
PRIVATE
|
||||||
${PROJECT_BINARY_DIR}
|
${CMAKE_SOURCE_DIR}
|
||||||
)
|
${CMAKE_CURRENT_BINARY_DIR})
|
||||||
|
|
||||||
include_directories(
|
target_include_directories(${TR_NAME}-gtk SYSTEM
|
||||||
SYSTEM
|
PRIVATE
|
||||||
${GTK${GTK_VERSION}_INCLUDE_DIRS}
|
${LIBFMT_INCLUDE_DIRS}
|
||||||
${CURL_INCLUDE_DIRS}
|
${GTK${GTK_VERSION}_INCLUDE_DIRS}
|
||||||
${EVENT2_INCLUDE_DIRS}
|
${CURL_INCLUDE_DIRS}
|
||||||
)
|
${EVENT2_INCLUDE_DIRS}
|
||||||
|
$<$<BOOL:${WITH_APPINDICATOR}>:${APPINDICATOR_INCLUDE_DIRS}>)
|
||||||
if(WITH_APPINDICATOR)
|
|
||||||
include_directories(SYSTEM ${APPINDICATOR_INCLUDE_DIRS})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
link_directories(
|
|
||||||
${GTK${GTK_VERSION}_LIBRARY_DIRS}
|
|
||||||
)
|
|
||||||
|
|
||||||
add_definitions(
|
|
||||||
"-DTRANSMISSIONLOCALEDIR=\"${CMAKE_INSTALL_FULL_LOCALEDIR}\""
|
|
||||||
"-DGETTEXT_PACKAGE=\"${TR_NAME}-gtk\""
|
|
||||||
-DG_DISABLE_DEPRECATED
|
|
||||||
-DGDK_PIXBUF_DISABLE_DEPRECATED
|
|
||||||
-DGDK_DISABLE_DEPRECATED
|
|
||||||
-DGTK_DISABLE_DEPRECATED
|
|
||||||
-DPANGO_DISABLE_DEPRECATED
|
|
||||||
# FIXME: these break libnotify's headers
|
|
||||||
# -DG_DISABLE_SINGLE_INCLUDES
|
|
||||||
# -DGTK_DISABLE_SINGLE_INCLUDES
|
|
||||||
-DGDKMM_DISABLE_DEPRECATED
|
|
||||||
-DGIOMM_DISABLE_DEPRECATED
|
|
||||||
-DGLIBMM_DISABLE_DEPRECATED
|
|
||||||
-DGTKMM_DISABLE_DEPRECATED
|
|
||||||
-DPANGOMM_DISABLE_DEPRECATED
|
|
||||||
-DSIGCXX_DISABLE_DEPRECATED
|
|
||||||
${GTK${GTK_VERSION}_CFLAGS_OTHER}
|
|
||||||
)
|
|
||||||
|
|
||||||
if(ENABLE_UTP)
|
|
||||||
add_definitions(-DWITH_UTP)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_APPINDICATOR)
|
|
||||||
set_property(SOURCE SystemTrayIcon.cc APPEND PROPERTY COMPILE_DEFINITIONS HAVE_APPINDICATOR)
|
|
||||||
if(APPINDICATOR_IS_AYATANA)
|
|
||||||
set_property(SOURCE SystemTrayIcon.cc APPEND PROPERTY COMPILE_DEFINITIONS APPINDICATOR_IS_AYATANA)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
tr_win32_app_info(${PROJECT_NAME}_WIN32_RC_FILE
|
|
||||||
"Transmission GTK+ Client"
|
|
||||||
"${TR_NAME}-gtk"
|
|
||||||
"${TR_NAME}-gtk.exe"
|
|
||||||
"${TR_NAME}.ico")
|
|
||||||
|
|
||||||
add_executable(${TR_NAME}-gtk WIN32
|
|
||||||
${${PROJECT_NAME}_SOURCES}
|
|
||||||
${${PROJECT_NAME}_HEADERS}
|
|
||||||
${${PROJECT_NAME}_DESKTOP_FILE}
|
|
||||||
${${PROJECT_NAME}_METAINFO_FILE}
|
|
||||||
${${PROJECT_NAME}_WIN32_RC_FILE}
|
|
||||||
)
|
|
||||||
|
|
||||||
target_link_libraries(${TR_NAME}-gtk
|
target_link_libraries(${TR_NAME}-gtk
|
||||||
${TR_NAME}
|
PRIVATE
|
||||||
${GTK${GTK_VERSION}_LIBRARIES}
|
${TR_NAME}
|
||||||
${CURL_LIBRARIES}
|
${GTK${GTK_VERSION}_LIBRARIES}
|
||||||
${EVENT2_LIBRARIES}
|
${CURL_LIBRARIES}
|
||||||
)
|
${EVENT2_LIBRARIES}
|
||||||
|
$<$<BOOL:${WITH_APPINDICATOR}>:${APPINDICATOR_LIBRARIES}>)
|
||||||
if(WITH_APPINDICATOR)
|
|
||||||
target_link_libraries(${TR_NAME}-gtk ${APPINDICATOR_LIBRARIES})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT MSVC)
|
|
||||||
target_compile_options(${TR_NAME}-gtk PRIVATE -Wno-exit-time-destructors)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
tr_append_target_property(${TR_NAME}-gtk LINK_FLAGS "/ENTRY:mainCRTStartup")
|
tr_append_target_property(${TR_NAME}-gtk LINK_FLAGS "/ENTRY:mainCRTStartup")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
install(TARGETS ${TR_NAME}-gtk DESTINATION ${CMAKE_INSTALL_BINDIR})
|
tr_win32_app_info(${TR_NAME}-gtk
|
||||||
|
"Transmission GTK+ Client"
|
||||||
|
"${TR_NAME}-gtk"
|
||||||
|
"${TR_NAME}-gtk.exe"
|
||||||
|
"${TR_NAME}.ico")
|
||||||
|
|
||||||
set(${PROJECT_NAME}_PUBLIC_ICONS
|
install(
|
||||||
|
TARGETS ${TR_NAME}-gtk
|
||||||
|
DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
|
|
||||||
|
set(PUBLIC_ICONS
|
||||||
hicolor_apps_scalable_transmission.svg
|
hicolor_apps_scalable_transmission.svg
|
||||||
hicolor_apps_scalable_transmission-devel.svg
|
hicolor_apps_scalable_transmission-devel.svg
|
||||||
hicolor_apps_symbolic_transmission-symbolic.svg
|
hicolor_apps_symbolic_transmission-symbolic.svg)
|
||||||
)
|
|
||||||
|
|
||||||
set(ICON_NAME_REGEX "^([^_]+)_([^_]+)_([^_]+)_(.+)$")
|
set(ICON_NAME_REGEX "^([^_]+)_([^_]+)_([^_]+)_(.+)$")
|
||||||
foreach(ICON ${${PROJECT_NAME}_PUBLIC_ICONS})
|
foreach(ICON ${PUBLIC_ICONS})
|
||||||
string(REGEX REPLACE ${ICON_NAME_REGEX} "\\1/\\3/\\2" ICON_DIR ${ICON})
|
string(REGEX REPLACE ${ICON_NAME_REGEX} "\\1/\\3/\\2" ICON_DIR ${ICON})
|
||||||
string(REGEX REPLACE ${ICON_NAME_REGEX} "\\4" ICON_NAME ${ICON})
|
string(REGEX REPLACE ${ICON_NAME_REGEX} "\\4" ICON_NAME ${ICON})
|
||||||
install(FILES icons/${ICON} DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/${ICON_DIR}/ RENAME ${ICON_NAME})
|
install(
|
||||||
|
FILES icons/${ICON}
|
||||||
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/${ICON_DIR}/
|
||||||
|
RENAME ${ICON_NAME})
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
if(INSTALL_DOC)
|
if(INSTALL_DOC)
|
||||||
install(FILES ${TR_NAME}-gtk.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
|
install(
|
||||||
|
FILES ${TR_NAME}-gtk.1
|
||||||
|
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(ENABLE_NLS)
|
if(ENABLE_NLS)
|
||||||
install(FILES ${${PROJECT_NAME}_DESKTOP_FILE} DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
|
install(
|
||||||
install(FILES ${${PROJECT_NAME}_METAINFO_FILE} DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo)
|
FILES ${DESKTOP_FILE}
|
||||||
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
|
||||||
|
install(
|
||||||
|
FILES ${METAINFO_FILE}
|
||||||
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo)
|
||||||
else()
|
else()
|
||||||
install(FILES transmission-gtk.desktop.in DESTINATION ${CMAKE_INSTALL_DATADIR}/applications RENAME ${TR_NAME}-gtk.desktop)
|
install(
|
||||||
|
FILES transmission-gtk.desktop.in
|
||||||
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/applications
|
||||||
|
RENAME ${TR_NAME}-gtk.desktop)
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -1,321 +1,354 @@
|
||||||
project(libtr)
|
include(CheckLibraryExists)
|
||||||
|
include(CheckSymbolExists)
|
||||||
|
|
||||||
configure_file(
|
if(ENABLE_NLS)
|
||||||
version.h.in
|
check_library_exists(intl libintl_gettext "" HAVE_LIBINTL)
|
||||||
version.h
|
if(HAVE_LIBINTL)
|
||||||
)
|
set(LIBINTL_LIBRARY intl)
|
||||||
|
|
||||||
set(${PROJECT_NAME}_SOURCES
|
|
||||||
announce-list.cc
|
|
||||||
announcer-http.cc
|
|
||||||
announcer-udp.cc
|
|
||||||
announcer.cc
|
|
||||||
bandwidth.cc
|
|
||||||
bitfield.cc
|
|
||||||
block-info.cc
|
|
||||||
blocklist.cc
|
|
||||||
cache.cc
|
|
||||||
clients.cc
|
|
||||||
completion.cc
|
|
||||||
crypto-utils-ccrypto.cc
|
|
||||||
crypto-utils-fallback.cc
|
|
||||||
crypto-utils-mbedtls.cc
|
|
||||||
crypto-utils-openssl.cc
|
|
||||||
crypto-utils-wolfssl.cc
|
|
||||||
crypto-utils.cc
|
|
||||||
error.cc
|
|
||||||
file-piece-map.cc
|
|
||||||
file-posix.cc
|
|
||||||
file-win32.cc
|
|
||||||
file.cc
|
|
||||||
handshake.cc
|
|
||||||
inout.cc
|
|
||||||
log.cc
|
|
||||||
magnet-metainfo.cc
|
|
||||||
makemeta.cc
|
|
||||||
net.cc
|
|
||||||
open-files.cc
|
|
||||||
peer-io.cc
|
|
||||||
peer-mgr-active-requests.cc
|
|
||||||
peer-mgr-wishlist.cc
|
|
||||||
peer-mgr.cc
|
|
||||||
peer-mse.cc
|
|
||||||
peer-msgs.cc
|
|
||||||
peer-socket.cc
|
|
||||||
platform-quota.cc
|
|
||||||
platform.cc
|
|
||||||
port-forwarding-natpmp.cc
|
|
||||||
port-forwarding-upnp.cc
|
|
||||||
port-forwarding.cc
|
|
||||||
quark.cc
|
|
||||||
resume.cc
|
|
||||||
rpc-server.cc
|
|
||||||
rpcimpl.cc
|
|
||||||
session-id.cc
|
|
||||||
session-alt-speeds.cc
|
|
||||||
session-settings.cc
|
|
||||||
session-thread.cc
|
|
||||||
session.cc
|
|
||||||
stats.cc
|
|
||||||
subprocess-posix.cc
|
|
||||||
subprocess-win32.cc
|
|
||||||
timer-ev.cc
|
|
||||||
torrent-ctor.cc
|
|
||||||
torrent-files.cc
|
|
||||||
torrent-magnet.cc
|
|
||||||
torrent-metainfo.cc
|
|
||||||
torrent.cc
|
|
||||||
torrents.cc
|
|
||||||
tr-assert.cc
|
|
||||||
tr-assert.mm
|
|
||||||
tr-dht.cc
|
|
||||||
tr-getopt.cc
|
|
||||||
tr-lpd.cc
|
|
||||||
tr-udp.cc
|
|
||||||
tr-utp.cc
|
|
||||||
utils.cc
|
|
||||||
variant-benc.cc
|
|
||||||
variant-json.cc
|
|
||||||
variant.cc
|
|
||||||
variant-converters.cc
|
|
||||||
verify.cc
|
|
||||||
watchdir-generic.cc
|
|
||||||
watchdir-inotify.cc
|
|
||||||
watchdir-kqueue.cc
|
|
||||||
watchdir-win32.cc
|
|
||||||
watchdir.cc
|
|
||||||
web-utils.cc
|
|
||||||
web.cc
|
|
||||||
webseed.cc
|
|
||||||
)
|
|
||||||
|
|
||||||
set_source_files_properties(crypto-utils-fallback.cc PROPERTIES HEADER_FILE_ONLY ON)
|
|
||||||
foreach(CP ccrypto mbedtls openssl wolfssl)
|
|
||||||
if(NOT CP STREQUAL CRYPTO_PKG)
|
|
||||||
set_source_files_properties(crypto-utils-${CP}.cc PROPERTIES HEADER_FILE_ONLY ON)
|
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
|
||||||
|
|
||||||
if(WITH_INOTIFY)
|
|
||||||
add_definitions(-DWITH_INOTIFY)
|
|
||||||
else()
|
|
||||||
set_source_files_properties(watchdir-inotify.cc PROPERTIES HEADER_FILE_ONLY ON)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_KQUEUE)
|
check_symbol_exists(SO_REUSEPORT "sys/types.h;sys/socket.h" HAVE_SO_REUSEPORT)
|
||||||
add_definitions(-DWITH_KQUEUE)
|
|
||||||
else()
|
|
||||||
set_source_files_properties(watchdir-kqueue.cc PROPERTIES HEADER_FILE_ONLY ON)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WIN32)
|
add_library(${TR_NAME} STATIC)
|
||||||
set_source_files_properties(file-posix.cc subprocess-posix.cc PROPERTIES HEADER_FILE_ONLY ON)
|
|
||||||
else()
|
|
||||||
set_source_files_properties(file-win32.cc subprocess-win32.cc watchdir-win32.cc PROPERTIES HEADER_FILE_ONLY ON)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(APPLE)
|
target_sources(${TR_NAME}
|
||||||
set_source_files_properties(tr-assert.cc PROPERTIES HEADER_FILE_ONLY ON)
|
PRIVATE
|
||||||
else()
|
announce-list.cc
|
||||||
set_source_files_properties(tr-assert.mm PROPERTIES HEADER_FILE_ONLY ON)
|
announce-list.h
|
||||||
endif()
|
announcer-common.h
|
||||||
|
announcer-http.cc
|
||||||
|
announcer-udp.cc
|
||||||
|
announcer.cc
|
||||||
|
announcer.h
|
||||||
|
bandwidth.cc
|
||||||
|
bandwidth.h
|
||||||
|
benc.h
|
||||||
|
bitfield.cc
|
||||||
|
bitfield.h
|
||||||
|
block-info.cc
|
||||||
|
block-info.h
|
||||||
|
blocklist.cc
|
||||||
|
blocklist.h
|
||||||
|
cache.cc
|
||||||
|
cache.h
|
||||||
|
clients.cc
|
||||||
|
clients.h
|
||||||
|
completion.cc
|
||||||
|
completion.h
|
||||||
|
crypto-utils-ccrypto.cc
|
||||||
|
crypto-utils-fallback.cc
|
||||||
|
crypto-utils-mbedtls.cc
|
||||||
|
crypto-utils-openssl.cc
|
||||||
|
crypto-utils-wolfssl.cc
|
||||||
|
crypto-utils.cc
|
||||||
|
crypto-utils.h
|
||||||
|
error-types.h
|
||||||
|
error.cc
|
||||||
|
error.h
|
||||||
|
file-piece-map.cc
|
||||||
|
file-piece-map.h
|
||||||
|
file-posix.cc
|
||||||
|
file-win32.cc
|
||||||
|
file.cc
|
||||||
|
file.h
|
||||||
|
handshake.cc
|
||||||
|
handshake.h
|
||||||
|
history.h
|
||||||
|
inout.cc
|
||||||
|
inout.h
|
||||||
|
log.cc
|
||||||
|
log.h
|
||||||
|
lru-cache.h
|
||||||
|
magnet-metainfo.cc
|
||||||
|
magnet-metainfo.h
|
||||||
|
makemeta.cc
|
||||||
|
makemeta.h
|
||||||
|
mime-types.h
|
||||||
|
net.cc
|
||||||
|
net.h
|
||||||
|
open-files.cc
|
||||||
|
open-files.h
|
||||||
|
peer-common.h
|
||||||
|
peer-io.cc
|
||||||
|
peer-io.h
|
||||||
|
peer-mgr-active-requests.cc
|
||||||
|
peer-mgr-active-requests.h
|
||||||
|
peer-mgr-wishlist.cc
|
||||||
|
peer-mgr-wishlist.h
|
||||||
|
peer-mgr.cc
|
||||||
|
peer-mgr.h
|
||||||
|
peer-mse.cc
|
||||||
|
peer-mse.h
|
||||||
|
peer-msgs.cc
|
||||||
|
peer-msgs.h
|
||||||
|
peer-socket.cc
|
||||||
|
peer-socket.h
|
||||||
|
platform-quota.cc
|
||||||
|
platform-quota.h
|
||||||
|
platform.cc
|
||||||
|
platform.h
|
||||||
|
port-forwarding-natpmp.cc
|
||||||
|
port-forwarding-natpmp.h
|
||||||
|
port-forwarding-upnp.cc
|
||||||
|
port-forwarding-upnp.h
|
||||||
|
port-forwarding.cc
|
||||||
|
port-forwarding.h
|
||||||
|
quark.cc
|
||||||
|
quark.h
|
||||||
|
resume.cc
|
||||||
|
resume.h
|
||||||
|
rpc-server.cc
|
||||||
|
rpc-server.h
|
||||||
|
rpcimpl.cc
|
||||||
|
rpcimpl.h
|
||||||
|
session-alt-speeds.cc
|
||||||
|
session-alt-speeds.h
|
||||||
|
session-id.cc
|
||||||
|
session-id.h
|
||||||
|
session-settings.cc
|
||||||
|
session-thread.cc
|
||||||
|
session-thread.h
|
||||||
|
session.cc
|
||||||
|
session.h
|
||||||
|
stats.cc
|
||||||
|
stats.h
|
||||||
|
subprocess-posix.cc
|
||||||
|
subprocess-win32.cc
|
||||||
|
subprocess.h
|
||||||
|
timer-ev.cc
|
||||||
|
timer-ev.h
|
||||||
|
timer.h
|
||||||
|
torrent-ctor.cc
|
||||||
|
torrent-files.cc
|
||||||
|
torrent-files.h
|
||||||
|
torrent-magnet.cc
|
||||||
|
torrent-magnet.h
|
||||||
|
torrent-metainfo.cc
|
||||||
|
torrent-metainfo.h
|
||||||
|
torrent.cc
|
||||||
|
torrent.h
|
||||||
|
torrents.cc
|
||||||
|
torrents.h
|
||||||
|
tr-assert.cc
|
||||||
|
tr-assert.h
|
||||||
|
tr-assert.mm
|
||||||
|
tr-buffer.h
|
||||||
|
tr-dht.cc
|
||||||
|
tr-dht.h
|
||||||
|
tr-getopt.cc
|
||||||
|
tr-getopt.h
|
||||||
|
tr-lpd.cc
|
||||||
|
tr-lpd.h
|
||||||
|
tr-macros.h
|
||||||
|
tr-strbuf.h
|
||||||
|
tr-udp.cc
|
||||||
|
tr-utp.cc
|
||||||
|
tr-utp.h
|
||||||
|
transmission.h
|
||||||
|
utils-ev.h
|
||||||
|
utils.cc
|
||||||
|
utils.h
|
||||||
|
variant-benc.cc
|
||||||
|
variant-common.h
|
||||||
|
variant-converters.cc
|
||||||
|
variant-json.cc
|
||||||
|
variant.cc
|
||||||
|
variant.h
|
||||||
|
verify.cc
|
||||||
|
verify.h
|
||||||
|
version.h.in
|
||||||
|
watchdir-base.h
|
||||||
|
watchdir-generic.cc
|
||||||
|
watchdir-inotify.cc
|
||||||
|
watchdir-kqueue.cc
|
||||||
|
watchdir-win32.cc
|
||||||
|
watchdir.cc
|
||||||
|
watchdir.h
|
||||||
|
web-utils.cc
|
||||||
|
web-utils.h
|
||||||
|
web.cc
|
||||||
|
web.h
|
||||||
|
webseed.cc
|
||||||
|
webseed.h)
|
||||||
|
|
||||||
set(${PROJECT_NAME}_PUBLIC_HEADERS
|
configure_file(version.h.in version.h)
|
||||||
${PROJECT_BINARY_DIR}/version.h
|
|
||||||
error-types.h
|
|
||||||
error.h
|
|
||||||
file.h
|
|
||||||
log.h
|
|
||||||
makemeta.h
|
|
||||||
quark.h
|
|
||||||
rpcimpl.h
|
|
||||||
session-id.h
|
|
||||||
timer-ev.h
|
|
||||||
timer.h
|
|
||||||
tr-assert.h
|
|
||||||
tr-getopt.h
|
|
||||||
tr-macros.h
|
|
||||||
tr-strbuf.h
|
|
||||||
tr-buffer.h
|
|
||||||
transmission.h
|
|
||||||
utils.h
|
|
||||||
variant.h
|
|
||||||
watchdir.h
|
|
||||||
web-utils.h
|
|
||||||
web.h
|
|
||||||
)
|
|
||||||
|
|
||||||
set(${PROJECT_NAME}_PRIVATE_HEADERS
|
target_sources(${TR_NAME}
|
||||||
announce-list.h
|
PRIVATE
|
||||||
announcer-common.h
|
${CMAKE_CURRENT_BINARY_DIR}/version.h)
|
||||||
announcer.h
|
|
||||||
bandwidth.h
|
|
||||||
benc.h
|
|
||||||
bitfield.h
|
|
||||||
block-info.h
|
|
||||||
blocklist.h
|
|
||||||
cache.h
|
|
||||||
clients.h
|
|
||||||
completion.h
|
|
||||||
crypto-utils.h
|
|
||||||
file-piece-map.h
|
|
||||||
handshake.h
|
|
||||||
history.h
|
|
||||||
inout.h
|
|
||||||
lru-cache.h
|
|
||||||
magnet-metainfo.h
|
|
||||||
mime-types.h
|
|
||||||
net.h
|
|
||||||
open-files.h
|
|
||||||
peer-common.h
|
|
||||||
peer-io.h
|
|
||||||
peer-mgr-active-requests.h
|
|
||||||
peer-mgr-wishlist.h
|
|
||||||
peer-mgr.h
|
|
||||||
peer-mse.h
|
|
||||||
peer-msgs.h
|
|
||||||
peer-socket.h
|
|
||||||
platform-quota.h
|
|
||||||
platform.h
|
|
||||||
port-forwarding-natpmp.h
|
|
||||||
port-forwarding-upnp.h
|
|
||||||
port-forwarding.h
|
|
||||||
resume.h
|
|
||||||
rpc-server.h
|
|
||||||
session-alt-speeds.h
|
|
||||||
session-thread.h
|
|
||||||
session.h
|
|
||||||
stats.h
|
|
||||||
subprocess.h
|
|
||||||
torrent-files.h
|
|
||||||
torrent-magnet.h
|
|
||||||
torrent-metainfo.h
|
|
||||||
torrent.h
|
|
||||||
torrents.h
|
|
||||||
tr-dht.h
|
|
||||||
tr-lpd.h
|
|
||||||
tr-utp.h
|
|
||||||
utils-ev.h
|
|
||||||
variant-common.h
|
|
||||||
verify.h
|
|
||||||
version.h
|
|
||||||
watchdir-base.h
|
|
||||||
webseed.h
|
|
||||||
)
|
|
||||||
|
|
||||||
if(NOT ENABLE_UTP)
|
tr_allow_compile_if(
|
||||||
set_source_files_properties(tr-utp.cc PROPERTIES HEADER_FILE_ONLY ON)
|
[=[[TRUE]]=]
|
||||||
endif()
|
crypto-utils-fallback.cc
|
||||||
|
[=[[CRYPTO_PKG STREQUAL "ccrypto"]]=]
|
||||||
|
crypto-utils-ccrypto.cc
|
||||||
|
[=[[CRYPTO_PKG STREQUAL "mbedtls"]]=]
|
||||||
|
crypto-utils-mbedtls.cc
|
||||||
|
[=[[CRYPTO_PKG STREQUAL "openssl"]]=]
|
||||||
|
crypto-utils-openssl.cc
|
||||||
|
[=[[CRYPTO_PKG STREQUAL "wolfssl"]]=]
|
||||||
|
crypto-utils-wolfssl.cc
|
||||||
|
[=[[ENABLE_UTP]]=]
|
||||||
|
tr-utp.cc
|
||||||
|
[=[[WITH_INOTIFY]]=]
|
||||||
|
watchdir-inotify.cc
|
||||||
|
[=[[WITH_KQUEUE]]=]
|
||||||
|
watchdir-kqueue.cc
|
||||||
|
[=[[APPLE]]=]
|
||||||
|
tr-assert.mm
|
||||||
|
[=[[NOT APPLE]]=]
|
||||||
|
tr-assert.cc
|
||||||
|
[=[[WIN32]]=]
|
||||||
|
file-win32.cc
|
||||||
|
subprocess-win32.cc
|
||||||
|
watchdir-win32.cc
|
||||||
|
[=[[NOT WIN32]]=]
|
||||||
|
file-posix.cc
|
||||||
|
subprocess-posix.cc)
|
||||||
|
|
||||||
add_definitions(
|
foreach(UT
|
||||||
-D__TRANSMISSION__
|
${EVENT2_UPSTREAM_TARGET}
|
||||||
-DWIDE_INTEGER_DISABLE_FLOAT_INTEROP
|
${NATPMP_UPSTREAM_TARGET}
|
||||||
-DWIDE_INTEGER_DISABLE_IOSTREAM
|
${MINIUPNPC_UPSTREAM_TARGET}
|
||||||
"-DPACKAGE_DATA_DIR=\"${CMAKE_INSTALL_FULL_DATAROOTDIR}\""
|
${DHT_UPSTREAM_TARGET}
|
||||||
${NATPMP_DEFINITIONS}
|
${DEFLATE_UPSTREAM_TARGET}
|
||||||
${MINIUPNPC_DEFINITIONS}
|
${UTP_UPSTREAM_TARGET}
|
||||||
)
|
${PSL_UPSTREAM_TARGET}
|
||||||
|
${B64_UPSTREAM_TARGET})
|
||||||
if(ENABLE_LIGHTWEIGHT)
|
|
||||||
add_definitions(-DTR_LIGHTWEIGHT)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT ENABLE_NLS)
|
|
||||||
add_definitions(-DDISABLE_GETTEXT)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(ENABLE_UTP)
|
|
||||||
add_definitions(-DWITH_UTP)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(MINIUPNPC_VERSION VERSION_LESS 1.7)
|
|
||||||
# API version macro was only added in 1.7
|
|
||||||
add_definitions(-DMINIUPNPC_API_VERSION=${MINIUPNPC_API_VERSION})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(USE_SYSTEM_B64)
|
|
||||||
add_definitions(-DUSE_SYSTEM_B64)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(HAVE_SO_REUSEPORT)
|
|
||||||
add_definitions(-DHAVE_SO_REUSEPORT=1)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
include_directories(
|
|
||||||
${PROJECT_SOURCE_DIR}
|
|
||||||
${PROJECT_BINARY_DIR}
|
|
||||||
)
|
|
||||||
|
|
||||||
include_directories(
|
|
||||||
SYSTEM
|
|
||||||
${WIDE_INTEGER_INCLUDE_DIRS}
|
|
||||||
${UTFCPP_INCLUDE_DIRS}
|
|
||||||
${DEFLATE_INCLUDE_DIRS}
|
|
||||||
${FAST_FLOAT_INCLUDE_DIRS}
|
|
||||||
${CRYPTO_INCLUDE_DIRS}
|
|
||||||
${CURL_INCLUDE_DIRS}
|
|
||||||
${EVENT2_INCLUDE_DIRS}
|
|
||||||
${PSL_INCLUDE_DIRS}
|
|
||||||
${NATPMP_INCLUDE_DIRS}
|
|
||||||
${MINIUPNPC_INCLUDE_DIRS}
|
|
||||||
${DHT_INCLUDE_DIRS}
|
|
||||||
${UTP_INCLUDE_DIRS}
|
|
||||||
${B64_INCLUDE_DIRS}
|
|
||||||
)
|
|
||||||
|
|
||||||
if(ICONV_FOUND)
|
|
||||||
include_directories(SYSTEM ${ICONV_INCLUDE_DIRS})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_library(${TR_NAME} STATIC
|
|
||||||
${${PROJECT_NAME}_SOURCES}
|
|
||||||
${${PROJECT_NAME}_PUBLIC_HEADERS}
|
|
||||||
${${PROJECT_NAME}_PRIVATE_HEADERS}
|
|
||||||
)
|
|
||||||
|
|
||||||
foreach(UT ${EVENT2_UPSTREAM_TARGET}
|
|
||||||
${NATPMP_UPSTREAM_TARGET}
|
|
||||||
${MINIUPNPC_UPSTREAM_TARGET}
|
|
||||||
${DHT_UPSTREAM_TARGET}
|
|
||||||
${DEFLATE_UPSTREAM_TARGET}
|
|
||||||
${UTP_UPSTREAM_TARGET}
|
|
||||||
${PSL_UPSTREAM_TARGET}
|
|
||||||
${B64_UPSTREAM_TARGET})
|
|
||||||
add_dependencies(${TR_NAME} ${UT})
|
add_dependencies(${TR_NAME} ${UT})
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
|
target_compile_definitions(${TR_NAME}
|
||||||
|
PRIVATE
|
||||||
|
__TRANSMISSION__
|
||||||
|
WIDE_INTEGER_DISABLE_FLOAT_INTEROP
|
||||||
|
WIDE_INTEGER_DISABLE_IOSTREAM
|
||||||
|
PACKAGE_DATA_DIR="${CMAKE_INSTALL_FULL_DATAROOTDIR}"
|
||||||
|
$<$<BOOL:${WITH_INOTIFY}>:WITH_INOTIFY>
|
||||||
|
$<$<BOOL:${WITH_KQUEUE}>:WITH_KQUEUE>
|
||||||
|
$<$<BOOL:${ENABLE_LIGHTWEIGHT}>:TR_LIGHTWEIGHT>
|
||||||
|
$<$<BOOL:${ENABLE_UTP}>:WITH_UTP>
|
||||||
|
$<$<VERSION_LESS:${MINIUPNPC_VERSION},1.7>:MINIUPNPC_API_VERSION=${MINIUPNPC_API_VERSION}> # API version macro was only added in 1.7
|
||||||
|
$<$<BOOL:${USE_SYSTEM_B64}>:USE_SYSTEM_B64>
|
||||||
|
$<$<BOOL:${HAVE_SO_REUSEPORT}>:HAVE_SO_REUSEPORT=1>
|
||||||
|
$<$<BOOL:${ICONV_FOUND}>:HAVE_ICONV>
|
||||||
|
$<$<BOOL:${ICONV_SECOND_ARGUMENT_IS_CONST}>:ICONV_SECOND_ARGUMENT_IS_CONST>
|
||||||
|
${NATPMP_DEFINITIONS}
|
||||||
|
${MINIUPNPC_DEFINITIONS}
|
||||||
|
PUBLIC
|
||||||
|
$<$<NOT:$<BOOL:${ENABLE_NLS}>>:DISABLE_GETTEXT>)
|
||||||
|
|
||||||
|
tr_target_compile_definitions_for_headers(${TR_NAME}
|
||||||
|
PRIVATE
|
||||||
|
sys/statvfs.h
|
||||||
|
xfs/xfs.h
|
||||||
|
xlocale.h)
|
||||||
|
|
||||||
|
if(ENABLE_NLS)
|
||||||
|
tr_target_compile_definitions_for_headers(${TR_NAME}
|
||||||
|
PRIVATE
|
||||||
|
libintl.h)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
tr_target_compile_definitions_for_functions(${TR_NAME}
|
||||||
|
PRIVATE
|
||||||
|
copyfile
|
||||||
|
copy_file_range
|
||||||
|
fallocate64
|
||||||
|
flock
|
||||||
|
getmntent
|
||||||
|
htonll
|
||||||
|
mkdtemp
|
||||||
|
ntohll
|
||||||
|
posix_fadvise
|
||||||
|
posix_fallocate
|
||||||
|
pread
|
||||||
|
pwrite
|
||||||
|
sendfile64
|
||||||
|
statvfs
|
||||||
|
PUBLIC
|
||||||
|
gettext
|
||||||
|
ngettext
|
||||||
|
REQUIRED_LIBS
|
||||||
|
$<$<BOOL:${HAVE_LIBINTL}>:${LIBINTL_LIBRARY}>) # gettext, ngettext
|
||||||
|
|
||||||
|
target_include_directories(${TR_NAME}
|
||||||
|
PRIVATE
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}
|
||||||
|
INTERFACE
|
||||||
|
${CMAKE_BINARY_DIR})
|
||||||
|
|
||||||
|
target_include_directories(${TR_NAME} SYSTEM
|
||||||
|
PRIVATE
|
||||||
|
${WIDE_INTEGER_INCLUDE_DIRS}
|
||||||
|
${UTFCPP_INCLUDE_DIRS}
|
||||||
|
${DEFLATE_INCLUDE_DIRS}
|
||||||
|
${FAST_FLOAT_INCLUDE_DIRS}
|
||||||
|
${CRYPTO_INCLUDE_DIRS}
|
||||||
|
${CURL_INCLUDE_DIRS}
|
||||||
|
${PSL_INCLUDE_DIRS}
|
||||||
|
${NATPMP_INCLUDE_DIRS}
|
||||||
|
${MINIUPNPC_INCLUDE_DIRS}
|
||||||
|
${DHT_INCLUDE_DIRS}
|
||||||
|
${UTP_INCLUDE_DIRS}
|
||||||
|
${B64_INCLUDE_DIRS}
|
||||||
|
$<$<BOOL:${ICONV_FOUND}>:${ICONV_INCLUDE_DIRS}>
|
||||||
|
PUBLIC
|
||||||
|
${EVENT2_INCLUDE_DIRS}
|
||||||
|
${LIBFMT_INCLUDE_DIRS})
|
||||||
|
|
||||||
target_link_libraries(${TR_NAME}
|
target_link_libraries(${TR_NAME}
|
||||||
${CMAKE_THREAD_LIBS_INIT}
|
PRIVATE
|
||||||
${DEFLATE_LIBRARIES}
|
${CMAKE_THREAD_LIBS_INIT}
|
||||||
${CRYPTO_LIBRARIES}
|
${DEFLATE_LIBRARIES}
|
||||||
${CURL_LIBRARIES}
|
${CRYPTO_LIBRARIES}
|
||||||
${EVENT2_LIBRARIES}
|
${CURL_LIBRARIES}
|
||||||
${PSL_LIBRARIES}
|
${EVENT2_LIBRARIES}
|
||||||
${NATPMP_LIBRARIES}
|
${PSL_LIBRARIES}
|
||||||
${MINIUPNPC_LIBRARIES}
|
${NATPMP_LIBRARIES}
|
||||||
${DHT_LIBRARIES}
|
${MINIUPNPC_LIBRARIES}
|
||||||
${UTP_LIBRARIES}
|
${DHT_LIBRARIES}
|
||||||
${B64_LIBRARIES}
|
${UTP_LIBRARIES}
|
||||||
${LIBINTL_LIBRARY}
|
${B64_LIBRARIES}
|
||||||
${LIBM_LIBRARY}
|
${LIBINTL_LIBRARY}
|
||||||
${TR_NETWORK_LIBRARIES}
|
${LIBM_LIBRARY}
|
||||||
jsonsl
|
${TR_NETWORK_LIBRARIES}
|
||||||
wildmat
|
jsonsl
|
||||||
)
|
wildmat
|
||||||
|
$<$<BOOL:${ICONV_FOUND}>:${ICONV_LIBRARIES}>
|
||||||
if(ICONV_FOUND)
|
$<$<BOOL:${WIN32}>:crypt32>
|
||||||
target_link_libraries(${TR_NAME} ${ICONV_LIBRARIES})
|
$<$<BOOL:${WIN32}>:shlwapi>
|
||||||
endif()
|
"$<$<BOOL:${APPLE}>:-framework Foundation>")
|
||||||
|
|
||||||
if(WIN32)
|
|
||||||
target_link_libraries(${TR_NAME} crypt32 shlwapi)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(APPLE)
|
|
||||||
target_link_libraries(${TR_NAME} "-framework Foundation")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(INSTALL_LIB)
|
if(INSTALL_LIB)
|
||||||
install(TARGETS ${TR_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
install(
|
||||||
install(FILES ${${PROJECT_NAME}_PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${TR_NAME})
|
TARGETS ${TR_NAME}
|
||||||
|
DESTINATION ${CMAKE_INSTALL_LIBDIR})
|
||||||
|
install(
|
||||||
|
FILES
|
||||||
|
error-types.h
|
||||||
|
error.h
|
||||||
|
file.h
|
||||||
|
log.h
|
||||||
|
makemeta.h
|
||||||
|
quark.h
|
||||||
|
rpcimpl.h
|
||||||
|
session-id.h
|
||||||
|
timer-ev.h
|
||||||
|
timer.h
|
||||||
|
tr-assert.h
|
||||||
|
tr-buffer.h
|
||||||
|
tr-getopt.h
|
||||||
|
tr-macros.h
|
||||||
|
tr-strbuf.h
|
||||||
|
transmission.h
|
||||||
|
utils.h
|
||||||
|
variant.h
|
||||||
|
watchdir.h
|
||||||
|
web-utils.h
|
||||||
|
web.h
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/version.h
|
||||||
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${TR_NAME})
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -1,186 +1,176 @@
|
||||||
project(trmac)
|
|
||||||
|
|
||||||
if(CMAKE_OSX_DEPLOYMENT_TARGET VERSION_LESS MACOS_SUPPORT_MINIMUM)
|
if(CMAKE_OSX_DEPLOYMENT_TARGET VERSION_LESS MACOS_SUPPORT_MINIMUM)
|
||||||
message(FATAL_ERROR "Targeting macOS versions before ${MACOS_SUPPORT_MINIMUM} is not supported for the macOS project, please adjust CMAKE_OSX_DEPLOYMENT_TARGET (${CMAKE_OSX_DEPLOYMENT_TARGET})")
|
message(FATAL_ERROR "Targeting macOS versions before ${MACOS_SUPPORT_MINIMUM} is not supported for the macOS project, please adjust CMAKE_OSX_DEPLOYMENT_TARGET (${CMAKE_OSX_DEPLOYMENT_TARGET})")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include_directories(${CMAKE_SOURCE_DIR})
|
set(MAC_BUNDLE_NAME Transmission)
|
||||||
|
|
||||||
add_compile_options(
|
add_compile_options(
|
||||||
-fcxx-modules
|
-fcxx-modules
|
||||||
-fmodules
|
-fmodules
|
||||||
-fobjc-arc)
|
-fobjc-arc
|
||||||
|
# #warnings are good practice in development
|
||||||
|
"-Wno-#warnings"
|
||||||
|
# GNU extensions are good practice in Objective-C
|
||||||
|
-Wno-gnu)
|
||||||
|
|
||||||
find_program(ACTOOL_EXECUTABLE actool REQUIRED)
|
find_program(ACTOOL_EXECUTABLE actool REQUIRED)
|
||||||
find_program(CODESIGN_EXECUTABLE codesign REQUIRED)
|
find_program(CODESIGN_EXECUTABLE codesign REQUIRED)
|
||||||
find_program(IBTOOL_EXECUTABLE ibtool REQUIRED)
|
|
||||||
|
|
||||||
macro(tr_wrap_xib IFILE OFILE)
|
add_subdirectory(QuickLookPlugin)
|
||||||
get_filename_component(twx_nib_dir "${OFILE}" DIRECTORY)
|
add_subdirectory(VDKQueue)
|
||||||
add_custom_command(
|
|
||||||
OUTPUT ${OFILE}
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${twx_nib_dir}
|
|
||||||
COMMAND ${IBTOOL_EXECUTABLE} --compile ${OFILE} ${IFILE}
|
|
||||||
DEPENDS ${IFILE}
|
|
||||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
||||||
VERBATIM
|
|
||||||
)
|
|
||||||
source_group("Generated Files" FILES ${OFILE})
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
set(${PROJECT_NAME}_SOURCES
|
add_executable(${TR_NAME}-mac MACOSX_BUNDLE)
|
||||||
AboutWindowController.mm
|
|
||||||
AddMagnetWindowController.mm
|
|
||||||
AddWindowController.mm
|
|
||||||
BadgeView.mm
|
|
||||||
Badger.mm
|
|
||||||
BlocklistDownloader.mm
|
|
||||||
BlocklistDownloaderViewController.mm
|
|
||||||
BlocklistScheduler.mm
|
|
||||||
BonjourController.mm
|
|
||||||
ButtonToolbarItem.mm
|
|
||||||
ColorTextField.mm
|
|
||||||
Controller.mm
|
|
||||||
CreatorWindowController.mm
|
|
||||||
DragOverlayView.mm
|
|
||||||
DragOverlayWindow.mm
|
|
||||||
ExpandedPathToIconTransformer.mm
|
|
||||||
ExpandedPathToPathTransformer.mm
|
|
||||||
FileListNode.mm
|
|
||||||
FileNameCell.mm
|
|
||||||
FileOutlineController.mm
|
|
||||||
FileOutlineView.mm
|
|
||||||
FilePriorityCell.mm
|
|
||||||
FileRenameSheetController.mm
|
|
||||||
FilterBarController.mm
|
|
||||||
FilterBarView.mm
|
|
||||||
FilterButton.mm
|
|
||||||
GlobalOptionsPopoverViewController.mm
|
|
||||||
GroupPopUpButtonCell.mm
|
|
||||||
GroupTextCell.mm
|
|
||||||
GroupToolbarItem.mm
|
|
||||||
GroupsController.mm
|
|
||||||
GroupsPrefsController.mm
|
|
||||||
InfoActivityViewController.mm
|
|
||||||
InfoFileViewController.mm
|
|
||||||
InfoGeneralViewController.mm
|
|
||||||
InfoOptionsViewController.mm
|
|
||||||
InfoPeersViewController.mm
|
|
||||||
InfoTextField.mm
|
|
||||||
InfoTrackersViewController.mm
|
|
||||||
InfoWindowController.mm
|
|
||||||
main.mm
|
|
||||||
MessageWindowController.mm
|
|
||||||
NSApplicationAdditions.mm
|
|
||||||
NSDataAdditions.mm
|
|
||||||
NSImageAdditions.mm
|
|
||||||
NSKeyedUnarchiverAdditions.mm
|
|
||||||
NSMutableArrayAdditions.mm
|
|
||||||
NSStringAdditions.mm
|
|
||||||
PeerProgressIndicatorCell.mm
|
|
||||||
PeerTableView.mm
|
|
||||||
PiecesView.mm
|
|
||||||
PortChecker.mm
|
|
||||||
PredicateEditorRowTemplateAny.mm
|
|
||||||
PrefsController.mm
|
|
||||||
PrefsWindow.mm
|
|
||||||
PriorityPopUpButtonCell.mm
|
|
||||||
ProgressGradients.mm
|
|
||||||
ShareToolbarItem.mm
|
|
||||||
ShareTorrentFileHelper.mm
|
|
||||||
SparkleProxy.mm
|
|
||||||
StatsWindowController.mm
|
|
||||||
StatusBarController.mm
|
|
||||||
StatusBarView.mm
|
|
||||||
Toolbar.mm
|
|
||||||
Torrent.mm
|
|
||||||
TorrentCell.mm
|
|
||||||
TorrentGroup.mm
|
|
||||||
TorrentTableView.mm
|
|
||||||
TrackerCell.mm
|
|
||||||
TrackerNode.mm
|
|
||||||
TrackerTableView.mm
|
|
||||||
URLSheetWindowController.mm
|
|
||||||
WebSeedTableView.mm
|
|
||||||
)
|
|
||||||
|
|
||||||
set(${PROJECT_NAME}_HEADERS
|
target_sources(${TR_NAME}-mac
|
||||||
AboutWindowController.h
|
PRIVATE
|
||||||
AddMagnetWindowController.h
|
AboutWindowController.h
|
||||||
AddWindowController.h
|
AboutWindowController.mm
|
||||||
BadgeView.h
|
AddMagnetWindowController.h
|
||||||
Badger.h
|
AddMagnetWindowController.mm
|
||||||
BlocklistDownloader.h
|
AddWindowController.h
|
||||||
BlocklistDownloaderViewController.h
|
AddWindowController.mm
|
||||||
BlocklistScheduler.h
|
Badger.h
|
||||||
BonjourController.h
|
Badger.mm
|
||||||
ButtonToolbarItem.h
|
BadgeView.h
|
||||||
CocoaCompatibility.h
|
BadgeView.mm
|
||||||
ColorTextField.h
|
BlocklistDownloader.h
|
||||||
Controller.h
|
BlocklistDownloader.mm
|
||||||
CreatorWindowController.h
|
BlocklistDownloaderViewController.h
|
||||||
DragOverlayView.h
|
BlocklistDownloaderViewController.mm
|
||||||
DragOverlayWindow.h
|
BlocklistScheduler.h
|
||||||
ExpandedPathToIconTransformer.h
|
BlocklistScheduler.mm
|
||||||
ExpandedPathToPathTransformer.h
|
BonjourController.h
|
||||||
FileListNode.h
|
BonjourController.mm
|
||||||
FileNameCell.h
|
ButtonToolbarItem.h
|
||||||
FileOutlineController.h
|
ButtonToolbarItem.mm
|
||||||
FileOutlineView.h
|
CocoaCompatibility.h
|
||||||
FilePriorityCell.h
|
ColorTextField.h
|
||||||
FileRenameSheetController.h
|
ColorTextField.mm
|
||||||
FilterBarController.h
|
Controller.h
|
||||||
FilterBarView.h
|
Controller.mm
|
||||||
FilterButton.h
|
CreatorWindowController.h
|
||||||
GlobalOptionsPopoverViewController.h
|
CreatorWindowController.mm
|
||||||
GroupPopUpButtonCell.h
|
DragOverlayView.h
|
||||||
GroupTextCell.h
|
DragOverlayView.mm
|
||||||
GroupToolbarItem.h
|
DragOverlayWindow.h
|
||||||
GroupsController.h
|
DragOverlayWindow.mm
|
||||||
GroupsPrefsController.h
|
ExpandedPathToIconTransformer.h
|
||||||
InfoActivityViewController.h
|
ExpandedPathToIconTransformer.mm
|
||||||
InfoFileViewController.h
|
ExpandedPathToPathTransformer.h
|
||||||
InfoGeneralViewController.h
|
ExpandedPathToPathTransformer.mm
|
||||||
InfoOptionsViewController.h
|
FileListNode.h
|
||||||
InfoPeersViewController.h
|
FileListNode.mm
|
||||||
InfoTextField.h
|
FileNameCell.h
|
||||||
InfoTrackersViewController.h
|
FileNameCell.mm
|
||||||
InfoViewController.h
|
FileOutlineController.h
|
||||||
InfoWindowController.h
|
FileOutlineController.mm
|
||||||
MessageWindowController.h
|
FileOutlineView.h
|
||||||
NSApplicationAdditions.h
|
FileOutlineView.mm
|
||||||
NSDataAdditions.h
|
FilePriorityCell.h
|
||||||
NSImageAdditions.h
|
FilePriorityCell.mm
|
||||||
NSKeyedUnarchiverAdditions.h
|
FileRenameSheetController.h
|
||||||
NSMutableArrayAdditions.h
|
FileRenameSheetController.mm
|
||||||
NSStringAdditions.h
|
FilterBarController.h
|
||||||
PeerProgressIndicatorCell.h
|
FilterBarController.mm
|
||||||
PeerTableView.h
|
FilterBarView.h
|
||||||
PiecesView.h
|
FilterBarView.mm
|
||||||
PortChecker.h
|
FilterButton.h
|
||||||
PredicateEditorRowTemplateAny.h
|
FilterButton.mm
|
||||||
PrefsController.h
|
GlobalOptionsPopoverViewController.h
|
||||||
PrefsWindow.h
|
GlobalOptionsPopoverViewController.mm
|
||||||
PriorityPopUpButtonCell.h
|
GroupPopUpButtonCell.h
|
||||||
ProgressGradients.h
|
GroupPopUpButtonCell.mm
|
||||||
ShareToolbarItem.h
|
GroupsController.h
|
||||||
ShareTorrentFileHelper.h
|
GroupsController.mm
|
||||||
StatsWindowController.h
|
GroupsPrefsController.h
|
||||||
StatusBarController.h
|
GroupsPrefsController.mm
|
||||||
StatusBarView.h
|
GroupTextCell.h
|
||||||
Toolbar.h
|
GroupTextCell.mm
|
||||||
Torrent.h
|
GroupToolbarItem.h
|
||||||
TorrentCell.h
|
GroupToolbarItem.mm
|
||||||
TorrentGroup.h
|
InfoActivityViewController.h
|
||||||
TorrentTableView.h
|
InfoActivityViewController.mm
|
||||||
TrackerCell.h
|
InfoFileViewController.h
|
||||||
TrackerNode.h
|
InfoFileViewController.mm
|
||||||
TrackerTableView.h
|
InfoGeneralViewController.h
|
||||||
URLSheetWindowController.h
|
InfoGeneralViewController.mm
|
||||||
WebSeedTableView.h
|
InfoOptionsViewController.h
|
||||||
)
|
InfoOptionsViewController.mm
|
||||||
|
InfoPeersViewController.h
|
||||||
|
InfoPeersViewController.mm
|
||||||
|
InfoTextField.h
|
||||||
|
InfoTextField.mm
|
||||||
|
InfoTrackersViewController.h
|
||||||
|
InfoTrackersViewController.mm
|
||||||
|
InfoViewController.h
|
||||||
|
InfoWindowController.h
|
||||||
|
InfoWindowController.mm
|
||||||
|
main.mm
|
||||||
|
MessageWindowController.h
|
||||||
|
MessageWindowController.mm
|
||||||
|
NSApplicationAdditions.h
|
||||||
|
NSApplicationAdditions.mm
|
||||||
|
NSDataAdditions.h
|
||||||
|
NSDataAdditions.mm
|
||||||
|
NSImageAdditions.h
|
||||||
|
NSImageAdditions.mm
|
||||||
|
NSKeyedUnarchiverAdditions.h
|
||||||
|
NSKeyedUnarchiverAdditions.mm
|
||||||
|
NSMutableArrayAdditions.h
|
||||||
|
NSMutableArrayAdditions.mm
|
||||||
|
NSStringAdditions.h
|
||||||
|
NSStringAdditions.mm
|
||||||
|
PeerProgressIndicatorCell.h
|
||||||
|
PeerProgressIndicatorCell.mm
|
||||||
|
PeerTableView.h
|
||||||
|
PeerTableView.mm
|
||||||
|
PiecesView.h
|
||||||
|
PiecesView.mm
|
||||||
|
PortChecker.h
|
||||||
|
PortChecker.mm
|
||||||
|
PredicateEditorRowTemplateAny.h
|
||||||
|
PredicateEditorRowTemplateAny.mm
|
||||||
|
PrefsController.h
|
||||||
|
PrefsController.mm
|
||||||
|
PrefsWindow.h
|
||||||
|
PrefsWindow.mm
|
||||||
|
PriorityPopUpButtonCell.h
|
||||||
|
PriorityPopUpButtonCell.mm
|
||||||
|
ProgressGradients.h
|
||||||
|
ProgressGradients.mm
|
||||||
|
ShareToolbarItem.h
|
||||||
|
ShareToolbarItem.mm
|
||||||
|
ShareTorrentFileHelper.h
|
||||||
|
ShareTorrentFileHelper.mm
|
||||||
|
SparkleProxy.mm
|
||||||
|
StatsWindowController.h
|
||||||
|
StatsWindowController.mm
|
||||||
|
StatusBarController.h
|
||||||
|
StatusBarController.mm
|
||||||
|
StatusBarView.h
|
||||||
|
StatusBarView.mm
|
||||||
|
Toolbar.h
|
||||||
|
Toolbar.mm
|
||||||
|
Torrent.h
|
||||||
|
Torrent.mm
|
||||||
|
TorrentCell.h
|
||||||
|
TorrentCell.mm
|
||||||
|
TorrentGroup.h
|
||||||
|
TorrentGroup.mm
|
||||||
|
TorrentTableView.h
|
||||||
|
TorrentTableView.mm
|
||||||
|
TrackerCell.h
|
||||||
|
TrackerCell.mm
|
||||||
|
TrackerNode.h
|
||||||
|
TrackerNode.mm
|
||||||
|
TrackerTableView.h
|
||||||
|
TrackerTableView.mm
|
||||||
|
URLSheetWindowController.h
|
||||||
|
URLSheetWindowController.mm
|
||||||
|
WebSeedTableView.h
|
||||||
|
WebSeedTableView.mm)
|
||||||
|
|
||||||
set(${PROJECT_NAME}_XIB_FILES
|
set(XIB_FILES
|
||||||
AboutWindow.xib
|
AboutWindow.xib
|
||||||
BlocklistStatusWindow.xib
|
BlocklistStatusWindow.xib
|
||||||
FileRenameSheetController.xib
|
FileRenameSheetController.xib
|
||||||
|
@ -192,24 +182,23 @@ set(${PROJECT_NAME}_XIB_FILES
|
||||||
MessageWindow.xib
|
MessageWindow.xib
|
||||||
StatsWindow.xib
|
StatsWindow.xib
|
||||||
StatusBar.xib
|
StatusBar.xib
|
||||||
URLSheetWindow.xib
|
URLSheetWindow.xib)
|
||||||
)
|
|
||||||
source_group(Resources FILES ${${PROJECT_NAME}_XIB_FILES})
|
|
||||||
|
|
||||||
set(${PROJECT_NAME}_RESOURCES
|
set(RESOURCES
|
||||||
Defaults.plist
|
Defaults.plist
|
||||||
Credits.rtf
|
Credits.rtf
|
||||||
sparkle_dsa_pub.pem
|
sparkle_dsa_pub.pem
|
||||||
../COPYING
|
../COPYING
|
||||||
Images/TransmissionDocument.icns
|
Images/TransmissionDocument.icns)
|
||||||
)
|
source_group(Resources
|
||||||
source_group(Resources FILES ${${PROJECT_NAME}_RESOURCES})
|
FILES ${RESOURCES})
|
||||||
|
|
||||||
set_source_files_properties(${${PROJECT_NAME}_RESOURCES} PROPERTIES
|
set_source_files_properties(
|
||||||
MACOSX_PACKAGE_LOCATION Resources
|
${RESOURCES}
|
||||||
)
|
PROPERTIES
|
||||||
|
MACOSX_PACKAGE_LOCATION Resources)
|
||||||
|
|
||||||
set(${PROJECT_NAME}_IMAGESETS
|
set(IMAGESETS
|
||||||
ActionHover
|
ActionHover
|
||||||
Bandwidth
|
Bandwidth
|
||||||
CleanupTemplate
|
CleanupTemplate
|
||||||
|
@ -267,8 +256,7 @@ set(${PROJECT_NAME}_IMAGESETS
|
||||||
UpArrowTemplate
|
UpArrowTemplate
|
||||||
UploadBadge
|
UploadBadge
|
||||||
YingYangGroupTemplate
|
YingYangGroupTemplate
|
||||||
YingYangTemplate
|
YingYangTemplate)
|
||||||
)
|
|
||||||
|
|
||||||
set(APPICON_NAME AppIcon)
|
set(APPICON_NAME AppIcon)
|
||||||
|
|
||||||
|
@ -279,7 +267,7 @@ set(IMAGE_ASSETS
|
||||||
${IMAGE_ASSETS_DIR}/Contents.json
|
${IMAGE_ASSETS_DIR}/Contents.json
|
||||||
${APPICONSET_DIR}/Contents.json)
|
${APPICONSET_DIR}/Contents.json)
|
||||||
|
|
||||||
foreach(IMG IN LISTS ${PROJECT_NAME}_IMAGESETS)
|
foreach(IMG IN LISTS IMAGESETS)
|
||||||
set(IMG_DIR "${IMAGE_ASSETS_DIR}/${IMG}.imageset")
|
set(IMG_DIR "${IMAGE_ASSETS_DIR}/${IMG}.imageset")
|
||||||
list(APPEND IMAGE_ASSETS
|
list(APPEND IMAGE_ASSETS
|
||||||
${IMG_DIR}/${IMG}.png
|
${IMG_DIR}/${IMG}.png
|
||||||
|
@ -301,7 +289,8 @@ add_custom_command(
|
||||||
OUTPUT
|
OUTPUT
|
||||||
${COMPILED_IMAGE_ASSETS}
|
${COMPILED_IMAGE_ASSETS}
|
||||||
${APPICON_NAME}.Info.plist
|
${APPICON_NAME}.Info.plist
|
||||||
COMMAND ${ACTOOL_EXECUTABLE}
|
COMMAND
|
||||||
|
${ACTOOL_EXECUTABLE}
|
||||||
--compile "${CMAKE_CURRENT_BINARY_DIR}"
|
--compile "${CMAKE_CURRENT_BINARY_DIR}"
|
||||||
--platform macosx
|
--platform macosx
|
||||||
--minimum-deployment-target ${CMAKE_OSX_DEPLOYMENT_TARGET}
|
--minimum-deployment-target ${CMAKE_OSX_DEPLOYMENT_TARGET}
|
||||||
|
@ -309,16 +298,21 @@ add_custom_command(
|
||||||
--output-partial-info-plist "${CMAKE_CURRENT_BINARY_DIR}/${APPICON_NAME}.Info.plist"
|
--output-partial-info-plist "${CMAKE_CURRENT_BINARY_DIR}/${APPICON_NAME}.Info.plist"
|
||||||
${IMAGE_ASSETS_DIR}
|
${IMAGE_ASSETS_DIR}
|
||||||
DEPENDS ${IMAGE_ASSETS}
|
DEPENDS ${IMAGE_ASSETS}
|
||||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
)
|
source_group("Generated Files"
|
||||||
source_group("Generated Files" FILES ${COMPILED_IMAGE_ASSETS} ${APPICON_NAME}.Info.plist)
|
FILES
|
||||||
|
${COMPILED_IMAGE_ASSETS}
|
||||||
|
${APPICON_NAME}.Info.plist)
|
||||||
|
|
||||||
list(APPEND ${PROJECT_NAME}_RESOURCES ${COMPILED_IMAGE_ASSETS})
|
list(APPEND RESOURCES
|
||||||
|
${COMPILED_IMAGE_ASSETS})
|
||||||
|
|
||||||
set_source_files_properties(${COMPILED_IMAGE_ASSETS} PROPERTIES
|
set_source_files_properties(
|
||||||
MACOSX_PACKAGE_LOCATION Resources)
|
${COMPILED_IMAGE_ASSETS}
|
||||||
|
PROPERTIES
|
||||||
|
MACOSX_PACKAGE_LOCATION Resources)
|
||||||
|
|
||||||
set(${PROJECT_NAME}_LINGUAS
|
set(LINGUAS
|
||||||
da
|
da
|
||||||
de
|
de
|
||||||
en
|
en
|
||||||
|
@ -328,16 +322,15 @@ set(${PROJECT_NAME}_LINGUAS
|
||||||
nl
|
nl
|
||||||
pt_PT
|
pt_PT
|
||||||
ru
|
ru
|
||||||
tr
|
tr)
|
||||||
)
|
|
||||||
|
|
||||||
if(ENABLE_NLS)
|
if(ENABLE_NLS)
|
||||||
set(${PROJECT_NAME}_ENABLED_LINGUAS ${${PROJECT_NAME}_LINGUAS})
|
set(ENABLED_LINGUAS ${LINGUAS})
|
||||||
else()
|
else()
|
||||||
set(${PROJECT_NAME}_ENABLED_LINGUAS en)
|
set(ENABLED_LINGUAS en)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(${PROJECT_NAME}_LANG_XIB_FILES
|
set(BASE_XIB_FILES
|
||||||
AddMagnetWindow.xib
|
AddMagnetWindow.xib
|
||||||
AddWindow.xib
|
AddWindow.xib
|
||||||
Creator.xib
|
Creator.xib
|
||||||
|
@ -347,137 +340,102 @@ set(${PROJECT_NAME}_LANG_XIB_FILES
|
||||||
InfoGeneralView.xib
|
InfoGeneralView.xib
|
||||||
InfoOptionsView.xib
|
InfoOptionsView.xib
|
||||||
MainMenu.xib
|
MainMenu.xib
|
||||||
PrefsWindow.xib
|
PrefsWindow.xib)
|
||||||
)
|
list(TRANSFORM BASE_XIB_FILES
|
||||||
|
PREPEND Base.lproj/)
|
||||||
|
|
||||||
set(${PROJECT_NAME}_LANG_STRINGS_FILES
|
set(LANG_STRINGS_FILES
|
||||||
InfoPlist.strings
|
InfoPlist.strings
|
||||||
Localizable.strings
|
Localizable.strings)
|
||||||
)
|
|
||||||
|
|
||||||
set(${PROJECT_NAME}_NIB_FILES)
|
foreach(LANG ${ENABLED_LINGUAS})
|
||||||
foreach(F ${${PROJECT_NAME}_XIB_FILES})
|
set(${LANG}_STRINGS_FILES)
|
||||||
get_filename_component(F_BASE "${F}" NAME_WE)
|
|
||||||
set(F_NIB "${PROJECT_BINARY_DIR}/${F_BASE}.nib")
|
|
||||||
tr_wrap_xib("${F}" "${F_NIB}")
|
|
||||||
list(APPEND ${PROJECT_NAME}_NIB_FILES "${F_NIB}")
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
set_source_files_properties(${${PROJECT_NAME}_NIB_FILES} PROPERTIES
|
|
||||||
MACOSX_PACKAGE_LOCATION Resources)
|
|
||||||
|
|
||||||
set(${PROJECT_NAME}_BASE_XIB_FILES)
|
|
||||||
set(${PROJECT_NAME}_BASE_NIB_FILES)
|
|
||||||
foreach(F ${${PROJECT_NAME}_LANG_XIB_FILES})
|
|
||||||
set(F_XIB "Base.lproj/${F}")
|
|
||||||
get_filename_component(F_BASE "${F}" NAME_WE)
|
|
||||||
set(F_NIB "${PROJECT_BINARY_DIR}/Base.lproj/${F_BASE}.nib")
|
|
||||||
tr_wrap_xib("${F_XIB}" "${F_NIB}")
|
|
||||||
list(APPEND ${PROJECT_NAME}_BASE_XIB_FILES "${F_XIB}")
|
|
||||||
list(APPEND ${PROJECT_NAME}_BASE_NIB_FILES "${F_NIB}")
|
|
||||||
source_group(Resources/Base.lproj FILES ${F_XIB})
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
foreach(LANG ${${PROJECT_NAME}_ENABLED_LINGUAS})
|
|
||||||
set(${PROJECT_NAME}_${LANG}_STRINGS_FILES)
|
|
||||||
if(NOT LANG STREQUAL "en")
|
if(NOT LANG STREQUAL "en")
|
||||||
foreach(F ${${PROJECT_NAME}_LANG_XIB_FILES})
|
foreach(F ${BASE_XIB_FILES})
|
||||||
get_filename_component(F_BASE "${F}" NAME_WE)
|
get_filename_component(F_BASE "${F}" NAME_WE)
|
||||||
list(APPEND ${PROJECT_NAME}_${LANG}_STRINGS_FILES ${LANG}.lproj/${F_BASE}.strings)
|
list(APPEND ${LANG}_STRINGS_FILES ${LANG}.lproj/${F_BASE}.strings)
|
||||||
endforeach()
|
endforeach()
|
||||||
endif()
|
endif()
|
||||||
foreach(F ${${PROJECT_NAME}_LANG_STRINGS_FILES})
|
foreach(F ${LANG_STRINGS_FILES})
|
||||||
list(APPEND ${PROJECT_NAME}_${LANG}_STRINGS_FILES ${LANG}.lproj/${F})
|
list(APPEND ${LANG}_STRINGS_FILES ${LANG}.lproj/${F})
|
||||||
endforeach()
|
endforeach()
|
||||||
source_group(Resources/${LANG}.lproj FILES ${${PROJECT_NAME}_${LANG}_STRINGS_FILES})
|
source_group(Resources/${LANG}.lproj
|
||||||
|
FILES ${${LANG}_STRINGS_FILES})
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
include_directories(
|
foreach(LANG ${ENABLED_LINGUAS})
|
||||||
${CMAKE_SOURCE_DIR}/libtransmission
|
list(APPEND RESOURCES ${${LANG}_STRINGS_FILES})
|
||||||
${CMAKE_BINARY_DIR}/libtransmission
|
|
||||||
${PROJECT_SOURCE_DIR}/VDKQueue
|
|
||||||
)
|
|
||||||
|
|
||||||
add_compile_options(
|
|
||||||
# #warnings are good practice in development
|
|
||||||
"-Wno-#warnings"
|
|
||||||
# GNU extensions are good practice in Objective-C
|
|
||||||
-Wno-gnu
|
|
||||||
)
|
|
||||||
|
|
||||||
add_library(vdkqueue STATIC
|
|
||||||
VDKQueue/VDKQueue.mm
|
|
||||||
VDKQueue/VDKQueue.h
|
|
||||||
)
|
|
||||||
|
|
||||||
set_property(TARGET vdkqueue PROPERTY FOLDER "third-party")
|
|
||||||
|
|
||||||
set(BASE_NIB_FILES_RESOURCES_DIR Resources)
|
|
||||||
if(NOT CMAKE_GENERATOR STREQUAL Xcode)
|
|
||||||
string(APPEND BASE_NIB_FILES_RESOURCES_DIR /Base.lproj)
|
|
||||||
endif()
|
|
||||||
set_source_files_properties(${${PROJECT_NAME}_BASE_NIB_FILES} PROPERTIES
|
|
||||||
MACOSX_PACKAGE_LOCATION ${BASE_NIB_FILES_RESOURCES_DIR})
|
|
||||||
|
|
||||||
foreach(LANG ${${PROJECT_NAME}_ENABLED_LINGUAS})
|
|
||||||
list(APPEND ${PROJECT_NAME}_RESOURCES ${${PROJECT_NAME}_${LANG}_STRINGS_FILES})
|
|
||||||
set(STRINGS_FILES_RESOURCES_DIR Resources)
|
set(STRINGS_FILES_RESOURCES_DIR Resources)
|
||||||
if(NOT CMAKE_GENERATOR STREQUAL Xcode)
|
if(NOT CMAKE_GENERATOR STREQUAL Xcode)
|
||||||
string(APPEND STRINGS_FILES_RESOURCES_DIR /${LANG}.lproj)
|
string(APPEND STRINGS_FILES_RESOURCES_DIR /${LANG}.lproj)
|
||||||
endif()
|
endif()
|
||||||
set_source_files_properties(${${PROJECT_NAME}_${LANG}_STRINGS_FILES} PROPERTIES
|
set_source_files_properties(
|
||||||
MACOSX_PACKAGE_LOCATION ${STRINGS_FILES_RESOURCES_DIR})
|
${${LANG}_STRINGS_FILES}
|
||||||
|
PROPERTIES
|
||||||
|
MACOSX_PACKAGE_LOCATION ${STRINGS_FILES_RESOURCES_DIR})
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
add_executable(${TR_NAME}-mac MACOSX_BUNDLE
|
target_sources(${TR_NAME}-mac
|
||||||
${${PROJECT_NAME}_SOURCES}
|
PRIVATE
|
||||||
${${PROJECT_NAME}_HEADERS}
|
${RESOURCES})
|
||||||
${${PROJECT_NAME}_XIB_FILES}
|
|
||||||
${${PROJECT_NAME}_NIB_FILES}
|
|
||||||
${${PROJECT_NAME}_BASE_XIB_FILES}
|
|
||||||
${${PROJECT_NAME}_BASE_NIB_FILES}
|
|
||||||
${${PROJECT_NAME}_RESOURCES}
|
|
||||||
)
|
|
||||||
|
|
||||||
find_library(SPARKLE_FRAMEWORK Sparkle PATHS ${PROJECT_SOURCE_DIR} NO_DEFAULT_PATHS)
|
tr_target_xib_files(${TR_NAME}-mac
|
||||||
|
${XIB_FILES}
|
||||||
|
${BASE_XIB_FILES})
|
||||||
|
|
||||||
|
target_include_directories(${TR_NAME}-mac
|
||||||
|
PRIVATE
|
||||||
|
${CMAKE_SOURCE_DIR})
|
||||||
|
|
||||||
|
target_include_directories(${TR_NAME}-mac SYSTEM
|
||||||
|
PRIVATE
|
||||||
|
${LIBFMT_INCLUDE_DIRS})
|
||||||
|
|
||||||
|
find_library(SPARKLE_FRAMEWORK Sparkle
|
||||||
|
PATHS ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
|
NO_DEFAULT_PATHS)
|
||||||
|
|
||||||
target_link_libraries(${TR_NAME}-mac
|
target_link_libraries(${TR_NAME}-mac
|
||||||
${TR_NAME}
|
PRIVATE
|
||||||
vdkqueue
|
${TR_NAME}
|
||||||
${SPARKLE_FRAMEWORK}
|
vdkqueue
|
||||||
"-framework AppKit"
|
${SPARKLE_FRAMEWORK}
|
||||||
"-framework Carbon"
|
"-framework AppKit"
|
||||||
"-framework Foundation"
|
"-framework Carbon"
|
||||||
"-framework IOKit"
|
"-framework Foundation"
|
||||||
"-framework Quartz"
|
"-framework IOKit"
|
||||||
"-framework Security"
|
"-framework Quartz"
|
||||||
"-weak_framework UserNotifications"
|
"-framework Security"
|
||||||
)
|
"-weak_framework UserNotifications")
|
||||||
|
|
||||||
if(NOT CMAKE_GENERATOR STREQUAL Xcode)
|
if(NOT CMAKE_GENERATOR STREQUAL Xcode)
|
||||||
add_custom_command(TARGET ${TR_NAME}-mac POST_BUILD
|
add_custom_command(
|
||||||
|
TARGET ${TR_NAME}-mac
|
||||||
|
POST_BUILD
|
||||||
COMMAND ${CODESIGN_EXECUTABLE} -s - $<TARGET_BUNDLE_DIR:${TR_NAME}-mac>)
|
COMMAND ${CODESIGN_EXECUTABLE} -s - $<TARGET_BUNDLE_DIR:${TR_NAME}-mac>)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(MAC_BUNDLE_NAME Transmission)
|
set_target_properties(
|
||||||
|
${TR_NAME}-mac
|
||||||
|
PROPERTIES
|
||||||
|
OUTPUT_NAME ${MAC_BUNDLE_NAME}
|
||||||
|
MACOSX_BUNDLE_GUI_IDENTIFIER "org.m0k.transmission"
|
||||||
|
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/Info.plist.in
|
||||||
|
INSTALL_RPATH "@executable_path;@executable_path/../Frameworks")
|
||||||
|
|
||||||
set_target_properties(${TR_NAME}-mac PROPERTIES
|
install(
|
||||||
OUTPUT_NAME ${MAC_BUNDLE_NAME}
|
TARGETS ${TR_NAME}-mac
|
||||||
MACOSX_BUNDLE_GUI_IDENTIFIER "org.m0k.transmission"
|
DESTINATION Applications)
|
||||||
MACOSX_BUNDLE_INFO_PLIST ${PROJECT_SOURCE_DIR}/Info.plist.in
|
|
||||||
INSTALL_RPATH "@executable_path;@executable_path/../Frameworks"
|
|
||||||
)
|
|
||||||
|
|
||||||
add_subdirectory(QuickLookPlugin)
|
install(
|
||||||
|
DIRECTORY TransmissionHelp
|
||||||
install(TARGETS ${TR_NAME}-mac DESTINATION Applications)
|
DESTINATION Applications/${MAC_BUNDLE_NAME}.app/Contents/Resources)
|
||||||
|
|
||||||
install(DIRECTORY TransmissionHelp DESTINATION Applications/${MAC_BUNDLE_NAME}.app/Contents/Resources)
|
|
||||||
tr_install_web(Applications/${MAC_BUNDLE_NAME}.app/Contents/Resources)
|
tr_install_web(Applications/${MAC_BUNDLE_NAME}.app/Contents/Resources)
|
||||||
|
|
||||||
install(CODE "
|
install(CODE
|
||||||
list(APPEND CMAKE_MODULE_PATH \"${CMAKE_SOURCE_DIR}/cmake\")
|
"list(APPEND CMAKE_MODULE_PATH \"${CMAKE_SOURCE_DIR}/cmake\")
|
||||||
include(TrMacros)
|
include(TrMacros)
|
||||||
include(GetPrerequisites)
|
include(GetPrerequisites)
|
||||||
tr_fixup_bundle_item(\"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/Applications/${MAC_BUNDLE_NAME}.app\" \"Contents/MacOS/${MAC_BUNDLE_NAME}\" \"${PROJECT_SOURCE_DIR}\")
|
tr_fixup_bundle_item(
|
||||||
")
|
\"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/Applications/${MAC_BUNDLE_NAME}.app\"
|
||||||
|
\"Contents/MacOS/${MAC_BUNDLE_NAME}\" \"${CMAKE_CURRENT_SOURCE_DIR}\")")
|
||||||
|
|
|
@ -1,17 +1,14 @@
|
||||||
project(trmacql)
|
add_library(${TR_NAME}-mac-ql MODULE)
|
||||||
|
|
||||||
set(${PROJECT_NAME}_SOURCES
|
target_sources(${TR_NAME}-mac-ql
|
||||||
../NSDataAdditions.mm
|
PRIVATE
|
||||||
../NSStringAdditions.mm
|
../NSDataAdditions.mm
|
||||||
GeneratePreviewForURL.mm
|
../NSStringAdditions.mm
|
||||||
GenerateThumbnailForURL.mm
|
GeneratePreviewForURL.mm
|
||||||
main.cc
|
GenerateThumbnailForURL.mm
|
||||||
)
|
main.cc)
|
||||||
|
|
||||||
set(${PROJECT_NAME}_HEADERS
|
set(LINGUAS
|
||||||
)
|
|
||||||
|
|
||||||
set(${PROJECT_NAME}_LINGUAS
|
|
||||||
da
|
da
|
||||||
de
|
de
|
||||||
en
|
en
|
||||||
|
@ -21,77 +18,83 @@ set(${PROJECT_NAME}_LINGUAS
|
||||||
nl
|
nl
|
||||||
pt_PT
|
pt_PT
|
||||||
ru
|
ru
|
||||||
tr
|
tr)
|
||||||
)
|
|
||||||
|
|
||||||
if(ENABLE_NLS)
|
if(ENABLE_NLS)
|
||||||
set(${PROJECT_NAME}_ENABLED_LINGUAS ${${PROJECT_NAME}_LINGUAS})
|
set(ENABLED_LINGUAS ${LINGUAS})
|
||||||
else()
|
else()
|
||||||
set(${PROJECT_NAME}_ENABLED_LINGUAS en)
|
set(ENABLED_LINGUAS en)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(${PROJECT_NAME}_LANG_STRINGS_FILES
|
set(LANG_STRINGS_FILES
|
||||||
Localizable.strings
|
Localizable.strings)
|
||||||
)
|
|
||||||
|
|
||||||
set(${PROJECT_NAME}_RESOURCES
|
set(RESOURCES
|
||||||
style.css
|
style.css)
|
||||||
)
|
source_group(Resources
|
||||||
source_group(Resources FILES ${${PROJECT_NAME}_RESOURCES})
|
FILES ${RESOURCES})
|
||||||
|
|
||||||
set_source_files_properties(${${PROJECT_NAME}_RESOURCES} PROPERTIES
|
set_source_files_properties(
|
||||||
MACOSX_PACKAGE_LOCATION Resources)
|
${RESOURCES}
|
||||||
|
PROPERTIES
|
||||||
|
MACOSX_PACKAGE_LOCATION Resources)
|
||||||
|
|
||||||
foreach(LANG ${${PROJECT_NAME}_ENABLED_LINGUAS})
|
foreach(LANG ${ENABLED_LINGUAS})
|
||||||
set(${PROJECT_NAME}_${LANG}_STRINGS_FILES)
|
set(${LANG}_STRINGS_FILES)
|
||||||
set(STRINGS_FILES_RESOURCES_DIR Resources)
|
set(STRINGS_FILES_RESOURCES_DIR Resources)
|
||||||
if(NOT CMAKE_GENERATOR STREQUAL Xcode)
|
if(NOT CMAKE_GENERATOR STREQUAL Xcode)
|
||||||
string(APPEND STRINGS_FILES_RESOURCES_DIR /${LANG}.lproj)
|
string(APPEND STRINGS_FILES_RESOURCES_DIR /${LANG}.lproj)
|
||||||
endif()
|
endif()
|
||||||
foreach(F ${${PROJECT_NAME}_LANG_STRINGS_FILES})
|
foreach(F ${LANG_STRINGS_FILES})
|
||||||
list(APPEND ${PROJECT_NAME}_${LANG}_STRINGS_FILES ${LANG}.lproj/${F})
|
list(APPEND ${LANG}_STRINGS_FILES ${LANG}.lproj/${F})
|
||||||
list(APPEND ${PROJECT_NAME}_RESOURCES ${${PROJECT_NAME}_${LANG}_STRINGS_FILES})
|
list(APPEND RESOURCES ${${LANG}_STRINGS_FILES})
|
||||||
set_source_files_properties(${${PROJECT_NAME}_${LANG}_STRINGS_FILES} PROPERTIES
|
set_source_files_properties(
|
||||||
MACOSX_PACKAGE_LOCATION ${STRINGS_FILES_RESOURCES_DIR})
|
${${LANG}_STRINGS_FILES}
|
||||||
|
PROPERTIES
|
||||||
|
MACOSX_PACKAGE_LOCATION ${STRINGS_FILES_RESOURCES_DIR})
|
||||||
endforeach()
|
endforeach()
|
||||||
source_group(Resources/${LANG}.lproj FILES ${${PROJECT_NAME}_${LANG}_STRINGS_FILES})
|
source_group(Resources/${LANG}.lproj
|
||||||
|
FILES ${${LANG}_STRINGS_FILES})
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
add_library(${TR_NAME}-mac-ql MODULE
|
target_sources(${TR_NAME}-mac-ql
|
||||||
${${PROJECT_NAME}_SOURCES}
|
PRIVATE
|
||||||
${${PROJECT_NAME}_HEADERS}
|
${RESOURCES})
|
||||||
${${PROJECT_NAME}_RESOURCES}
|
|
||||||
)
|
|
||||||
|
|
||||||
set(MAC_QL_BUNDLE_NAME QuickLookPlugin)
|
set(MAC_QL_BUNDLE_NAME QuickLookPlugin)
|
||||||
|
|
||||||
set_target_properties(${TR_NAME}-mac-ql PROPERTIES
|
set_target_properties(
|
||||||
OUTPUT_NAME ${MAC_QL_BUNDLE_NAME}
|
${TR_NAME}-mac-ql
|
||||||
MACOSX_BUNDLE ON
|
PROPERTIES
|
||||||
BUNDLE ON
|
OUTPUT_NAME ${MAC_QL_BUNDLE_NAME}
|
||||||
BUNDLE_EXTENSION qlgenerator
|
MACOSX_BUNDLE ON
|
||||||
MACOSX_BUNDLE_INFO_PLIST "${PROJECT_SOURCE_DIR}/Info.plist.in"
|
BUNDLE ON
|
||||||
INSTALL_RPATH "@loader_path/../../../../../MacOS;@loader_path/../../../../../Frameworks"
|
BUNDLE_EXTENSION qlgenerator
|
||||||
)
|
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/Info.plist.in"
|
||||||
|
INSTALL_RPATH "@loader_path/../../../../../MacOS;@loader_path/../../../../../Frameworks")
|
||||||
|
|
||||||
target_include_directories(${TR_NAME}-mac-ql PRIVATE
|
target_include_directories(${TR_NAME}-mac-ql
|
||||||
..
|
PRIVATE
|
||||||
)
|
${CMAKE_SOURCE_DIR}
|
||||||
|
..)
|
||||||
|
|
||||||
target_link_libraries(${TR_NAME}-mac-ql
|
target_link_libraries(${TR_NAME}-mac-ql
|
||||||
${TR_NAME}
|
PRIVATE
|
||||||
"-framework Foundation"
|
${TR_NAME}
|
||||||
"-framework CoreFoundation"
|
"-framework Foundation"
|
||||||
"-framework CoreServices"
|
"-framework CoreFoundation"
|
||||||
"-framework AppKit"
|
"-framework CoreServices"
|
||||||
"-framework QuickLook"
|
"-framework AppKit"
|
||||||
)
|
"-framework QuickLook")
|
||||||
|
|
||||||
install(TARGETS ${TR_NAME}-mac-ql DESTINATION Applications/${MAC_BUNDLE_NAME}.app/Contents/Library/QuickLook)
|
install(
|
||||||
|
TARGETS ${TR_NAME}-mac-ql
|
||||||
|
DESTINATION Applications/${MAC_BUNDLE_NAME}.app/Contents/Library/QuickLook)
|
||||||
|
|
||||||
install(CODE "
|
install(CODE
|
||||||
list(APPEND CMAKE_MODULE_PATH \"${CMAKE_SOURCE_DIR}/cmake\")
|
"list(APPEND CMAKE_MODULE_PATH \"${CMAKE_SOURCE_DIR}/cmake\")
|
||||||
include(TrMacros)
|
include(TrMacros)
|
||||||
include(GetPrerequisites)
|
include(GetPrerequisites)
|
||||||
tr_fixup_bundle_item(\"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/Applications/${MAC_BUNDLE_NAME}.app\" \"Contents/Library/QuickLook/${MAC_QL_BUNDLE_NAME}.qlgenerator/Contents/MacOS/${MAC_QL_BUNDLE_NAME}\" \"\")
|
tr_fixup_bundle_item(
|
||||||
")
|
\"\$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/Applications/${MAC_BUNDLE_NAME}.app\"
|
||||||
|
\"Contents/Library/QuickLook/${MAC_QL_BUNDLE_NAME}.qlgenerator/Contents/MacOS/${MAC_QL_BUNDLE_NAME}\" \"\")")
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
add_library(vdkqueue STATIC)
|
||||||
|
|
||||||
|
target_sources(vdkqueue
|
||||||
|
PRIVATE
|
||||||
|
VDKQueue.h
|
||||||
|
VDKQueue.mm)
|
||||||
|
|
||||||
|
set_property(
|
||||||
|
TARGET vdkqueue
|
||||||
|
PROPERTY FOLDER "third-party")
|
||||||
|
|
||||||
|
target_include_directories(vdkqueue
|
||||||
|
PUBLIC
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR})
|
|
@ -1,6 +1,4 @@
|
||||||
project(trpo)
|
set(LINGUAS
|
||||||
|
|
||||||
set(${PROJECT_NAME}_LINGUAS
|
|
||||||
an
|
an
|
||||||
ar
|
ar
|
||||||
ast
|
ast
|
||||||
|
@ -86,40 +84,37 @@ set(${PROJECT_NAME}_LINGUAS
|
||||||
vi
|
vi
|
||||||
zh_CN
|
zh_CN
|
||||||
zh_HK
|
zh_HK
|
||||||
zh_TW
|
zh_TW)
|
||||||
)
|
|
||||||
|
|
||||||
set(GETTEXT_PACKAGE ${TR_NAME}-gtk)
|
set(GETTEXT_PACKAGE ${TR_NAME}-gtk)
|
||||||
|
|
||||||
if(ENABLE_NLS)
|
if(ENABLE_NLS)
|
||||||
set(${PROJECT_NAME}_ENABLED_LINGUAS ${${PROJECT_NAME}_LINGUAS})
|
set(ENABLED_LINGUAS ${LINGUAS})
|
||||||
else()
|
else()
|
||||||
set(${PROJECT_NAME}_ENABLED_LINGUAS)
|
set(ENABLED_LINGUAS)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(${PROJECT_NAME}_MO_FILES)
|
set(MO_FILES)
|
||||||
foreach(LANG ${${PROJECT_NAME}_ENABLED_LINGUAS})
|
foreach(LANG ${ENABLED_LINGUAS})
|
||||||
set(msgfmt_INPUT_FILE ${LANG}.po)
|
set(msgfmt_INPUT_FILE ${LANG}.po)
|
||||||
set(msgfmt_OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/${GETTEXT_PACKAGE}-${LANG}.mo)
|
set(msgfmt_OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/${GETTEXT_PACKAGE}-${LANG}.mo)
|
||||||
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT
|
OUTPUT ${msgfmt_OUTPUT_FILE}
|
||||||
${msgfmt_OUTPUT_FILE}
|
COMMAND ${GETTEXT_MSGFMT_EXECUTABLE} --output-file=${msgfmt_OUTPUT_FILE} ${msgfmt_INPUT_FILE}
|
||||||
COMMAND
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
${GETTEXT_MSGFMT_EXECUTABLE}
|
DEPENDS ${msgfmt_INPUT_FILE})
|
||||||
--output-file=${msgfmt_OUTPUT_FILE}
|
|
||||||
${msgfmt_INPUT_FILE}
|
|
||||||
WORKING_DIRECTORY
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
DEPENDS
|
|
||||||
${msgfmt_INPUT_FILE}
|
|
||||||
)
|
|
||||||
|
|
||||||
list(APPEND ${PROJECT_NAME}_MO_FILES ${msgfmt_OUTPUT_FILE})
|
list(APPEND MO_FILES ${msgfmt_OUTPUT_FILE})
|
||||||
|
|
||||||
install(FILES ${msgfmt_OUTPUT_FILE} DESTINATION ${CMAKE_INSTALL_LOCALEDIR}/${LANG}/LC_MESSAGES/ RENAME ${GETTEXT_PACKAGE}.mo)
|
install(
|
||||||
|
FILES ${msgfmt_OUTPUT_FILE}
|
||||||
|
DESTINATION ${CMAKE_INSTALL_LOCALEDIR}/${LANG}/LC_MESSAGES/
|
||||||
|
RENAME ${GETTEXT_PACKAGE}.mo)
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
if(${PROJECT_NAME}_MO_FILES)
|
if(MO_FILES)
|
||||||
add_custom_target(${GETTEXT_PACKAGE}-po ALL DEPENDS ${${PROJECT_NAME}_MO_FILES})
|
add_custom_target(${GETTEXT_PACKAGE}-po
|
||||||
|
ALL
|
||||||
|
DEPENDS ${MO_FILES})
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -1,154 +1,150 @@
|
||||||
project(trqt)
|
|
||||||
|
|
||||||
set_property(GLOBAL PROPERTY AUTOGEN_SOURCE_GROUP "Generated Files")
|
set_property(GLOBAL PROPERTY AUTOGEN_SOURCE_GROUP "Generated Files")
|
||||||
set_property(GLOBAL PROPERTY AUTOMOC_SOURCE_GROUP "Generated Files")
|
|
||||||
set_property(GLOBAL PROPERTY AUTORCC_SOURCE_GROUP "Generated Files")
|
|
||||||
set_property(GLOBAL PROPERTY AUTOUIC_SOURCE_GROUP "Generated Files")
|
|
||||||
|
|
||||||
set(${PROJECT_NAME}_SOURCES
|
add_executable(${TR_NAME}-qt WIN32)
|
||||||
AboutDialog.cc
|
|
||||||
AddData.cc
|
|
||||||
Application.cc
|
|
||||||
ColumnResizer.cc
|
|
||||||
ComInteropHelper.cc
|
|
||||||
DBusInteropHelper.cc
|
|
||||||
DetailsDialog.cc
|
|
||||||
FaviconCache.cc
|
|
||||||
FileTreeDelegate.cc
|
|
||||||
FileTreeItem.cc
|
|
||||||
FileTreeModel.cc
|
|
||||||
FileTreeView.cc
|
|
||||||
FilterBar.cc
|
|
||||||
FilterBarComboBox.cc
|
|
||||||
FilterBarComboBoxDelegate.cc
|
|
||||||
Filters.cc
|
|
||||||
Formatter.cc
|
|
||||||
FreeSpaceLabel.cc
|
|
||||||
IconCache.cc
|
|
||||||
IconToolButton.cc
|
|
||||||
InteropHelper.cc
|
|
||||||
InteropObject.cc
|
|
||||||
LicenseDialog.cc
|
|
||||||
MainWindow.cc
|
|
||||||
MakeDialog.cc
|
|
||||||
OptionsDialog.cc
|
|
||||||
PathButton.cc
|
|
||||||
Prefs.cc
|
|
||||||
PrefsDialog.cc
|
|
||||||
RelocateDialog.cc
|
|
||||||
RpcClient.cc
|
|
||||||
RpcQueue.cc
|
|
||||||
Session.cc
|
|
||||||
SessionDialog.cc
|
|
||||||
SqueezeLabel.cc
|
|
||||||
StatsDialog.cc
|
|
||||||
StyleHelper.cc
|
|
||||||
Torrent.cc
|
|
||||||
TorrentDelegate.cc
|
|
||||||
TorrentDelegateMin.cc
|
|
||||||
TorrentFilter.cc
|
|
||||||
TorrentModel.cc
|
|
||||||
TorrentView.cc
|
|
||||||
TrackerDelegate.cc
|
|
||||||
TrackerModel.cc
|
|
||||||
TrackerModelFilter.cc
|
|
||||||
Utils.cc
|
|
||||||
VariantHelpers.cc
|
|
||||||
WatchDir.cc
|
|
||||||
)
|
|
||||||
|
|
||||||
if (NOT ENABLE_QT_COM_INTEROP)
|
target_sources(${TR_NAME}-qt
|
||||||
set_source_files_properties(ComInteropHelper.cc PROPERTIES HEADER_FILE_ONLY ON)
|
PRIVATE
|
||||||
endif()
|
AboutDialog.cc
|
||||||
if (NOT ENABLE_QT_DBUS_INTEROP)
|
AboutDialog.h
|
||||||
set_source_files_properties(DBusInteropHelper.cc PROPERTIES HEADER_FILE_ONLY ON)
|
AddData.cc
|
||||||
endif()
|
AddData.h
|
||||||
|
Application.cc
|
||||||
|
Application.h
|
||||||
|
BaseDialog.h
|
||||||
|
ColumnResizer.cc
|
||||||
|
ColumnResizer.h
|
||||||
|
ComInteropHelper.cc
|
||||||
|
ComInteropHelper.h
|
||||||
|
CustomVariantType.h
|
||||||
|
DBusInteropHelper.cc
|
||||||
|
DBusInteropHelper.h
|
||||||
|
DetailsDialog.cc
|
||||||
|
DetailsDialog.h
|
||||||
|
FaviconCache.cc
|
||||||
|
FaviconCache.h
|
||||||
|
FileTreeDelegate.cc
|
||||||
|
FileTreeDelegate.h
|
||||||
|
FileTreeItem.cc
|
||||||
|
FileTreeItem.h
|
||||||
|
FileTreeModel.cc
|
||||||
|
FileTreeModel.h
|
||||||
|
FileTreeView.cc
|
||||||
|
FileTreeView.h
|
||||||
|
FilterBar.cc
|
||||||
|
FilterBar.h
|
||||||
|
FilterBarComboBox.cc
|
||||||
|
FilterBarComboBox.h
|
||||||
|
FilterBarComboBoxDelegate.cc
|
||||||
|
FilterBarComboBoxDelegate.h
|
||||||
|
Filters.cc
|
||||||
|
Filters.h
|
||||||
|
Formatter.cc
|
||||||
|
Formatter.h
|
||||||
|
FreeSpaceLabel.cc
|
||||||
|
FreeSpaceLabel.h
|
||||||
|
IconCache.cc
|
||||||
|
IconCache.h
|
||||||
|
IconToolButton.cc
|
||||||
|
IconToolButton.h
|
||||||
|
InteropHelper.cc
|
||||||
|
InteropHelper.h
|
||||||
|
InteropObject.cc
|
||||||
|
InteropObject.h
|
||||||
|
LicenseDialog.cc
|
||||||
|
LicenseDialog.h
|
||||||
|
MainWindow.cc
|
||||||
|
MainWindow.h
|
||||||
|
MakeDialog.cc
|
||||||
|
MakeDialog.h
|
||||||
|
OptionsDialog.cc
|
||||||
|
OptionsDialog.h
|
||||||
|
PathButton.cc
|
||||||
|
PathButton.h
|
||||||
|
Prefs.cc
|
||||||
|
Prefs.h
|
||||||
|
PrefsDialog.cc
|
||||||
|
PrefsDialog.h
|
||||||
|
RelocateDialog.cc
|
||||||
|
RelocateDialog.h
|
||||||
|
RpcClient.cc
|
||||||
|
RpcClient.h
|
||||||
|
RpcQueue.cc
|
||||||
|
RpcQueue.h
|
||||||
|
Session.cc
|
||||||
|
Session.h
|
||||||
|
SessionDialog.cc
|
||||||
|
SessionDialog.h
|
||||||
|
Speed.h
|
||||||
|
SqueezeLabel.cc
|
||||||
|
SqueezeLabel.h
|
||||||
|
StatsDialog.cc
|
||||||
|
StatsDialog.h
|
||||||
|
StyleHelper.cc
|
||||||
|
StyleHelper.h
|
||||||
|
Torrent.cc
|
||||||
|
Torrent.h
|
||||||
|
TorrentDelegate.cc
|
||||||
|
TorrentDelegate.h
|
||||||
|
TorrentDelegateMin.cc
|
||||||
|
TorrentDelegateMin.h
|
||||||
|
TorrentFilter.cc
|
||||||
|
TorrentFilter.h
|
||||||
|
TorrentModel.cc
|
||||||
|
TorrentModel.h
|
||||||
|
TorrentView.cc
|
||||||
|
TorrentView.h
|
||||||
|
TrackerDelegate.cc
|
||||||
|
TrackerDelegate.h
|
||||||
|
TrackerModel.cc
|
||||||
|
TrackerModel.h
|
||||||
|
TrackerModelFilter.cc
|
||||||
|
TrackerModelFilter.h
|
||||||
|
Typedefs.h
|
||||||
|
Utils.cc
|
||||||
|
Utils.h
|
||||||
|
VariantHelpers.cc
|
||||||
|
VariantHelpers.h
|
||||||
|
WatchDir.cc
|
||||||
|
WatchDir.h)
|
||||||
|
|
||||||
set(${PROJECT_NAME}_HEADERS
|
tr_allow_compile_if(
|
||||||
AboutDialog.h
|
[=[[ENABLE_QT_COM_INTEROP]]=]
|
||||||
AddData.h
|
ComInteropHelper.cc
|
||||||
Application.h
|
[=[[ENABLE_QT_DBUS_INTEROP]]=]
|
||||||
BaseDialog.h
|
DBusInteropHelper.cc)
|
||||||
ColumnResizer.h
|
|
||||||
ComInteropHelper.h
|
|
||||||
CustomVariantType.h
|
|
||||||
DBusInteropHelper.h
|
|
||||||
DetailsDialog.h
|
|
||||||
FaviconCache.h
|
|
||||||
FileTreeDelegate.h
|
|
||||||
FileTreeItem.h
|
|
||||||
FileTreeModel.h
|
|
||||||
FileTreeView.h
|
|
||||||
FilterBar.h
|
|
||||||
FilterBarComboBox.h
|
|
||||||
FilterBarComboBoxDelegate.h
|
|
||||||
Filters.h
|
|
||||||
Formatter.h
|
|
||||||
FreeSpaceLabel.h
|
|
||||||
IconCache.h
|
|
||||||
IconToolButton.h
|
|
||||||
InteropHelper.h
|
|
||||||
InteropObject.h
|
|
||||||
LicenseDialog.h
|
|
||||||
MainWindow.h
|
|
||||||
MakeDialog.h
|
|
||||||
OptionsDialog.h
|
|
||||||
PathButton.h
|
|
||||||
Prefs.h
|
|
||||||
PrefsDialog.h
|
|
||||||
RelocateDialog.h
|
|
||||||
RpcClient.h
|
|
||||||
RpcQueue.h
|
|
||||||
Session.h
|
|
||||||
SessionDialog.h
|
|
||||||
Speed.h
|
|
||||||
SqueezeLabel.h
|
|
||||||
StatsDialog.h
|
|
||||||
StyleHelper.h
|
|
||||||
Torrent.h
|
|
||||||
TorrentDelegate.h
|
|
||||||
TorrentDelegateMin.h
|
|
||||||
TorrentFilter.h
|
|
||||||
TorrentModel.h
|
|
||||||
TorrentView.h
|
|
||||||
TrackerDelegate.h
|
|
||||||
TrackerModel.h
|
|
||||||
TrackerModelFilter.h
|
|
||||||
Typedefs.h
|
|
||||||
Utils.h
|
|
||||||
VariantHelpers.h
|
|
||||||
WatchDir.h
|
|
||||||
)
|
|
||||||
|
|
||||||
set(${PROJECT_NAME}_UI_FILES
|
target_sources(${TR_NAME}-qt
|
||||||
AboutDialog.ui
|
PRIVATE
|
||||||
DetailsDialog.ui
|
AboutDialog.ui
|
||||||
LicenseDialog.ui
|
DetailsDialog.ui
|
||||||
MainWindow.ui
|
LicenseDialog.ui
|
||||||
MakeDialog.ui
|
MainWindow.ui
|
||||||
MakeProgressDialog.ui
|
MakeDialog.ui
|
||||||
OptionsDialog.ui
|
MakeProgressDialog.ui
|
||||||
PrefsDialog.ui
|
OptionsDialog.ui
|
||||||
RelocateDialog.ui
|
PrefsDialog.ui
|
||||||
SessionDialog.ui
|
RelocateDialog.ui
|
||||||
StatsDialog.ui
|
SessionDialog.ui
|
||||||
TrackersDialog.ui
|
StatsDialog.ui
|
||||||
)
|
TrackersDialog.ui)
|
||||||
source_group(Ui FILES ${${PROJECT_NAME}_UI_FILES})
|
|
||||||
|
|
||||||
tr_qt_wrap_ui(${PROJECT_NAME}_UI_SOURCES ${${PROJECT_NAME}_UI_FILES})
|
source_group(Ui
|
||||||
source_group("Generated Files" FILES ${${PROJECT_NAME}_UI_SOURCES})
|
REGULAR_EXPRESSION [[.*\.ui$]])
|
||||||
|
|
||||||
|
target_sources(${TR_NAME}-qt
|
||||||
|
PRIVATE
|
||||||
|
application.qrc)
|
||||||
|
|
||||||
set(${PROJECT_NAME}_QRC_FILES application.qrc)
|
|
||||||
if(WIN32 OR APPLE)
|
if(WIN32 OR APPLE)
|
||||||
list(APPEND ${PROJECT_NAME}_QRC_FILES icons/Faenza/Faenza.qrc)
|
target_sources(${TR_NAME}-qt
|
||||||
|
PRIVATE
|
||||||
|
icons/Faenza/Faenza.qrc)
|
||||||
endif()
|
endif()
|
||||||
source_group(Resources FILES ${${PROJECT_NAME}_QRC_FILES})
|
|
||||||
|
|
||||||
tr_qt_add_resources(${PROJECT_NAME}_QRC_SOURCES ${${PROJECT_NAME}_QRC_FILES})
|
source_group(Resources
|
||||||
source_group("Generated Files" FILES ${${PROJECT_NAME}_QRC_SOURCES})
|
REGULAR_EXPRESSION [[.*\.qrc$]])
|
||||||
|
|
||||||
set(${PROJECT_NAME}_LINGUAS
|
set(LINGUAS
|
||||||
af
|
af
|
||||||
ca
|
ca
|
||||||
da
|
da
|
||||||
|
@ -178,99 +174,99 @@ set(${PROJECT_NAME}_LINGUAS
|
||||||
sv
|
sv
|
||||||
tr
|
tr
|
||||||
uk
|
uk
|
||||||
zh_CN
|
zh_CN)
|
||||||
)
|
|
||||||
|
|
||||||
if(ENABLE_NLS)
|
if(ENABLE_NLS)
|
||||||
set(${PROJECT_NAME}_ENABLED_LINGUAS ${${PROJECT_NAME}_LINGUAS})
|
set(ENABLED_LINGUAS ${LINGUAS})
|
||||||
else()
|
else()
|
||||||
set(${PROJECT_NAME}_ENABLED_LINGUAS)
|
set(ENABLED_LINGUAS)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(${PROJECT_NAME}_TS_FILES)
|
set(TS_FILES)
|
||||||
foreach(LANG ${${PROJECT_NAME}_ENABLED_LINGUAS})
|
foreach(LANG ${ENABLED_LINGUAS})
|
||||||
list(APPEND ${PROJECT_NAME}_TS_FILES translations/transmission_${LANG}.ts)
|
list(APPEND TS_FILES translations/transmission_${LANG}.ts)
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
if(${PROJECT_NAME}_TS_FILES)
|
if(TS_FILES)
|
||||||
tr_qt_add_translation(${PROJECT_NAME}_QM_FILES ${${PROJECT_NAME}_TS_FILES})
|
tr_qt_add_translation(QM_FILES ${TS_FILES})
|
||||||
source_group("Generated Files" FILES ${${PROJECT_NAME}_QM_FILES})
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include_directories(
|
target_sources(${TR_NAME}-qt
|
||||||
${CMAKE_SOURCE_DIR}
|
PRIVATE
|
||||||
${PROJECT_SOURCE_DIR}
|
${QM_FILES})
|
||||||
)
|
|
||||||
|
|
||||||
include_directories(
|
|
||||||
SYSTEM
|
|
||||||
${PROJECT_BINARY_DIR}
|
|
||||||
${CURL_INCLUDE_DIRS}
|
|
||||||
${EVENT2_INCLUDE_DIRS}
|
|
||||||
)
|
|
||||||
|
|
||||||
tr_win32_app_info(${PROJECT_NAME}_WIN32_RC_FILE
|
|
||||||
"Transmission Qt Client"
|
|
||||||
"transmission-qt"
|
|
||||||
"transmission-qt.exe"
|
|
||||||
"qtr.ico")
|
|
||||||
|
|
||||||
if(ENABLE_QT_COM_INTEROP)
|
if(ENABLE_QT_COM_INTEROP)
|
||||||
add_custom_command(
|
tr_target_idl_files(${TR_NAME}-qt
|
||||||
OUTPUT
|
transmission-qt.idl)
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/transmission-qt.tlb
|
|
||||||
COMMAND
|
|
||||||
${MIDL_EXECUTABLE} /tlb ${CMAKE_CURRENT_BINARY_DIR}/transmission-qt.tlb transmission-qt.idl
|
|
||||||
DEPENDS
|
|
||||||
transmission-qt.idl
|
|
||||||
WORKING_DIRECTORY
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
)
|
|
||||||
list(APPEND ${PROJECT_NAME}_WIN32_RC_FILE transmission-qt.tlb.rc transmission-qt.idl ${CMAKE_CURRENT_BINARY_DIR}/transmission-qt.tlb)
|
|
||||||
set_source_files_properties(transmission-qt.idl ${CMAKE_CURRENT_BINARY_DIR}/transmission-qt.tlb PROPERTIES HEADER_FILE_ONLY ON)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
add_executable(${TR_NAME}-qt WIN32
|
target_include_directories(${TR_NAME}-qt
|
||||||
${${PROJECT_NAME}_SOURCES}
|
PRIVATE
|
||||||
${${PROJECT_NAME}_UI_SOURCES}
|
${CMAKE_SOURCE_DIR}
|
||||||
${${PROJECT_NAME}_QRC_SOURCES}
|
${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
${${PROJECT_NAME}_HEADERS}
|
|
||||||
${${PROJECT_NAME}_QM_FILES}
|
target_include_directories(${TR_NAME}-qt SYSTEM
|
||||||
${${PROJECT_NAME}_WIN32_RC_FILE}
|
PRIVATE
|
||||||
)
|
${CURL_INCLUDE_DIRS}
|
||||||
|
${EVENT2_INCLUDE_DIRS})
|
||||||
|
|
||||||
target_link_libraries(${TR_NAME}-qt
|
target_link_libraries(${TR_NAME}-qt
|
||||||
${TR_NAME}
|
PRIVATE
|
||||||
${QT_TARGETS}
|
${TR_NAME}
|
||||||
${CURL_LIBRARIES}
|
${QT_TARGETS}
|
||||||
${EVENT2_LIBRARIES}
|
${CURL_LIBRARIES}
|
||||||
)
|
${EVENT2_LIBRARIES})
|
||||||
|
|
||||||
target_compile_definitions(${TR_NAME}-qt PRIVATE
|
target_compile_definitions(${TR_NAME}-qt
|
||||||
"TRANSLATIONS_DIR=\"${CMAKE_INSTALL_FULL_DATADIR}/${TR_NAME}/translations\""
|
PRIVATE
|
||||||
QT_NO_CAST_FROM_ASCII
|
"TRANSLATIONS_DIR=\"${CMAKE_INSTALL_FULL_DATADIR}/${TR_NAME}/translations\""
|
||||||
$<$<BOOL:${ENABLE_QT_COM_INTEROP}>:ENABLE_COM_INTEROP>
|
QT_NO_CAST_FROM_ASCII
|
||||||
$<$<BOOL:${ENABLE_QT_DBUS_INTEROP}>:ENABLE_DBUS_INTEROP>)
|
$<$<BOOL:${ENABLE_QT_COM_INTEROP}>:ENABLE_COM_INTEROP>
|
||||||
|
$<$<BOOL:${ENABLE_QT_DBUS_INTEROP}>:ENABLE_DBUS_INTEROP>)
|
||||||
|
|
||||||
if(MSVC)
|
if(MSVC)
|
||||||
tr_append_target_property(${TR_NAME}-qt LINK_FLAGS "/ENTRY:mainCRTStartup")
|
tr_append_target_property(${TR_NAME}-qt LINK_FLAGS "/ENTRY:mainCRTStartup")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set_target_properties(${TR_NAME}-qt PROPERTIES AUTOMOC TRUE)
|
set_target_properties(
|
||||||
|
${TR_NAME}-qt
|
||||||
|
PROPERTIES
|
||||||
|
AUTOMOC ON
|
||||||
|
AUTORCC ON
|
||||||
|
AUTOUIC ON)
|
||||||
|
|
||||||
install(TARGETS ${TR_NAME}-qt DESTINATION ${CMAKE_INSTALL_BINDIR})
|
tr_win32_app_info(${TR_NAME}-qt
|
||||||
|
"Transmission Qt Client"
|
||||||
|
"transmission-qt"
|
||||||
|
"transmission-qt.exe"
|
||||||
|
"qtr.ico")
|
||||||
|
|
||||||
|
install(
|
||||||
|
TARGETS ${TR_NAME}-qt
|
||||||
|
DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
|
|
||||||
if(INSTALL_DOC)
|
if(INSTALL_DOC)
|
||||||
install(FILES ${TR_NAME}-qt.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
|
install(
|
||||||
|
FILES ${TR_NAME}-qt.1
|
||||||
|
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
install(FILES transmission-qt.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
|
install(
|
||||||
|
FILES transmission-qt.desktop
|
||||||
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
|
||||||
|
|
||||||
if(ENABLE_NLS)
|
if(ENABLE_NLS)
|
||||||
install(FILES ${${PROJECT_NAME}_QM_FILES} DESTINATION ${CMAKE_INSTALL_DATADIR}/${TR_NAME}/translations)
|
install(
|
||||||
|
FILES ${QM_FILES}
|
||||||
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/${TR_NAME}/translations)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
file(GENERATE OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/dist-qt.conf" CONTENT "")
|
file(GENERATE
|
||||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/dist-qt.conf" DESTINATION ${CMAKE_INSTALL_SYSCONFDIR} RENAME qt.conf)
|
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/dist-qt.conf"
|
||||||
|
CONTENT "")
|
||||||
|
install(
|
||||||
|
FILES "${CMAKE_CURRENT_BINARY_DIR}/dist-qt.conf"
|
||||||
|
DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}
|
||||||
|
RENAME qt.conf)
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -1,8 +1,3 @@
|
||||||
include_directories(SYSTEM
|
|
||||||
${LIBFMT_INCLUDE_DIRS}
|
|
||||||
${THIRD_PARTY_DIR}/googletest/googletest/include
|
|
||||||
${THIRD_PARTY_DIR}/googletest/googletest)
|
|
||||||
|
|
||||||
add_subdirectory(gtest)
|
add_subdirectory(gtest)
|
||||||
add_subdirectory(libtransmission)
|
add_subdirectory(libtransmission)
|
||||||
add_subdirectory(utils)
|
add_subdirectory(utils)
|
||||||
|
|
|
@ -1,5 +1,16 @@
|
||||||
add_library(gtestall STATIC
|
add_library(gtestall STATIC)
|
||||||
${THIRD_PARTY_DIR}/googletest/googletest/src/gtest-all.cc
|
|
||||||
${THIRD_PARTY_DIR}/googletest/googletest/src/gtest_main.cc)
|
|
||||||
|
|
||||||
set_property(TARGET gtestall PROPERTY FOLDER "third-party")
|
target_sources(gtestall
|
||||||
|
PRIVATE
|
||||||
|
${THIRD_PARTY_DIR}/googletest/googletest/src/gtest-all.cc
|
||||||
|
${THIRD_PARTY_DIR}/googletest/googletest/src/gtest_main.cc)
|
||||||
|
|
||||||
|
set_property(
|
||||||
|
TARGET gtestall
|
||||||
|
PROPERTY FOLDER "third-party")
|
||||||
|
|
||||||
|
target_include_directories(gtestall SYSTEM
|
||||||
|
PRIVATE
|
||||||
|
${THIRD_PARTY_DIR}/googletest/googletest
|
||||||
|
PUBLIC
|
||||||
|
${THIRD_PARTY_DIR}/googletest/googletest/include)
|
||||||
|
|
|
@ -1,57 +1,62 @@
|
||||||
add_executable(libtransmission-test
|
add_executable(libtransmission-test)
|
||||||
announce-list-test.cc
|
|
||||||
announcer-test.cc
|
|
||||||
announcer-udp-test.cc
|
|
||||||
benc-test.cc
|
|
||||||
bitfield-test.cc
|
|
||||||
block-info-test.cc
|
|
||||||
blocklist-test.cc
|
|
||||||
buffer-test.cc
|
|
||||||
clients-test.cc
|
|
||||||
completion-test.cc
|
|
||||||
copy-test.cc
|
|
||||||
crypto-test-ref.h
|
|
||||||
crypto-test.cc
|
|
||||||
error-test.cc
|
|
||||||
dht-test.cc
|
|
||||||
file-piece-map-test.cc
|
|
||||||
file-test.cc
|
|
||||||
getopt-test.cc
|
|
||||||
handshake-test.cc
|
|
||||||
history-test.cc
|
|
||||||
json-test.cc
|
|
||||||
lpd-test.cc
|
|
||||||
magnet-metainfo-test.cc
|
|
||||||
makemeta-test.cc
|
|
||||||
move-test.cc
|
|
||||||
net-test.cc
|
|
||||||
open-files-test.cc
|
|
||||||
peer-mgr-active-requests-test.cc
|
|
||||||
peer-mgr-wishlist-test.cc
|
|
||||||
peer-msgs-test.cc
|
|
||||||
platform-test.cc
|
|
||||||
quark-test.cc
|
|
||||||
remove-test.cc
|
|
||||||
rename-test.cc
|
|
||||||
rpc-test.cc
|
|
||||||
session-test.cc
|
|
||||||
session-alt-speeds-test.cc
|
|
||||||
settings-test.cc
|
|
||||||
strbuf-test.cc
|
|
||||||
subprocess-test-script.cmd
|
|
||||||
subprocess-test.cc
|
|
||||||
test-fixtures.h
|
|
||||||
timer-test.cc
|
|
||||||
torrent-files-test.cc
|
|
||||||
torrent-magnet-test.cc
|
|
||||||
torrent-metainfo-test.cc
|
|
||||||
torrents-test.cc
|
|
||||||
utils-test.cc
|
|
||||||
variant-test.cc
|
|
||||||
watchdir-test.cc
|
|
||||||
web-utils-test.cc)
|
|
||||||
|
|
||||||
set_property(TARGET libtransmission-test PROPERTY FOLDER "tests")
|
target_sources(libtransmission-test
|
||||||
|
PRIVATE
|
||||||
|
announce-list-test.cc
|
||||||
|
announcer-test.cc
|
||||||
|
announcer-udp-test.cc
|
||||||
|
benc-test.cc
|
||||||
|
bitfield-test.cc
|
||||||
|
block-info-test.cc
|
||||||
|
blocklist-test.cc
|
||||||
|
buffer-test.cc
|
||||||
|
clients-test.cc
|
||||||
|
completion-test.cc
|
||||||
|
copy-test.cc
|
||||||
|
crypto-test-ref.h
|
||||||
|
crypto-test.cc
|
||||||
|
error-test.cc
|
||||||
|
dht-test.cc
|
||||||
|
file-piece-map-test.cc
|
||||||
|
file-test.cc
|
||||||
|
getopt-test.cc
|
||||||
|
handshake-test.cc
|
||||||
|
history-test.cc
|
||||||
|
json-test.cc
|
||||||
|
lpd-test.cc
|
||||||
|
magnet-metainfo-test.cc
|
||||||
|
makemeta-test.cc
|
||||||
|
move-test.cc
|
||||||
|
net-test.cc
|
||||||
|
open-files-test.cc
|
||||||
|
peer-mgr-active-requests-test.cc
|
||||||
|
peer-mgr-wishlist-test.cc
|
||||||
|
peer-msgs-test.cc
|
||||||
|
platform-test.cc
|
||||||
|
quark-test.cc
|
||||||
|
remove-test.cc
|
||||||
|
rename-test.cc
|
||||||
|
rpc-test.cc
|
||||||
|
session-test.cc
|
||||||
|
session-alt-speeds-test.cc
|
||||||
|
settings-test.cc
|
||||||
|
strbuf-test.cc
|
||||||
|
subprocess-test-script.cmd
|
||||||
|
subprocess-test.cc
|
||||||
|
test-fixtures.h
|
||||||
|
timer-test.cc
|
||||||
|
torrent-files-test.cc
|
||||||
|
torrent-magnet-test.cc
|
||||||
|
torrent-metainfo-test.cc
|
||||||
|
torrents-test.cc
|
||||||
|
utils-test.cc
|
||||||
|
variant-test.cc
|
||||||
|
watchdir-test.cc
|
||||||
|
web-utils-test.cc)
|
||||||
|
|
||||||
|
set_property(
|
||||||
|
TARGET libtransmission-test
|
||||||
|
PROPERTY FOLDER "tests")
|
||||||
|
|
||||||
target_compile_definitions(libtransmission-test
|
target_compile_definitions(libtransmission-test
|
||||||
PRIVATE
|
PRIVATE
|
||||||
|
@ -65,6 +70,7 @@ target_include_directories(libtransmission-test
|
||||||
|
|
||||||
target_include_directories(libtransmission-test SYSTEM
|
target_include_directories(libtransmission-test SYSTEM
|
||||||
PRIVATE
|
PRIVATE
|
||||||
|
${LIBFMT_INCLUDE_DIRS}
|
||||||
${WIDE_INTEGER_INCLUDE_DIRS}
|
${WIDE_INTEGER_INCLUDE_DIRS}
|
||||||
${B64_INCLUDE_DIRS}
|
${B64_INCLUDE_DIRS}
|
||||||
${CURL_INCLUDE_DIRS}
|
${CURL_INCLUDE_DIRS}
|
||||||
|
@ -72,8 +78,7 @@ target_include_directories(libtransmission-test SYSTEM
|
||||||
${EVENT2_INCLUDE_DIRS})
|
${EVENT2_INCLUDE_DIRS})
|
||||||
|
|
||||||
target_compile_options(libtransmission-test
|
target_compile_options(libtransmission-test
|
||||||
PRIVATE
|
PRIVATE $<$<OR:$<CXX_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:Clang>>:-Wno-sign-compare>) # patches welcomed
|
||||||
$<$<OR:$<CXX_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:Clang>>:-Wno-sign-compare>) # patches welcomed
|
|
||||||
|
|
||||||
target_link_libraries(libtransmission-test
|
target_link_libraries(libtransmission-test
|
||||||
PRIVATE
|
PRIVATE
|
||||||
|
@ -88,14 +93,20 @@ add_custom_command(
|
||||||
TARGET libtransmission-test
|
TARGET libtransmission-test
|
||||||
PRE_BUILD
|
PRE_BUILD
|
||||||
COMMAND
|
COMMAND
|
||||||
${CMAKE_COMMAND} -E copy_if_different
|
${CMAKE_COMMAND}
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/subprocess-test-script.cmd
|
-E copy_if_different
|
||||||
$<TARGET_FILE_DIR:libtransmission-test>/subprocess-test.cmd)
|
${CMAKE_CURRENT_SOURCE_DIR}/subprocess-test-script.cmd
|
||||||
|
$<TARGET_FILE_DIR:libtransmission-test>/subprocess-test.cmd)
|
||||||
|
|
||||||
add_executable(subprocess-test
|
add_executable(subprocess-test)
|
||||||
subprocess-test-program.cc)
|
|
||||||
|
|
||||||
set_property(TARGET subprocess-test PROPERTY FOLDER "tests")
|
target_sources(subprocess-test
|
||||||
|
PRIVATE
|
||||||
|
subprocess-test-program.cc)
|
||||||
|
|
||||||
|
set_property(
|
||||||
|
TARGET subprocess-test
|
||||||
|
PROPERTY FOLDER "tests")
|
||||||
|
|
||||||
target_include_directories(subprocess-test
|
target_include_directories(subprocess-test
|
||||||
PRIVATE
|
PRIVATE
|
||||||
|
|
|
@ -1,18 +1,18 @@
|
||||||
function(AddShowTest name file_basename)
|
function(AddShowTest name file_basename)
|
||||||
add_test(
|
add_test(
|
||||||
NAME ${name}
|
NAME ${name}
|
||||||
COMMAND ${CMAKE_COMMAND}
|
COMMAND
|
||||||
-D transmission_show:string=$<TARGET_FILE:transmission-show>
|
${CMAKE_COMMAND}
|
||||||
-D torrent_file:string=assets/${file_basename}.torrent
|
-D transmission_show:string=$<TARGET_FILE:transmission-show>
|
||||||
-D reference_file:string=${CMAKE_CURRENT_SOURCE_DIR}/assets/${file_basename}.show
|
-D torrent_file:string=assets/${file_basename}.torrent
|
||||||
-P "${CMAKE_CURRENT_SOURCE_DIR}/run_transmission_show.cmake"
|
-D reference_file:string=${CMAKE_CURRENT_SOURCE_DIR}/assets/${file_basename}.show
|
||||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
-P "${CMAKE_CURRENT_SOURCE_DIR}/run_transmission_show.cmake"
|
||||||
)
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# disabled AddShowTest(transmission-show-bittorrent-v2 bittorrent-v2-test)
|
# disabled AddShowTest(transmission-show-bittorrent-v2 bittorrent-v2-test)
|
||||||
AddShowTest(transmission-show-bittorrent-v2-hybrid-test bittorrent-v2-hybrid-test)
|
addshowtest(transmission-show-bittorrent-v2-hybrid-test bittorrent-v2-hybrid-test)
|
||||||
AddShowTest(transmission-show-inner-sanctum Inner_Sanctum_movie_archive)
|
addshowtest(transmission-show-inner-sanctum Inner_Sanctum_movie_archive)
|
||||||
AddShowTest(transmission-show-thor Thor_and_the_Amazon_Women.avi)
|
addshowtest(transmission-show-thor Thor_and_the_Amazon_Women.avi)
|
||||||
AddShowTest(transmission-show-ubuntu ubuntu-20.04.3-desktop-amd64.iso)
|
addshowtest(transmission-show-ubuntu ubuntu-20.04.3-desktop-amd64.iso)
|
||||||
AddShowTest(transmission-show-ubuntu-hybrid hybrid-single-ubuntu-20.04.3-desktop-amd64.iso)
|
addshowtest(transmission-show-ubuntu-hybrid hybrid-single-ubuntu-20.04.3-desktop-amd64.iso)
|
||||||
|
|
|
@ -1,52 +1,49 @@
|
||||||
# compare the output of transmission-show to a reference file.
|
# compare the output of transmission-show to a reference file.
|
||||||
# returns 0 if the files match, nonzero otherwise.
|
# returns 0 if the files match, nonzero otherwise.
|
||||||
##
|
##
|
||||||
|
|
||||||
if (CMAKE_VERSION VERSION_LESS 3.14)
|
if(CMAKE_VERSION VERSION_LESS 3.14)
|
||||||
# --ignore-eol was introduced in CMake 3.14
|
# --ignore-eol was introduced in CMake 3.14
|
||||||
message(status "skipping transmission-show test; cmake version too old")
|
message(status "skipping transmission-show test; cmake version too old")
|
||||||
else()
|
else()
|
||||||
get_filename_component(torrent_basename "${torrent_file}" NAME)
|
get_filename_component(torrent_basename "${torrent_file}" NAME)
|
||||||
set(output_file ${CMAKE_CURRENT_BINARY_DIR}/${torrent_basename}.out)
|
set(output_file ${CMAKE_CURRENT_BINARY_DIR}/${torrent_basename}.out)
|
||||||
|
|
||||||
message(STATUS "transmission_show ${transmission_show}")
|
message(STATUS "transmission_show ${transmission_show}")
|
||||||
message(STATUS " input_file ${torrent_file}")
|
message(STATUS " input_file ${torrent_file}")
|
||||||
message(STATUS " output_file ${output_file}")
|
message(STATUS " output_file ${output_file}")
|
||||||
message(STATUS " reference_file ${reference_file}")
|
message(STATUS " reference_file ${reference_file}")
|
||||||
|
|
||||||
# The app's output includes timestamps, so fake our TZ to ensure
|
# The app's output includes timestamps, so fake our TZ to ensure
|
||||||
# the test doesn't depend on the physical TZ of the test machine
|
# the test doesn't depend on the physical TZ of the test machine
|
||||||
set(ENV{TZ} "UTC")
|
set(ENV{TZ} "UTC")
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${transmission_show} ${torrent_file}
|
COMMAND ${transmission_show} ${torrent_file}
|
||||||
OUTPUT_FILE ${output_file}
|
OUTPUT_FILE ${output_file})
|
||||||
)
|
|
||||||
|
|
||||||
execute_process(
|
execute_process(
|
||||||
COMMAND ${CMAKE_COMMAND} -E compare_files --ignore-eol ${reference_file} ${output_file}
|
COMMAND ${CMAKE_COMMAND} -E compare_files --ignore-eol ${reference_file} ${output_file}
|
||||||
RESULT_VARIABLE STATUS
|
RESULT_VARIABLE STATUS)
|
||||||
)
|
|
||||||
|
|
||||||
if(STATUS AND NOT STATUS EQUAL 0)
|
if(STATUS AND NOT STATUS EQUAL 0)
|
||||||
file(READ ${reference_file} CONTENTS)
|
file(READ ${reference_file} CONTENTS)
|
||||||
message("EXPECTED CONTENTS (${reference_file}):")
|
message("EXPECTED CONTENTS (${reference_file}):")
|
||||||
message(${CONTENTS})
|
message(${CONTENTS})
|
||||||
|
|
||||||
file(READ ${output_file} CONTENTS)
|
file(READ ${output_file} CONTENTS)
|
||||||
message("RECEIVED CONTENTS (${output_file}):")
|
message("RECEIVED CONTENTS (${output_file}):")
|
||||||
message(${CONTENTS})
|
message(${CONTENTS})
|
||||||
|
|
||||||
find_program(DIFF_EXEC diff)
|
find_program(DIFF_EXEC diff)
|
||||||
if (DIFF_EXEC)
|
if(DIFF_EXEC)
|
||||||
message("DIFF:")
|
message("DIFF:")
|
||||||
execute_process(COMMAND ${DIFF_EXEC} -u ${output_file} ${reference_file})
|
execute_process(COMMAND ${DIFF_EXEC} -u ${output_file} ${reference_file})
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
file(REMOVE ${output_file})
|
|
||||||
message(FATAL_ERROR "failed: files '${reference_file}' and '${output_file}' do not match")
|
|
||||||
else()
|
|
||||||
file(REMOVE ${output_file})
|
|
||||||
message("passed")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
file(REMOVE ${output_file})
|
||||||
|
message(FATAL_ERROR "failed: files '${reference_file}' and '${output_file}' do not match")
|
||||||
|
else()
|
||||||
|
file(REMOVE ${output_file})
|
||||||
|
message("passed")
|
||||||
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
|
@ -1,26 +1,37 @@
|
||||||
project(trutils)
|
|
||||||
|
|
||||||
include_directories(
|
|
||||||
${CMAKE_SOURCE_DIR}
|
|
||||||
)
|
|
||||||
include_directories(
|
|
||||||
SYSTEM
|
|
||||||
${EVENT2_INCLUDE_DIRS}
|
|
||||||
${CURL_INCLUDE_DIRS}
|
|
||||||
)
|
|
||||||
|
|
||||||
foreach(P create edit remote show)
|
foreach(P create edit remote show)
|
||||||
tr_win32_app_info(${PROJECT_NAME}_${P}_WIN32_RC_FILE
|
add_executable(${TR_NAME}-${P})
|
||||||
|
|
||||||
|
target_sources(${TR_NAME}-${P}
|
||||||
|
PRIVATE
|
||||||
|
${P}.cc)
|
||||||
|
|
||||||
|
target_include_directories(${TR_NAME}-${P}
|
||||||
|
PRIVATE
|
||||||
|
${CMAKE_SOURCE_DIR})
|
||||||
|
|
||||||
|
target_include_directories(${TR_NAME}-${P} SYSTEM
|
||||||
|
PRIVATE
|
||||||
|
${LIBFMT_INCLUDE_DIRS}
|
||||||
|
${EVENT2_INCLUDE_DIRS}
|
||||||
|
${CURL_INCLUDE_DIRS})
|
||||||
|
|
||||||
|
target_link_libraries(${TR_NAME}-${P}
|
||||||
|
PRIVATE
|
||||||
|
${TR_NAME}
|
||||||
|
${CURL_LIBRARIES})
|
||||||
|
|
||||||
|
tr_win32_app_info(${TR_NAME}-${P}
|
||||||
"Transmission Utility ('${P}')"
|
"Transmission Utility ('${P}')"
|
||||||
"${TR_NAME}-${P}"
|
"${TR_NAME}-${P}"
|
||||||
"${TR_NAME}-${P}.exe")
|
"${TR_NAME}-${P}.exe")
|
||||||
|
|
||||||
add_executable(${TR_NAME}-${P} ${P}.cc ${${PROJECT_NAME}_${P}_WIN32_RC_FILE})
|
install(
|
||||||
target_link_libraries(${TR_NAME}-${P} ${TR_NAME})
|
TARGETS ${TR_NAME}-${P}
|
||||||
|
DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
install(TARGETS ${TR_NAME}-${P} DESTINATION ${CMAKE_INSTALL_BINDIR})
|
|
||||||
|
|
||||||
if(INSTALL_DOC)
|
if(INSTALL_DOC)
|
||||||
install(FILES ${TR_NAME}-${P}.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
|
install(
|
||||||
|
FILES ${TR_NAME}-${P}.1
|
||||||
|
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
|
@ -1,65 +1,59 @@
|
||||||
project(trweb)
|
|
||||||
|
|
||||||
set(TRWEB_SRCS
|
set(TRWEB_SRCS
|
||||||
src/about-dialog.js
|
src/about-dialog.js
|
||||||
src/action-manager.js
|
src/action-manager.js
|
||||||
src/alert-dialog.js
|
src/alert-dialog.js
|
||||||
src/context-menu.js
|
src/context-menu.js
|
||||||
src/file-row.js
|
src/file-row.js
|
||||||
src/formatter.js
|
src/formatter.js
|
||||||
src/inspector.js
|
src/inspector.js
|
||||||
src/main.js
|
src/main.js
|
||||||
src/move-dialog.js
|
src/move-dialog.js
|
||||||
src/notifications.js
|
src/notifications.js
|
||||||
src/open-dialog.js
|
src/open-dialog.js
|
||||||
src/overflow-menu.js
|
src/overflow-menu.js
|
||||||
src/prefs-dialog.js
|
src/prefs-dialog.js
|
||||||
src/prefs.js
|
src/prefs.js
|
||||||
src/remote.js
|
src/remote.js
|
||||||
src/remove-dialog.js
|
src/remove-dialog.js
|
||||||
src/rename-dialog.js
|
src/rename-dialog.js
|
||||||
src/shortcuts-dialog.js
|
src/shortcuts-dialog.js
|
||||||
src/statistics-dialog.js
|
src/statistics-dialog.js
|
||||||
src/torrent.js
|
src/torrent.js
|
||||||
src/torrent-row.js
|
src/torrent-row.js
|
||||||
src/transmission.js
|
src/transmission.js
|
||||||
src/utils.js
|
src/utils.js
|
||||||
assets/css/transmission-app.scss
|
assets/css/transmission-app.scss)
|
||||||
)
|
|
||||||
|
|
||||||
set(TRWEB_IMGS
|
set(TRWEB_IMGS
|
||||||
assets/img/box.svg
|
assets/img/box.svg
|
||||||
assets/img/film.svg
|
assets/img/film.svg
|
||||||
assets/img/modern-tortoise-blue.png
|
assets/img/modern-tortoise-blue.png
|
||||||
assets/img/modern-tortoise.png
|
assets/img/modern-tortoise.png
|
||||||
assets/img/chevron-down.svg
|
assets/img/chevron-down.svg
|
||||||
assets/img/chevron-up.svg
|
assets/img/chevron-up.svg
|
||||||
assets/img/horizontal-rule.svg
|
assets/img/horizontal-rule.svg
|
||||||
assets/img/lock-fill.svg
|
assets/img/lock-fill.svg
|
||||||
assets/img/logo.png
|
assets/img/logo.png
|
||||||
assets/img/image.svg
|
assets/img/image.svg
|
||||||
assets/img/magnet.svg
|
assets/img/magnet.svg
|
||||||
assets/img/music.svg
|
assets/img/music.svg
|
||||||
assets/img/file-text.svg
|
assets/img/file-text.svg
|
||||||
assets/img/package.svg
|
assets/img/package.svg
|
||||||
assets/img/folder.svg
|
assets/img/folder.svg
|
||||||
assets/img/pause-circle-active.svg
|
assets/img/pause-circle-active.svg
|
||||||
assets/img/pause-circle-idle.svg
|
assets/img/pause-circle-idle.svg
|
||||||
assets/img/play-circle-active.svg
|
assets/img/play-circle-active.svg
|
||||||
assets/img/play-circle-idle.svg
|
assets/img/play-circle-idle.svg
|
||||||
assets/img/router.svg
|
assets/img/router.svg
|
||||||
assets/img/type.svg
|
assets/img/type.svg)
|
||||||
)
|
|
||||||
|
|
||||||
add_custom_target(
|
add_custom_target(trweb ALL
|
||||||
trweb ALL
|
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/package.json" "${CMAKE_CURRENT_BINARY_DIR}/package.json"
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/package.json" "${CMAKE_CURRENT_BINARY_DIR}/package.json"
|
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/yarn.lock" "${CMAKE_CURRENT_BINARY_DIR}/yarn.lock"
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/yarn.lock" "${CMAKE_CURRENT_BINARY_DIR}/yarn.lock"
|
COMMAND yarn install
|
||||||
COMMAND yarn install
|
COMMAND yarn webpack --config "${CMAKE_CURRENT_SOURCE_DIR}/webpack.config.js" --context "${CMAKE_CURRENT_SOURCE_DIR}"
|
||||||
COMMAND yarn webpack --config "${CMAKE_CURRENT_SOURCE_DIR}/webpack.config.js" --context "${CMAKE_CURRENT_SOURCE_DIR}"
|
BYPRODUCTS
|
||||||
BYPRODUCTS
|
public_html/transmission-app.js
|
||||||
public_html/transmission-app.js
|
public_html/transmission-app.js.LICENSE.txt
|
||||||
public_html/transmission-app.js.LICENSE.txt
|
DEPENDS ${TRWEB_IMGS}
|
||||||
DEPENDS ${TRWEB_IMGS}
|
SOURCES ${TRWEB_SRCS})
|
||||||
SOURCES ${TRWEB_SRCS}
|
|
||||||
)
|
|
||||||
|
|
Loading…
Reference in New Issue