Warning, /frameworks/kuserfeedback/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 cmake_minimum_required(VERSION 3.16)
0002 set(KF_VERSION "6.0.0") # handled by release scripts
0003 set(KF_DEP_VERSION "5.249.0") # handled by release scripts
0004 project(KUserFeedback VERSION ${KF_VERSION})
0005
0006 # ECM setup
0007 include(FeatureSummary)
0008 find_package(ECM ${KF_DEP_VERSION} NO_MODULE)
0009 set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://invent.kde.org/frameworks/extra-cmake-modules")
0010 feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES)
0011 set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/ ${ECM_MODULE_PATH} ${CMAKE_MODULE_PATH})
0012
0013 set(ENABLE_SURVEY_TARGET_EXPRESSIONS ON CACHE BOOL "Survey targeting expressions support is enabled by default.")
0014 set(ENABLE_PHP ON CACHE BOOL "Syntax checking of PHP server code.")
0015 set(ENABLE_PHP_UNIT ON CACHE BOOL "Unit tests for PHP server code.")
0016 set(ENABLE_DOCS ON CACHE BOOL "Generate documentation.")
0017 set(ENABLE_CONSOLE ON CACHE BOOL "Application console.")
0018 set(ENABLE_CLI ON CACHE BOOL "Command line interface support.")
0019
0020 set(CMAKE_AUTOMOC ON)
0021 set(CMAKE_AUTOUIC ON)
0022 set(CMAKE_AUTORCC ON)
0023 set(CMAKE_INCLUDE_CURRENT_DIR ON)
0024 set(CMAKE_CXX_STANDARD 17)
0025
0026 include(KDEInstallDirs)
0027 include(KDECMakeSettings)
0028 include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE)
0029
0030 include(ECMGenerateHeaders)
0031 include(ECMPoQmTools)
0032 include(ECMSetupVersion)
0033 include(ECMQueryQt)
0034 include(ECMGeneratePriFile)
0035 include(ECMQmlModule)
0036 include(FeatureSummary)
0037 include(GenerateExportHeader)
0038
0039 include(ECMQtDeclareLoggingCategory)
0040
0041 ecm_setup_version(PROJECT
0042 VARIABLE_PREFIX KUSERFEEDBACK
0043 VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kuserfeedback_version.h"
0044 PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF6UserFeedbackConfigVersion.cmake"
0045 SOVERSION 6
0046 )
0047 #
0048 # Dependencies
0049 #
0050
0051 # Dependencies
0052 set(REQUIRED_QT_VERSION 6.5.0)
0053 find_package(Qt6 ${REQUIRED_QT_VERSION} NO_MODULE REQUIRED COMPONENTS Core Network)
0054 find_package(Qt6 ${REQUIRED_QT_VERSION} NO_MODULE QUIET OPTIONAL_COMPONENTS Widgets Charts Test Qml Svg PrintSupport)
0055 find_package(QmlLint)
0056
0057 if (ENABLE_DOCS)
0058 if (NOT CMAKE_CROSSCOMPILING)
0059 find_package(Qt6 NO_MODULE QUIET OPTIONAL_COMPONENTS Help)
0060 endif()
0061
0062 find_package(Qt6 CONFIG OPTIONAL_COMPONENTS ToolsTools)
0063 endif()
0064
0065 set_package_properties(Qt6 PROPERTIES URL "http://qt-project.org/")
0066 set_package_properties(Qt6Widgets PROPERTIES TYPE RECOMMENDED PURPOSE "Required for feedback configuration and notification widgets.")
0067 set_package_properties(Qt6Charts PROPERTIES TYPE RECOMMENDED PURPOSE "Required for UserFeedbackConsole.")
0068
0069 # debug suffixes for qmake compatibility
0070 if(WIN32)
0071 set(CMAKE_DEBUG_POSTFIX "d")
0072 elseif(APPLE)
0073 set(CMAKE_DEBUG_POSTFIX "_debug")
0074 endif()
0075
0076 add_definitions(-DQT_USE_QSTRINGBUILDER -DQT_USE_FAST_OPERATOR_PLUS -DQT_NO_CAST_TO_ASCII -DQT_NO_URL_CAST_FROM_STRING -DQT_NO_CAST_FROM_ASCII)
0077
0078 remove_definitions(-DQT_NO_FOREACH) # still uses foreach
0079 remove_definitions(-DQT_NO_KEYWORDS)
0080
0081 if (ENABLE_SURVEY_TARGET_EXPRESSIONS)
0082 find_package(FLEX)
0083 set_package_properties(FLEX PROPERTIES TYPE RECOMMENDED PURPOSE "Survey target expression parser.")
0084
0085 find_package(BISON)
0086 set_package_properties(BISON PROPERTIES TYPE RECOMMENDED PURPOSE "Survey target expression parser.")
0087
0088 if(FLEX_FOUND AND BISON_FOUND)
0089 set(HAVE_SURVEY_TARGET_EXPRESSIONS 1)
0090 endif()
0091 endif()
0092 add_feature_info("Survey targeting expressions support" HAVE_SURVEY_TARGET_EXPRESSIONS "Requires flex and bison parser generators.")
0093
0094 if (ENABLE_PHP)
0095 find_package(Php)
0096 set_package_properties(Php PROPERTIES URL "http://php.net" TYPE RECOMMENDED PURPOSE "Syntax checking of PHP server code.")
0097 endif()
0098
0099 if (ENABLE_PHP_UNIT)
0100 find_package(PhpUnit)
0101 set_package_properties(PhpUnit PROPERTIES URL "http://phpunit.de" TYPE RECOMMENDED PURPOSE "Unit tests for PHP server code.")
0102 endif()
0103
0104 #
0105 # Actually build the stuff
0106 #
0107 include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR})
0108 configure_file(config-userfeedback.h.in ${CMAKE_CURRENT_BINARY_DIR}/config-userfeedback.h)
0109
0110 add_subdirectory(src)
0111
0112 if (BUILD_TESTING)
0113 add_subdirectory(autotests)
0114 add_subdirectory(tests)
0115 endif()
0116
0117 if (ENABLE_DOCS)
0118 add_subdirectory(docs)
0119 endif()
0120
0121 #
0122 # CMake package config file generation
0123 #
0124 include(CMakePackageConfigHelpers)
0125
0126 set(_CONFIG_CMAKE_IN "KF6UserFeedbackConfig.cmake.in")
0127
0128 configure_package_config_file(
0129 ${CMAKE_CURRENT_SOURCE_DIR}/${_CONFIG_CMAKE_IN}
0130 ${CMAKE_CURRENT_BINARY_DIR}/KF6UserFeedbackConfig.cmake
0131 INSTALL_DESTINATION ${KDE_INSTALL_CMAKEPACKAGEDIR}/KF6UserFeedback
0132 PATH_VARS KDE_INSTALL_INCLUDEDIR
0133 )
0134
0135 install(FILES
0136 ${CMAKE_CURRENT_BINARY_DIR}/KF6UserFeedbackConfig.cmake
0137 ${CMAKE_CURRENT_BINARY_DIR}/KF6UserFeedbackConfigVersion.cmake
0138 DESTINATION ${KDE_INSTALL_CMAKEPACKAGEDIR}/KF6UserFeedback
0139 )
0140
0141 install(EXPORT KF6UserFeedbackTargets DESTINATION ${KDE_INSTALL_CMAKEPACKAGEDIR}/KF6UserFeedback FILE KF6UserFeedbackTarget.cmake NAMESPACE KF6::)
0142
0143 ecm_qt_install_logging_categories(
0144 EXPORT KF6USERFEEDBACK
0145 FILE org_kde_UserFeedback.categories
0146 DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}
0147 )
0148
0149 ecm_install_po_files_as_qm(poqm)
0150
0151 include(ECMFeatureSummary)
0152 ecm_feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
0153
0154 install(FILES
0155 ${KF6UserFeedbackCore_HEADERS}
0156 ${CMAKE_CURRENT_BINARY_DIR}/kuserfeedback_version.h
0157 DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/KUserFeedback
0158 )