]> cloud.milkyroute.net Git - dolphin.git/blobdiff - CMakeLists.txt
Merge remote-tracking branch 'fork/work/zakharafoniam/useful-groups'
[dolphin.git] / CMakeLists.txt
index 0a655babb3769527aff2b662869fb3f38d1b1bf0..b5046c33a6679b93318545f8e3d61568c181cce2 100644 (file)
@@ -1,14 +1,19 @@
 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 "23")
+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 "6.4.0")
 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 "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)
 
 # ECM setup
 find_package(ECM ${KF6_MIN_VERSION} CONFIG REQUIRED)
@@ -29,6 +34,7 @@ include(ECMQtDeclareLoggingCategory)
 include(ECMDeprecationSettings)
 include(CheckIncludeFiles)
 include(CheckLibraryExists)
 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"
@@ -37,14 +43,14 @@ ecm_setup_version(${RELEASE_SERVICE_VERSION} VARIABLE_PREFIX DOLPHIN
 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"
 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
 )
 
 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
     Core
     Concurrent
     Widgets
@@ -52,12 +58,12 @@ find_package(Qt${QT_MAJOR_VERSION} ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
     DBus
 )
 
     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
 endif()
 
 find_package(KF6 ${KF6_MIN_VERSION} REQUIRED COMPONENTS
@@ -79,41 +85,41 @@ find_package(KF6 ${KF6_MIN_VERSION} REQUIRED COMPONENTS
     WindowSystem
     WidgetsAddons
     Codecs
     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"
         )
 
         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
     set(HAVE_KUSERFEEDBACK TRUE)
 endif()
 
 find_package(KF6 ${KF6_MIN_VERSION} OPTIONAL_COMPONENTS
-    Activities
     DocTools
 )
     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(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(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"
 find_package(KF6Baloo ${KF6_MIN_VERSION})
 set_package_properties(KF6Baloo PROPERTIES DESCRIPTION "Baloo Core libraries"
                        URL "https://www.kde.org"
@@ -127,21 +133,15 @@ set_package_properties(KF6BalooWidgets PROPERTIES DESCRIPTION "Baloos Widgets"
                        TYPE OPTIONAL
                       )
 
                        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)
     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()
 
@@ -154,7 +154,7 @@ endif()
 
 # Compatibility with platforms without native fts (e.g. musl)
 check_include_files("sys/types.h;sys/stat.h;fts.h" HAVE_FTS_H)
 
 # 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)
+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)
     check_function_exists(fts_open HAVE_FTS_OPEN)
     if(NOT HAVE_FTS_OPEN)
         check_library_exists(fts fts_open "" HAVE_LIB_FTS)
@@ -169,6 +169,7 @@ 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")