]> cloud.milkyroute.net Git - dolphin.git/blob - CMakeLists.txt
SVN_SILENT made messages (.desktop file) - always resolve ours
[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 "25")
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 "6.9.0")
12
13 # use C++20 like KF6 itself
14 set(CMAKE_CXX_STANDARD 20)
15 set(CMAKE_CXX_EXTENSIONS OFF)
16 set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
17
18 # ECM setup
19 find_package(ECM ${KF6_MIN_VERSION} CONFIG REQUIRED)
20 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
21
22 include(KDEInstallDirs)
23 include(KDECMakeSettings)
24 include(KDECompilerSettings NO_POLICY_SCOPE)
25
26 include(ECMSetupVersion)
27 include(ECMGenerateHeaders)
28 include(ECMGenerateDBusServiceFile)
29 include(ECMConfiguredInstall)
30 include(CMakePackageConfigHelpers)
31 include(GenerateExportHeader)
32 include(FeatureSummary)
33 include(ECMQtDeclareLoggingCategory)
34 include(ECMDeprecationSettings)
35 include(CheckIncludeFiles)
36 include(CheckLibraryExists)
37 include(CheckFunctionExists)
38
39 ecm_setup_version(${RELEASE_SERVICE_VERSION} VARIABLE_PREFIX DOLPHIN
40 VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/src/dolphin_version.h"
41 )
42
43 ecm_setup_version(${RELEASE_SERVICE_VERSION} VARIABLE_PREFIX DOLPHINVCS
44 VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/dolphinvcs_version.h"
45 PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfigVersion.cmake"
46 SOVERSION 6
47 )
48
49 ecm_setup_version(${RELEASE_SERVICE_VERSION} VARIABLE_PREFIX DOLPHINPRIVATE
50 SOVERSION 6
51 )
52
53 find_package(Qt6 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
54 Core
55 Concurrent
56 Widgets
57 Gui
58 DBus
59 )
60
61 if (Qt6Gui_VERSION VERSION_GREATER_EQUAL "6.10.0")
62 find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE)
63 endif()
64
65 if (UNIX AND NOT APPLE AND NOT HAIKU)
66 set(HAVE_X11 TRUE)
67 endif()
68
69 find_package(KF6 ${KF6_MIN_VERSION} REQUIRED COMPONENTS
70 KCMUtils
71 NewStuff
72 CoreAddons
73 I18n
74 DBusAddons
75 Bookmarks
76 Config
77 KIO
78 Parts
79 Solid
80 IconThemes
81 Completion
82 TextWidgets
83 Notifications
84 Crash
85 WindowSystem
86 WidgetsAddons
87 Codecs
88 GuiAddons
89 ColorScheme
90 )
91
92 find_package(KF6UserFeedback ${KF6_MIN_VERSION})
93 set_package_properties(KF6UserFeedback
94 PROPERTIES TYPE OPTIONAL
95 PURPOSE "Used for submission of telemetry data"
96 )
97
98 if(KF6UserFeedback_FOUND)
99 set(HAVE_KUSERFEEDBACK TRUE)
100 endif()
101
102 find_package(KF6 ${KF6_MIN_VERSION} OPTIONAL_COMPONENTS
103 DocTools
104 )
105
106 find_package(PackageKitQt6)
107 set_package_properties(PackageKitQt6
108 PROPERTIES DESCRIPTION "Software Manager integration"
109 TYPE RECOMMENDED
110 PURPOSE "Used in the service menu installer"
111 )
112 if(PackageKitQt6_FOUND)
113 set(HAVE_PACKAGEKIT TRUE)
114 endif()
115
116 find_package(KF6FileMetaData ${KF6_MIN_VERSION})
117 set_package_properties(KF6FileMetaData PROPERTIES
118 URL "https://projects.kde.org/kfilemetadata"
119 TYPE REQUIRED
120 PURPOSE "For accessing file metadata labels and filesystem metadata"
121 )
122
123 find_package(KF6Baloo ${KF6_MIN_VERSION})
124 set_package_properties(KF6Baloo PROPERTIES DESCRIPTION "Baloo Core libraries"
125 URL "https://www.kde.org"
126 TYPE OPTIONAL
127 PURPOSE "For adding desktop-wide search and tagging support to dolphin"
128 )
129
130 find_package(KF6BalooWidgets ${RELEASE_SERVICE_VERSION})
131 set_package_properties(KF6BalooWidgets PROPERTIES DESCRIPTION "Baloos Widgets"
132 URL "https://www.kde.org"
133 TYPE OPTIONAL
134 )
135
136 if (KF6Baloo_FOUND AND KF6BalooWidgets_FOUND)
137 message(STATUS "Baloo packages are found")
138 set(HAVE_BALOO TRUE)
139
140 find_package(Qt6 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
141 Multimedia
142 MultimediaWidgets
143 )
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 AND NOT HAIKU)
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 add_subdirectory(appiumtests)
173
174 # CMake files
175 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/DolphinVcs")
176
177 configure_package_config_file(
178 "${CMAKE_CURRENT_SOURCE_DIR}/DolphinVcsConfig.cmake.in"
179 "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfig.cmake"
180 INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
181 )
182
183 install(FILES
184 "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfig.cmake"
185 "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfigVersion.cmake"
186 DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
187 COMPONENT Devel
188 )
189
190 install(EXPORT DolphinVcsTargets
191 DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
192 FILE DolphinVcsTargets.cmake
193 )
194
195 install(FILES
196 "${CMAKE_CURRENT_BINARY_DIR}/dolphinvcs_version.h"
197 DESTINATION "${KDE_INSTALL_INCLUDEDIR}/Dolphin"
198 COMPONENT Devel
199 )
200
201 if(FLATPAK)
202 ecm_generate_dbus_service_file(
203 NAME org.freedesktop.FileManager1
204 EXECUTABLE "${KDE_INSTALL_FULL_BINDIR}/dolphin --daemon"
205 SYSTEMD_SERVICE plasma-dolphin.service
206 DESTINATION ${KDE_INSTALL_DBUSSERVICEDIR}
207 )
208 else()
209 ecm_generate_dbus_service_file(
210 NAME org.freedesktop.FileManager1
211 EXECUTABLE "${KDE_INSTALL_FULL_BINDIR}/dolphin --daemon"
212 SYSTEMD_SERVICE plasma-dolphin.service
213 DESTINATION ${KDE_INSTALL_DBUSSERVICEDIR}
214 RENAME org.kde.dolphin.FileManager1.service
215 )
216 endif()
217
218 ecm_install_configured_files(INPUT plasma-dolphin.service.in DESTINATION ${KDE_INSTALL_SYSTEMDUSERUNITDIR})
219
220 ecm_qt_install_logging_categories(
221 EXPORT DOLPHIN
222 FILE dolphin.categories
223 DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}
224 )
225
226 ki18n_install(po)
227 if(KF6DocTools_FOUND)
228 kdoctools_install(po)
229 endif()
230
231 install(FILES completions/dolphin.zsh RENAME _dolphin DESTINATION ${KDE_INSTALL_ZSHAUTOCOMPLETEDIR})
232
233 feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
234
235 include(KDEClangFormat)
236 # add clang-format target
237 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h *.c)
238 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
239
240 include(KDEGitCommitHooks)
241 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)