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