]> cloud.milkyroute.net Git - dolphin.git/blob - CMakeLists.txt
GIT_SILENT Upgrade release service version to 24.07.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 "24")
5 set (RELEASE_SERVICE_VERSION_MINOR "07")
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 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)
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 )
80
81 find_package(KF6UserFeedback ${KF6_MIN_VERSION})
82 set_package_properties(KF6UserFeedback
83 PROPERTIES TYPE OPTIONAL
84 PURPOSE "Used for submission of telemetry data"
85 )
86
87 if(KF6UserFeedback_FOUND)
88 set(HAVE_KUSERFEEDBACK TRUE)
89 endif()
90
91 find_package(KF6 ${KF6_MIN_VERSION} OPTIONAL_COMPONENTS
92 DocTools
93 )
94 find_package(PlasmaActivities)
95 set_package_properties(PlasmaActivities PROPERTIES DESCRIPTION "PlasmaActivities libraries"
96 URL "https://www.kde.org"
97 TYPE OPTIONAL
98 PURPOSE "For tracking which folders are frequently accessed on a Plasma desktop"
99 )
100
101 find_package(Phonon4Qt6 CONFIG REQUIRED)
102
103 find_package(PackageKitQt6)
104 set_package_properties(PackageKitQt6
105 PROPERTIES DESCRIPTION "Software Manager integration"
106 TYPE OPTIONAL
107 PURPOSE "Used in the service menu installer"
108 )
109 if(PackageKitQt6_FOUND)
110 set(HAVE_PACKAGEKIT TRUE)
111 endif()
112
113 find_package(KF6Baloo ${KF6_MIN_VERSION})
114 set_package_properties(KF6Baloo PROPERTIES DESCRIPTION "Baloo Core libraries"
115 URL "https://www.kde.org"
116 TYPE OPTIONAL
117 PURPOSE "For adding desktop-wide search and tagging support to dolphin"
118 )
119
120 find_package(KF6BalooWidgets ${RELEASE_SERVICE_VERSION})
121 set_package_properties(KF6BalooWidgets PROPERTIES DESCRIPTION "Baloos Widgets"
122 URL "https://www.kde.org"
123 TYPE OPTIONAL
124 )
125
126 find_package(KF6FileMetaData ${KF6_MIN_VERSION})
127 set_package_properties(KF6FileMetaData PROPERTIES
128 URL "https://projects.kde.org/kfilemetadata"
129 TYPE OPTIONAL
130 PURPOSE "For accessing file metadata labels"
131 )
132
133 if (PlasmaActivities_FOUND)
134 set(HAVE_PLASMA_ACTIVITIES TRUE)
135 endif()
136
137 if (KF6Baloo_FOUND AND KF6BalooWidgets_FOUND AND KF6FileMetaData_FOUND)
138 message(STATUS "Baloo packages are found")
139 set(HAVE_BALOO TRUE)
140 else()
141 message(WARNING "Baloo packages not found. They are needed for the metadata features of Dolphin (including the information panel).")
142 endif()
143
144 # TODO: drop HAVE_TERMINAL once we are sure the terminal panel works on Windows too.
145 if(WIN32)
146 set(HAVE_TERMINAL FALSE)
147 else()
148 set(HAVE_TERMINAL TRUE)
149 endif()
150
151 # Compatibility with platforms without native fts (e.g. musl)
152 check_include_files("sys/types.h;sys/stat.h;fts.h" HAVE_FTS_H)
153 if(HAVE_FTS_H)
154 check_function_exists(fts_open HAVE_FTS_OPEN)
155 if(NOT HAVE_FTS_OPEN)
156 check_library_exists(fts fts_open "" HAVE_LIB_FTS)
157 endif()
158 endif()
159
160 if(HAVE_LIB_FTS)
161 set(FTS_LIB fts)
162 else()
163 set(FTS_LIB "")
164 endif()
165
166 add_subdirectory(src)
167 add_subdirectory(doc)
168
169 # CMake files
170 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/DolphinVcs")
171
172 configure_package_config_file(
173 "${CMAKE_CURRENT_SOURCE_DIR}/DolphinVcsConfig.cmake.in"
174 "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfig.cmake"
175 INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
176 )
177
178 install(FILES
179 "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfig.cmake"
180 "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfigVersion.cmake"
181 DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
182 COMPONENT Devel
183 )
184
185 install(EXPORT DolphinVcsTargets
186 DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
187 FILE DolphinVcsTargets.cmake
188 )
189
190 install(FILES
191 "${CMAKE_CURRENT_BINARY_DIR}/dolphinvcs_version.h"
192 DESTINATION "${KDE_INSTALL_INCLUDEDIR}/Dolphin"
193 COMPONENT Devel
194 )
195
196 if(FLATPAK)
197 ecm_generate_dbus_service_file(
198 NAME org.freedesktop.FileManager1
199 EXECUTABLE "${KDE_INSTALL_FULL_BINDIR}/dolphin --daemon"
200 SYSTEMD_SERVICE plasma-dolphin.service
201 DESTINATION ${KDE_INSTALL_DBUSSERVICEDIR}
202 )
203 else()
204 ecm_generate_dbus_service_file(
205 NAME org.freedesktop.FileManager1
206 EXECUTABLE "${KDE_INSTALL_FULL_BINDIR}/dolphin --daemon"
207 SYSTEMD_SERVICE plasma-dolphin.service
208 DESTINATION ${KDE_INSTALL_DBUSSERVICEDIR}
209 RENAME org.kde.dolphin.FileManager1.service
210 )
211 endif()
212
213 ecm_install_configured_files(INPUT plasma-dolphin.service.in DESTINATION ${KDE_INSTALL_SYSTEMDUSERUNITDIR})
214
215 ecm_qt_install_logging_categories(
216 EXPORT DOLPHIN
217 FILE dolphin.categories
218 DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}
219 )
220
221 ki18n_install(po)
222 if(KF6DocTools_FOUND)
223 kdoctools_install(po)
224 endif()
225
226 install(FILES completions/dolphin.zsh RENAME _dolphin DESTINATION ${KDE_INSTALL_ZSHAUTOCOMPLETEDIR})
227
228 feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
229
230 include(KDEClangFormat)
231 # add clang-format target
232 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h *.c)
233 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
234
235 include(KDEGitCommitHooks)
236 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)