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