]> cloud.milkyroute.net Git - dolphin.git/blob - CMakeLists.txt
Adapt build system for building against qt6
[dolphin.git] / CMakeLists.txt
1 cmake_minimum_required(VERSION 3.16)
2
3 # KDE Application Version, managed by release script
4 set (RELEASE_SERVICE_VERSION_MAJOR "22")
5 set (RELEASE_SERVICE_VERSION_MINOR "03")
6 set (RELEASE_SERVICE_VERSION_MICRO "70")
7 set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
8 project(Dolphin VERSION ${RELEASE_SERVICE_VERSION})
9
10 set(QT_MIN_VERSION "5.15.0")
11 set(KF5_MIN_VERSION "5.91.0")
12
13 # ECM setup
14 find_package(ECM ${KF5_MIN_VERSION} CONFIG REQUIRED)
15 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
16
17 include(KDEInstallDirs)
18 include(KDECMakeSettings)
19 include(KDECompilerSettings NO_POLICY_SCOPE)
20
21 include(ECMSetupVersion)
22 include(ECMGenerateHeaders)
23 include(ECMGenerateDBusServiceFile)
24 include(ECMConfiguredInstall)
25 include(CMakePackageConfigHelpers)
26 include(GenerateExportHeader)
27 include(FeatureSummary)
28 include(ECMQtDeclareLoggingCategory)
29 include(ECMDeprecationSettings)
30
31 ecm_setup_version(${RELEASE_SERVICE_VERSION} VARIABLE_PREFIX DOLPHIN
32 VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/src/dolphin_version.h"
33 )
34
35 ecm_setup_version("5.0.0" VARIABLE_PREFIX DOLPHINVCS
36 VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/dolphinvcs_version.h"
37 PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfigVersion.cmake"
38 SOVERSION 5
39 )
40
41 ecm_setup_version("5.0.0" VARIABLE_PREFIX DOLPHINPRIVATE
42 SOVERSION 5
43 )
44
45 find_package(Qt${QT_MAJOR_VERSION} ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
46 Core
47 Concurrent
48 Widgets
49 Gui
50 DBus
51 )
52
53 find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS
54 KCMUtils
55 NewStuff
56 CoreAddons
57 I18n
58 DBusAddons
59 Bookmarks
60 Config
61 KIO
62 Parts
63 Solid
64 IconThemes
65 Completion
66 TextWidgets
67 Notifications
68 Crash
69 WindowSystem
70 )
71
72 find_package(KUserFeedback 1.0.0)
73 set_package_properties(KUserFeedback
74 PROPERTIES TYPE OPTIONAL
75 PURPOSE "Used for submission of telemetry data"
76 )
77
78 if(KUserFeedback_FOUND)
79 set(HAVE_KUSERFEEDBACK TRUE)
80 endif()
81
82 find_package(KF5 ${KF5_MIN_VERSION} OPTIONAL_COMPONENTS
83 Activities
84 DocTools
85 )
86 set_package_properties(KF5Activities PROPERTIES DESCRIPTION "KActivities libraries"
87 URL "https://www.kde.org"
88 TYPE OPTIONAL
89 PURPOSE "For tracking which folders are frequently accessed on a Plasma desktop"
90 )
91
92 find_package(Phonon4Qt${QT_MAJOR_VERSION} CONFIG REQUIRED)
93
94 find_package(PackageKitQt5)
95 set_package_properties(PackageKitQt5
96 PROPERTIES DESCRIPTION "Software Manager integration"
97 TYPE OPTIONAL
98 PURPOSE "Used in the service menu installer"
99 )
100 if(PackageKitQt5_FOUND)
101 set(HAVE_PACKAGEKIT TRUE)
102 endif()
103
104 find_package(KF5Baloo ${KF5_MIN_VERSION})
105 set_package_properties(KF5Baloo PROPERTIES DESCRIPTION "Baloo Core libraries"
106 URL "https://www.kde.org"
107 TYPE OPTIONAL
108 PURPOSE "For adding desktop-wide search and tagging support to dolphin"
109 )
110
111 find_package(KF5BalooWidgets 19.07.70)
112 set_package_properties(KF5BalooWidgets PROPERTIES DESCRIPTION "Baloos Widgets"
113 URL "https://www.kde.org"
114 TYPE OPTIONAL
115 )
116
117 find_package(KF5FileMetaData ${KF5_MIN_VERSION})
118 set_package_properties(KF5FileMetaData PROPERTIES
119 URL "https://projects.kde.org/kfilemetadata"
120 TYPE OPTIONAL
121 PURPOSE "For accessing file metadata labels"
122 )
123
124 if (KF5Activities_FOUND)
125 set(HAVE_KACTIVITIES TRUE)
126 endif()
127
128 if (KF5Baloo_FOUND AND KF5BalooWidgets_FOUND AND KF5FileMetaData_FOUND)
129 message(STATUS "Baloo packages are found")
130 set(HAVE_BALOO TRUE)
131 else()
132 message(WARNING "Baloo packages not found. They are needed for the metadata features of Dolphin (including the information panel).")
133 endif()
134
135 # TODO: drop HAVE_TERMINAL once we are sure the terminal panel works on Windows too.
136 if(WIN32)
137 set(HAVE_TERMINAL FALSE)
138 else()
139 set(HAVE_TERMINAL TRUE)
140 endif()
141
142 ecm_set_disabled_deprecation_versions(SHOW_DEPRECATIONS
143 QT 5.15
144 KF 5.90
145 KSERVICE 5.89 # We use KServiceTypeTrader in a compat code path
146 )
147
148 add_subdirectory(src)
149 add_subdirectory(doc)
150
151 # CMake files
152 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/DolphinVcs")
153
154 configure_package_config_file(
155 "${CMAKE_CURRENT_SOURCE_DIR}/DolphinVcsConfig.cmake.in"
156 "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfig.cmake"
157 INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
158 )
159
160 install(FILES
161 "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfig.cmake"
162 "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfigVersion.cmake"
163 DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
164 COMPONENT Devel
165 )
166
167 install(EXPORT DolphinVcsTargets
168 DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
169 FILE DolphinVcsTargets.cmake
170 )
171
172 install(FILES
173 "${CMAKE_CURRENT_BINARY_DIR}/dolphinvcs_version.h"
174 DESTINATION "${KDE_INSTALL_INCLUDEDIR}/Dolphin"
175 COMPONENT Devel
176 )
177
178 if(FLATPAK)
179 ecm_generate_dbus_service_file(
180 NAME org.freedesktop.FileManager1
181 EXECUTABLE "${KDE_INSTALL_FULL_BINDIR}/dolphin --daemon"
182 SYSTEMD_SERVICE plasma-dolphin.service
183 DESTINATION ${KDE_INSTALL_DBUSSERVICEDIR}
184 )
185 else()
186 ecm_generate_dbus_service_file(
187 NAME org.freedesktop.FileManager1
188 EXECUTABLE "${KDE_INSTALL_FULL_BINDIR}/dolphin --daemon"
189 SYSTEMD_SERVICE plasma-dolphin.service
190 DESTINATION ${KDE_INSTALL_DBUSSERVICEDIR}
191 RENAME org.kde.dolphin.FileManager1.service
192 )
193 endif()
194
195 ecm_install_configured_files(INPUT plasma-dolphin.service.in DESTINATION ${KDE_INSTALL_SYSTEMDUSERUNITDIR})
196
197 ecm_qt_install_logging_categories(
198 EXPORT DOLPHIN
199 FILE dolphin.categories
200 DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}
201 )
202 feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
203