]> cloud.milkyroute.net Git - dolphin.git/blob - CMakeLists.txt
Build without KDE & Qt derecations
[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 "22")
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 "5.15.0")
11 set(KF5_MIN_VERSION "5.89.0")
12
13 set(CMAKE_CXX_STANDARD 17)
14 set(CMAKE_CXX_STANDARD_REQUIRED ON)
15
16 # ECM setup
17 find_package(ECM ${KF5_MIN_VERSION} CONFIG REQUIRED)
18 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
19
20 include(ECMSetupVersion)
21 include(ECMGenerateHeaders)
22 include(ECMGenerateDBusServiceFile)
23 include(ECMConfiguredInstall)
24 include(CMakePackageConfigHelpers)
25 include(GenerateExportHeader)
26 include(FeatureSummary)
27 include(KDEInstallDirs)
28 include(KDECMakeSettings)
29 include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE)
30 include(ECMQtDeclareLoggingCategory)
31
32 ecm_setup_version(${RELEASE_SERVICE_VERSION} VARIABLE_PREFIX DOLPHIN
33 VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/src/dolphin_version.h"
34 )
35
36 ecm_setup_version("5.0.0" VARIABLE_PREFIX DOLPHINVCS
37 VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/dolphinvcs_version.h"
38 PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfigVersion.cmake"
39 SOVERSION 5
40 )
41
42 ecm_setup_version("5.0.0" VARIABLE_PREFIX DOLPHINPRIVATE
43 SOVERSION 5
44 )
45
46 find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
47 Core
48 Concurrent
49 Widgets
50 Gui
51 DBus
52 )
53
54 find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS
55 KCMUtils
56 NewStuff
57 CoreAddons
58 I18n
59 DBusAddons
60 Bookmarks
61 Config
62 KIO
63 Parts
64 Solid
65 IconThemes
66 Completion
67 TextWidgets
68 Notifications
69 Crash
70 WindowSystem
71 )
72
73 find_package(KUserFeedback 1.0.0)
74 set_package_properties(KUserFeedback
75 PROPERTIES TYPE OPTIONAL
76 PURPOSE "Used for submission of telemetry data"
77 )
78
79 if(KUserFeedback_FOUND)
80 set(HAVE_KUSERFEEDBACK TRUE)
81 endif()
82
83 find_package(KF5 ${KF5_MIN_VERSION} OPTIONAL_COMPONENTS
84 Activities
85 DocTools
86 )
87 set_package_properties(KF5Activities PROPERTIES DESCRIPTION "KActivities libraries"
88 URL "https://www.kde.org"
89 TYPE OPTIONAL
90 PURPOSE "For tracking which folders are frequently accessed on a Plasma desktop"
91 )
92
93 find_package(Phonon4Qt5 CONFIG REQUIRED)
94
95 find_package(PackageKitQt5)
96 set_package_properties(PackageKitQt5
97 PROPERTIES DESCRIPTION "Software Manager integration"
98 TYPE OPTIONAL
99 PURPOSE "Used in the service menu installer"
100 )
101 if(PackageKitQt5_FOUND)
102 set(HAVE_PACKAGEKIT TRUE)
103 endif()
104
105 find_package(KF5Baloo ${KF5_MIN_VERSION})
106 set_package_properties(KF5Baloo PROPERTIES DESCRIPTION "Baloo Core libraries"
107 URL "https://www.kde.org"
108 TYPE OPTIONAL
109 PURPOSE "For adding desktop-wide search and tagging support to dolphin"
110 )
111
112 find_package(KF5BalooWidgets 19.07.70)
113 set_package_properties(KF5BalooWidgets PROPERTIES DESCRIPTION "Baloos Widgets"
114 URL "https://www.kde.org"
115 TYPE OPTIONAL
116 )
117
118 find_package(KF5FileMetaData ${KF5_MIN_VERSION})
119 set_package_properties(KF5FileMetaData PROPERTIES
120 URL "https://projects.kde.org/kfilemetadata"
121 TYPE OPTIONAL
122 PURPOSE "For accessing file metadata labels"
123 )
124
125 if (KF5Activities_FOUND)
126 set(HAVE_KACTIVITIES TRUE)
127 endif()
128
129 if (KF5Baloo_FOUND AND KF5BalooWidgets_FOUND AND KF5FileMetaData_FOUND)
130 message(STATUS "Baloo packages are found")
131 set(HAVE_BALOO TRUE)
132 else()
133 message(WARNING "Baloo packages not found. They are needed for the metadata features of Dolphin (including the information panel).")
134 endif()
135
136 # TODO: drop HAVE_TERMINAL once we are sure the terminal panel works on Windows too.
137 if(WIN32)
138 set(HAVE_TERMINAL FALSE)
139 else()
140 set(HAVE_TERMINAL TRUE)
141 endif()
142
143 add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x050f00)
144 add_definitions(-DKF_DISABLE_DEPRECATED_BEFORE_AND_AT=0x055800)
145
146 add_subdirectory(src)
147 add_subdirectory(doc)
148
149 # CMake files
150 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/DolphinVcs")
151
152 configure_package_config_file(
153 "${CMAKE_CURRENT_SOURCE_DIR}/DolphinVcsConfig.cmake.in"
154 "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfig.cmake"
155 INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
156 )
157
158 install(FILES
159 "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfig.cmake"
160 "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfigVersion.cmake"
161 DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
162 COMPONENT Devel
163 )
164
165 install(EXPORT DolphinVcsTargets
166 DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
167 FILE DolphinVcsTargets.cmake
168 )
169
170 install(FILES
171 "${CMAKE_CURRENT_BINARY_DIR}/dolphinvcs_version.h"
172 DESTINATION "${KDE_INSTALL_INCLUDEDIR}/Dolphin"
173 COMPONENT Devel
174 )
175
176 ecm_generate_dbus_service_file(
177 NAME org.freedesktop.FileManager1
178 EXECUTABLE "${KDE_INSTALL_FULL_BINDIR}/dolphin --daemon"
179 SYSTEMD_SERVICE plasma-dolphin.service
180 DESTINATION ${KDE_INSTALL_DBUSSERVICEDIR}
181 RENAME org.kde.dolphin.FileManager1.service
182 )
183
184 ecm_install_configured_files(INPUT plasma-dolphin.service.in DESTINATION ${SYSTEMD_USER_UNIT_INSTALL_DIR})
185
186 ecm_qt_install_logging_categories(
187 EXPORT DOLPHIN
188 FILE dolphin.categories
189 DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}
190 )
191 feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
192