]> cloud.milkyroute.net Git - dolphin.git/blob - CMakeLists.txt
Rename KF5 to KF6
[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 "23")
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.2")
11 set(KF6_MIN_VERSION "5.102.0")
12
13 # ECM setup
14 find_package(ECM ${KF6_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 if (UNIX AND NOT APPLE)
54 set(HAVE_X11 TRUE)
55
56 if (QT_MAJOR_VERSION STREQUAL "5")
57 find_package(Qt5X11Extras REQUIRED)
58 endif()
59 endif()
60
61 find_package(KF6 ${KF6_MIN_VERSION} REQUIRED COMPONENTS
62 KCMUtils
63 NewStuff
64 CoreAddons
65 I18n
66 DBusAddons
67 Bookmarks
68 Config
69 KIO
70 Parts
71 Solid
72 IconThemes
73 Completion
74 TextWidgets
75 Notifications
76 Crash
77 WindowSystem
78 WidgetsAddons
79 Codecs
80 )
81
82 find_package(KUserFeedback 1.2.0)
83 set_package_properties(KUserFeedback
84 PROPERTIES TYPE OPTIONAL
85 PURPOSE "Used for submission of telemetry data"
86 )
87
88 if(KUserFeedback_FOUND)
89 set(HAVE_KUSERFEEDBACK TRUE)
90 endif()
91
92 find_package(KF6 ${KF6_MIN_VERSION} OPTIONAL_COMPONENTS
93 Activities
94 DocTools
95 )
96 set_package_properties(KF6Activities PROPERTIES DESCRIPTION "KActivities libraries"
97 URL "https://www.kde.org"
98 TYPE OPTIONAL
99 PURPOSE "For tracking which folders are frequently accessed on a Plasma desktop"
100 )
101
102 find_package(Phonon4Qt${QT_MAJOR_VERSION} CONFIG REQUIRED)
103
104 find_package(PackageKitQt${QT_MAJOR_VERSION})
105 set_package_properties(PackageKitQt${QT_MAJOR_VERSION}
106 PROPERTIES DESCRIPTION "Software Manager integration"
107 TYPE OPTIONAL
108 PURPOSE "Used in the service menu installer"
109 )
110 if(PackageKitQt${QT_MAJOR_VERSION}_FOUND)
111 set(HAVE_PACKAGEKIT TRUE)
112 endif()
113
114 find_package(KF6Baloo ${KF6_MIN_VERSION})
115 set_package_properties(KF6Baloo PROPERTIES DESCRIPTION "Baloo Core libraries"
116 URL "https://www.kde.org"
117 TYPE OPTIONAL
118 PURPOSE "For adding desktop-wide search and tagging support to dolphin"
119 )
120
121 find_package(KF6BalooWidgets 19.07.70)
122 set_package_properties(KF6BalooWidgets PROPERTIES DESCRIPTION "Baloos Widgets"
123 URL "https://www.kde.org"
124 TYPE OPTIONAL
125 )
126
127 find_package(KF6FileMetaData ${KF6_MIN_VERSION})
128 set_package_properties(KF6FileMetaData PROPERTIES
129 URL "https://projects.kde.org/kfilemetadata"
130 TYPE OPTIONAL
131 PURPOSE "For accessing file metadata labels"
132 )
133
134 if (KF6Activities_FOUND)
135 set(HAVE_KACTIVITIES TRUE)
136 endif()
137
138 if (KF6Baloo_FOUND AND KF6BalooWidgets_FOUND AND KF6FileMetaData_FOUND)
139 message(STATUS "Baloo packages are found")
140 set(HAVE_BALOO TRUE)
141 else()
142 message(WARNING "Baloo packages not found. They are needed for the metadata features of Dolphin (including the information panel).")
143 endif()
144
145 # TODO: drop HAVE_TERMINAL once we are sure the terminal panel works on Windows too.
146 if(WIN32)
147 set(HAVE_TERMINAL FALSE)
148 else()
149 set(HAVE_TERMINAL TRUE)
150 endif()
151
152 ecm_set_disabled_deprecation_versions(
153 QT 5.15
154 KF 5.90
155 KSERVICE 5.89 # We use KServiceTypeTrader in a compat code path
156 )
157
158 add_subdirectory(src)
159 add_subdirectory(doc)
160
161 # CMake files
162 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/DolphinVcs")
163
164 configure_package_config_file(
165 "${CMAKE_CURRENT_SOURCE_DIR}/DolphinVcsConfig.cmake.in"
166 "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfig.cmake"
167 INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
168 )
169
170 install(FILES
171 "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfig.cmake"
172 "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfigVersion.cmake"
173 DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
174 COMPONENT Devel
175 )
176
177 install(EXPORT DolphinVcsTargets
178 DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
179 FILE DolphinVcsTargets.cmake
180 )
181
182 install(FILES
183 "${CMAKE_CURRENT_BINARY_DIR}/dolphinvcs_version.h"
184 DESTINATION "${KDE_INSTALL_INCLUDEDIR}/Dolphin"
185 COMPONENT Devel
186 )
187
188 if(FLATPAK)
189 ecm_generate_dbus_service_file(
190 NAME org.freedesktop.FileManager1
191 EXECUTABLE "${KDE_INSTALL_FULL_BINDIR}/dolphin --daemon"
192 SYSTEMD_SERVICE plasma-dolphin.service
193 DESTINATION ${KDE_INSTALL_DBUSSERVICEDIR}
194 )
195 else()
196 ecm_generate_dbus_service_file(
197 NAME org.freedesktop.FileManager1
198 EXECUTABLE "${KDE_INSTALL_FULL_BINDIR}/dolphin --daemon"
199 SYSTEMD_SERVICE plasma-dolphin.service
200 DESTINATION ${KDE_INSTALL_DBUSSERVICEDIR}
201 RENAME org.kde.dolphin.FileManager1.service
202 )
203 endif()
204
205 ecm_install_configured_files(INPUT plasma-dolphin.service.in DESTINATION ${KDE_INSTALL_SYSTEMDUSERUNITDIR})
206
207 ecm_qt_install_logging_categories(
208 EXPORT DOLPHIN
209 FILE dolphin.categories
210 DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}
211 )
212
213 ki18n_install(po)
214 if(KF6DocTools_FOUND)
215 kdoctools_install(po)
216 endif()
217
218 install(FILES completions/dolphin.zsh RENAME _dolphin DESTINATION ${KDE_INSTALL_ZSHAUTOCOMPLETEDIR})
219
220 feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
221
222 include(KDEClangFormat)
223 # add clang-format target
224 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h *.c)
225 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
226
227 include(KDEGitCommitHooks)
228 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)