]> cloud.milkyroute.net Git - dolphin.git/blob - CMakeLists.txt
Use separate KMoreTools library
[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(KF6MoreTools)
83 find_package(KUserFeedback 1.2.0)
84 set_package_properties(KUserFeedback
85 PROPERTIES TYPE OPTIONAL
86 PURPOSE "Used for submission of telemetry data"
87 )
88
89 if(KUserFeedback_FOUND)
90 set(HAVE_KUSERFEEDBACK TRUE)
91 endif()
92
93 find_package(KF6 ${KF6_MIN_VERSION} OPTIONAL_COMPONENTS
94 Activities
95 DocTools
96 )
97 set_package_properties(KF6Activities PROPERTIES DESCRIPTION "KActivities libraries"
98 URL "https://www.kde.org"
99 TYPE OPTIONAL
100 PURPOSE "For tracking which folders are frequently accessed on a Plasma desktop"
101 )
102
103 find_package(Phonon4Qt${QT_MAJOR_VERSION} CONFIG REQUIRED)
104
105 find_package(PackageKitQt${QT_MAJOR_VERSION})
106 set_package_properties(PackageKitQt${QT_MAJOR_VERSION}
107 PROPERTIES DESCRIPTION "Software Manager integration"
108 TYPE OPTIONAL
109 PURPOSE "Used in the service menu installer"
110 )
111 if(PackageKitQt${QT_MAJOR_VERSION}_FOUND)
112 set(HAVE_PACKAGEKIT TRUE)
113 endif()
114
115 find_package(KF6Baloo ${KF6_MIN_VERSION})
116 set_package_properties(KF6Baloo PROPERTIES DESCRIPTION "Baloo Core libraries"
117 URL "https://www.kde.org"
118 TYPE OPTIONAL
119 PURPOSE "For adding desktop-wide search and tagging support to dolphin"
120 )
121
122 find_package(KF6BalooWidgets 19.07.70)
123 set_package_properties(KF6BalooWidgets PROPERTIES DESCRIPTION "Baloos Widgets"
124 URL "https://www.kde.org"
125 TYPE OPTIONAL
126 )
127
128 find_package(KF6FileMetaData ${KF6_MIN_VERSION})
129 set_package_properties(KF6FileMetaData PROPERTIES
130 URL "https://projects.kde.org/kfilemetadata"
131 TYPE OPTIONAL
132 PURPOSE "For accessing file metadata labels"
133 )
134
135 if (KF6Activities_FOUND)
136 set(HAVE_KACTIVITIES TRUE)
137 endif()
138
139 if (KF6Baloo_FOUND AND KF6BalooWidgets_FOUND AND KF6FileMetaData_FOUND)
140 message(STATUS "Baloo packages are found")
141 set(HAVE_BALOO TRUE)
142 else()
143 message(WARNING "Baloo packages not found. They are needed for the metadata features of Dolphin (including the information panel).")
144 endif()
145
146 # TODO: drop HAVE_TERMINAL once we are sure the terminal panel works on Windows too.
147 if(WIN32)
148 set(HAVE_TERMINAL FALSE)
149 else()
150 set(HAVE_TERMINAL TRUE)
151 endif()
152
153 ecm_set_disabled_deprecation_versions(
154 QT 5.15
155 KF 5.90
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)