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 )