]> cloud.milkyroute.net Git - dolphin.git/blobdiff - CMakeLists.txt
Merge remote-tracking branch 'fork/work/zakharafoniam/useful-groups'
[dolphin.git] / CMakeLists.txt
index 995369f415a2b63cc44ed368c84b69001f308c4a..b5046c33a6679b93318545f8e3d61568c181cce2 100644 (file)
@@ -1,17 +1,22 @@
 cmake_minimum_required(VERSION 3.16)
 
 # KDE Application Version, managed by release script
 cmake_minimum_required(VERSION 3.16)
 
 # KDE Application Version, managed by release script
-set (RELEASE_SERVICE_VERSION_MAJOR "22")
-set (RELEASE_SERVICE_VERSION_MINOR "07")
+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 (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.0")
-set(KF5_MIN_VERSION "5.92.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
 
 # 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)
 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(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 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"
                   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
     Core
     Concurrent
     Widgets
@@ -50,7 +58,15 @@ find_package(Qt${QT_MAJOR_VERSION} ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
     DBus
 )
 
     DBus
 )
 
-find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS
+if (Qt6Gui_VERSION VERSION_GREATER_EQUAL "6.10.0")
+    find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE)
+endif()
+
+if (UNIX AND NOT APPLE AND NOT HAIKU)
+    set(HAVE_X11 TRUE)
+endif()
+
+find_package(KF6 ${KF6_MIN_VERSION} REQUIRED COMPONENTS
     KCMUtils
     NewStuff
     CoreAddons
     KCMUtils
     NewStuff
     CoreAddons
@@ -68,68 +84,64 @@ find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS
     Crash
     WindowSystem
     WidgetsAddons
     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"
         )
 
         PROPERTIES TYPE OPTIONAL
         PURPOSE "Used for submission of telemetry data"
         )
 
-if(KUserFeedback_FOUND)
+if(KF6UserFeedback_FOUND)
     set(HAVE_KUSERFEEDBACK TRUE)
 endif()
 
     set(HAVE_KUSERFEEDBACK TRUE)
 endif()
 
-find_package(KF5 ${KF5_MIN_VERSION} OPTIONAL_COMPONENTS
-    Activities
+find_package(KF6 ${KF6_MIN_VERSION} OPTIONAL_COMPONENTS
     DocTools
 )
     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"
         PROPERTIES DESCRIPTION "Software Manager integration"
-        TYPE OPTIONAL
+        TYPE RECOMMENDED
         PURPOSE "Used in the service menu installer"
         )
         PURPOSE "Used in the service menu installer"
         )
-if(PackageKitQt${QT_MAJOR_VERSION}_FOUND)
+if(PackageKitQt6_FOUND)
     set(HAVE_PACKAGEKIT TRUE)
 endif()
 
     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
                        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
                        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)
     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()
 
     message(WARNING "Baloo packages not found. They are needed for the metadata features of Dolphin (including the information panel).")
 endif()
 
@@ -140,14 +152,24 @@ else()
     set(HAVE_TERMINAL TRUE)
 endif()
 
     set(HAVE_TERMINAL TRUE)
 endif()
 
-ecm_set_disabled_deprecation_versions(SHOW_DEPRECATIONS
-    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(src)
 add_subdirectory(doc)
+add_subdirectory(appiumtests)
 
 # CMake files
 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/DolphinVcs")
 
 # CMake files
 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/DolphinVcs")
@@ -202,9 +224,18 @@ ecm_qt_install_logging_categories(
         )
 
 ki18n_install(po)
         )
 
 ki18n_install(po)
-if(KF5DocTools_FOUND)
+if(KF6DocTools_FOUND)
     kdoctools_install(po)
 endif()
 
     kdoctools_install(po)
 endif()
 
+install(FILES completions/dolphin.zsh RENAME _dolphin DESTINATION ${KDE_INSTALL_ZSHAUTOCOMPLETEDIR})
+
 feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
 
 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)