]> cloud.milkyroute.net Git - dolphin.git/blob - CMakeLists.txt
Remove deprecated KServiceTypeTrader
[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(KF5_MIN_VERSION "5.101.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 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(KF5 ${KF5_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(KF5 ${KF5_MIN_VERSION} OPTIONAL_COMPONENTS
93 Activities
94 DocTools
95 )
96 set_package_properties(KF5Activities 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(KF5Baloo ${KF5_MIN_VERSION})
115 set_package_properties(KF5Baloo 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(KF5BalooWidgets 19.07.70)
122 set_package_properties(KF5BalooWidgets PROPERTIES DESCRIPTION "Baloos Widgets"
123 URL "https://www.kde.org"
124 TYPE OPTIONAL
125 )
126
127 find_package(KF5FileMetaData ${KF5_MIN_VERSION})
128 set_package_properties(KF5FileMetaData PROPERTIES
129 URL "https://projects.kde.org/kfilemetadata"
130 TYPE OPTIONAL
131 PURPOSE "For accessing file metadata labels"
132 )
133
134 if (KF5Activities_FOUND)
135 set(HAVE_KACTIVITIES TRUE)
136 endif()
137
138 if (KF5Baloo_FOUND AND KF5BalooWidgets_FOUND AND KF5FileMetaData_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 )
156
157 add_subdirectory(src)
158 add_subdirectory(doc)
159
160 # CMake files
161 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/DolphinVcs")
162
163 configure_package_config_file(
164 "${CMAKE_CURRENT_SOURCE_DIR}/DolphinVcsConfig.cmake.in"
165 "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfig.cmake"
166 INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
167 )
168
169 install(FILES
170 "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfig.cmake"
171 "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfigVersion.cmake"
172 DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
173 COMPONENT Devel
174 )
175
176 install(EXPORT DolphinVcsTargets
177 DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
178 FILE DolphinVcsTargets.cmake
179 )
180
181 install(FILES
182 "${CMAKE_CURRENT_BINARY_DIR}/dolphinvcs_version.h"
183 DESTINATION "${KDE_INSTALL_INCLUDEDIR}/Dolphin"
184 COMPONENT Devel
185 )
186
187 if(FLATPAK)
188 ecm_generate_dbus_service_file(
189 NAME org.freedesktop.FileManager1
190 EXECUTABLE "${KDE_INSTALL_FULL_BINDIR}/dolphin --daemon"
191 SYSTEMD_SERVICE plasma-dolphin.service
192 DESTINATION ${KDE_INSTALL_DBUSSERVICEDIR}
193 )
194 else()
195 ecm_generate_dbus_service_file(
196 NAME org.freedesktop.FileManager1
197 EXECUTABLE "${KDE_INSTALL_FULL_BINDIR}/dolphin --daemon"
198 SYSTEMD_SERVICE plasma-dolphin.service
199 DESTINATION ${KDE_INSTALL_DBUSSERVICEDIR}
200 RENAME org.kde.dolphin.FileManager1.service
201 )
202 endif()
203
204 ecm_install_configured_files(INPUT plasma-dolphin.service.in DESTINATION ${KDE_INSTALL_SYSTEMDUSERUNITDIR})
205
206 ecm_qt_install_logging_categories(
207 EXPORT DOLPHIN
208 FILE dolphin.categories
209 DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}
210 )
211
212 ki18n_install(po)
213 if(KF5DocTools_FOUND)
214 kdoctools_install(po)
215 endif()
216
217 install(FILES completions/dolphin.zsh RENAME _dolphin DESTINATION ${KDE_INSTALL_ZSHAUTOCOMPLETEDIR})
218
219 feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
220
221 include(KDEClangFormat)
222 # add clang-format target
223 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h *.c)
224 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
225
226 include(KDEGitCommitHooks)
227 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)