diff --git a/CMakeLists.txt b/CMakeLists.txt index cf7edba..c3e7323 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,148 +1,147 @@ cmake_minimum_required(VERSION 3.5) set(KF5_VERSION "5.68.0") project(KSyntaxHighlighting VERSION ${KF5_VERSION}) find_package(ECM 5.67.0 REQUIRED NO_MODULE) set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) if(POLICY CMP0063) cmake_policy(SET CMP0063 NEW) endif() include(KDEInstallDirs) include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE) include(KDECMakeSettings) include(KDEClangFormat) include(FeatureSummary) include(GenerateExportHeader) include(ECMSetupVersion) include(ECMGenerateHeaders) include(ECMGeneratePriFile) include(CMakePackageConfigHelpers) include(ECMPoQmTools) include(ECMQtDeclareLoggingCategory) include(ECMMarkNonGuiExecutable) include(ECMAddQch) include(ECMOptionalAddSubdirectory) 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.12.0) find_package(Qt5 ${REQUIRED_QT_VERSION} NO_MODULE REQUIRED COMPONENTS Core Network Test) option(KSYNTAXHIGHLIGHTING_USE_GUI "Build components depending on Qt5Gui" ON) if(KSYNTAXHIGHLIGHTING_USE_GUI) find_package(Qt5 ${REQUIRED_QT_VERSION} NO_MODULE REQUIRED COMPONENTS Gui) endif() find_package(Qt5 ${REQUIRED_QT_VERSION} NO_MODULE QUIET OPTIONAL_COMPONENTS PrintSupport Widgets XmlPatterns) set_package_properties(Qt5 PROPERTIES URL "http://qt-project.org/") set_package_properties(Qt5Widgets PROPERTIES PURPOSE "Example application.") set_package_properties(Qt5PrintSupport 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.") # # allow to install the "differently" licensed syntax xml files instead of putting them in a QRC and link them in # option(QRC_SYNTAX "Bundle the syntax definition files inside the library as resources" ON) add_feature_info(SYNTAX_RESOURCE ${QRC_SYNTAX} "Bundle the syntax definition files inside the library as resources") # # allow to turn of lookup for syntax files and themes via QStandardPaths # option(NO_STANDARD_PATHS "Skip lookup of syntax and theme definitions in QStandardPaths locations" OFF) add_feature_info(FEATURE_NO_STANDARD_PATHS ${NO_STANDARD_PATHS} "Skip lookup of syntax and theme definitions in QStandardPaths locations") # # 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() # tell the framework if it shall use the syntax files from the resource if (QRC_SYNTAX) add_definitions(-DHAS_SYNTAX_RESOURCE) endif() # skip standard paths? if (NO_STANDARD_PATHS) add_definitions(-DNO_STANDARD_PATHS) endif() add_definitions(-DQT_NO_FOREACH) add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x050d00) # # Actually build the stuff # include_directories(${CMAKE_CURRENT_BINARY_DIR}) add_subdirectory(data) add_subdirectory(src) if(TARGET Qt5::Gui) add_subdirectory(examples) if (BUILD_TESTING) add_subdirectory(autotests) endif() endif() # # 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) if(TARGET KF5SyntaxHighlighting) install(EXPORT KF5SyntaxHighlightingTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" FILE KF5SyntaxHighlightingTargets.cmake NAMESPACE KF5::) endif() 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_LOGGINGCATEGORIESDIR}) feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES) # add clang-format target for all our real source files file(GLOB ALL_CLANG_FORMAT_TEST_FILES autotests/*.cpp autotests/*.h) file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES examples/*.cpp examples/*.h src/*.cpp src/*.h) kde_clang_format(${ALL_CLANG_FORMAT_TEST_FILES} ${ALL_CLANG_FORMAT_SOURCE_FILES}) diff --git a/org_kde_ksyntaxhighlighting.categories b/org_kde_ksyntaxhighlighting.categories deleted file mode 100644 index a35cfe2..0000000 --- a/org_kde_ksyntaxhighlighting.categories +++ /dev/null @@ -1 +0,0 @@ -org.kde.ksyntaxhighlighting Syntax Highlighting IDENTIFIER [KSyntaxHighlighting::Log] diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index b882025..beac3d5 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,5 +1,11 @@ add_subdirectory(indexer) if(TARGET Qt5::Gui) add_subdirectory(lib) add_subdirectory(cli) endif() + +ecm_qt_install_logging_categories( + EXPORT KSYNTAXHIGHLIGHTING + FILE ksyntaxhighlighting.categories + DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR} +) diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index 9e95772..02c889d 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -1,89 +1,91 @@ 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 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 + DESCRIPTION "Syntax Highlighting" + EXPORT KSYNTAXHIGHLIGHTING ) add_library(KF5SyntaxHighlighting ${syntax_highlighting_srcs} $) 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) ecm_generate_headers(SyntaxHighlighting_HEADERS HEADER_NAMES AbstractHighlighter Definition DefinitionDownloader 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 INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR} 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})