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

0001 cmake_minimum_required(VERSION 3.16)
0002 project(KUserFeedback VERSION 1.3.0)
0003 
0004 find_package(ECM 5.26 REQUIRED NO_MODULE)
0005 set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/ ${ECM_MODULE_PATH} ${CMAKE_MODULE_PATH})
0006 
0007 set(ENABLE_SURVEY_TARGET_EXPRESSIONS ON CACHE BOOL "Survey targeting expressions support is enabled by default.")
0008 set(ENABLE_PHP                       ON CACHE BOOL "Syntax checking of PHP server code.")
0009 set(ENABLE_PHP_UNIT                  ON CACHE BOOL "Unit tests for PHP server code.")
0010 set(ENABLE_DOCS                      ON CACHE BOOL "Generate documentation.")
0011 set(ENABLE_CONSOLE                   ON CACHE BOOL "Application console.")
0012 set(ENABLE_CLI                       ON CACHE BOOL "Command line interface support.")
0013 
0014 set(CMAKE_AUTOMOC ON)
0015 set(CMAKE_AUTOUIC ON)
0016 set(CMAKE_AUTORCC ON)
0017 set(CMAKE_INCLUDE_CURRENT_DIR ON)
0018 set(CMAKE_CXX_STANDARD 17)
0019 
0020 include(KDEInstallDirs)
0021 include(KDECMakeSettings)
0022 include(KDECompilerSettings NO_POLICY_SCOPE)
0023 
0024 include(ECMGenerateHeaders)
0025 include(ECMPoQmTools)
0026 include(ECMSetupVersion)
0027 include(ECMQueryQmake)
0028 include(ECMGeneratePriFile)
0029 include(FeatureSummary)
0030 include(GenerateExportHeader)
0031 
0032 if (ECM_VERSION VERSION_GREATER "5.68.0")
0033     include(ECMQtDeclareLoggingCategory)
0034 endif()
0035 
0036 MESSAGE(STATUS "ECM Version found: ${ECM_VERSION}")
0037 set(KUSERFEEDBACK_EXTENSION)
0038 if (QT_MAJOR_VERSION STREQUAL "6")
0039     set(KUSERFEEDBACK_EXTENSION "Qt6")
0040 endif()
0041 
0042 ecm_setup_version(PROJECT
0043     VARIABLE_PREFIX KUSERFEEDBACK
0044     VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kuserfeedback_version.h"
0045     PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KUserFeedback${KUSERFEEDBACK_EXTENSION}ConfigVersion.cmake"
0046 )
0047 #
0048 # Dependencies
0049 #
0050 
0051 find_package(Qt${QT_MAJOR_VERSION} 5.4 NO_MODULE REQUIRED COMPONENTS Core Network)
0052 find_package(Qt${QT_MAJOR_VERSION} NO_MODULE QUIET OPTIONAL_COMPONENTS Widgets Charts Test Qml Svg PrintSupport)
0053 find_package(QmlLint)
0054 
0055 if (ENABLE_DOCS)
0056     if (NOT CMAKE_CROSSCOMPILING)
0057         find_package(Qt${QT_MAJOR_VERSION} NO_MODULE QUIET OPTIONAL_COMPONENTS Help)
0058     endif()
0059 
0060     if(QT_MAJOR_VERSION STREQUAL "5")
0061         find_package(Qt5 CONFIG OPTIONAL_COMPONENTS DocTools)
0062     else()
0063         find_package(Qt6 CONFIG OPTIONAL_COMPONENTS ToolsTools)
0064     endif()
0065 endif()
0066 
0067 set_package_properties(Qt${QT_MAJOR_VERSION} PROPERTIES URL "http://qt-project.org/")
0068 set_package_properties(Qt${QT_MAJOR_VERSION}Widgets PROPERTIES TYPE RECOMMENDED PURPOSE "Required for feedback configuration and notification widgets.")
0069 set_package_properties(Qt${QT_MAJOR_VERSION}Charts PROPERTIES TYPE RECOMMENDED PURPOSE "Required for UserFeedbackConsole.")
0070 
0071 # debug suffixes for qmake compatibility
0072 if(WIN32)
0073     set(CMAKE_DEBUG_POSTFIX "d")
0074 elseif(APPLE)
0075     set(CMAKE_DEBUG_POSTFIX "_debug")
0076 endif()
0077 
0078 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)
0079 
0080 if (ENABLE_SURVEY_TARGET_EXPRESSIONS)
0081     find_package(FLEX)
0082     set_package_properties(FLEX PROPERTIES TYPE RECOMMENDED PURPOSE "Survey target expression parser.")
0083 
0084     find_package(BISON)
0085     set_package_properties(BISON PROPERTIES TYPE RECOMMENDED PURPOSE "Survey target expression parser.")
0086 
0087     if(FLEX_FOUND AND BISON_FOUND)
0088         set(HAVE_SURVEY_TARGET_EXPRESSIONS 1)
0089     endif()
0090 endif()
0091 add_feature_info("Survey targeting expressions support" HAVE_SURVEY_TARGET_EXPRESSIONS "Requires flex and bison parser generators.")
0092 
0093 if (ENABLE_PHP)
0094     find_package(Php)
0095     set_package_properties(Php PROPERTIES URL "http://php.net" TYPE RECOMMENDED PURPOSE "Syntax checking of PHP server code.")
0096 endif()
0097 
0098 if (ENABLE_PHP_UNIT)
0099     find_package(PhpUnit)
0100     set_package_properties(PhpUnit PROPERTIES URL "http://phpunit.de" TYPE RECOMMENDED PURPOSE "Unit tests for PHP server code.")
0101 endif()
0102 
0103 #
0104 # Actually build the stuff
0105 #
0106 include_directories(${CMAKE_SOURCE_DIR} ${CMAKE_BINARY_DIR})
0107 configure_file(config-userfeedback.h.in ${CMAKE_CURRENT_BINARY_DIR}/config-userfeedback.h)
0108 
0109 add_subdirectory(src)
0110 
0111 if (BUILD_TESTING)
0112     add_subdirectory(autotests)
0113 
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 if (${QT_MAJOR_VERSION} GREATER_EQUAL 6)
0127     set(_CONFIG_CMAKE_IN "KUserFeedbackConfig-Qt6.cmake.in")
0128 else()
0129     set(_CONFIG_CMAKE_IN "KUserFeedbackConfig-Qt5.cmake.in")
0130 endif()
0131 
0132 configure_package_config_file(
0133     ${CMAKE_CURRENT_SOURCE_DIR}/${_CONFIG_CMAKE_IN}
0134     ${CMAKE_CURRENT_BINARY_DIR}/KUserFeedback${KUSERFEEDBACK_EXTENSION}Config.cmake
0135     INSTALL_DESTINATION ${KDE_INSTALL_CMAKEPACKAGEDIR}/KUserFeedback
0136     PATH_VARS KDE_INSTALL_INCLUDEDIR
0137 )
0138 
0139 install(FILES
0140     ${CMAKE_CURRENT_BINARY_DIR}/KUserFeedback${KUSERFEEDBACK_EXTENSION}Config.cmake
0141     ${CMAKE_CURRENT_BINARY_DIR}/KUserFeedback${KUSERFEEDBACK_EXTENSION}ConfigVersion.cmake
0142     DESTINATION ${KDE_INSTALL_CMAKEPACKAGEDIR}/KUserFeedback${KUSERFEEDBACK_EXTENSION}
0143 )
0144 
0145 install(EXPORT KUserFeedback${KUSERFEEDBACK_EXTENSION}Targets DESTINATION ${KDE_INSTALL_CMAKEPACKAGEDIR}/KUserFeedback${KUSERFEEDBACK_EXTENSION} FILE KUserFeedback${KUSERFEEDBACK_EXTENSION}Target.cmake)
0146 
0147 if (ECM_VERSION VERSION_GREATER "5.58.0")
0148     if (ECM_VERSION VERSION_GREATER "5.67.0")
0149         ecm_qt_install_logging_categories(
0150                 EXPORT KUSERFEEDBACK
0151                 FILE org_kde_UserFeedback.categories
0152                 DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR}
0153                 )
0154     else()
0155         install(FILES org_kde_UserFeedback.categories DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR})
0156     endif()
0157 else()
0158     install(FILES org_kde_UserFeedback.categories DESTINATION ${KDE_INSTALL_CONFDIR})
0159 endif()
0160 
0161 ecm_install_po_files_as_qm(poqm)
0162 
0163 feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
0164 
0165 install(FILES
0166     ${KUserFeedbackCore_HEADERS}
0167     ${CMAKE_CURRENT_BINARY_DIR}/kuserfeedback_version.h
0168     DESTINATION ${KDE_INSTALL_INCLUDEDIR}/KUserFeedback${KUSERFEEDBACK_EXTENSION}
0169 )