]> cloud.milkyroute.net Git - dolphin.git/blob - CMakeLists.txt
Haiku build fixes
[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 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 AND NOT HAIKU)
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 add_subdirectory(appiumtests)
169
170 # CMake files
171 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/DolphinVcs")
172
173 configure_package_config_file(
174 "${CMAKE_CURRENT_SOURCE_DIR}/DolphinVcsConfig.cmake.in"
175 "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfig.cmake"
176 INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
177 )
178
179 install(FILES
180 "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfig.cmake"
181 "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfigVersion.cmake"
182 DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
183 COMPONENT Devel
184 )
185
186 install(EXPORT DolphinVcsTargets
187 DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
188 FILE DolphinVcsTargets.cmake
189 )
190
191 install(FILES
192 "${CMAKE_CURRENT_BINARY_DIR}/dolphinvcs_version.h"
193 DESTINATION "${KDE_INSTALL_INCLUDEDIR}/Dolphin"
194 COMPONENT Devel
195 )
196
197 if(FLATPAK)
198 ecm_generate_dbus_service_file(
199 NAME org.freedesktop.FileManager1
200 EXECUTABLE "${KDE_INSTALL_FULL_BINDIR}/dolphin --daemon"
201 SYSTEMD_SERVICE plasma-dolphin.service
202 DESTINATION ${KDE_INSTALL_DBUSSERVICEDIR}
203 )
204 else()
205 ecm_generate_dbus_service_file(
206 NAME org.freedesktop.FileManager1
207 EXECUTABLE "${KDE_INSTALL_FULL_BINDIR}/dolphin --daemon"
208 SYSTEMD_SERVICE plasma-dolphin.service
209 DESTINATION ${KDE_INSTALL_DBUSSERVICEDIR}
210 RENAME org.kde.dolphin.FileManager1.service
211 )
212 endif()
213
214 ecm_install_configured_files(INPUT plasma-dolphin.service.in DESTINATION ${KDE_INSTALL_SYSTEMDUSERUNITDIR})
215
216 ecm_qt_install_logging_categories(
217 EXPORT DOLPHIN
218 FILE dolphin.categories
219 DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}
220 )
221
222 ki18n_install(po)
223 if(KF6DocTools_FOUND)
224 kdoctools_install(po)
225 endif()
226
227 install(FILES completions/dolphin.zsh RENAME _dolphin DESTINATION ${KDE_INSTALL_ZSHAUTOCOMPLETEDIR})
228
229 feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
230
231 include(KDEClangFormat)
232 # add clang-format target
233 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h *.c)
234 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
235
236 include(KDEGitCommitHooks)
237 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)