]> cloud.milkyroute.net Git - dolphin.git/blob - CMakeLists.txt
Merge remote-tracking branch 'origin/master' into 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 "11")
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 "6.4.0")
11 set(KF6_MIN_VERSION "5.240.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 include(CheckIncludeFiles)
31 include(CheckLibraryExists)
32
33 ecm_setup_version(${RELEASE_SERVICE_VERSION} VARIABLE_PREFIX DOLPHIN
34 VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/src/dolphin_version.h"
35 )
36
37 ecm_setup_version(${RELEASE_SERVICE_VERSION} VARIABLE_PREFIX DOLPHINVCS
38 VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/dolphinvcs_version.h"
39 PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfigVersion.cmake"
40 SOVERSION ${QT_MAJOR_VERSION}
41 )
42
43 ecm_setup_version(${RELEASE_SERVICE_VERSION} VARIABLE_PREFIX DOLPHINPRIVATE
44 SOVERSION ${QT_MAJOR_VERSION}
45 )
46
47 find_package(Qt${QT_MAJOR_VERSION} ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
48 Core
49 Concurrent
50 Widgets
51 Gui
52 DBus
53 )
54
55 if (UNIX AND NOT APPLE)
56 set(HAVE_X11 TRUE)
57
58 if (QT_MAJOR_VERSION STREQUAL "5")
59 find_package(Qt5X11Extras REQUIRED)
60 endif()
61 endif()
62
63 find_package(KF6 ${KF6_MIN_VERSION} REQUIRED COMPONENTS
64 KCMUtils
65 NewStuff
66 CoreAddons
67 I18n
68 DBusAddons
69 Bookmarks
70 Config
71 KIO
72 Parts
73 Solid
74 IconThemes
75 Completion
76 TextWidgets
77 Notifications
78 Crash
79 WindowSystem
80 WidgetsAddons
81 Codecs
82 MoreTools
83 )
84
85 find_package(KUserFeedbackQt6 1.2.1)
86 set_package_properties(KUserFeedbackQt6
87 PROPERTIES TYPE OPTIONAL
88 PURPOSE "Used for submission of telemetry data"
89 )
90
91 if(KUserFeedbackQt6_FOUND)
92 set(HAVE_KUSERFEEDBACK TRUE)
93 endif()
94
95 find_package(KF6 ${KF6_MIN_VERSION} OPTIONAL_COMPONENTS
96 Activities
97 DocTools
98 )
99 set_package_properties(KF6Activities PROPERTIES DESCRIPTION "KActivities libraries"
100 URL "https://www.kde.org"
101 TYPE OPTIONAL
102 PURPOSE "For tracking which folders are frequently accessed on a Plasma desktop"
103 )
104
105 find_package(Phonon4Qt${QT_MAJOR_VERSION} CONFIG REQUIRED)
106
107 find_package(PackageKitQt${QT_MAJOR_VERSION})
108 set_package_properties(PackageKitQt${QT_MAJOR_VERSION}
109 PROPERTIES DESCRIPTION "Software Manager integration"
110 TYPE OPTIONAL
111 PURPOSE "Used in the service menu installer"
112 )
113 if(PackageKitQt${QT_MAJOR_VERSION}_FOUND)
114 set(HAVE_PACKAGEKIT TRUE)
115 endif()
116
117 find_package(KF6Baloo ${KF6_MIN_VERSION})
118 set_package_properties(KF6Baloo PROPERTIES DESCRIPTION "Baloo Core libraries"
119 URL "https://www.kde.org"
120 TYPE OPTIONAL
121 PURPOSE "For adding desktop-wide search and tagging support to dolphin"
122 )
123
124 find_package(KF6BalooWidgets ${RELEASE_SERVICE_VERSION})
125 set_package_properties(KF6BalooWidgets PROPERTIES DESCRIPTION "Baloos Widgets"
126 URL "https://www.kde.org"
127 TYPE OPTIONAL
128 )
129
130 find_package(KF6FileMetaData ${KF6_MIN_VERSION})
131 set_package_properties(KF6FileMetaData PROPERTIES
132 URL "https://projects.kde.org/kfilemetadata"
133 TYPE OPTIONAL
134 PURPOSE "For accessing file metadata labels"
135 )
136
137 if (KF6Activities_FOUND)
138 set(HAVE_KACTIVITIES TRUE)
139 endif()
140
141 if (KF6Baloo_FOUND AND KF6BalooWidgets_FOUND AND KF6FileMetaData_FOUND)
142 message(STATUS "Baloo packages are found")
143 set(HAVE_BALOO TRUE)
144 else()
145 message(WARNING "Baloo packages not found. They are needed for the metadata features of Dolphin (including the information panel).")
146 endif()
147
148 # TODO: drop HAVE_TERMINAL once we are sure the terminal panel works on Windows too.
149 if(WIN32)
150 set(HAVE_TERMINAL FALSE)
151 else()
152 set(HAVE_TERMINAL TRUE)
153 endif()
154
155 # Compatibility with platforms without native fts (e.g. musl)
156 check_include_files("sys/types.h;sys/stat.h;fts.h" HAVE_FTS_H)
157 if(HAVE_FTS_H)
158 check_function_exists(fts_open HAVE_FTS_OPEN)
159 if(NOT HAVE_FTS_OPEN)
160 check_library_exists(fts fts_open "" HAVE_LIB_FTS)
161 endif()
162 endif()
163
164 if(HAVE_LIB_FTS)
165 set(FTS_LIB fts)
166 else()
167 set(FTS_LIB "")
168 endif()
169
170 add_subdirectory(src)
171 add_subdirectory(doc)
172
173 # CMake files
174 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/DolphinVcs")
175
176 configure_package_config_file(
177 "${CMAKE_CURRENT_SOURCE_DIR}/DolphinVcsConfig.cmake.in"
178 "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfig.cmake"
179 INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
180 )
181
182 install(FILES
183 "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfig.cmake"
184 "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfigVersion.cmake"
185 DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
186 COMPONENT Devel
187 )
188
189 install(EXPORT DolphinVcsTargets
190 DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
191 FILE DolphinVcsTargets.cmake
192 )
193
194 install(FILES
195 "${CMAKE_CURRENT_BINARY_DIR}/dolphinvcs_version.h"
196 DESTINATION "${KDE_INSTALL_INCLUDEDIR}/Dolphin"
197 COMPONENT Devel
198 )
199
200 if(FLATPAK)
201 ecm_generate_dbus_service_file(
202 NAME org.freedesktop.FileManager1
203 EXECUTABLE "${KDE_INSTALL_FULL_BINDIR}/dolphin --daemon"
204 SYSTEMD_SERVICE plasma-dolphin.service
205 DESTINATION ${KDE_INSTALL_DBUSSERVICEDIR}
206 )
207 else()
208 ecm_generate_dbus_service_file(
209 NAME org.freedesktop.FileManager1
210 EXECUTABLE "${KDE_INSTALL_FULL_BINDIR}/dolphin --daemon"
211 SYSTEMD_SERVICE plasma-dolphin.service
212 DESTINATION ${KDE_INSTALL_DBUSSERVICEDIR}
213 RENAME org.kde.dolphin.FileManager1.service
214 )
215 endif()
216
217 ecm_install_configured_files(INPUT plasma-dolphin.service.in DESTINATION ${KDE_INSTALL_SYSTEMDUSERUNITDIR})
218
219 ecm_qt_install_logging_categories(
220 EXPORT DOLPHIN
221 FILE dolphin.categories
222 DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}
223 )
224
225 ki18n_install(po)
226 if(KF6DocTools_FOUND)
227 kdoctools_install(po)
228 endif()
229
230 install(FILES completions/dolphin.zsh RENAME _dolphin DESTINATION ${KDE_INSTALL_ZSHAUTOCOMPLETEDIR})
231
232 feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
233
234 include(KDEClangFormat)
235 # add clang-format target
236 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h *.c)
237 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
238
239 include(KDEGitCommitHooks)
240 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)