Warning, /frameworks/syntax-highlighting/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")
0004 project(KSyntaxHighlighting VERSION ${KF_VERSION})
0005
0006 find_package(ECM 5.249.0 REQUIRED NO_MODULE)
0007 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
0008
0009 include(KDEInstallDirs)
0010 include(KDECMakeSettings)
0011 include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE)
0012 include(KDEGitCommitHooks)
0013
0014 include(FeatureSummary)
0015 include(GenerateExportHeader)
0016 include(ECMSetupVersion)
0017 include(ECMGenerateHeaders)
0018 include(CMakePackageConfigHelpers)
0019 include(ECMPoQmTools)
0020 include(ECMQtDeclareLoggingCategory)
0021 include(ECMMarkNonGuiExecutable)
0022 include(ECMAddQch)
0023 include(ECMOptionalAddSubdirectory)
0024 include(ECMGenerateExportHeader)
0025 include(ECMDeprecationSettings)
0026 include(ECMQmlModule)
0027
0028 set(ksyntaxhighlighting_version_header "${CMAKE_CURRENT_BINARY_DIR}/src/lib/ksyntaxhighlighting_version.h")
0029 ecm_setup_version(PROJECT
0030 VARIABLE_PREFIX KSYNTAXHIGHLIGHTING
0031 VERSION_HEADER "${ksyntaxhighlighting_version_header}"
0032 PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF6SyntaxHighlightingConfigVersion.cmake"
0033 SOVERSION 6
0034 )
0035
0036 set(EXCLUDE_DEPRECATED_BEFORE_AND_AT 0 CACHE STRING "Control the range of deprecated API excluded from the build [default=0].")
0037
0038 #
0039 # Dependencies
0040 #
0041 set(REQUIRED_QT_VERSION 6.5.0)
0042 find_package(Qt6 ${REQUIRED_QT_VERSION} NO_MODULE REQUIRED COMPONENTS Core Network Test)
0043 option(KSYNTAXHIGHLIGHTING_USE_GUI "Build components depending on QtGui" ON)
0044 if(KSYNTAXHIGHLIGHTING_USE_GUI)
0045 find_package(Qt6 ${REQUIRED_QT_VERSION} NO_MODULE REQUIRED COMPONENTS Gui)
0046 endif()
0047 find_package(Qt6 ${REQUIRED_QT_VERSION} NO_MODULE QUIET OPTIONAL_COMPONENTS PrintSupport Widgets Quick)
0048 set_package_properties(Qt6 PROPERTIES URL "http://qt-project.org/")
0049 set_package_properties(Qt6Widgets PROPERTIES PURPOSE "Example application.")
0050 set_package_properties(Qt6PrintSupport PROPERTIES PURPOSE "Example application.")
0051 set_package_properties(Qt6Quick PROPERTIES PURPOSE "QtQuick bindings.")
0052
0053 # https://xerces.apache.org/index.html for validation
0054 find_package (XercesC)
0055 set_package_properties(XercesC PROPERTIES PURPOSE "Compile-time validation of syntax definition files.")
0056
0057 find_package(Perl REQUIRED)
0058 set_package_properties(Perl PROPERTIES PURPOSE "Auto-generate PHP syntax definition files.")
0059
0060 #
0061 # allow to install the "differently" licensed syntax xml files instead of putting them in a QRC and link them in
0062 #
0063 option(QRC_SYNTAX "Bundle the syntax definition files inside the library as resources" ON)
0064 add_feature_info(SYNTAX_RESOURCE ${QRC_SYNTAX} "Bundle the syntax definition files inside the library as resources")
0065
0066 #
0067 # allow to turn of lookup for syntax files and themes via QStandardPaths
0068 #
0069 option(NO_STANDARD_PATHS "Skip lookup of syntax and theme definitions in QStandardPaths locations" OFF)
0070 add_feature_info(FEATURE_NO_STANDARD_PATHS ${NO_STANDARD_PATHS} "Skip lookup of syntax and theme definitions in QStandardPaths locations")
0071
0072 #
0073 # API documentation
0074 #
0075 option(BUILD_QCH "Build API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)" OFF)
0076 add_feature_info(QCH ${BUILD_QCH} "API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)")
0077
0078 #
0079 # Translations
0080 #
0081 ecm_install_po_files_as_qm(poqm)
0082
0083 # tell the framework if it shall use the syntax files from the resource
0084 if (QRC_SYNTAX)
0085 add_definitions(-DHAS_SYNTAX_RESOURCE)
0086 endif()
0087
0088 # skip standard paths?
0089 if (NO_STANDARD_PATHS)
0090 add_definitions(-DNO_STANDARD_PATHS)
0091 endif()
0092
0093 ecm_set_disabled_deprecation_versions(
0094 QT 6.5
0095 )
0096
0097 #
0098 # Actually build the stuff
0099 #
0100 include_directories(${CMAKE_CURRENT_BINARY_DIR})
0101 add_subdirectory(data)
0102 add_subdirectory(src)
0103 if(TARGET Qt6::Gui)
0104 add_subdirectory(examples)
0105 if (BUILD_TESTING)
0106 add_subdirectory(autotests)
0107 endif()
0108 endif()
0109
0110 #
0111 # CMake package config file generation
0112 #
0113 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF6SyntaxHighlighting")
0114
0115 if (BUILD_QCH)
0116 ecm_install_qch_export(
0117 TARGETS KF6SyntaxHighlighting_QCH
0118 FILE KF6SyntaxHighlightingQchTargets.cmake
0119 DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
0120 COMPONENT Devel
0121 )
0122 set(PACKAGE_INCLUDE_QCHTARGETS "include(\"\${CMAKE_CURRENT_LIST_DIR}/KF6SyntaxHighlightingQchTargets.cmake\")")
0123 endif()
0124
0125 configure_package_config_file(
0126 "${CMAKE_CURRENT_SOURCE_DIR}/KF6SyntaxHighlightingConfig.cmake.in"
0127 "${CMAKE_CURRENT_BINARY_DIR}/KF6SyntaxHighlightingConfig.cmake"
0128 INSTALL_DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
0129 )
0130
0131 install(FILES
0132 "${CMAKE_CURRENT_BINARY_DIR}/KF6SyntaxHighlightingConfig.cmake"
0133 "${CMAKE_CURRENT_BINARY_DIR}/KF6SyntaxHighlightingConfigVersion.cmake"
0134 DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
0135 COMPONENT Devel)
0136
0137 if(TARGET KF6SyntaxHighlighting)
0138 install(EXPORT KF6SyntaxHighlightingTargets
0139 DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
0140 FILE KF6SyntaxHighlightingTargets.cmake
0141 NAMESPACE KF6::)
0142 endif()
0143
0144 install(FILES "${ksyntaxhighlighting_version_header}"
0145 DESTINATION "${KDE_INSTALL_INCLUDEDIR_KF}/KSyntaxHighlighting"
0146 COMPONENT Devel)
0147
0148 include(ECMFeatureSummary)
0149 ecm_feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
0150
0151 # add target to update kate-editor.org syntax page + update site
0152 add_custom_target(update_kate_editor_org
0153 COMMAND "${PERL_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/utils/update-kate-editor-org.pl" "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}")
0154
0155 kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)