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