Sync translations from Transifex and run lupdate
[qBittorrent.git] / src / CMakeLists.txt
blobd22c93a27901fb50df0ea8d0bc0a3ac07b86bbcf
1 macro(find_libtorrent version)
2     if (UNIX AND (NOT APPLE) AND (NOT CYGWIN))
3         find_package(LibtorrentRasterbar QUIET ${version} COMPONENTS torrent-rasterbar)
4         if (NOT LibtorrentRasterbar_FOUND)
5             include(FindPkgConfig)
6             pkg_check_modules(LibtorrentRasterbar IMPORTED_TARGET GLOBAL "libtorrent-rasterbar>=${version}")
7             if (NOT LibtorrentRasterbar_FOUND)
8                 message(
9                     FATAL_ERROR
10                     "Package LibtorrentRasterbar >= ${version} not found"
11                     " with CMake or pkg-config.\n- Set LibtorrentRasterbar_DIR to a directory containing"
12                     " a LibtorrentRasterbarConfig.cmake file or add the installation prefix of LibtorrentRasterbar"
13                     " to CMAKE_PREFIX_PATH.\n- Alternatively, make sure there is a valid libtorrent-rasterbar.pc"
14                     " file in your system's pkg-config search paths (use the system environment variable PKG_CONFIG_PATH"
15                     " to specify additional search paths if needed)."
16                 )
17             endif()
18             add_library(LibtorrentRasterbar::torrent-rasterbar ALIAS PkgConfig::LibtorrentRasterbar)
19             # force a fake package to show up in the feature summary
20             set_property(GLOBAL APPEND PROPERTY
21                 PACKAGES_FOUND
22                 "LibtorrentRasterbar via pkg-config (version >= ${version})"
23             )
24             set_package_properties("LibtorrentRasterbar via pkg-config (version >= ${version})"
25                 PROPERTIES
26                 TYPE REQUIRED
27             )
28         else()
29             set_package_properties(LibtorrentRasterbar PROPERTIES TYPE REQUIRED)
30         endif()
31     else()
32         find_package(LibtorrentRasterbar ${version} REQUIRED COMPONENTS torrent-rasterbar)
33     endif()
34 endmacro()
36 find_libtorrent(${minLibtorrent1Version})
37 if (LibtorrentRasterbar_FOUND AND (LibtorrentRasterbar_VERSION VERSION_GREATER_EQUAL 2.0))
38     find_libtorrent(${minLibtorrentVersion})
39 endif()
41 # force variable type so that it always shows up in ccmake/cmake-gui frontends
42 set_property(CACHE LibtorrentRasterbar_DIR PROPERTY TYPE PATH)
43 find_package(Boost ${minBoostVersion} REQUIRED)
44 find_package(OpenSSL ${minOpenSSLVersion} REQUIRED)
45 find_package(ZLIB ${minZlibVersion} REQUIRED)
46 find_package(Qt5 ${minQtVersion} REQUIRED COMPONENTS Core Network Sql Xml LinguistTools)
47 if (DBUS)
48     find_package(Qt5 ${minQtVersion} REQUIRED COMPONENTS DBus)
49     set_package_properties(Qt5DBus PROPERTIES
50         DESCRIPTION "Qt5 module for inter-process communication over the D-Bus protocol"
51         PURPOSE "Required by the DBUS feature"
52     )
53 endif()
55 # automatically call Qt moc, rcc and uic as needed for all targets by default
56 set(CMAKE_AUTORCC_OPTIONS --compress 9 --threshold 5)
57 set(CMAKE_AUTOMOC ON)
58 set(CMAKE_AUTORCC ON)
59 set(CMAKE_AUTOUIC ON)
61 # create interface-only target libraries with common compile options/definitions to link to
62 include(MacroQbtCommonConfig)
63 qbt_common_config()
65 # include directories - ideally, would be done per target instead of global directory scope
66 include_directories(${CMAKE_CURRENT_SOURCE_DIR})
68 add_subdirectory(base)
70 if (GUI)
71     find_package(Qt5 ${minQtVersion} REQUIRED COMPONENTS Widgets Svg)
72     if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
73         find_package(Qt5 ${minQtVersion} REQUIRED COMPONENTS WinExtras)
74     endif()
75     add_subdirectory(gui)
76 endif()
78 if (WEBUI)
79     add_subdirectory(webui)
80 endif()
82 add_subdirectory(app)