mirror of
https://github.com/transmission/transmission
synced 2024-12-26 01:27:28 +00:00
bc380511db
* 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
119 lines
3.8 KiB
CMake
119 lines
3.8 KiB
CMake
include(UtilityFunctions.cmake)
|
|
|
|
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
set(ARCH x64)
|
|
else()
|
|
set(ARCH x86)
|
|
endif()
|
|
|
|
set(VERSION "${TR_USER_AGENT_PREFIX}")
|
|
set(VERSION_MSI "${TR_VERSION_MAJOR}.${TR_VERSION_MINOR}.${TR_VERSION_PATCH}")
|
|
set(VERSION_FULL "${TR_USER_AGENT_PREFIX} (${TR_VCS_REVISION})")
|
|
|
|
if(MSVC_TOOLSET_VERSION MATCHES "^([0-9]+)([0-9])$")
|
|
set(MSVC_TOOLSET_VERSION_MAJOR ${CMAKE_MATCH_1})
|
|
set(MSVC_TOOLSET_VERSION_MINOR ${CMAKE_MATCH_2})
|
|
endif()
|
|
|
|
if(MSVC_TOOLSET_VERSION EQUAL 143)
|
|
set(MSVS_VERSION 17)
|
|
elseif(MSVC_TOOLSET_VERSION EQUAL 142)
|
|
set(MSVS_VERSION 16)
|
|
elseif(MSVC_TOOLSET_VERSION EQUAL 141)
|
|
set(MSVS_VERSION 15)
|
|
else()
|
|
message(FATAL_ERROR "Unsupported MSVC_TOOLSET_VERSION value: '${MSVC_TOOLSET_VERSION}'")
|
|
endif()
|
|
|
|
set(MSI_FILENAME_VERSION "${TR_SEMVER}")
|
|
if(NOT TR_STABLE_RELEASE AND NOT "${TR_VCS_REVISION}" STREQUAL "")
|
|
string(APPEND MSI_FILENAME_VERSION "+r${TR_VCS_REVISION}")
|
|
endif()
|
|
|
|
if(NOT TR_THIRD_PARTY_DIR)
|
|
set(TR_THIRD_PARTY_DIR "$<TARGET_FILE_DIR:OpenSSL::SSL>/..")
|
|
endif()
|
|
|
|
if(NOT TR_QT_DIR)
|
|
set(TR_QT_DIR "$<TARGET_FILE_DIR:Qt${Qt_VERSION_MAJOR}::Core>/..")
|
|
endif()
|
|
|
|
set(TR_OPENSSL_ARCH)
|
|
if(ARCH STREQUAL "x64")
|
|
set(TR_OPENSSL_ARCH "-x64")
|
|
endif()
|
|
|
|
if(OPENSSL_VERSION MATCHES "^3[.]")
|
|
set(TR_OPENSSL_CRYPTO_NAME "libcrypto-3${TR_OPENSSL_ARCH}.dll")
|
|
set(TR_OPENSSL_SSL_NAME "libssl-3${TR_OPENSSL_ARCH}.dll")
|
|
elseif(OPENSSL_VERSION MATCHES "^1[.]1[.]")
|
|
set(TR_OPENSSL_CRYPTO_NAME "libcrypto-1_1${TR_OPENSSL_ARCH}.dll")
|
|
set(TR_OPENSSL_SSL_NAME "libssl-1_1${TR_OPENSSL_ARCH}.dll")
|
|
else()
|
|
set(TR_OPENSSL_CRYPTO_NAME "libeay32.dll")
|
|
set(TR_OPENSSL_SSL_NAME "ssleay32.dll")
|
|
endif()
|
|
|
|
file(
|
|
COPY "${CMAKE_SOURCE_DIR}/qt/icons/transmission.ico"
|
|
DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
|
|
|
|
set(WEBSRCDIR "${CMAKE_INSTALL_PREFIX}/share/transmission/public_html")
|
|
set(TRQMSRCDIR "${CMAKE_INSTALL_PREFIX}/share/transmission/translations")
|
|
set(QTQMSRCDIR "${TR_QT_DIR}/translations")
|
|
|
|
configure_file(TransmissionConfig.wxi.in TransmissionConfig.wxi)
|
|
|
|
wix_heat(WebUi.wxs "${WEBSRCDIR}" WebUiComponents WEBINSTALLDIR var.WebSrcDir)
|
|
wix_heat(QtClientTranslations.wxs "${TRQMSRCDIR}" QtClientTranslationsComponents QMINSTALLDIR var.TrQmSrcDir)
|
|
wix_heat(QtTranslations.wxs "${QTQMSRCDIR}" QtTranslationsComponents QMINSTALLDIR var.QtQmSrcDir
|
|
XSL_TRANSFORM QtTranslations.xsl)
|
|
|
|
wix_candle(WIX_OBJS
|
|
ARCHITECTURE ${ARCH}
|
|
SOURCES
|
|
components/CliTools.wxs
|
|
components/CommonLibs.wxs
|
|
components/Daemon.wxs
|
|
components/QtClient.wxs
|
|
Transmission.wxs
|
|
"${CMAKE_CURRENT_BINARY_DIR}/WebUi.wxs"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/QtClientTranslations.wxs"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/QtTranslations.wxs"
|
|
EXTENSIONS
|
|
WixUIExtension
|
|
WixUtilExtension
|
|
DEFINITIONS
|
|
"SrcDir=${CMAKE_INSTALL_PREFIX}"
|
|
"ThirdPartyDir=${TR_THIRD_PARTY_DIR}"
|
|
"QtDir=${TR_QT_DIR}"
|
|
"QtMajorVer=${Qt_VERSION_MAJOR}"
|
|
"LicenseFile=${CMAKE_CURRENT_SOURCE_DIR}/GPLv2.rtf"
|
|
"WebSrcDir=${WEBSRCDIR}"
|
|
"TrQmSrcDir=${TRQMSRCDIR}"
|
|
"QtQmSrcDir=${QTQMSRCDIR}"
|
|
"MsvcCrtMsmFile=${TR_MSVC_CRT_MSM_FILE}"
|
|
"OpenSslCryptoName=${TR_OPENSSL_CRYPTO_NAME}"
|
|
"OpenSslSslName=${TR_OPENSSL_SSL_NAME}"
|
|
EXTRA_DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/TransmissionConfig.wxi")
|
|
|
|
wix_light(WIX_OUTPUT
|
|
NAME transmission-${MSI_FILENAME_VERSION}-${ARCH}
|
|
OBJECTS ${WIX_OBJS}
|
|
EXTENSIONS
|
|
WixUIExtension
|
|
WixUtilExtension
|
|
EXTRA_DEPENDS
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/GPLv2.rtf"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/transmission.ico")
|
|
|
|
add_custom_target(pack-msi
|
|
SOURCES
|
|
components/CliTools.wxs
|
|
components/CommonLibs.wxs
|
|
components/Daemon.wxs
|
|
components/QtClient.wxs
|
|
QtTranslations.xsl
|
|
Transmission.wxs
|
|
TransmissionConfig.wxi.in
|
|
DEPENDS "${WIX_OUTPUT}")
|