]> cloud.milkyroute.net Git - dolphin.git/blob - CMakeLists.txt
GIT_SILENT Upgrade release service version to 25.03.70.
[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 "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 "6.4.0")
11 set(KF6_MIN_VERSION "6.2.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 include(CheckFunctionExists)
33
34 ecm_setup_version(${RELEASE_SERVICE_VERSION} VARIABLE_PREFIX DOLPHIN
35 VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/src/dolphin_version.h"
36 )
37
38 ecm_setup_version(${RELEASE_SERVICE_VERSION} VARIABLE_PREFIX DOLPHINVCS
39 VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/dolphinvcs_version.h"
40 PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfigVersion.cmake"
41 SOVERSION 6
42 )
43
44 ecm_setup_version(${RELEASE_SERVICE_VERSION} VARIABLE_PREFIX DOLPHINPRIVATE
45 SOVERSION 6
46 )
47
48 find_package(Qt6 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
49 Core
50 Concurrent
51 Widgets
52 Gui
53 DBus
54 )
55
56 if (UNIX AND NOT APPLE AND NOT HAIKU)
57 set(HAVE_X11 TRUE)
58 endif()
59
60 find_package(KF6 ${KF6_MIN_VERSION} REQUIRED COMPONENTS
61 KCMUtils
62 NewStuff
63 CoreAddons
64 I18n
65 DBusAddons
66 Bookmarks
67 Config
68 KIO
69 Parts
70 Solid
71 IconThemes
72 Completion
73 TextWidgets
74 Notifications
75 Crash
76 WindowSystem
77 WidgetsAddons
78 Codecs
79 GuiAddons
80 )
81
82 find_package(KF6UserFeedback ${KF6_MIN_VERSION})
83 set_package_properties(KF6UserFeedback
84 PROPERTIES TYPE OPTIONAL
85 PURPOSE "Used for submission of telemetry data"
86 )
87
88 if(KF6UserFeedback_FOUND)
89 set(HAVE_KUSERFEEDBACK TRUE)
90 endif()
91
92 find_package(KF6 ${KF6_MIN_VERSION} OPTIONAL_COMPONENTS
93 DocTools
94 )
95
96 find_package(Phonon4Qt6 CONFIG REQUIRED)
97
98 find_package(PackageKitQt6)
99 set_package_properties(PackageKitQt6
100 PROPERTIES DESCRIPTION "Software Manager integration"
101 TYPE RECOMMENDED
102 PURPOSE "Used in the service menu installer"
103 )
104 if(PackageKitQt6_FOUND)
105 set(HAVE_PACKAGEKIT TRUE)
106 endif()
107
108 find_package(KF6FileMetaData ${KF6_MIN_VERSION})
109 set_package_properties(KF6FileMetaData PROPERTIES
110 URL "https://projects.kde.org/kfilemetadata"
111 TYPE REQUIRED
112 PURPOSE "For accessing file metadata labels and filesystem metadata"
113 )
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 ${RELEASE_SERVICE_VERSION})
123 set_package_properties(KF6BalooWidgets PROPERTIES DESCRIPTION "Baloos Widgets"
124 URL "https://www.kde.org"
125 TYPE OPTIONAL
126 )
127
128 if (KF6Baloo_FOUND AND KF6BalooWidgets_FOUND)
129 message(STATUS "Baloo packages are found")
130 set(HAVE_BALOO TRUE)
131 else()
132 message(WARNING "Baloo packages not found. They are needed for the metadata features of Dolphin (including the information panel).")
133 endif()
134
135 # TODO: drop HAVE_TERMINAL once we are sure the terminal panel works on Windows too.
136 if(WIN32)
137 set(HAVE_TERMINAL FALSE)
138 else()
139 set(HAVE_TERMINAL TRUE)
140 endif()
141
142 # Compatibility with platforms without native fts (e.g. musl)
143 check_include_files("sys/types.h;sys/stat.h;fts.h" HAVE_FTS_H)
144 if(HAVE_FTS_H AND NOT HAIKU)
145 check_function_exists(fts_open HAVE_FTS_OPEN)
146 if(NOT HAVE_FTS_OPEN)
147 check_library_exists(fts fts_open "" HAVE_LIB_FTS)
148 endif()
149 endif()
150
151 if(HAVE_LIB_FTS)
152 set(FTS_LIB fts)
153 else()
154 set(FTS_LIB "")
155 endif()
156
157 add_subdirectory(src)
158 add_subdirectory(doc)
159 add_subdirectory(appiumtests)
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)