Warning, /frameworks/kio/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 cmake_minimum_required(VERSION 3.16)
0002 
0003 set(KF_VERSION "6.0.0") # handled by release scripts
0004 set(KF_DEP_VERSION "5.249.0") # handled by release scripts
0005 
0006 project(KIO VERSION ${KF_VERSION})
0007 
0008 include(FeatureSummary)
0009 find_package(ECM 5.249.0 NO_MODULE)
0010 set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://commits.kde.org/extra-cmake-modules")
0011 feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES)
0012 
0013 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake )
0014 
0015 include(KDEInstallDirs)
0016 include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE)
0017 include(KDECMakeSettings)
0018 include(KDEGitCommitHooks)
0019 include(KDEPackageAppTemplates)
0020 
0021 include(ECMGenerateExportHeader)
0022 include(ECMMarkAsTest)
0023 include(ECMSetupVersion)
0024 include(ECMGenerateHeaders)
0025 include(ECMAddQch)
0026 include(ECMMarkNonGuiExecutable)
0027 include(ECMQtDeclareLoggingCategory)
0028 include(ECMSourceVersionControl)
0029 include(ECMDeprecationSettings)
0030 
0031 ecm_setup_version(
0032   PROJECT
0033   VARIABLE_PREFIX KIO
0034   VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/src/kio_version.h"
0035   PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF6KIOConfigVersion.cmake"
0036   SOVERSION 6)
0037 
0038 set(EXCLUDE_DEPRECATED_BEFORE_AND_AT 0 CACHE STRING "Control the range of deprecated API excluded from the build [default=0].")
0039 
0040 option(KIOCORE_ONLY "Only compile KIOCore, not KIOWidgets or anything that depends on it. This will disable support for cookies and passwordhandling (prompting and storing)." OFF)
0041 
0042 # Enable state assertion by default on Jenkins and from-git builds.
0043 # This option should eventually be dropped and always be enabled.
0044 set(ASSERT_WORKER_STATES_DEFAULT OFF)
0045 if(DEFINED ENV{JENKINS_SERVER_COOKIE} OR ECM_SOURCE_UNDER_VERSION_CONTROL)
0046     set(ASSERT_WORKER_STATES_DEFAULT ON)
0047 endif()
0048 option(KIO_ASSERT_WORKER_STATES
0049     "Used to control whether worker state assertions are enabled. When not enabled only warnings are generated."
0050     ${ASSERT_WORKER_STATES_DEFAULT})
0051 
0052 option(BUILD_QCH "Build API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)" OFF)
0053 add_feature_info(QCH ${BUILD_QCH} "API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)")
0054 
0055 option(BUILD_DESIGNERPLUGIN "Build plugin for Qt Designer" ON)
0056 add_feature_info(DESIGNERPLUGIN ${BUILD_DESIGNERPLUGIN} "Build plugin for Qt Designer")
0057 
0058 option(USE_FTPD_WSGIDAV_UNITTEST "Use ftpd Ruby Gem (for ftptest) and wsgidav Python module (for webdavtest) in unittests. Note that this is a temporary option that will be removed when distros add those packages in their repos." OFF)
0059 
0060 find_package(KF6Archive ${KF_DEP_VERSION} REQUIRED)
0061 find_package(KF6Config ${KF_DEP_VERSION} REQUIRED)
0062 find_package(KF6CoreAddons ${KF_DEP_VERSION} REQUIRED)
0063 find_package(KF6I18n ${KF_DEP_VERSION} REQUIRED)
0064 find_package(KF6Service ${KF_DEP_VERSION} REQUIRED)
0065 find_package(KF6DocTools ${KF_DEP_VERSION})
0066 find_package(KF6Solid ${KF_DEP_VERSION} REQUIRED) # for kio_trash
0067 if (NOT ANDROID)
0068     find_package(KF6Crash ${KF_DEP_VERSION} REQUIRED)
0069     find_package(KF6DBusAddons ${KF_DEP_VERSION} REQUIRED)
0070 endif()
0071 
0072 if (NOT KIOCORE_ONLY)
0073 find_package(KF6Bookmarks ${KF_DEP_VERSION} REQUIRED)
0074 find_package(KF6ColorScheme ${KF_DEP_VERSION} REQUIRED)
0075 find_package(KF6Completion ${KF_DEP_VERSION} REQUIRED)
0076 find_package(KF6ConfigWidgets ${KF_DEP_VERSION} REQUIRED)
0077 find_package(KF6GuiAddons ${KF_DEP_VERSION} REQUIRED)
0078 find_package(KF6IconThemes ${KF_DEP_VERSION} REQUIRED)
0079 find_package(KF6ItemViews ${KF_DEP_VERSION} REQUIRED)
0080 find_package(KF6JobWidgets ${KF_DEP_VERSION} REQUIRED)
0081 find_package(KF6WidgetsAddons ${KF_DEP_VERSION} REQUIRED)
0082 find_package(KF6WindowSystem ${KF_DEP_VERSION} REQUIRED)
0083 
0084 find_package(KF6KDED ${KF_DEP_VERSION})
0085 set_package_properties(KF6KDED PROPERTIES DESCRIPTION "Daemon providing session services"
0086                        TYPE RUNTIME
0087                        PURPOSE "KDED is used at runtime for proxy management and cookie storage"
0088                       )
0089 
0090 find_package(SwitcherooControl)
0091 set_package_properties(SwitcherooControl PROPERTIES
0092     TYPE RUNTIME
0093     PURPOSE "Hybrid GPU support"
0094 )
0095 
0096 endif()
0097 
0098 if (UNIX AND NOT ANDROID)
0099     find_package(KF6Auth ${KF_DEP_VERSION} REQUIRED)
0100 endif()
0101 
0102 # tell what is missing without doctools
0103 set_package_properties(KF6DocTools PROPERTIES DESCRIPTION "Provides tools to generate documentation in various format from DocBook files"
0104                        TYPE OPTIONAL
0105                        PURPOSE "Required to build help KIO worker and documentation"
0106                       )
0107 
0108 set(REQUIRED_QT_VERSION 6.5.0)
0109 find_package(Qt6 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Widgets Network Concurrent Xml Test)
0110 if (NOT ANDROID)
0111     find_package(Qt6 ${REQUIRED_QT_VERSION} CONFIG REQUIRED DBus)
0112 endif()
0113 
0114 find_package(Qt6Core5Compat ${REQUIRED_QT_VERSION} REQUIRED) # QTextCodec
0115 
0116 if (NOT APPLE AND NOT WIN32 AND NOT ANDROID)
0117     option(WITH_X11 "Build with X11 integration" ON)
0118     set(HAVE_X11 ${WITH_X11})
0119 
0120     option(WITH_WAYLAND "Build with Wayland integration" ON)
0121     set(HAVE_WAYLAND ${WITH_WAYLAND})
0122 endif()
0123 
0124 find_package(ACL)
0125 set(HAVE_LIBACL ${ACL_FOUND})
0126 set(HAVE_POSIX_ACL ${ACL_FOUND})
0127 set_package_properties(ACL PROPERTIES DESCRIPTION "LibACL"
0128                        URL "ftp://oss.sgi.com/projects/xfs/cmd_tars"
0129                        TYPE RECOMMENDED
0130                        PURPOSE "Support for manipulating access control lists")
0131 
0132 # Used by KMountPoint
0133 if (CMAKE_SYSTEM_NAME MATCHES "Linux")
0134     find_package(LibMount REQUIRED)
0135     set(HAVE_LIB_MOUNT ${LibMount_FOUND})
0136 endif()
0137 
0138 if (ANDROID)
0139     # used to mark code that is just stubbed out on Android for now
0140     # and that would still need a decision on how to deal with that
0141     add_definitions(-DKIO_ANDROID_STUB)
0142 endif()
0143 
0144 ecm_set_disabled_deprecation_versions(
0145     QT 6.4
0146     KF 5.240
0147 )
0148 
0149 add_definitions(-DTRANSLATION_DOMAIN=\"kio6\")
0150 ki18n_install(po)
0151 
0152 if (KF6DocTools_FOUND)
0153     kdoctools_install(po)
0154 endif()
0155 
0156 if (KF6DocTools_FOUND)
0157      add_subdirectory(docs)
0158 endif()
0159 
0160 include(CheckLibraryExists)
0161 add_subdirectory(src)
0162 
0163 if(BUILD_TESTING)
0164     add_subdirectory(autotests)
0165     if (NOT KIOCORE_ONLY)
0166         add_subdirectory(tests)
0167     endif()
0168 endif()
0169 
0170 add_subdirectory(templates)
0171 
0172 # create a Config.cmake and a ConfigVersion.cmake file and install them
0173 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF6KIO")
0174 
0175 if (BUILD_QCH)
0176     ecm_install_qch_export(
0177         TARGETS KF6KIO_QCH
0178         FILE KF6KIOQchTargets.cmake
0179         DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
0180         COMPONENT Devel
0181     )
0182     set(PACKAGE_INCLUDE_QCHTARGETS "include(\"\${CMAKE_CURRENT_LIST_DIR}/KF6KIOQchTargets.cmake\")")
0183 endif()
0184 
0185 include(CMakePackageConfigHelpers)
0186 
0187 configure_package_config_file(
0188   "${CMAKE_CURRENT_SOURCE_DIR}/KF6KIOConfig.cmake.in"
0189   "${CMAKE_CURRENT_BINARY_DIR}/KF6KIOConfig.cmake"
0190   PATH_VARS KDE_INSTALL_DBUSINTERFACEDIR
0191   INSTALL_DESTINATION  ${CMAKECONFIG_INSTALL_DIR}
0192 )
0193 
0194 install(FILES
0195   "${CMAKE_CURRENT_BINARY_DIR}/KF6KIOConfig.cmake"
0196   "${CMAKE_CURRENT_BINARY_DIR}/KF6KIOConfigVersion.cmake"
0197   DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
0198   COMPONENT Devel
0199 )
0200 
0201 install(EXPORT KF6KIOTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" FILE KF6KIOTargets.cmake NAMESPACE KF6:: )
0202 
0203 install(FILES ${CMAKE_CURRENT_BINARY_DIR}/src/kio_version.h
0204         DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/KIO COMPONENT Devel)
0205 
0206 include(ECMFeatureSummary)
0207 ecm_feature_summary(WHAT ALL   FATAL_ON_MISSING_REQUIRED_PACKAGES)
0208 
0209 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)