Repository navigation
Expand file tree
/
Copy pathsource.cmake.js
More file actions
408 lines (406 loc) · 28.4 KB
/
Copy pathsource.cmake.js
File metadata and controls
408 lines (406 loc) · 28.4 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
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
// This is a TextMate grammar distributed by `starry-night`.
// This grammar is developed at
// <https://github.com/microsoft/vscode-cmake-tools>
// and licensed `mit`.
// See <https://github.com/wooorm/starry-night> for more info.
/**
* @import {Grammar} from '@wooorm/starry-night'
*/
/** @type {Grammar} */
const grammar = {
extensions: ['.cmake', '.cmake.in'],
names: ['cmake'],
patterns: [
{include: '#bracketComment'},
{include: '#lineComment'},
{include: '#bracketArgument'},
{include: '#quoted'},
{include: '#generatorExpression'},
{include: '#variableReference'},
{include: '#envVariableReference'},
{include: '#cacheVariableReference'},
{include: '#deprecatedKeywords'},
{include: '#scopedControlFlowCommand'},
{include: '#scopedListCommand'},
{include: '#scopedStringCommand'},
{include: '#scopedMessageCommand'},
{include: '#scopedProjectCommand'},
{include: '#scopedSetCommand'},
{include: '#scopedInstallCommand'},
{include: '#scopedFindPackageHandleStdArgsCommand'},
{include: '#scopedExternalContentCommand'},
{include: '#commandControl'},
{include: '#conditionalControl'},
{include: '#loopControl'},
{include: '#returnControl'},
{include: '#scopedPropertyCommand'},
{include: '#builtInCommands'},
{include: '#knownVariables'},
{include: '#properties'},
{include: '#commandProperties'},
{include: '#commandInvocationIdentifier'},
{include: '#operators'},
{include: '#boolean'},
{include: '#unquoted'}
],
repository: {
boolean: {
match: '\\b(?i:TRUE|FALSE|ON|OFF|YES|NO)\\b',
name: 'constant.language.boolean.cmake'
},
bracketArgument: {
begin: '\\[(=*)\\[',
beginCaptures: {0: {name: 'punctuation.definition.string.begin.cmake'}},
end: '\\]\\1\\]',
endCaptures: {0: {name: 'punctuation.definition.string.end.cmake'}},
name: 'variable.parameter.cmake'
},
bracketComment: {
begin: '#\\[(=*)\\[',
beginCaptures: {0: {name: 'punctuation.definition.comment.begin.cmake'}},
end: '\\]\\1\\]',
endCaptures: {0: {name: 'punctuation.definition.comment.end.cmake'}},
name: 'comment.block.bracket.cmake'
},
builtInCommands: {
match:
'\\b(?i:add_compile_definitions|add_compile_options|add_custom_command|add_custom_target|add_definitions|add_dependencies|add_executable|add_library|add_link_options|add_subdirectory|add_test|aux_source_directory|block|build_command|build_name|cmake_file_api|cmake_host_system_information|cmake_language|cmake_minimum_required|cmake_parse_arguments|cmake_path|cmake_pkg_config|cmake_policy|configure_file|create_test_sourcelist|ctest_build|ctest_configure|ctest_coverage|ctest_empty_binary_directory|ctest_memcheck|ctest_read_custom_files|ctest_run_script|ctest_sleep|ctest_start|ctest_submit|ctest_test|ctest_update|ctest_upload|define_property|enable_language|enable_testing|endblock|execute_process|exec_program|export|export_library_dependencies|ExternalProject_Add|ExternalProject_Add_Step|ExternalProject_Add_StepTargets|ExternalProject_Add_StepDependencies|ExternalProject_Get_Property|FetchContent_Declare|FetchContent_GetProperties|FetchContent_MakeAvailable|FetchContent_Populate|FetchContent_SetPopulated|file|find_file|find_library|find_package|find_package_check_version|find_package_handle_standard_args|find_path|find_program|fltk_wrap_ui|get_cmake_property|get_directory_property|get_filename_component|get_property|get_source_file_property|get_target_property|get_test_property|include|include_directories|include_external_msproject|include_guard|include_regular_expression|install|install_files|install_programs|install_targets|link_directories|link_libraries|list|load_cache|load_command|make_directory|mark_as_advanced|math|message|option|output_required_files|project|qt_wrap_cpp|qt_wrap_ui|remove|remove_definitions|return|separate_arguments|set|set_directory_properties|set_property|set_source_files_properties|set_target_properties|set_tests_properties|site_name|source_group|string|subdirs|subdir_depends|target_compile_definitions|target_compile_features|target_compile_options|target_include_directories|target_link_directories|target_link_libraries|target_link_options|target_precompile_headers|target_sources|try_compile|try_run|unset|use_mangled_mesa|utility_source|variable_requires|variable_watch|write_file)\\b(?=\\s*\\()',
name: 'support.function.cmake'
},
cacheVariableReference: {
match: '\\$CACHE\\{\\w+\\}',
name: 'variable.other.cache.cmake'
},
commandControl: {
match: '^\\s*\\b(?i:macro|endmacro|function|endfunction)\\b',
name: 'keyword.control.command.cmake'
},
commandInvocationIdentifier: {
match: '\\b[a-zA-Z_][a-zA-Z0-9_]*\\b(?=\\s*\\()',
name: 'entity.name.function.cmake'
},
commandProperties: {
match:
'\\b(?i:ALL|APPEND|BOOL|BUILD|BYPRODUCTS|CACHE|CAPTURE_CMAKE_ERROR|CMAKE_FIND_PACKAGE_NAME|CMAKE_FIND_ROOT_PATH_BOTH|CMAKE_FLAGS|COMMAND|COMMAND_EXPAND_LISTS|COMMENT|COMPILE_DEFINITIONS|COMPILE_OUTPUT_VARIABLE|COMPONENT|CONDITION|CONFIGURATION|CONFIGURATIONS|CONTENT|COPY_FILE|COPY_FILE_ERROR|COPYONLY|DEFECT_COUNT|DEPENDS|DEPFILE|DESTINATION|DIRECTORY|DOC|ENCODING|END|ESCAPE_QUOTES|EXCLUDE|EXCLUDE_FIXTURE|EXCLUDE_FIXTURE_CLEANUP|EXCLUDE_FIXTURE_SETUP|EXCLUDE_FROM_ALL|EXCLUDE_LABEL|EXPECTED_HASH|EXPECTED_MD|EXPR|FILEPATH|FILES|FILTER|FIND|FLAGS|GET|GLOBAL|HINTS|HTTPHEADER|IMPLICIT_DEPENDS|INACTIVITY_TIMEOUT|INCLUDE|INCLUDE_LABEL|INPUT|INPUT_FILE|INSERT|INSTALL|INTERNAL|LABELS|LENGTH|LENGTH_MAXIMUM|LENGTH_MINIMUM|LIMIT_COUNT|LIMIT_INPUT|LIMIT_OUTPUT|LINK_LIBRARIES|LOG|MAIN_DEPENDENCY|MD|NAMES|NETRC|NETRC_FILE|NEWLINE_CONSUME|NEWLINE_STYLE|NO_CMAKE_FIND_ROOT_PATH|NO_HEX_CONVERSION|NUMBER_ERRORS|NUMBER_WARNINGS|ONLY_CMAKE_FIND_ROOT_PATH|OPTIONAL|OPTIONS|OUTPUT|OUTPUT_QUIET|OUTPUT_VARIABLE|PACKAGE_FIND_NAME|PACKAGE_VERSION|PARALLEL_LEVEL|PARTS|PATH|PATH_SUFFIXES|PERMISSIONS|PRE_BUILD|PREFIX|PROJECT_NAME|QUIET|REGEX|REGULAR_EXPRESSION|REMOVE_AT|REMOVE_DUPLICATES|RENAME|RESULT_VARIABLE|RESULTS_VARIABLE|RETRY_COUNT|RETRY_DELAY|RETURN_VALUE|REVERSE|RUN_OUTPUT_VARIABLE|SCHEDULE_RANDOM|SHOW_PROGRESS|SORT|SOURCE|SOURCES|START|STATIC|STATUS|STOP_TIME|STRIDE|STRING|TARGET|TEST|TEST_LOAD|TIMEOUT|TLS_CAINFO|TLS_VERIFY|TREE|TYPE|USERPWD|USES_TERMINAL|VARIABLE|VERBATIM|WORKING_DIRECTORY)\\b',
name: 'support.function.commandProperty.cmake'
},
commonArgPatterns: {
patterns: [
{include: '#bracketComment'},
{include: '#lineComment'},
{include: '#bracketArgument'},
{include: '#quoted'},
{include: '#generatorExpression'},
{include: '#variableReference'},
{include: '#envVariableReference'},
{include: '#cacheVariableReference'},
{include: '#boolean'},
{include: '#knownVariables'}
]
},
conditionalControl: {
match: '^\\s*\\b(?i:if|elseif|else|endif)\\b',
name: 'keyword.control.conditional.cmake'
},
conditionalOperators: {
match:
'\\b(?i:NOT|AND|OR|COMMAND|POLICY|TARGET|TEST|DEFINED|IN_LIST|EXISTS|IS_ABSOLUTE|IS_DIRECTORY|IS_SYMLINK|IS_NEWER_THAN|MATCHES|LESS|GREATER|EQUAL|LESS_EQUAL|GREATER_EQUAL|STRLESS|STRGREATER|STREQUAL|STRLESS_EQUAL|STRGREATER_EQUAL|VERSION_LESS|VERSION_GREATER|VERSION_EQUAL|VERSION_LESS_EQUAL|VERSION_GREATER_EQUAL|PATH_EQUAL)\\b',
name: 'keyword.operator.cmake'
},
deprecatedKeywords: {match: '(?!x)x', name: 'invalid.deprecated.cmake'},
envVariableReference: {
match: '\\$ENV\\{\\w+\\}',
name: 'variable.other.env.cmake'
},
escape: {match: '\\\\(.|$)', name: 'constant.character.escape.cmake'},
generatorExpression: {
begin: '\\$<',
beginCaptures: {
0: {name: 'punctuation.definition.generator-expression.begin.cmake'}
},
end: '>',
endCaptures: {
0: {name: 'punctuation.definition.generator-expression.end.cmake'}
},
name: 'meta.generator-expression.cmake',
patterns: [
{include: '#generatorExpression'},
{include: '#variableReference'},
{include: '#envVariableReference'},
{include: '#cacheVariableReference'},
{
match: '[A-Za-z_][A-Za-z0-9_]*',
name: 'keyword.other.generator-expression.cmake'
}
]
},
knownVariables: {
match:
'\\b(?i:APPLE|BORLAND|CMAKE_CL_64|CMAKE_COMPILER_2005|CMAKE_HOST_APPLE|CMAKE_HOST_SYSTEM|CMAKE_HOST_SYSTEM_NAME|CMAKE_HOST_SYSTEM_PROCESSOR|CMAKE_HOST_SYSTEM_VERSION|CMAKE_HOST_UNIX|CMAKE_HOST_WIN32|CMAKE_LIBRARY_ARCHITECTURE|CMAKE_LIBRARY_ARCHITECTURE_REGEX|CMAKE_OBJECT_PATH_MAX|CMAKE_SYSTEM|CMAKE_SYSTEM_NAME|CMAKE_SYSTEM_PROCESSOR|CMAKE_SYSTEM_VERSION|CYGWIN|MSVC|MSVC_IDE|MSVC_VERSION|MSVC_TOOLSET_VERSION|UNIX|WIN32|XCODE_VERSION|ANDROID|IOS|LINUX|MSYS|WINCE|WINDOWS_PHONE|WINDOWS_STORE|CMAKE_CROSSCOMPILING|CMAKE_SIZEOF_VOID_P|BUILD_SHARED_LIBS|(CMAKE_)?(ABSOLUTE_DESTINATION_FILES|AUTOMOC_RELAXED_MODE|BACKWARDS_COMPATIBILITY|BUILD_TYPE|COLOR_MAKEFILE|CONFIGURATION_TYPES|DEBUG_TARGET_PROPERTIES|DISABLE_FIND_PACKAGE_\\w+|FIND_LIBRARY_PREFIXES|FIND_LIBRARY_SUFFIXES|IGNORE_PATH|INCLUDE_PATH|INSTALL_DEFAULT_COMPONENT_NAME|INSTALL_PREFIX|LIBRARY_PATH|MFC_FLAG|MODULE_PATH|NOT_USING_CONFIG_FLAGS|POLICY_DEFAULT_CMP\\w+|PREFIX_PATH|PROGRAM_PATH|SKIP_INSTALL_ALL_DEPENDENCY|SYSTEM_IGNORE_PATH|SYSTEM_INCLUDE_PATH|SYSTEM_LIBRARY_PATH|SYSTEM_PREFIX_PATH|SYSTEM_PROGRAM_PATH|USER_MAKE_RULES_OVERRIDE|WARN_ON_ABSOLUTE_INSTALL_DESTINATION)|(CMAKE_)?(\\w+_POSTFIX|ARCHIVE_OUTPUT_DIRECTORY|AUTOMOC|AUTOMOC_MOC_OPTIONS|BUILD_WITH_INSTALL_RPATH|DEBUG_POSTFIX|EXE_LINKER_FLAGS|EXE_LINKER_FLAGS_\\w+|Fortran_FORMAT|Fortran_MODULE_DIRECTORY|GNUtoMS|INCLUDE_CURRENT_DIR|INCLUDE_CURRENT_DIR_IN_INTERFACE|INSTALL_NAME_DIR|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|LIBRARY_OUTPUT_DIRECTORY|LIBRARY_PATH_FLAG|LINK_DEF_FILE_FLAG|LINK_DEPENDS_NO_SHARED|LINK_INTERFACE_LIBRARIES|LINK_LIBRARY_FILE_FLAG|LINK_LIBRARY_FLAG|MACOSX_BUNDLE|NO_BUILTIN_CHRPATH|PDB_OUTPUT_DIRECTORY|COMPILE_PDB_OUTPUT_DIRECTORY|POSITION_INDEPENDENT_CODE|RUNTIME_OUTPUT_DIRECTORY|SKIP_BUILD_RPATH|SKIP_INSTALL_RPATH|TRY_COMPILE_CONFIGURATION|USE_RELATIVE_PATHS|WIN32_EXECUTABLE)|EXECUTABLE_OUTPUT_PATH|LIBRARY_OUTPUT_PATH|CMAKE_(AR|ARGC|ARGV0|BINARY_DIR|BUILD_TOOL|C_STANDARD|C_STANDARD_REQUIRED|CXX_STANDARD|CXX_STANDARD_REQUIRED|C_COMPILER|CXX_COMPILER|C_COMPILER_ID|CXX_COMPILER_ID|C_FLAGS|CXX_FLAGS|C_FLAGS_DEBUG|C_FLAGS_RELEASE|C_FLAGS_MINSIZEREL|C_FLAGS_RELWITHDEBINFO|CXX_FLAGS_DEBUG|CXX_FLAGS_RELEASE|CXX_FLAGS_MINSIZEREL|CXX_FLAGS_RELWITHDEBINFO|CACHEFILE_DIR|CACHE_MAJOR_VERSION|CACHE_MINOR_VERSION|CACHE_PATCH_VERSION|CFG_INTDIR|COMMAND|CROSSCOMPILING|CTEST_COMMAND|CURRENT_BINARY_DIR|CURRENT_LIST_DIR|CURRENT_LIST_FILE|CURRENT_LIST_LINE|CURRENT_SOURCE_DIR|CURRENT_FUNCTION|CURRENT_FUNCTION_LIST_DIR|CURRENT_FUNCTION_LIST_FILE|CURRENT_FUNCTION_LIST_LINE|DL_LIBS|EDIT_COMMAND|EXECUTABLE_SUFFIX|EXTRA_GENERATOR|EXTRA_SHARED_LIBRARY_SUFFIXES|GENERATOR|GENERATOR_PLATFORM|GENERATOR_TOOLSET|HOME_DIRECTORY|IMPORT_LIBRARY_PREFIX|IMPORT_LIBRARY_SUFFIX|LINK_LIBRARY_SUFFIX|MAJOR_VERSION|MAKE_PROGRAM|MINOR_VERSION|PARENT_LIST_FILE|PATCH_VERSION|PROJECT_NAME|RANLIB|ROOT|SCRIPT_MODE_FILE|SHARED_LIBRARY_PREFIX|SHARED_LIBRARY_SUFFIX|SHARED_LINKER_FLAGS|SHARED_MODULE_PREFIX|SHARED_MODULE_SUFFIX|SIZEOF_VOID_P|SKIP_RPATH|SOURCE_DIR|STANDARD_LIBRARIES|STATIC_LIBRARY_PREFIX|STATIC_LIBRARY_SUFFIX|TWEAK_VERSION|USING_VC_FREE_TOOLS|VERBOSE_MAKEFILE|VERSION|EXPORT_COMPILE_COMMANDS|TOOLCHAIN_FILE|SYSROOT|STAGING_PREFIX|FIND_ROOT_PATH|FIND_ROOT_PATH_MODE_PROGRAM|FIND_ROOT_PATH_MODE_LIBRARY|FIND_ROOT_PATH_MODE_INCLUDE|FIND_ROOT_PATH_MODE_PACKAGE)|PROJECT_BINARY_DIR|PROJECT_NAME|PROJECT_SOURCE_DIR|PROJECT_VERSION|PROJECT_VERSION_MAJOR|PROJECT_VERSION_MINOR|PROJECT_VERSION_PATCH|PROJECT_VERSION_TWEAK|PROJECT_DESCRIPTION|PROJECT_HOMEPAGE_URL|CMAKE_\\w+_COMPILER_VERSION|CMAKE_\\w+_COMPILER_FRONTEND_VARIANT|CMAKE_\\w+_SIMULATE_ID|CMAKE_\\w+_SIMULATE_VERSION|CMAKE_\\w+_EXTENSIONS|CMAKE_\\w+_STANDARD_REQUIRED|CMAKE_\\w+_COMPILE_FEATURES|CMAKE_MSVC_RUNTIME_LIBRARY|CMAKE_INTERPROCEDURAL_OPTIMIZATION|CMAKE_UNITY_BUILD(_\\w+)?|CMAKE_COMPILE_WARNING_AS_ERROR|CMAKE_COLOR_DIAGNOSTICS|CMAKE_LINK_WHAT_YOU_USE|CMAKE_VERIFY_INTERFACE_HEADER_SETS|CMAKE_OPTIMIZE_DEPENDENCIES|CMAKE_BUILD_RPATH(_USE_ORIGIN)?|\\w+_BINARY_DIR|\\w+_SOURCE_DIR)\\b',
name: 'support.type.variable.cmake'
},
lineComment: {
captures: {1: {name: 'comment.line.cmake'}},
match: '#(.*)$',
name: 'comment.line.number-sign.cmake'
},
loopControl: {
match: '^\\s*\\b(?i:foreach|endforeach|while|endwhile|break|continue)\\b',
name: 'keyword.control.loop.cmake'
},
nestedParens: {
begin: '\\(',
end: '\\)',
patterns: [{include: '#nestedParens'}, {include: '#commonArgPatterns'}]
},
nestedParensIf: {
begin: '\\(',
end: '\\)',
patterns: [
{include: '#nestedParensIf'},
{include: '#commonArgPatterns'},
{include: '#conditionalOperators'}
]
},
operators: {
match:
'\\b(?i:ABSOLUTE|AND|COMMAND|DEFINED|DIRECTORY|EQUAL|EXISTS|GREATER|GREATER_EQUAL|IN_LIST|IS_ABSOLUTE|IS_DIRECTORY|IS_NEWER_THAN|IS_SYMLINK|LAST_EXT|LESS|LESS_EQUAL|MATCHES|NAME|NAME_WE|NAME_WLE|NOT|NOTFOUND|OR|PATH|PATHS|POLICY|PROGRAM|REALPATH|STREQUAL|STRGREATER|STRGREATER_EQUAL|STRING|STRLESS|STRLESS_EQUAL|TARGET|TEST|VERSION_EQUAL|VERSION_GREATER|VERSION_GREATER_EQUAL|VERSION_LESS)\\b',
name: 'keyword.operator.cmake'
},
properties: {
match:
'\\b(?i:ADVANCED|HELPSTRING|MODIFIED|STRINGS|TYPE|VALUE|ABSTRACT|COMPILE_DEFINITIONS|COMPILE_DEFINITIONS_<CONFIG>|COMPILE_FLAGS|EXTERNAL_OBJECT|Fortran_FORMAT|GENERATED|HEADER_FILE_ONLY|KEEP_EXTENSION|LABELS|LANGUAGE|LOCATION|MACOSX_PACKAGE_LOCATION|OBJECT_DEPENDS|OBJECT_OUTPUTS|SYMBOLIC|WRAP_EXCLUDE|DEPENDS|EXCLUDE_FROM_ALL|NAME|PASS_REGULAR_EXPRESSION|RUN_SERIAL|RUN_TESTS|TIMEOUT|ADDITIONAL_MAKE_CLEAN_FILES|CACHE_VARIABLES|CLEAN_NO_CUSTOM|COMPILE_DEFINITIONS_\\w+|DEFINITIONS|IMPLICIT_DEPENDS_INCLUDE_TRANSFORM|INCLUDE_DIRECTORIES|INCLUDE_REGULAR_EXPRESSION|INTERPROCEDURAL_OPTIMIZATION|INTERPROCEDURAL_OPTIMIZATION_\\w+|LINK_DIRECTORIES|LISTFILE_STACK|MACROS|PARENT_DIRECTORY|RULE_LAUNCH_COMPILE|RULE_LAUNCH_CUSTOM|RULE_LAUNCH_LINK|TEST_INCLUDE_FILE|VARIABLES|VS_GLOBAL_SECTION_POST_\\w+|VS_GLOBAL_SECTION_PRE_\\w+|ALLOW_DUPLICATE_CUSTOM_TARGETS|DEBUG_CONFIGURATIONS|DISABLED_FEATURES|ENABLED_FEATURES|ENABLED_LANGUAGES|FIND_LIBRARY_USE_LIB64_PATHS|FIND_LIBRARY_USE_OPENBSD_VERSIONING|GLOBAL_DEPENDS_DEBUG_MODE|GLOBAL_DEPENDS_NO_CYCLES|IN_TRY_COMPILE|PACKAGES_FOUND|PACKAGES_NOT_FOUND|PREDEFINED_TARGETS_FOLDER|REPORT_UNDEFINED_PROPERTIES|RULE_MESSAGES|TARGET_ARCHIVES_MAY_BE_SHARED_LIBS|TARGET_SUPPORTS_SHARED_LIBS|USE_FOLDERS|__CMAKE_DELETE_CACHE_CHANGE_VARS_|\\w+_(OUTPUT_NAME|POSTFIX)|ARCHIVE_OUTPUT_(DIRECTORY(_\\w+)?|NAME(_\\w+)?)|AUTOMOC(_MOC_OPTIONS)?|BUILD_WITH_INSTALL_RPATH|BUNDLE(_EXTENSION)?|COMPATIBLE_INTERFACE_BOOL|COMPATIBLE_INTERFACE_STRING|COMPILE_(DEFINITIONS(_\\w+)?|FLAGS)|DEBUG_POSTFIX|DEFINE_SYMBOL|ENABLE_EXPORTS|EchoString|FOLDER|FRAMEWORK|Fortran_(FORMAT|MODULE_DIRECTORY)|GENERATOR_FILE_NAME|GNUtoMS|HAS_CXX|IMPORTED|IMPORTED_(CONFIGURATIONS|IMPLIB(_\\w+)?|LINK_DEPENDENT_LIBRARIES(_\\w+)?|LINK_INTERFACE_LANGUAGES(_\\w+)?|LINK_INTERFACE_LIBRARIES(_\\w+)?|LINK_INTERFACE_MULTIPLICITY(_\\w+)?|LOCATION(_\\w+)?|NO_SONAME(_\\w+)?|SONAME(_\\w+)?)|IMPORT_PREFIX|IMPORT_SUFFIX|INSTALL_NAME_DIR|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|INTERFACE|INTERFACE_COMPILE_DEFINITIONS|INTERFACE_INCLUDE_DIRECTORIES|LIBRARY_OUTPUT_DIRECTORY(_\\w+)?|LIBRARY_OUTPUT_NAME(_\\w+)?|LINKER_LANGUAGE|LINK_DEPENDS|LINK_FLAGS(_\\w+)?|LINK_INTERFACE_LIBRARIES(_\\w+)?|LINK_INTERFACE_MULTIPLICITY(_\\w+)?|LINK_LIBRARIES|LINK_SEARCH_END_STATIC|LINK_SEARCH_START_STATIC|LOCATION(_\\w+)?|MACOSX_BUNDLE|MACOSX_BUNDLE_INFO_PLIST|MACOSX_FRAMEWORK_INFO_PLIST|MAP_IMPORTED_CONFIG_\\w+|NO_SONAME|OSX_ARCHITECTURES(_\\w+)?|OUTPUT_NAME(_\\w+)?|PDB_NAME(_\\w+)?|POST_INSTALL_SCRIPT|PREFIX|PRE_INSTALL_SCRIPT|PRIVATE|PRIVATE_HEADER|PROJECT_LABEL|PUBLIC|PUBLIC_HEADER|RESOURCE|RULE_LAUNCH_(COMPILE|CUSTOM|LINK)|RUNTIME_OUTPUT_(DIRECTORY(_\\w+)?|NAME(_\\w+)?)|SKIP_BUILD_RPATH|SOURCES|SOVERSION|STATIC_LIBRARY_FLAGS(_\\w+)?|SUFFIX|VERSION|VS_DOTNET_REFERENCES|VS_GLOBAL_(\\w+|KEYWORD|PROJECT_TYPES)|VS_KEYWORD|VS_SCC_(AUXPATH|LOCALPATH|PROJECTNAME|PROVIDER)|VS_WINRT_EXTENSIONS|VS_WINRT_REFERENCES|WIN32_EXECUTABLE|XCODE_ATTRIBUTE_\\w+)\\b',
name: 'support.type.property.cmake'
},
quoted: {
begin: '"',
end: '"',
name: 'string.quoted.double.cmake',
patterns: [
{include: '#escape'},
{include: '#variableReference'},
{include: '#envVariableReference'},
{include: '#cacheVariableReference'},
{include: '#generatorExpression'}
]
},
returnControl: {
match: '\\b(?i:return)\\b',
name: 'keyword.control.return.cmake'
},
scopedControlFlowCommand: {
begin: '^\\s*\\b(?i:(if|elseif)|(foreach|while))\\b\\s*(\\()',
beginCaptures: {
1: {name: 'keyword.control.conditional.cmake'},
2: {name: 'keyword.control.loop.cmake'},
3: {name: 'punctuation.section.arguments.begin.cmake'}
},
end: '\\)',
endCaptures: {0: {name: 'punctuation.section.arguments.end.cmake'}},
patterns: [
{include: '#nestedParensIf'},
{include: '#commonArgPatterns'},
{include: '#conditionalOperators'},
{
match: '\\b(?i:IN|RANGE|ZIP_LISTS|LISTS|ITEMS)\\b',
name: 'keyword.other.cmake'
}
]
},
scopedExternalContentCommand: {
begin:
'\\b(?i:(FetchContent_Declare|FetchContent_MakeAvailable|FetchContent_Populate|FetchContent_GetProperties|FetchContent_SetPopulated|ExternalProject_Add|ExternalProject_Add_Step|ExternalProject_Add_StepTargets|ExternalProject_Add_StepDependencies|ExternalProject_Get_Property))\\b\\s*(\\()',
beginCaptures: {
1: {name: 'support.function.cmake'},
2: {name: 'punctuation.section.arguments.begin.cmake'}
},
end: '\\)',
endCaptures: {0: {name: 'punctuation.section.arguments.end.cmake'}},
patterns: [
{include: '#nestedParens'},
{include: '#commonArgPatterns'},
{
match:
'\\b(?i:PREFIX|TMP_DIR|STAMP_DIR|LOG_DIR|DOWNLOAD_DIR|SOURCE_DIR|BINARY_DIR|INSTALL_DIR|SUBBUILD_DIR|URL|URL_HASH|URL_MD5|DOWNLOAD_NAME|DOWNLOAD_EXTRACT_TIMESTAMP|DOWNLOAD_NO_EXTRACT|DOWNLOAD_NO_PROGRESS|DOWNLOAD_COMMAND|TIMEOUT|INACTIVITY_TIMEOUT|HTTP_USERNAME|HTTP_PASSWORD|HTTP_HEADER|TLS_VERSION|TLS_VERIFY|TLS_CAINFO|NETRC|NETRC_FILE|GIT_REPOSITORY|GIT_TAG|GIT_REMOTE_NAME|GIT_SUBMODULES|GIT_SUBMODULES_RECURSE|GIT_SHALLOW|GIT_PROGRESS|GIT_CONFIG|GIT_REMOTE_UPDATE_STRATEGY|SVN_REPOSITORY|SVN_REVISION|SVN_USERNAME|SVN_PASSWORD|SVN_TRUST_CERT|HG_REPOSITORY|HG_TAG|CVS_REPOSITORY|CVS_MODULE|CVS_TAG|UPDATE_COMMAND|UPDATE_DISCONNECTED|PATCH_COMMAND|CONFIGURE_COMMAND|CMAKE_COMMAND|CMAKE_GENERATOR|CMAKE_GENERATOR_PLATFORM|CMAKE_GENERATOR_TOOLSET|CMAKE_GENERATOR_INSTANCE|CMAKE_ARGS|CMAKE_CACHE_ARGS|CMAKE_CACHE_DEFAULT_ARGS|SOURCE_SUBDIR|CONFIGURE_HANDLED_BY_BUILD|BUILD_COMMAND|BUILD_IN_SOURCE|BUILD_ALWAYS|BUILD_BYPRODUCTS|BUILD_JOB_SERVER_AWARE|INSTALL_COMMAND|INSTALL_BYPRODUCTS|INSTALL_JOB_SERVER_AWARE|TEST_COMMAND|TEST_BEFORE_INSTALL|TEST_AFTER_INSTALL|TEST_EXCLUDE_FROM_MAIN|LOG_DOWNLOAD|LOG_UPDATE|LOG_PATCH|LOG_CONFIGURE|LOG_BUILD|LOG_INSTALL|LOG_TEST|LOG_MERGED_STDOUTERR|LOG_OUTPUT_ON_FAILURE|USES_TERMINAL_DOWNLOAD|USES_TERMINAL_UPDATE|USES_TERMINAL_PATCH|USES_TERMINAL_CONFIGURE|USES_TERMINAL_BUILD|USES_TERMINAL_INSTALL|USES_TERMINAL_TEST|DEPENDS|EXCLUDE_FROM_ALL|STEP_TARGETS|INDEPENDENT_STEP_TARGETS|LIST_SEPARATOR|COMMAND|DEPENDEES|DEPENDERS|COMMENT|ALWAYS|BYPRODUCTS|EXCLUDE_FROM_MAIN|WORKING_DIRECTORY|LOG|USES_TERMINAL|JOB_SERVER_AWARE|INDEPENDENT|SYSTEM|OVERRIDE_FIND_PACKAGE|FIND_PACKAGE_ARGS|QUIET|POPULATED)\\b',
name: 'keyword.other.cmake'
}
]
},
scopedFindPackageHandleStdArgsCommand: {
begin:
'\\b(?i:(find_package_handle_standard_args|find_package_check_version))\\b\\s*(\\()',
beginCaptures: {
1: {name: 'support.function.cmake'},
2: {name: 'punctuation.section.arguments.begin.cmake'}
},
end: '\\)',
endCaptures: {0: {name: 'punctuation.section.arguments.end.cmake'}},
patterns: [
{include: '#nestedParens'},
{include: '#commonArgPatterns'},
{
match:
'\\b(?i:REQUIRED_VARS|VERSION_VAR|HANDLE_VERSION_RANGE|HANDLE_COMPONENTS|CONFIG_MODE|NAME_MISMATCHED|REASON_FAILURE_MESSAGE|FAIL_MESSAGE|FOUND_VAR|DEFAULT_MSG|RESULT_MESSAGE_VARIABLE)\\b',
name: 'keyword.other.cmake'
}
]
},
scopedInstallCommand: {
begin: '\\b(?i:(install))\\b\\s*(\\()',
beginCaptures: {
1: {name: 'support.function.cmake'},
2: {name: 'punctuation.section.arguments.begin.cmake'}
},
end: '\\)',
endCaptures: {0: {name: 'punctuation.section.arguments.end.cmake'}},
patterns: [
{include: '#nestedParens'},
{include: '#commonArgPatterns'},
{
match:
'\\b(?i:TARGETS|FILES|PROGRAMS|DIRECTORY|SCRIPT|CODE|EXPORT|ARCHIVE|LIBRARY|RUNTIME|OBJECTS|FRAMEWORK|BUNDLE|PRIVATE_HEADER|PUBLIC_HEADER|RESOURCE|INCLUDES|DESTINATION|PERMISSIONS|CONFIGURATIONS|COMPONENT|NAMELINK_COMPONENT|NAMELINK_ONLY|NAMELINK_SKIP|OPTIONAL|EXCLUDE_FROM_ALL|RENAME|FILES_MATCHING|PATTERN|REGEX|TYPE|EXPORT_LINK_INTERFACE_LIBRARIES|NAMESPACE|FILE|FILE_SET|CXX_MODULES_BMI|RUNTIME_DEPENDENCIES|RUNTIME_DEPENDENCY_SET)\\b',
name: 'keyword.other.cmake'
}
]
},
scopedListCommand: {
begin: '\\b(?i:(list))\\b\\s*(\\()',
beginCaptures: {
1: {name: 'support.function.cmake'},
2: {name: 'punctuation.section.arguments.begin.cmake'}
},
end: '\\)',
endCaptures: {0: {name: 'punctuation.section.arguments.end.cmake'}},
patterns: [
{include: '#nestedParens'},
{include: '#commonArgPatterns'},
{
match:
'\\b(?i:LENGTH|GET|APPEND|FILTER|FIND|INSERT|JOIN|POP_BACK|POP_FRONT|PREPEND|REMOVE_ITEM|REMOVE_AT|REMOVE_DUPLICATES|REVERSE|SORT|SUBLIST|TRANSFORM|INCLUDE|EXCLUDE|REGEX|COMPARE|CASE|ORDER|ASCENDING|DESCENDING|GENEX_STRIP|STRIP|TOLOWER|TOUPPER|REPLACE|AT|FOR|NATURAL|OUTPUT_VARIABLE)\\b',
name: 'keyword.other.cmake'
}
]
},
scopedMessageCommand: {
begin: '\\b(?i:(message))\\b\\s*(\\()',
beginCaptures: {
1: {name: 'support.function.cmake'},
2: {name: 'punctuation.section.arguments.begin.cmake'}
},
end: '\\)',
endCaptures: {0: {name: 'punctuation.section.arguments.end.cmake'}},
patterns: [
{include: '#nestedParens'},
{include: '#commonArgPatterns'},
{
match:
'\\b(?i:FATAL_ERROR|SEND_ERROR|WARNING|AUTHOR_WARNING|DEPRECATION|NOTICE|STATUS|VERBOSE|DEBUG|TRACE|CHECK_START|CHECK_PASS|CHECK_FAIL|CONFIGURE_LOG|APPEND)\\b',
name: 'keyword.other.cmake'
}
]
},
scopedProjectCommand: {
begin: '\\b(?i:(project))\\b\\s*(\\()',
beginCaptures: {
1: {name: 'support.function.cmake'},
2: {name: 'punctuation.section.arguments.begin.cmake'}
},
end: '\\)',
endCaptures: {0: {name: 'punctuation.section.arguments.end.cmake'}},
patterns: [
{include: '#nestedParens'},
{include: '#commonArgPatterns'},
{
match:
'\\b(?i:VERSION|DESCRIPTION|HOMEPAGE_URL|LANGUAGES|COMPAT_VERSION|SPDX_LICENSE)\\b',
name: 'keyword.other.cmake'
},
{
match:
'\\b(?:C|CXX|CSharp|CUDA|OBJC|OBJCXX|Fortran|HIP|ISPC|Swift|ASM|ASM_NASM|ASM_MARMASM|ASM_MASM|Java|NONE)\\b',
name: 'constant.language.cmake'
}
]
},
scopedPropertyCommand: {
begin:
'\\b(?i:(set_property|get_property|define_property|set_source_files_properties|set_target_properties|get_target_property|set_tests_properties|get_test_property|set_directory_properties|get_directory_property))\\b\\s*(\\()',
beginCaptures: {
1: {name: 'support.function.cmake'},
2: {name: 'punctuation.section.arguments.begin.cmake'}
},
end: '\\)',
endCaptures: {0: {name: 'punctuation.section.arguments.end.cmake'}},
patterns: [
{include: '#nestedParens'},
{
match:
'\\b(?i:GLOBAL|DIRECTORY|TARGET|SOURCE|INSTALL|TEST|CACHE|PROPERTY|APPEND|APPEND_STRING|BRIEF_DOCS|FULL_DOCS|INHERITED)\\b',
name: 'keyword.other.cmake'
},
{
match:
'\\b(?i:COMPILE_OPTIONS|COMPILE_FEATURES|COMPILE_FLAGS|COMPILE_DEFINITIONS(_\\w+)?|LINK_OPTIONS|LINK_FLAGS(_\\w+)?|LINK_LIBRARIES|LINK_DEPENDS|LINK_SEARCH_END_STATIC|LINK_SEARCH_START_STATIC|INTERFACE_COMPILE_DEFINITIONS|INTERFACE_COMPILE_OPTIONS|INTERFACE_COMPILE_FEATURES|INTERFACE_SOURCES|INTERFACE_LINK_LIBRARIES|INTERFACE_INCLUDE_DIRECTORIES|INTERFACE_SYSTEM_INCLUDE_DIRECTORIES|INTERFACE_POSITION_INDEPENDENT_CODE|INTERFACE_HEADER_SETS|PRECOMPILE_HEADERS|UNITY_BUILD(_\\w+)?|LINK_WHAT_YOU_USE|VERIFY_INTERFACE_HEADER_SETS|OPTIMIZE_DEPENDENCIES|HEADER_SETS|POSITION_INDEPENDENT_CODE|INTERPROCEDURAL_OPTIMIZATION(_\\w+)?|EXCLUDE_FROM_ALL|SOURCES|OUTPUT_NAME(_\\w+)?|RUNTIME_OUTPUT_DIRECTORY(_\\w+)?|LIBRARY_OUTPUT_DIRECTORY(_\\w+)?|ARCHIVE_OUTPUT_(DIRECTORY|NAME)(_\\w+)?|PDB_OUTPUT_DIRECTORY|PDB_NAME(_\\w+)?|INSTALL_RPATH|INSTALL_RPATH_USE_LINK_PATH|SKIP_BUILD_RPATH|BUILD_WITH_INSTALL_RPATH|INSTALL_NAME_DIR|SOVERSION|VERSION|PREFIX|SUFFIX|DEBUG_POSTFIX|\\w+_POSTFIX|LINKER_LANGUAGE|FOLDER|LABELS|TIMEOUT|WILL_FAIL|COST|PASS_REGULAR_EXPRESSION|FAIL_REGULAR_EXPRESSION|FIXTURES_REQUIRED|FIXTURES_SETUP|FIXTURES_CLEANUP|RESOURCE_LOCK|PROCESSORS|RUN_SERIAL|WORKING_DIRECTORY|GENERATED|LANGUAGE|HEADER_FILE_ONLY|SYMBOLIC|OBJECT_DEPENDS|WRAP_EXCLUDE|MACOSX_PACKAGE_LOCATION|XCODE_ATTRIBUTE_\\w+|VS_GLOBAL_\\w+|VS_DOTNET_REFERENCES|VS_SCC_(AUXPATH|LOCALPATH|PROJECTNAME|PROVIDER)|MAP_IMPORTED_CONFIG_\\w+|IMPORTED(_\\w+)?|IMPORT_PREFIX|IMPORT_SUFFIX|AUTOMOC|AUTOMOC_MOC_OPTIONS|AUTOUIC|AUTORCC|ENABLE_EXPORTS|DEFINE_SYMBOL|OSX_ARCHITECTURES(_\\w+)?|MACOSX_BUNDLE|MACOSX_BUNDLE_INFO_PLIST|MACOSX_FRAMEWORK_INFO_PLIST|MACOSX_RPATH|STATIC_LIBRARY_FLAGS(_\\w+)?|WIN32_EXECUTABLE|VS_WINRT_EXTENSIONS|VS_WINRT_REFERENCES|COMPATIBLE_INTERFACE_BOOL|COMPATIBLE_INTERFACE_STRING|COMPATIBLE_INTERFACE_NUMBER_MAX|COMPATIBLE_INTERFACE_NUMBER_MIN|NO_SONAME|HAS_CXX|GNUtoMS|FRAMEWORK|BUNDLE(_EXTENSION)?)\\b',
name: 'support.type.property.cmake'
},
{include: '#commonArgPatterns'}
]
},
scopedSetCommand: {
begin: '\\b(?i:(set|unset))\\b\\s*(\\()',
beginCaptures: {
1: {name: 'support.function.cmake'},
2: {name: 'punctuation.section.arguments.begin.cmake'}
},
end: '\\)',
endCaptures: {0: {name: 'punctuation.section.arguments.end.cmake'}},
patterns: [
{include: '#nestedParens'},
{include: '#commonArgPatterns'},
{
match:
'\\b(?i:CACHE|PARENT_SCOPE|FORCE|BOOL|STRING|FILEPATH|PATH|INTERNAL)\\b',
name: 'keyword.other.cmake'
}
]
},
scopedStringCommand: {
begin: '\\b(?i:(string))\\b\\s*(\\()',
beginCaptures: {
1: {name: 'support.function.cmake'},
2: {name: 'punctuation.section.arguments.begin.cmake'}
},
end: '\\)',
endCaptures: {0: {name: 'punctuation.section.arguments.end.cmake'}},
patterns: [
{include: '#nestedParens'},
{include: '#commonArgPatterns'},
{
match:
'\\b(?i:FIND|REPLACE|REGEX|MATCH|MATCHALL|APPEND|TOLOWER|TOUPPER|LENGTH|SUBSTRING|STRIP|GENEX_STRIP|REPEAT|JOIN|ASCII|HEX|CONFIGURE|MAKE_C_IDENTIFIER|RANDOM|TIMESTAMP|UUID|JSON|COMPARE|PREPEND|MD5|SHA1|SHA224|SHA256|SHA384|SHA512|SHA3_224|SHA3_256|SHA3_384|SHA3_512|ALPHABET|NAMESPACE|TYPE|MEMBER|GET|SET|REMOVE|ERROR_VARIABLE|UTC|NOTEQUAL)\\b',
name: 'keyword.other.cmake'
}
]
},
unquoted: {
begin: '[^\\s()#"\\\\][^\\s()#"\\\\]*',
end: '(?=\\s|\\(|\\)|#|"|\\\\|$)',
name: 'string.unquoted.cmake',
patterns: [
{include: '#variableReference'},
{include: '#envVariableReference'},
{include: '#cacheVariableReference'}
]
},
variableReference: {
begin: '\\$\\{',
beginCaptures: {0: {name: 'punctuation.section.variable.begin.cmake'}},
end: '\\}',
endCaptures: {0: {name: 'punctuation.section.variable.end.cmake'}},
name: 'variable.other.cmake',
patterns: [{include: '#knownVariables'}]
}
},
scopeName: 'source.cmake'
}
export default grammar