cmake_minimum_required(VERSION 3.16)
# KDE Application Version, managed by release script
-set (RELEASE_SERVICE_VERSION_MAJOR "23")
+set (RELEASE_SERVICE_VERSION_MAJOR "25")
set (RELEASE_SERVICE_VERSION_MINOR "07")
set (RELEASE_SERVICE_VERSION_MICRO "70")
set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
project(Dolphin VERSION ${RELEASE_SERVICE_VERSION})
set(QT_MIN_VERSION "6.4.0")
-set(KF6_MIN_VERSION "5.240.0")
+set(KF6_MIN_VERSION "6.9.0")
+
+# use C++20 like KF6 itself
+set(CMAKE_CXX_STANDARD 20)
+set(CMAKE_CXX_EXTENSIONS OFF)
+set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
# ECM setup
find_package(ECM ${KF6_MIN_VERSION} CONFIG REQUIRED)
include(FeatureSummary)
include(ECMQtDeclareLoggingCategory)
include(ECMDeprecationSettings)
+include(CheckIncludeFiles)
+include(CheckLibraryExists)
+include(CheckFunctionExists)
ecm_setup_version(${RELEASE_SERVICE_VERSION} VARIABLE_PREFIX DOLPHIN
VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/src/dolphin_version.h"
ecm_setup_version(${RELEASE_SERVICE_VERSION} VARIABLE_PREFIX DOLPHINVCS
VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/dolphinvcs_version.h"
PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfigVersion.cmake"
- SOVERSION ${QT_MAJOR_VERSION}
+ SOVERSION 6
)
ecm_setup_version(${RELEASE_SERVICE_VERSION} VARIABLE_PREFIX DOLPHINPRIVATE
- SOVERSION ${QT_MAJOR_VERSION}
+ SOVERSION 6
)
-find_package(Qt${QT_MAJOR_VERSION} ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
+find_package(Qt6 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
Core
Concurrent
Widgets
DBus
)
-if (UNIX AND NOT APPLE)
- set(HAVE_X11 TRUE)
+if (Qt6Gui_VERSION VERSION_GREATER_EQUAL "6.10.0")
+ find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE)
+endif()
- if (QT_MAJOR_VERSION STREQUAL "5")
- find_package(Qt5X11Extras REQUIRED)
- endif()
+if (UNIX AND NOT APPLE AND NOT HAIKU)
+ set(HAVE_X11 TRUE)
endif()
find_package(KF6 ${KF6_MIN_VERSION} REQUIRED COMPONENTS
WindowSystem
WidgetsAddons
Codecs
- MoreTools
+ GuiAddons
+ ColorScheme
)
-find_package(KUserFeedbackQt6 1.2.1)
-set_package_properties(KUserFeedbackQt6
+find_package(KF6UserFeedback ${KF6_MIN_VERSION})
+set_package_properties(KF6UserFeedback
PROPERTIES TYPE OPTIONAL
PURPOSE "Used for submission of telemetry data"
)
-if(KUserFeedbackQt6_FOUND)
+if(KF6UserFeedback_FOUND)
set(HAVE_KUSERFEEDBACK TRUE)
endif()
find_package(KF6 ${KF6_MIN_VERSION} OPTIONAL_COMPONENTS
- Activities
DocTools
)
-set_package_properties(KF6Activities PROPERTIES DESCRIPTION "KActivities libraries"
- URL "https://www.kde.org"
- TYPE OPTIONAL
- PURPOSE "For tracking which folders are frequently accessed on a Plasma desktop"
- )
-find_package(Phonon4Qt${QT_MAJOR_VERSION} CONFIG REQUIRED)
+find_package(Phonon4Qt6 CONFIG REQUIRED)
-find_package(PackageKitQt${QT_MAJOR_VERSION})
-set_package_properties(PackageKitQt${QT_MAJOR_VERSION}
+find_package(PackageKitQt6)
+set_package_properties(PackageKitQt6
PROPERTIES DESCRIPTION "Software Manager integration"
- TYPE OPTIONAL
+ TYPE RECOMMENDED
PURPOSE "Used in the service menu installer"
)
-if(PackageKitQt${QT_MAJOR_VERSION}_FOUND)
+if(PackageKitQt6_FOUND)
set(HAVE_PACKAGEKIT TRUE)
endif()
+find_package(KF6FileMetaData ${KF6_MIN_VERSION})
+set_package_properties(KF6FileMetaData PROPERTIES
+ URL "https://projects.kde.org/kfilemetadata"
+ TYPE REQUIRED
+ PURPOSE "For accessing file metadata labels and filesystem metadata"
+ )
+
find_package(KF6Baloo ${KF6_MIN_VERSION})
set_package_properties(KF6Baloo PROPERTIES DESCRIPTION "Baloo Core libraries"
URL "https://www.kde.org"
TYPE OPTIONAL
)
-find_package(KF6FileMetaData ${KF6_MIN_VERSION})
-set_package_properties(KF6FileMetaData PROPERTIES
- URL "https://projects.kde.org/kfilemetadata"
- TYPE OPTIONAL
- PURPOSE "For accessing file metadata labels"
- )
-
-if (KF6Activities_FOUND)
- set(HAVE_KACTIVITIES TRUE)
-endif()
-
-if (KF6Baloo_FOUND AND KF6BalooWidgets_FOUND AND KF6FileMetaData_FOUND)
+if (KF6Baloo_FOUND AND KF6BalooWidgets_FOUND)
message(STATUS "Baloo packages are found")
set(HAVE_BALOO TRUE)
else()
set(HAVE_TERMINAL TRUE)
endif()
+# Compatibility with platforms without native fts (e.g. musl)
+check_include_files("sys/types.h;sys/stat.h;fts.h" HAVE_FTS_H)
+if(HAVE_FTS_H AND NOT HAIKU)
+ check_function_exists(fts_open HAVE_FTS_OPEN)
+ if(NOT HAVE_FTS_OPEN)
+ check_library_exists(fts fts_open "" HAVE_LIB_FTS)
+ endif()
+endif()
+
+if(HAVE_LIB_FTS)
+ set(FTS_LIB fts)
+else()
+ set(FTS_LIB "")
+endif()
+
add_subdirectory(src)
add_subdirectory(doc)
+add_subdirectory(appiumtests)
# CMake files
set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/DolphinVcs")