diff --git a/CMakeLists.txt b/CMakeLists.txt index 21a93d1..c211f19 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,88 +1,106 @@ cmake_minimum_required(VERSION 3.0) set(KF5_VERSION "5.35.0") project(KSyntaxHighlighting VERSION ${KF5_VERSION}) find_package(ECM 5.35.0 REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR}) if(POLICY CMP0063) cmake_policy(SET CMP0063 NEW) endif() include(FeatureSummary) include(GenerateExportHeader) include(ECMSetupVersion) include(ECMGenerateHeaders) include(ECMGeneratePriFile) include(CMakePackageConfigHelpers) include(ECMPoQmTools) include(ECMQtDeclareLoggingCategory) include(KDEInstallDirs) include(KDEFrameworkCompilerSettings) include(KDECMakeSettings) include(ECMMarkNonGuiExecutable) +include(ECMAddQch) ecm_setup_version(PROJECT VARIABLE_PREFIX SyntaxHighlighting VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/ksyntaxhighlighting_version.h" PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF5SyntaxHighlightingConfigVersion.cmake" ) # # Dependencies # set(REQUIRED_QT_VERSION "5.6.0") find_package(Qt5 ${REQUIRED_QT_VERSION} NO_MODULE REQUIRED COMPONENTS Core Gui Network Test) find_package(Qt5 ${REQUIRED_QT_VERSION} NO_MODULE QUIET OPTIONAL_COMPONENTS Widgets XmlPatterns) set_package_properties(Qt5 PROPERTIES URL "http://qt-project.org/") set_package_properties(Qt5Widgets PROPERTIES PURPOSE "Example application.") set_package_properties(Qt5XmlPatterns PROPERTIES PURPOSE "Compile-time validation of syntax definition files.") find_package(Perl REQUIRED) set_package_properties(Perl PROPERTIES PURPOSE "Auto-generate PHP syntax definition files.") + +# +# API documentation +# +option(BUILD_QCH "Build API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)" OFF) +add_feature_info(QCH ${BUILD_QCH} "API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)") + # # Translations # if (IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/po") ecm_install_po_files_as_qm(po) endif() # # Actually build the stuff # include_directories(${CMAKE_CURRENT_BINARY_DIR}) add_subdirectory(data) add_subdirectory(src) add_subdirectory(examples) add_subdirectory(autotests) # # CMake package config file generation # set(CMAKECONFIG_INSTALL_DIR "${CMAKECONFIG_INSTALL_PREFIX}/KF5SyntaxHighlighting") +if (BUILD_QCH) + ecm_install_qch_export( + TARGETS KF5SyntaxHighlighting_QCH + FILE KF5SyntaxHighlightingQchTargets.cmake + DESTINATION "${CMAKECONFIG_INSTALL_DIR}" + COMPONENT Devel + ) + set(PACKAGE_INCLUDE_QCHTARGETS "include(\"\${CMAKE_CURRENT_LIST_DIR}/KF5SyntaxHighlightingQchTargets.cmake\")") +endif() + configure_package_config_file( "${CMAKE_CURRENT_SOURCE_DIR}/KF5SyntaxHighlightingConfig.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/KF5SyntaxHighlightingConfig.cmake" INSTALL_DESTINATION "${CMAKECONFIG_INSTALL_DIR}" ) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/KF5SyntaxHighlightingConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/KF5SyntaxHighlightingConfigVersion.cmake" DESTINATION "${CMAKECONFIG_INSTALL_DIR}" COMPONENT Devel) install(EXPORT KF5SyntaxHighlightingTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" FILE KF5SyntaxHighlightingTargets.cmake NAMESPACE KF5::) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/ksyntaxhighlighting_version.h" DESTINATION "${KDE_INSTALL_INCLUDEDIR_KF5}" COMPONENT Devel) install(FILES org_kde_ksyntaxhighlighting.categories DESTINATION ${KDE_INSTALL_CONFDIR}) feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES) diff --git a/KF5SyntaxHighlightingConfig.cmake.in b/KF5SyntaxHighlightingConfig.cmake.in index d4cfc8a..0fd1778 100644 --- a/KF5SyntaxHighlightingConfig.cmake.in +++ b/KF5SyntaxHighlightingConfig.cmake.in @@ -1,5 +1,6 @@ @PACKAGE_INIT@ find_package(Qt5 @Qt5Core_VERSION_MAJOR@.@Qt5Core_VERSION_MINOR@ NO_MODULE REQUIRED COMPONENTS Core Gui) include("${CMAKE_CURRENT_LIST_DIR}/KF5SyntaxHighlightingTargets.cmake") +@PACKAGE_INCLUDE_QCHTARGETS@ diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index 80b463d..8d0d538 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -1,68 +1,89 @@ ecm_create_qm_loader(syntax_highlighting_QM_LOADER syntaxhighlighting5_qt) set(syntax_highlighting_srcs abstracthighlighter.cpp context.cpp contextswitch.cpp definitiondownloader.cpp foldingregion.cpp format.cpp htmlhighlighter.cpp keywordlist.cpp matchresult.cpp rule.cpp definition.cpp repository.cpp state.cpp syntaxhighlighter.cpp theme.cpp wildcardmatcher.cpp themedata.cpp ${syntax_highlighting_QM_LOADER} ) ecm_qt_declare_logging_category(syntax_highlighting_srcs HEADER ksyntaxhighlighting_logging.h IDENTIFIER KSyntaxHighlighting::Log CATEGORY_NAME org.kde.ksyntaxhighlighting ) qt5_add_resources(themes_QRC ${CMAKE_SOURCE_DIR}/data/themes/theme-data.qrc) add_library(KF5SyntaxHighlighting SHARED ${syntax_highlighting_srcs} ${themes_QRC}) generate_export_header(KF5SyntaxHighlighting BASE_NAME KSyntaxHighlighting) set_target_properties(KF5SyntaxHighlighting PROPERTIES VERSION ${SyntaxHighlighting_VERSION_STRING} SOVERSION ${SyntaxHighlighting_SOVERSION} EXPORT_NAME SyntaxHighlighting ) target_include_directories(KF5SyntaxHighlighting INTERFACE "$") target_include_directories(KF5SyntaxHighlighting PUBLIC "$") target_link_libraries(KF5SyntaxHighlighting LINK_PUBLIC Qt5::Gui LINK_PRIVATE Qt5::Network SyntaxHighlightingData) ecm_generate_headers(SyntaxHighlighting_HEADERS HEADER_NAMES AbstractHighlighter Definition FoldingRegion Format Repository State SyntaxHighlighter Theme REQUIRED_HEADERS SyntaxHighlighting_HEADERS ) install(TARGETS KF5SyntaxHighlighting EXPORT KF5SyntaxHighlightingTargets ${INSTALL_TARGETS_DEFAULT_ARGS}) install(FILES ${SyntaxHighlighting_HEADERS} ${CMAKE_CURRENT_BINARY_DIR}/ksyntaxhighlighting_export.h DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF5}/KSyntaxHighlighting) +if(BUILD_QCH) + ecm_add_qch( + KF5SyntaxHighlighting_QCH + NAME KSyntaxHighlighting + BASE_NAME KF5SyntaxHighlighting + VERSION ${KF5_VERSION} + ORG_DOMAIN org.kde + SOURCES # using only public headers, to cover only public API + ${SyntaxHighlighting_HEADERS} + MD_MAINPAGE "${CMAKE_SOURCE_DIR}/README.md" + LINK_QCHS + Qt5Core_QCH + Qt5Gui_QCH + BLANK_MACROS + KSYNTAXHIGHLIGHTING_EXPORT + KSYNTAXHIGHLIGHTING_DEPRECATED + TAGFILE_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR} + QCH_INSTALL_DESTINATION ${KDE_INSTALL_QTQCHDIR} + COMPONENT Devel + ) +endif() ecm_generate_pri_file( BASE_NAME KSyntaxHighlighting LIB_NAME KF5SyntaxHighlighting DEPS "gui" FILENAME_VAR PRI_FILENAME INCLUDE_INSTALL_DIR ${KDE_INSTALL_INCLUDEDIR_KF5}/KSyntaxHighlighting ) install(FILES ${PRI_FILENAME} DESTINATION ${ECM_MKSPECS_INSTALL_DIR})