Warning, /system/dolphin/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 cmake_minimum_required(VERSION 3.16)
0002 
0003 # KDE Application Version, managed by release script
0004 set (RELEASE_SERVICE_VERSION_MAJOR "24")
0005 set (RELEASE_SERVICE_VERSION_MINOR "04")
0006 set (RELEASE_SERVICE_VERSION_MICRO "70")
0007 set (RELEASE_SERVICE_VERSION "${RELEASE_SERVICE_VERSION_MAJOR}.${RELEASE_SERVICE_VERSION_MINOR}.${RELEASE_SERVICE_VERSION_MICRO}")
0008 project(Dolphin VERSION ${RELEASE_SERVICE_VERSION})
0009 
0010 set(QT_MIN_VERSION "6.4.0")
0011 set(KF6_MIN_VERSION "5.240.0")
0012 
0013 # ECM setup
0014 find_package(ECM ${KF6_MIN_VERSION} CONFIG REQUIRED)
0015 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
0016 
0017 include(KDEInstallDirs)
0018 include(KDECMakeSettings)
0019 include(KDECompilerSettings NO_POLICY_SCOPE)
0020 
0021 include(ECMSetupVersion)
0022 include(ECMGenerateHeaders)
0023 include(ECMGenerateDBusServiceFile)
0024 include(ECMConfiguredInstall)
0025 include(CMakePackageConfigHelpers)
0026 include(GenerateExportHeader)
0027 include(FeatureSummary)
0028 include(ECMQtDeclareLoggingCategory)
0029 include(ECMDeprecationSettings)
0030 include(CheckIncludeFiles)
0031 include(CheckLibraryExists)
0032 
0033 ecm_setup_version(${RELEASE_SERVICE_VERSION} VARIABLE_PREFIX DOLPHIN
0034                   VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/src/dolphin_version.h"
0035 )
0036 
0037 ecm_setup_version(${RELEASE_SERVICE_VERSION} VARIABLE_PREFIX DOLPHINVCS
0038                   VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/dolphinvcs_version.h"
0039                   PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfigVersion.cmake"
0040                   SOVERSION 6
0041 )
0042 
0043 ecm_setup_version(${RELEASE_SERVICE_VERSION} VARIABLE_PREFIX DOLPHINPRIVATE
0044                   SOVERSION 6
0045 )
0046 
0047 find_package(Qt6 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS
0048     Core
0049     Concurrent
0050     Widgets
0051     Gui
0052     DBus
0053 )
0054 
0055 if (UNIX AND NOT APPLE)
0056     set(HAVE_X11 TRUE)
0057 endif()
0058 
0059 find_package(KF6 ${KF6_MIN_VERSION} REQUIRED COMPONENTS
0060     KCMUtils
0061     NewStuff
0062     CoreAddons
0063     I18n
0064     DBusAddons
0065     Bookmarks
0066     Config
0067     KIO
0068     Parts
0069     Solid
0070     IconThemes
0071     Completion
0072     TextWidgets
0073     Notifications
0074     Crash
0075     WindowSystem
0076     WidgetsAddons
0077     Codecs
0078 )
0079 
0080 find_package(KF6UserFeedback ${KF6_MIN_VERSION})
0081 set_package_properties(KF6UserFeedback
0082         PROPERTIES TYPE OPTIONAL
0083         PURPOSE "Used for submission of telemetry data"
0084         )
0085 
0086 if(KF6UserFeedback_FOUND)
0087     set(HAVE_KUSERFEEDBACK TRUE)
0088 endif()
0089 
0090 find_package(KF6 ${KF6_MIN_VERSION} OPTIONAL_COMPONENTS
0091     DocTools
0092 )
0093 find_package(PlasmaActivities)
0094 set_package_properties(PlasmaActivities PROPERTIES DESCRIPTION "PlasmaActivities libraries"
0095                        URL "https://www.kde.org"
0096                        TYPE OPTIONAL
0097                        PURPOSE "For tracking which folders are frequently accessed on a Plasma desktop"
0098                       )
0099 
0100 find_package(Phonon4Qt6 CONFIG REQUIRED)
0101 
0102 find_package(PackageKitQt6)
0103 set_package_properties(PackageKitQt6
0104         PROPERTIES DESCRIPTION "Software Manager integration"
0105         TYPE OPTIONAL
0106         PURPOSE "Used in the service menu installer"
0107         )
0108 if(PackageKitQt6_FOUND)
0109     set(HAVE_PACKAGEKIT TRUE)
0110 endif()
0111 
0112 find_package(KF6Baloo ${KF6_MIN_VERSION})
0113 set_package_properties(KF6Baloo PROPERTIES DESCRIPTION "Baloo Core libraries"
0114                        URL "https://www.kde.org"
0115                        TYPE OPTIONAL
0116                        PURPOSE "For adding desktop-wide search and tagging support to dolphin"
0117                       )
0118 
0119 find_package(KF6BalooWidgets ${RELEASE_SERVICE_VERSION})
0120 set_package_properties(KF6BalooWidgets PROPERTIES DESCRIPTION "Baloos Widgets"
0121                        URL "https://www.kde.org"
0122                        TYPE OPTIONAL
0123                       )
0124 
0125 find_package(KF6FileMetaData ${KF6_MIN_VERSION})
0126 set_package_properties(KF6FileMetaData PROPERTIES
0127                        URL "https://projects.kde.org/kfilemetadata"
0128                        TYPE OPTIONAL
0129                        PURPOSE "For accessing file metadata labels"
0130                       )
0131 
0132 if (PlasmaActivities_FOUND)
0133     set(HAVE_PLASMA_ACTIVITIES TRUE)
0134 endif()
0135 
0136 if (KF6Baloo_FOUND AND KF6BalooWidgets_FOUND AND KF6FileMetaData_FOUND)
0137     message(STATUS "Baloo packages are found")
0138     set(HAVE_BALOO TRUE)
0139 else()
0140     message(WARNING "Baloo packages not found. They are needed for the metadata features of Dolphin (including the information panel).")
0141 endif()
0142 
0143 # TODO: drop HAVE_TERMINAL once we are sure the terminal panel works on Windows too.
0144 if(WIN32)
0145     set(HAVE_TERMINAL FALSE)
0146 else()
0147     set(HAVE_TERMINAL TRUE)
0148 endif()
0149 
0150 # Compatibility with platforms without native fts (e.g. musl)
0151 check_include_files("sys/types.h;sys/stat.h;fts.h" HAVE_FTS_H)
0152 if(HAVE_FTS_H)
0153     check_function_exists(fts_open HAVE_FTS_OPEN)
0154     if(NOT HAVE_FTS_OPEN)
0155         check_library_exists(fts fts_open "" HAVE_LIB_FTS)
0156     endif()
0157 endif()
0158 
0159 if(HAVE_LIB_FTS)
0160     set(FTS_LIB fts)
0161 else()
0162     set(FTS_LIB "")
0163 endif()
0164 
0165 add_subdirectory(src)
0166 add_subdirectory(doc)
0167 
0168 # CMake files
0169 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/DolphinVcs")
0170 
0171 configure_package_config_file(
0172     "${CMAKE_CURRENT_SOURCE_DIR}/DolphinVcsConfig.cmake.in"
0173     "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfig.cmake"
0174     INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
0175 )
0176 
0177 install(FILES
0178     "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfig.cmake"
0179     "${CMAKE_CURRENT_BINARY_DIR}/DolphinVcsConfigVersion.cmake"
0180     DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
0181     COMPONENT Devel
0182 )
0183 
0184 install(EXPORT DolphinVcsTargets
0185     DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
0186     FILE DolphinVcsTargets.cmake
0187 )
0188 
0189 install(FILES
0190     "${CMAKE_CURRENT_BINARY_DIR}/dolphinvcs_version.h"
0191     DESTINATION "${KDE_INSTALL_INCLUDEDIR}/Dolphin"
0192     COMPONENT Devel
0193 )
0194 
0195 if(FLATPAK)
0196     ecm_generate_dbus_service_file(
0197         NAME org.freedesktop.FileManager1
0198         EXECUTABLE "${KDE_INSTALL_FULL_BINDIR}/dolphin --daemon"
0199         SYSTEMD_SERVICE plasma-dolphin.service
0200         DESTINATION ${KDE_INSTALL_DBUSSERVICEDIR}
0201     )
0202 else()
0203     ecm_generate_dbus_service_file(
0204         NAME org.freedesktop.FileManager1
0205         EXECUTABLE "${KDE_INSTALL_FULL_BINDIR}/dolphin --daemon"
0206         SYSTEMD_SERVICE plasma-dolphin.service
0207         DESTINATION ${KDE_INSTALL_DBUSSERVICEDIR}
0208         RENAME org.kde.dolphin.FileManager1.service
0209     )
0210 endif()
0211 
0212 ecm_install_configured_files(INPUT plasma-dolphin.service.in DESTINATION ${KDE_INSTALL_SYSTEMDUSERUNITDIR})
0213 
0214 ecm_qt_install_logging_categories(
0215         EXPORT DOLPHIN
0216         FILE dolphin.categories
0217         DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}
0218         )
0219 
0220 ki18n_install(po)
0221 if(KF6DocTools_FOUND)
0222     kdoctools_install(po)
0223 endif()
0224 
0225 install(FILES completions/dolphin.zsh RENAME _dolphin DESTINATION ${KDE_INSTALL_ZSHAUTOCOMPLETEDIR})
0226 
0227 feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
0228 
0229 include(KDEClangFormat)
0230 # add clang-format target
0231 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h *.c)
0232 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
0233 
0234 include(KDEGitCommitHooks)
0235 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)