]> cloud.milkyroute.net Git - dolphin.git/blob - CMakeLists.txt
Port to Qt6
[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 "23")
5 set (RELEASE_SERVICE_VERSION_MINOR "03")
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
31 ecm_setup_version(${RELEASE_SERVICE_VERSION} VARIABLE_PREFIX DOLPHIN
32 VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/src/dolphin_version.h"
33 )
34
35 ecm_setup_version(${RELEASE_SERVICE_VERSION} VARIABLE_PREFIX DOLPHINVCS
36 VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/dolphinvcs_version.h"
37 PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfigVersion.cmake"
38 SOVERSION ${QT_MAJOR_VERSION}
39 )
40
41 ecm_setup_version(${RELEASE_SERVICE_VERSION} VARIABLE_PREFIX DOLPHINPRIVATE
42 SOVERSION ${QT_MAJOR_VERSION}
43 )
44
45 find_package(Qt${QT_MAJOR_VERSION} ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
46 Core
47 Concurrent
48 Widgets
49 Gui
50 DBus
51 )
52
53 if (UNIX AND NOT APPLE)
54 set(HAVE_X11 TRUE)
55
56 if (QT_MAJOR_VERSION STREQUAL "5")
57 find_package(Qt5X11Extras REQUIRED)
58 endif()
59 endif()
60
61 find_package(KF6 ${KF6_MIN_VERSION} REQUIRED COMPONENTS
62 KCMUtils
63 NewStuff
64 CoreAddons
65 I18n
66 DBusAddons
67 Bookmarks
68 Config
69 KIO
70 Parts
71 Solid
72 IconThemes
73 Completion
74 TextWidgets
75 Notifications
76 Crash
77 WindowSystem
78 WidgetsAddons
79 Codecs
80 MoreTools
81 )
82
83 find_package(KUserFeedbackQt6 1.2.0)
84 set_package_properties(KUserFeedback
85 PROPERTIES TYPE OPTIONAL
86 PURPOSE "Used for submission of telemetry data"
87 )
88
89 if(KUserFeedbackQt6_FOUND)
90 message ("HAVE_KUSERFEEDBACK")
91 set(HAVE_KUSERFEEDBACK TRUE)
92 endif()
93
94 find_package(KF6 ${KF6_MIN_VERSION} OPTIONAL_COMPONENTS
95 Activities
96 DocTools
97 )
98 set_package_properties(KF6Activities PROPERTIES DESCRIPTION "KActivities libraries"
99 URL "https://www.kde.org"
100 TYPE OPTIONAL
101 PURPOSE "For tracking which folders are frequently accessed on a Plasma desktop"
102 )
103
104 find_package(Phonon4Qt${QT_MAJOR_VERSION} CONFIG REQUIRED)
105
106 find_package(PackageKitQt${QT_MAJOR_VERSION})
107 set_package_properties(PackageKitQt${QT_MAJOR_VERSION}
108 PROPERTIES DESCRIPTION "Software Manager integration"
109 TYPE OPTIONAL
110 PURPOSE "Used in the service menu installer"
111 )
112 if(PackageKitQt${QT_MAJOR_VERSION}_FOUND)
113 set(HAVE_PACKAGEKIT TRUE)
114 endif()
115
116 find_package(KF6Baloo ${KF6_MIN_VERSION})
117 set_package_properties(KF6Baloo PROPERTIES DESCRIPTION "Baloo Core libraries"
118 URL "https://www.kde.org"
119 TYPE OPTIONAL
120 PURPOSE "For adding desktop-wide search and tagging support to dolphin"
121 )
122
123 find_package(KF6BalooWidgets 23.07.70)
124 set_package_properties(KF6BalooWidgets PROPERTIES DESCRIPTION "Baloos Widgets"
125 URL "https://www.kde.org"
126 TYPE OPTIONAL
127 )
128
129 find_package(KF6FileMetaData ${KF6_MIN_VERSION})
130 set_package_properties(KF6FileMetaData PROPERTIES
131 URL "https://projects.kde.org/kfilemetadata"
132 TYPE OPTIONAL
133 PURPOSE "For accessing file metadata labels"
134 )
135
136 if (KF6Activities_FOUND)
137 set(HAVE_KACTIVITIES TRUE)
138 endif()
139
140 if (KF6Baloo_FOUND AND KF6BalooWidgets_FOUND AND KF6FileMetaData_FOUND)
141 message(STATUS "Baloo packages are found")
142 set(HAVE_BALOO TRUE)
143 else()
144 message(WARNING "Baloo packages not found. They are needed for the metadata features of Dolphin (including the information panel).")
145 endif()
146
147 # TODO: drop HAVE_TERMINAL once we are sure the terminal panel works on Windows too.
148 if(WIN32)
149 set(HAVE_TERMINAL FALSE)
150 else()
151 set(HAVE_TERMINAL TRUE)
152 endif()
153
154 add_subdirectory(src)
155 add_subdirectory(doc)
156
157 # CMake files
158 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/DolphinVcs")
159
160 configure_package_config_file(
161 "${CMAKE_CURRENT_SOURCE_DIR}/DolphinVcsConfig.cmake.in"
162 "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfig.cmake"
163 INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
164 )
165
166 install(FILES
167 "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfig.cmake"
168 "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfigVersion.cmake"
169 DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
170 COMPONENT Devel
171 )
172
173 install(EXPORT DolphinVcsTargets
174 DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
175 FILE DolphinVcsTargets.cmake
176 )
177
178 install(FILES
179 "${CMAKE_CURRENT_BINARY_DIR}/dolphinvcs_version.h"
180 DESTINATION "${KDE_INSTALL_INCLUDEDIR}/Dolphin"
181 COMPONENT Devel
182 )
183
184 if(FLATPAK)
185 ecm_generate_dbus_service_file(
186 NAME org.freedesktop.FileManager1
187 EXECUTABLE "${KDE_INSTALL_FULL_BINDIR}/dolphin --daemon"
188 SYSTEMD_SERVICE plasma-dolphin.service
189 DESTINATION ${KDE_INSTALL_DBUSSERVICEDIR}
190 )
191 else()
192 ecm_generate_dbus_service_file(
193 NAME org.freedesktop.FileManager1
194 EXECUTABLE "${KDE_INSTALL_FULL_BINDIR}/dolphin --daemon"
195 SYSTEMD_SERVICE plasma-dolphin.service
196 DESTINATION ${KDE_INSTALL_DBUSSERVICEDIR}
197 RENAME org.kde.dolphin.FileManager1.service
198 )
199 endif()
200
201 ecm_install_configured_files(INPUT plasma-dolphin.service.in DESTINATION ${KDE_INSTALL_SYSTEMDUSERUNITDIR})
202
203 ecm_qt_install_logging_categories(
204 EXPORT DOLPHIN
205 FILE dolphin.categories
206 DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}
207 )
208
209 ki18n_install(po)
210 if(KF6DocTools_FOUND)
211 kdoctools_install(po)
212 endif()
213
214 install(FILES completions/dolphin.zsh RENAME _dolphin DESTINATION ${KDE_INSTALL_ZSHAUTOCOMPLETEDIR})
215
216 feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
217
218 include(KDEClangFormat)
219 # add clang-format target
220 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h *.c)
221 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
222
223 include(KDEGitCommitHooks)
224 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)