-
-
Notifications
You must be signed in to change notification settings - Fork 71
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
142 lines (117 loc) · 4.84 KB
/
CMakeLists.txt
File metadata and controls
142 lines (117 loc) · 4.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
cmake_minimum_required(VERSION 3.29)
set(KF_VERSION "6.26.0")
project(KSyntaxHighlighting VERSION ${KF_VERSION})
find_package(ECM 6.25.0 REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
include(KDEInstallDirs)
include(KDECMakeSettings)
include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE)
include(KDEGitCommitHooks)
include(FeatureSummary)
include(GenerateExportHeader)
include(ECMSetupVersion)
include(ECMGenerateHeaders)
include(CMakePackageConfigHelpers)
include(ECMPoQmTools)
include(ECMQtDeclareLoggingCategory)
include(ECMMarkNonGuiExecutable)
include(ECMOptionalAddSubdirectory)
include(ECMGenerateExportHeader)
include(ECMDeprecationSettings)
include(ECMQmlModule)
include(ECMGenerateQDoc)
set(ksyntaxhighlighting_version_header "${CMAKE_CURRENT_BINARY_DIR}/src/lib/ksyntaxhighlighting_version.h")
ecm_setup_version(PROJECT
VARIABLE_PREFIX KSYNTAXHIGHLIGHTING
VERSION_HEADER "${ksyntaxhighlighting_version_header}"
PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF6SyntaxHighlightingConfigVersion.cmake"
SOVERSION 6
)
set(EXCLUDE_DEPRECATED_BEFORE_AND_AT 0 CACHE STRING "Control the range of deprecated API excluded from the build [default=0].")
#
# Dependencies
#
set(REQUIRED_QT_VERSION 6.9.0)
find_package(Qt6 ${REQUIRED_QT_VERSION} NO_MODULE REQUIRED COMPONENTS Core Network Test)
option(KSYNTAXHIGHLIGHTING_USE_GUI "Build components depending on QtGui" ON)
if(KSYNTAXHIGHLIGHTING_USE_GUI)
find_package(Qt6 ${REQUIRED_QT_VERSION} NO_MODULE REQUIRED COMPONENTS Gui)
endif()
find_package(Qt6 ${REQUIRED_QT_VERSION} NO_MODULE QUIET OPTIONAL_COMPONENTS PrintSupport Widgets Quick)
set_package_properties(Qt6 PROPERTIES URL "http://qt-project.org/")
set_package_properties(Qt6Widgets PROPERTIES PURPOSE "Example application.")
set_package_properties(Qt6PrintSupport PROPERTIES PURPOSE "Example application.")
set_package_properties(Qt6Quick PROPERTIES PURPOSE "QtQuick bindings.")
# https://xerces.apache.org/index.html for validation
find_package (XercesC)
set_package_properties(XercesC 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.")
find_package(Python)
set_package_properties(Python PROPERTIES PURPOSE "Auto-generate Jinja 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")
#
# Translations
#
ecm_install_po_files_as_qm(poqm)
# 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()
ecm_set_disabled_deprecation_versions(
QT 6.11.0
)
#
# Actually build the stuff
#
include_directories(${CMAKE_CURRENT_BINARY_DIR})
add_subdirectory(data)
add_subdirectory(src)
if(TARGET Qt6::Gui)
add_subdirectory(examples)
if (BUILD_TESTING)
add_subdirectory(autotests)
endif()
endif()
#
# CMake package config file generation
#
set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF6SyntaxHighlighting")
configure_package_config_file(
"${CMAKE_CURRENT_SOURCE_DIR}/KF6SyntaxHighlightingConfig.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/KF6SyntaxHighlightingConfig.cmake"
INSTALL_DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
)
install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/KF6SyntaxHighlightingConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/KF6SyntaxHighlightingConfigVersion.cmake"
DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
COMPONENT Devel)
if(TARGET KF6SyntaxHighlighting)
install(EXPORT KF6SyntaxHighlightingTargets
DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
FILE KF6SyntaxHighlightingTargets.cmake
NAMESPACE KF6::)
endif()
install(FILES "${ksyntaxhighlighting_version_header}"
DESTINATION "${KDE_INSTALL_INCLUDEDIR_KF}/KSyntaxHighlighting"
COMPONENT Devel)
include(ECMFeatureSummary)
ecm_feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
# add target to update kate-editor.org syntax page + update site
add_custom_target(update_kate_editor_org
COMMAND "${PERL_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/utils/update-kate-editor-org.pl" "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}")
kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)