X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/6d21deb6e48627922fb223a4281ade46d6d230ec..e018ecafca79a73f1e9d76c577b9529fc3a7ae03:/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index d5aa7b112..b5046c33a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,17 +1,22 @@ cmake_minimum_required(VERSION 3.16) # KDE Application Version, managed by release script -set (RELEASE_SERVICE_VERSION_MAJOR "23") -set (RELEASE_SERVICE_VERSION_MINOR "03") +set (RELEASE_SERVICE_VERSION_MAJOR "25") +set (RELEASE_SERVICE_VERSION_MINOR "11") 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 "5.15.2") -set(KF5_MIN_VERSION "5.101.0") +set(QT_MIN_VERSION "6.4.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 ${KF5_MIN_VERSION} CONFIG REQUIRED) +find_package(ECM ${KF6_MIN_VERSION} CONFIG REQUIRED) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake) include(KDEInstallDirs) @@ -27,22 +32,25 @@ include(GenerateExportHeader) 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("5.0.0" VARIABLE_PREFIX DOLPHINVCS +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 5 + SOVERSION 6 ) -ecm_setup_version("5.0.0" VARIABLE_PREFIX DOLPHINPRIVATE - SOVERSION 5 +ecm_setup_version(${RELEASE_SERVICE_VERSION} VARIABLE_PREFIX DOLPHINPRIVATE + 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 @@ -50,15 +58,15 @@ find_package(Qt${QT_MAJOR_VERSION} ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS 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(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS +find_package(KF6 ${KF6_MIN_VERSION} REQUIRED COMPONENTS KCMUtils NewStuff CoreAddons @@ -76,68 +84,64 @@ find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS Crash WindowSystem WidgetsAddons + Codecs + GuiAddons + ColorScheme ) -find_package(KUserFeedback 1.2.0) -set_package_properties(KUserFeedback +find_package(KF6UserFeedback ${KF6_MIN_VERSION}) +set_package_properties(KF6UserFeedback PROPERTIES TYPE OPTIONAL PURPOSE "Used for submission of telemetry data" ) -if(KUserFeedback_FOUND) +if(KF6UserFeedback_FOUND) set(HAVE_KUSERFEEDBACK TRUE) endif() -find_package(KF5 ${KF5_MIN_VERSION} OPTIONAL_COMPONENTS - Activities +find_package(KF6 ${KF6_MIN_VERSION} OPTIONAL_COMPONENTS DocTools ) -set_package_properties(KF5Activities 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(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(KF5Baloo ${KF5_MIN_VERSION}) -set_package_properties(KF5Baloo PROPERTIES DESCRIPTION "Baloo Core libraries" - URL "https://www.kde.org" - TYPE OPTIONAL - PURPOSE "For adding desktop-wide search and tagging support to dolphin" +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(KF5BalooWidgets 19.07.70) -set_package_properties(KF5BalooWidgets PROPERTIES DESCRIPTION "Baloos Widgets" +find_package(KF6Baloo ${KF6_MIN_VERSION}) +set_package_properties(KF6Baloo PROPERTIES DESCRIPTION "Baloo Core libraries" URL "https://www.kde.org" TYPE OPTIONAL + PURPOSE "For adding desktop-wide search and tagging support to dolphin" ) -find_package(KF5FileMetaData ${KF5_MIN_VERSION}) -set_package_properties(KF5FileMetaData PROPERTIES - URL "https://projects.kde.org/kfilemetadata" +find_package(KF6BalooWidgets ${RELEASE_SERVICE_VERSION}) +set_package_properties(KF6BalooWidgets PROPERTIES DESCRIPTION "Baloos Widgets" + URL "https://www.kde.org" TYPE OPTIONAL - PURPOSE "For accessing file metadata labels" ) -if (KF5Activities_FOUND) - set(HAVE_KACTIVITIES TRUE) -endif() - -if (KF5Baloo_FOUND AND KF5BalooWidgets_FOUND AND KF5FileMetaData_FOUND) +if (KF6Baloo_FOUND AND KF6BalooWidgets_FOUND) message(STATUS "Baloo packages are found") set(HAVE_BALOO TRUE) -else() + + find_package(Qt6 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS + Multimedia + MultimediaWidgets + ) +else () message(WARNING "Baloo packages not found. They are needed for the metadata features of Dolphin (including the information panel).") endif() @@ -148,14 +152,24 @@ else() set(HAVE_TERMINAL TRUE) endif() -ecm_set_disabled_deprecation_versions( - QT 5.15 - KF 5.90 - KSERVICE 5.89 # We use KServiceTypeTrader in a compat code path -) +# 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") @@ -210,7 +224,7 @@ ecm_qt_install_logging_categories( ) ki18n_install(po) -if(KF5DocTools_FOUND) +if(KF6DocTools_FOUND) kdoctools_install(po) endif() @@ -218,3 +232,10 @@ install(FILES completions/dolphin.zsh RENAME _dolphin DESTINATION ${KDE_INSTALL_ feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) +include(KDEClangFormat) +# add clang-format target +file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h *.c) +kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES}) + +include(KDEGitCommitHooks) +kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)