vis

a vi-like editor based on Plan 9's structural regular expressions

git clone https://9o.is/git/vis.git

cmake.lua

(29837B)


      1 -- Copyright 2006-2025 Mitchell. See LICENSE.
      2 -- CMake LPeg lexer.
      3 
      4 local lexer = lexer
      5 local P, S = lpeg.P, lpeg.S
      6 
      7 local lex = lexer.new(..., {case_insensitive_fold_points = true})
      8 
      9 -- Commands.
     10 local word = (lexer.alpha + S('_-')) * (lexer.alnum + S('_-'))^0
     11 local builtin_command = lex:tag(lexer.FUNCTION_BUILTIN, lex:word_match('command', true))
     12 local command = lex:tag(lexer.FUNCTION, word)
     13 lex:add_rule('command', (builtin_command + command) * #P('('))
     14 
     15 -- Constants.
     16 local constant = lex:word_match(lexer.CONSTANT_BUILTIN, true)
     17 local module = lex:word_match('module')
     18 lex:add_rule('constant', lex:tag(lexer.CONSTANT_BUILTIN, constant + module))
     19 
     20 -- Variables.
     21 local builtin_var = lex:word_match(lexer.VARIABLE_BUILTIN)
     22 local expansion_var = (P('CACHE') + 'ENV') * #P('{')
     23 lex:add_rule('variable', lex:tag(lexer.VARIABLE_BUILTIN, builtin_var + expansion_var))
     24 
     25 -- Generator expressions.
     26 lex:add_rule('generator',
     27 	lex:tag(lexer.PREPROCESSOR, lpeg.B('$<') * lex:word_match(lexer.PREPROCESSOR)))
     28 
     29 -- Operators.
     30 lex:add_rule('operator',
     31 	lex:tag(lexer.OPERATOR, lex:word_match(lexer.OPERATOR, true) + S('=()${}<>')))
     32 
     33 -- Identifiers.
     34 lex:add_rule('identifier', lex:tag(lexer.IDENTIFIER, word))
     35 
     36 -- Strings.
     37 local bracket = lpeg.Cmt('[' * lpeg.C(P('=')^0) * '[', function(input, index, eq)
     38 	local _, e = input:find(']' .. eq .. ']', index, true)
     39 	return (e or #input) + 1
     40 end)
     41 local quoted = lexer.range('"')
     42 lex:add_rule('string', lex:tag(lexer.STRING, bracket + quoted))
     43 
     44 -- Comments.
     45 local line_comment = lexer.to_eol('#')
     46 local bracket_comment = '#' * bracket
     47 lex:add_rule('comment', lex:tag(lexer.COMMENT, bracket_comment + line_comment))
     48 
     49 -- Fold points.
     50 lex:add_fold_point(lexer.FUNCTION_BUILTIN, 'if', 'endif')
     51 lex:add_fold_point(lexer.FUNCTION_BUILTIN, 'foreach', 'endforeach')
     52 lex:add_fold_point(lexer.FUNCTION_BUILTIN, 'while', 'endwhile')
     53 lex:add_fold_point(lexer.FUNCTION_BUILTIN, 'macro', 'endmacro')
     54 lex:add_fold_point(lexer.FUNCTION_BUILTIN, 'function', 'endfunction')
     55 lex:add_fold_point(lexer.OPERATOR, '(', ')')
     56 
     57 -- Word lists.
     58 lex:set_word_list('command', {
     59 	-- Scripting commands.
     60 	'block', 'break', 'cmake_host_system_information', 'cmake_language', 'cmake_minimum_required',
     61 	'cmake_parse_arguments', 'cmake_path', 'cmake_policy', 'configure_file', 'continue', 'else',
     62 	'elseif', 'endblock', 'endforeach', 'endfunction', 'endif', 'endmacro', 'endwhile',
     63 	'execute_process', 'file', 'find_file', 'find_library', 'find_package', 'find_path',
     64 	'find_program', 'foreach', 'function', 'get_cmake_property', 'get_directory_property',
     65 	'get_filename_component', 'get_property', 'if', 'include', 'include_guard', 'list', 'macro',
     66 	'mark_as_advanced', 'math', 'message', 'option', 'return', 'separate_arguments', 'set',
     67 	'set_directory_properties', 'set_property', 'site_name', 'string', 'unset', 'variable_watch',
     68 	'while',
     69 	-- Project commands.
     70 	'add_compile_definitions', 'add_compile_options', 'add_custom_command', 'add_custom_target',
     71 	'add_definitions', 'add_dependencies', 'add_executable', 'add_library', 'add_link_options',
     72 	'add_subdirectory', 'add_test', 'aux_source_directory', 'build_command', 'create_test_sourcelist',
     73 	'define_property', 'enable_language', 'enable_testing', 'export', 'fltk_wrap_ui',
     74 	'get_source_file_property', 'get_target_property', 'get_test_property', 'include_directories',
     75 	'include_external_msproject', 'include_regular_expression', 'install', 'link_directories',
     76 	'link_libraries', 'load_cache', 'project', 'remove_definitions', 'set_source_files_properties',
     77 	'set_target_properties', 'set_tests_properties', 'source_group', 'target_compile_definitions',
     78 	'target_compile_features', 'target_compile_options', 'target_include_directories',
     79 	'target_link_directories', 'target_link_libraries', 'target_link_options',
     80 	'target_precompile_headers', 'target_sources', 'try_compile', 'try_run',
     81 	-- CTest commands.
     82 	'ctest_build', 'ctest_configure', 'ctest_coverage', 'ctest_empty_binary_directory',
     83 	'ctest_memcheck', 'ctest_read_custom_files', 'ctest_run_script', 'ctest_sleep', 'ctest_start',
     84 	'ctest_submit', 'ctest_test', 'ctest_update', 'ctest_upload'
     85 })
     86 
     87 lex:set_word_list(lexer.CONSTANT_BUILTIN, 'on yes true y off no false n ignore notfound')
     88 
     89 lex:set_word_list('module', {
     90 	'AndroidTestUtilities', 'BundleUtilities', 'CheckCCompilerFlag', 'CheckCompilerFlag',
     91 	'CheckCSourceCompiles', 'CheckCSourceRuns', 'CheckCXXCompilerFlag', 'CheckCXXSourceCompiles',
     92 	'CheckCXXSourceRuns', 'CheckCXXSymbolExists', 'CheckFortranCompilerFlag',
     93 	'CheckFortranFunctionExists', 'CheckFortranSourceCompiles', 'CheckFortranSourceRuns',
     94 	'CheckFunctionExists', 'CheckIncludeFileCXX', 'CheckIncludeFile', 'CheckIncludeFiles',
     95 	'CheckIPOSupported', 'CheckLanguage', 'CheckLibraryExists', 'CheckLinkerFlag',
     96 	'CheckOBJCCompilerFlag', 'CheckOBJCSourceCompiles', 'CheckOBJCSourceRuns',
     97 	'CheckOBJCXXCompilerFlag', 'CheckOBJCXXSourceCompiles', 'CheckOBJCXXSourceRuns',
     98 	'CheckPIESupported', 'CheckPrototypeDefinition', 'CheckSourceCompiles', 'CheckSourceRuns',
     99 	'CheckStructHasMember', 'CheckSymbolExists', 'CheckTypeSize', 'CheckVariableExists',
    100 	'CMakeAddFortranSubdirectory', 'CMakeBackwardCompatibilityCXX', 'CMakeDependentOption',
    101 	'CMakeFindDependencyMacro', 'CMakeFindFrameworks', 'CMakeFindPackageMode', 'CMakeGraphVizOptions',
    102 	'CMakePackageConfigHelpers', 'CMakePrintHelpers', 'CMakePrintSystemInformation',
    103 	'CMakePushCheckState', 'CMakeVerifyManifest', 'CPack', 'CPackComponent', 'CPackIFW',
    104 	'CPackIFWConfigureFile', 'CSharpUtilities', 'CTest', 'CTestCoverageCollectGCOV',
    105 	'CTestScriptMode', 'CTestUseLaunchers', 'Dart', 'DeployQt4', 'ExternalData', 'ExternalProject',
    106 	'FeatureSummary', 'FetchContent', 'FindPackageHandleStandardArgs', 'FindPackageMessage',
    107 	'FortranCInterface', 'GenerateExportHeader', 'GetPrerequisites', 'GNUInstallDirs', 'GoogleTest',
    108 	'InstallRequiredSystemLibraries', 'ProcessorCount', 'SelectLibraryConfigurations',
    109 	'SquishTestScript', 'TestBigEndian', 'TestForANSIForScope', 'TestForANSIStreamHeaders',
    110 	'TestForSSTREAM', 'TestForSTDNamespace', 'UseEcos', 'UseJava', 'UseSWIG', 'UsewxWidgets'
    111 })
    112 
    113 lex:set_word_list(lexer.VARIABLE_BUILTIN, {
    114 	-- Variables that provide information.
    115 	'CMAKE_AR', 'CMAKE_ARGC', 'CMAKE_ARGV0', 'CMAKE_BINARY_DIR', 'CMAKE_BUILD_TOOL',
    116 	'CMAKE_CACHE_MAJOR_VERSION', 'CMAKE_CACHE_MINOR_VERSION', 'CMAKE_CACHE_PATCH_VERSION',
    117 	'CMAKE_CACHEFILE_DIR', 'CMAKE_CFG_INTDIR', 'CMAKE_COMMAND', 'CMAKE_CPACK_COMMAND',
    118 	'CMAKE_CROSSCOMPILING', 'CMAKE_CROSSCOMPILING_EMULATOR', 'CMAKE_CTEST_COMMAND',
    119 	'CMAKE_CURRENT_BINARY_DIR', 'CMAKE_CURRENT_FUNCTION', 'CMAKE_CURRENT_FUNCTION_LIST_DIR',
    120 	'CMAKE_CURRENT_FUNCTION_LIST_FILE', 'CMAKE_CURRENT_FUNCTION_LIST_LINE', 'CMAKE_CURRENT_LIST_DIR',
    121 	'CMAKE_CURRENT_LIST_FILE', 'CMAKE_CURRENT_LIST_LINE', 'CMAKE_CURRENT_SOURCE_DIR',
    122 	'CMAKE_DEBUG_TARGET_PROPERTIES', 'CMAKE_DIRECTORY_LABELS', 'CMAKE_DL_LIBS', 'CMAKE_DOTNET_SDK',
    123 	'CMAKE_DOTNET_TARGET_FRAMEWORK', 'CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION', 'CMAKE_EDIT_COMMAND',
    124 	'CMAKE_EXECUTABLE_SUFFIX',
    125 	-- 'CMAKE_EXECUTABLE_SUFFIX_<LANG>',
    126 	'CMAKE_EXTRA_GENERATOR', 'CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES', 'CMAKE_FIND_DEBUG_MODE',
    127 	'CMAKE_FIND_PACKAGE_NAME', 'CMAKE_FIND_PACKAGE_REDIRECTS_DIR',
    128 	'CMAKE_FIND_PACKAGE_SORT_DIRECTION', 'CMAKE_FIND_PACKAGE_SORT_ORDER', 'CMAKE_GENERATOR',
    129 	'CMAKE_GENERATOR_INSTANCE', 'CMAKE_GENERATOR_PLATFORM', 'CMAKE_GENERATOR_TOOLSET',
    130 	'CMAKE_IMPORT_LIBRARY_PREFIX', 'CMAKE_IMPORT_LIBRARY_SUFFIX', 'CMAKE_JOB_POOL_COMPILE',
    131 	'CMAKE_JOB_POOL_LINK', 'CMAKE_JOB_POOL_PRECOMPILE_HEADER', 'CMAKE_JOB_POOLS',
    132 	-- 'CMAKE_<LANG>_COMPILER_AR',
    133 	-- 'CMAKE_<LANG>_COMPILER_FRONTEND_VARIANT',
    134 	-- 'CMAKE_<LANG>_COMPILER_RANLIB',
    135 	-- 'CMAKE_<LANG>_LINK_LIBRARY_SUFFIX',
    136 	'CMAKE_LINK_LIBRARY_SUFFIX', 'CMAKE_LINK_SEARCH_END_STATIC', 'CMAKE_LINK_SEARCH_START_STATIC',
    137 	'CMAKE_MAJOR_VERSION', 'CMAKE_MAKE_PROGRAM', 'CMAKE_MATCH_COUNT',
    138 	-- 'CMAKE_MATCH_<n>',
    139 	'CMAKE_MINIMUM_REQUIRED_VERSION', 'CMAKE_MINOR_VERSION', 'CMAKE_NETRC', 'CMAKE_NETRC_FILE',
    140 	'CMAKE_PARENT_LIST_FILE', 'CMAKE_PATCH_VERSION', 'CMAKE_PROJECT_DESCRIPTION',
    141 	'CMAKE_PROJECT_HOMEPAGE_URL', 'CMAKE_PROJECT_NAME', 'CMAKE_PROJECT_VERSION',
    142 	'CMAKE_PROJECT_VERSION_MAJOR', 'CMAKE_PROJECT_VERSION_MINOR', 'CMAKE_PROJECT_VERSION_PATCH',
    143 	'CMAKE_PROJECT_VERSION_TWEAK', 'CMAKE_RANLIB', 'CMAKE_ROOT', 'CMAKE_RULE_MESSAGES',
    144 	'CMAKE_SCRIPT_MODE_FILE', 'CMAKE_SHARED_LIBRARY_PREFIX', 'CMAKE_SHARED_LIBRARY_SUFFIX',
    145 	'CMAKE_SHARED_MODULE_PREFIX', 'CMAKE_SHARED_MODULE_SUFFIX', 'CMAKE_SIZEOF_VOID_P',
    146 	'CMAKE_SKIP_INSTALL_RULES', 'CMAKE_SKIP_RPATH', 'CMAKE_SOURCE_DIR', 'CMAKE_STATIC_LIBRARY_PREFIX',
    147 	'CMAKE_STATIC_LIBRARY_SUFFIX', 'CMAKE_Swift_MODULE_DIRECTORY', 'CMAKE_Swift_NUM_THREADS',
    148 	'CMAKE_TOOLCHAIN_FILE', 'CMAKE_TWEAK_VERSION', 'CMAKE_VERBOSE_MAKEFILE', 'CMAKE_VERSION',
    149 	'CMAKE_VS_DEVENV_COMMAND', 'CMAKE_VS_MSBUILD_COMMAND', 'CMAKE_VS_NsightTegra_VERSION',
    150 	'CMAKE_VS_NUGET_PACKAGE_RESTORE', 'CMAKE_VS_PLATFORM_NAME', 'CMAKE_VS_PLATFORM_NAME_DEFAULT',
    151 	'CMAKE_VS_PLATFORM_TOOLSET', 'CMAKE_VS_PLATFORM_TOOLSET_CUDA',
    152 	'CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR', 'CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE',
    153 	'CMAKE_VS_PLATFORM_TOOLSET_VERSION', 'CMAKE_VS_TARGET_FRAMEWORK_IDENTIFIER',
    154 	'CMAKE_VS_TARGET_FRAMEWORK_TARGETS_VERSION', 'CMAKE_VS_TARGET_FRAMEWORK_VERSION',
    155 	'CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION', 'CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION_MAXIMUM',
    156 	'CMAKE_XCODE_BUILD_SYSTEM', 'CMAKE_XCODE_PLATFORM_TOOLSET',
    157 	-- '<PROJECT-NAME>_BINARY_DIR',
    158 	-- '<PROJECT-NAME>_DESCRIPTION',
    159 	-- '<PROJECT-NAME>_HOMEPAGE_URL',
    160 	-- '<PROJECT-NAME>_IS_TOP_LEVEL',
    161 	-- '<PROJECT-NAME>_SOURCE_DIR',
    162 	-- '<PROJECT-NAME>_VERSION',
    163 	-- '<PROJECT-NAME>_VERSION_MAJOR',
    164 	-- '<PROJECT-NAME>_VERSION_MINOR',
    165 	-- '<PROJECT-NAME>_VERSION_PATCH',
    166 	-- '<PROJECT-NAME>_VERSION_TWEAK',
    167 	'PROJECT_BINARY_DIR', 'PROJECT_DESCRIPTION', 'PROJECT_HOMEPAGE_URL', 'PROJECT_IS_TOP_LEVEL',
    168 	'PROJECT_NAME', 'PROJECT_SOURCE_DIR', 'PROJECT_VERSION', 'PROJECT_VERSION_MAJOR',
    169 	'PROJECT_VERSION_MINOR', 'PROJECT_VERSION_PATCH', 'PROJECT_VERSION_TWEAK',
    170 
    171 	-- Variables that change behavior.
    172 	'BUILD_SHARED_LIBS', 'CMAKE_ABSOLUTE_DESTINATION_FILES', 'CMAKE_APPBUNDLE_PATH',
    173 	'CMAKE_AUTOMOC_RELAXED_MODE', 'CMAKE_BACKWARDS_COMPATIBILITY', 'CMAKE_BUILD_TYPE',
    174 	'CMAKE_CLANG_VFS_OVERLAY', 'CMAKE_CODEBLOCKS_COMPILER_ID',
    175 	'CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES', 'CMAKE_CODELITE_USE_TARGETS',
    176 	'CMAKE_COLOR_DIAGNOSTICS', 'CMAKE_COLOR_MAKEFILE', 'CMAKE_CONFIGURATION_TYPES',
    177 	'CMAKE_DEPENDS_IN_PROJECT_ONLY',
    178 	-- 'CMAKE_DISABLE_FIND_PACKAGE_<PackageName>',
    179 	'CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES', 'CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT',
    180 	'CMAKE_ECLIPSE_MAKE_ARGUMENTS', 'CMAKE_ECLIPSE_RESOURCE_ENCODING', 'CMAKE_ECLIPSE_VERSION',
    181 	'CMAKE_ERROR_DEPRECATED', 'CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION',
    182 	'CMAKE_EXECUTE_PROCESS_COMMAND_ECHO', 'CMAKE_EXPORT_COMPILE_COMMANDS',
    183 	'CMAKE_EXPORT_PACKAGE_REGISTRY', 'CMAKE_EXPORT_NO_PACKAGE_REGISTRY', 'CMAKE_FIND_APPBUNDLE',
    184 	'CMAKE_FIND_FRAMEWORK', 'CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX', 'CMAKE_FIND_LIBRARY_PREFIXES',
    185 	'CMAKE_FIND_LIBRARY_SUFFIXES', 'CMAKE_FIND_NO_INSTALL_PREFIX',
    186 	'CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY', 'CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY',
    187 	'CMAKE_FIND_PACKAGE_PREFER_CONFIG', 'CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS',
    188 	'CMAKE_FIND_PACKAGE_TARGETS_GLOBAL', 'CMAKE_FIND_PACKAGE_WARN_NO_MODULE', 'CMAKE_FIND_ROOT_PATH',
    189 	'CMAKE_FIND_ROOT_PATH_MODE_INCLUDE', 'CMAKE_FIND_ROOT_PATH_MODE_LIBRARY',
    190 	'CMAKE_FIND_ROOT_PATH_MODE_PACKAGE', 'CMAKE_FIND_ROOT_PATH_MODE_PROGRAM',
    191 	'CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH', 'CMAKE_FIND_USE_CMAKE_PATH',
    192 	'CMAKE_FIND_USE_CMAKE_SYSTEM_PATH', 'CMAKE_FIND_USE_INSTALL_PREFIX',
    193 	'CMAKE_FIND_USE_PACKAGE_REGISTRY', 'CMAKE_FIND_USE_PACKAGE_ROOT_PATH',
    194 	'CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH', 'CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY',
    195 	'CMAKE_FRAMEWORK_PATH', 'CMAKE_IGNORE_PATH', 'CMAKE_IGNORE_PREFIX_PATH',
    196 	'CMAKE_INCLUDE_DIRECTORIES_BEFORE', 'CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE',
    197 	'CMAKE_INCLUDE_PATH', 'CMAKE_INSTALL_DEFAULT_COMPONENT_NAME',
    198 	'CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS', 'CMAKE_INSTALL_MESSAGE', 'CMAKE_INSTALL_PREFIX',
    199 	'CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT', 'CMAKE_LIBRARY_PATH',
    200 	'CMAKE_LINK_DIRECTORIES_BEFORE', 'CMAKE_LINK_LIBRARIES_ONLY_TARGETS',
    201 	'CMAKE_MAXIMUM_RECURSION_DEPTH', 'CMAKE_MESSAGE_CONTEXT', 'CMAKE_MESSAGE_CONTEXT_SHOW',
    202 	'CMAKE_MESSAGE_INDENT', 'CMAKE_MESSAGE_LOG_LEVEL', 'CMAKE_MFC_FLAG', 'CMAKE_MODULE_PATH',
    203 	-- 'CMAKE_POLICY_DEFAULT_CMP<NNNN>',
    204 	-- 'CMAKE_POLICY_WARNING_CMP<NNNN>',
    205 	'CMAKE_PREFIX_PATH', 'CMAKE_PROGRAM_PATH', 'CMAKE_PROJECT_INCLUDE',
    206 	'CMAKE_PROJECT_INCLUDE_BEFORE',
    207 	-- 'CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE',
    208 	-- 'CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE',
    209 	'CMAKE_PROJECT_TOP_LEVEL_INCLUDES',
    210 	-- 'CMAKE_REQUIRE_FIND_PACKAGE_<PackageName>',
    211 	'CMAKE_SKIP_INSTALL_ALL_DEPENDENCY', 'CMAKE_STAGING_PREFIX', 'CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS',
    212 	'CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE', 'CMAKE_SUPPRESS_REGENERATION', 'CMAKE_SYSROOT',
    213 	'CMAKE_SYSROOT_COMPILE', 'CMAKE_SYSROOT_LINK', 'CMAKE_SYSTEM_APPBUNDLE_PATH',
    214 	'CMAKE_SYSTEM_FRAMEWORK_PATH', 'CMAKE_SYSTEM_IGNORE_PATH', 'CMAKE_SYSTEM_IGNORE_PREFIX_PATH',
    215 	'CMAKE_SYSTEM_INCLUDE_PATH', 'CMAKE_SYSTEM_LIBRARY_PATH', 'CMAKE_SYSTEM_PREFIX_PATH',
    216 	'CMAKE_SYSTEM_PROGRAM_PATH', 'CMAKE_TLS_CAINFO', 'CMAKE_TLS_VERIFY',
    217 	'CMAKE_USER_MAKE_RULES_OVERRIDE', 'CMAKE_WARN_DEPRECATED',
    218 	'CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION', 'CMAKE_XCODE_GENERATE_SCHEME',
    219 	'CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY', 'CMAKE_XCODE_LINK_BUILD_PHASE_MODE',
    220 	'CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER', 'CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN',
    221 	'CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING', 'CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER',
    222 	'CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS', 'CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE',
    223 	'CMAKE_XCODE_SCHEME_ENABLE_GPU_API_VALIDATION',
    224 	'CMAKE_XCODE_SCHEME_ENABLE_GPU_FRAME_CAPTURE_MODE',
    225 	'CMAKE_XCODE_SCHEME_ENABLE_GPU_SHADER_VALIDATION', 'CMAKE_XCODE_SCHEME_ENVIRONMENT',
    226 	'CMAKE_XCODE_SCHEME_GUARD_MALLOC', 'CMAKE_XCODE_SCHEME_LAUNCH_CONFIGURATION',
    227 	'CMAKE_XCODE_SCHEME_LAUNCH_MODE', 'CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP',
    228 	'CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES', 'CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE',
    229 	'CMAKE_XCODE_SCHEME_MALLOC_STACK', 'CMAKE_XCODE_SCHEME_THREAD_SANITIZER',
    230 	'CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP', 'CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER',
    231 	'CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP', 'CMAKE_XCODE_SCHEME_WORKING_DIRECTORY',
    232 	'CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS', 'CMAKE_XCODE_XCCONFIG',
    233 	-- '<PackageName>_ROOT',
    234 	
    235 	-- Variables that describe the system.
    236 	'ANDROID', 'APPLE', 'BORLAND', 'BSD', 'CMAKE_ANDROID_NDK_VERSION', 'CMAKE_CL_64',
    237 	'CMAKE_COMPILER_2005', 'CMAKE_HOST_APPLE', 'CMAKE_HOST_BSD', 'CMAKE_HOST_LINUX',
    238 	'CMAKE_HOST_SOLARIS', 'CMAKE_HOST_SYSTEM', 'CMAKE_HOST_SYSTEM_NAME',
    239 	'CMAKE_HOST_SYSTEM_PROCESSOR', 'CMAKE_HOST_SYSTEM_VERSION', 'CMAKE_HOST_UNIX', 'CMAKE_HOST_WIN32',
    240 	'CMAKE_LIBRARY_ARCHITECTURE', 'CMAKE_LIBRARY_ARCHITECTURE_REGEX', 'CMAKE_OBJECT_PATH_MAX',
    241 	'CMAKE_SYSTEM', 'CMAKE_SYSTEM_NAME', 'CMAKE_SYSTEM_PROCESSOR', 'CMAKE_SYSTEM_VERSION', 'CYGWIN',
    242 	'GHSMULTI', 'IOS', 'LINUX', 'MINGW', 'MSVC', 'MSVC10', 'MSVC11', 'MSVC12', 'MSVC14', 'MSVC60',
    243 	'MSVC70', 'MSVC71', 'MSVC80', 'MSVC90', 'MSVC_IDE', 'MSVC_TOOLSET_VERSION', 'MSVC_VERSION',
    244 	'MSYS', 'UNIX', 'WIN32', 'WINCE', 'WINDOWS_PHONE', 'WINDOWS_STORE', 'XCODE', 'XCODE_VERSION',
    245 
    246 	-- Variables that control the build.
    247 	'CMAKE_ADSP_ROOT', 'CMAKE_AIX_EXPORT_ALL_SYMBOLS', 'CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS',
    248 	'CMAKE_ANDROID_API', 'CMAKE_ANDROID_API_MIN', 'CMAKE_ANDROID_ARCH', 'CMAKE_ANDROID_ARCH_ABI',
    249 	'CMAKE_ANDROID_ARM_MODE', 'CMAKE_ANDROID_ARM_NEON', 'CMAKE_ANDROID_ASSETS_DIRECTORIES',
    250 	'CMAKE_ANDROID_EXCEPTIONS', 'CMAKE_ANDROID_GUI', 'CMAKE_ANDROID_JAR_DEPENDENCIES',
    251 	'CMAKE_ANDROID_JAR_DIRECTORIES', 'CMAKE_ANDROID_JAVA_SOURCE_DIR',
    252 	'CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES', 'CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES',
    253 	'CMAKE_ANDROID_NDK', 'CMAKE_ANDROID_NDK_DEPRECATED_HEADERS',
    254 	'CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG', 'CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION',
    255 	'CMAKE_ANDROID_PROCESS_MAX', 'CMAKE_ANDROID_PROGUARD', 'CMAKE_ANDROID_PROGUARD_CONFIG_PATH',
    256 	'CMAKE_ANDROID_RTTI', 'CMAKE_ANDROID_SECURE_PROPS_PATH', 'CMAKE_ANDROID_SKIP_ANT_STEP',
    257 	'CMAKE_ANDROID_STANDALONE_TOOLCHAIN', 'CMAKE_ANDROID_STL_TYPE', 'CMAKE_APPLE_SILICON_PROCESSOR',
    258 	'CMAKE_ARCHIVE_OUTPUT_DIRECTORY',
    259 	-- 'CMAKE_ARCHIVE_OUTPUT_DIRECTORY_<CONFIG>',
    260 	'CMAKE_AUTOGEN_ORIGIN_DEPENDS', 'CMAKE_AUTOGEN_PARALLEL', 'CMAKE_AUTOGEN_VERBOSE',
    261 	'CMAKE_AUTOMOC', 'CMAKE_AUTOMOC_COMPILER_PREDEFINES', 'CMAKE_AUTOMOC_DEPEND_FILTERS',
    262 	'CMAKE_AUTOMOC_MACRO_NAMES', 'CMAKE_AUTOMOC_MOC_OPTIONS', 'CMAKE_AUTOMOC_PATH_PREFIX',
    263 	'CMAKE_AUTORCC', 'CMAKE_AUTORCC_OPTIONS', 'CMAKE_AUTOUIC', 'CMAKE_AUTOUIC_OPTIONS',
    264 	'CMAKE_AUTOUIC_SEARCH_PATHS', 'CMAKE_BUILD_RPATH', 'CMAKE_BUILD_RPATH_USE_ORIGIN',
    265 	'CMAKE_BUILD_WITH_INSTALL_NAME_DIR', 'CMAKE_BUILD_WITH_INSTALL_RPATH',
    266 	'CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY',
    267 	-- 'CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_<CONFIG>',
    268 	'CMAKE_COMPILE_WARNING_AS_ERROR',
    269 	-- 'CMAKE_<CONFIG>_POSTFIX',
    270 	'CMAKE_CROSS_CONFIGS', 'CMAKE_CTEST_ARGUMENTS', 'CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS',
    271 	'CMAKE_CUDA_RUNTIME_LIBRARY', 'CMAKE_CUDA_SEPARABLE_COMPILATION', 'CMAKE_DEBUG_POSTFIX',
    272 	'CMAKE_DEFAULT_BUILD_TYPE', 'CMAKE_DEFAULT_CONFIGS', 'CMAKE_DEPENDS_USE_COMPILER',
    273 	'CMAKE_DISABLE_PRECOMPILE_HEADERS', 'CMAKE_ENABLE_EXPORTS', 'CMAKE_EXE_LINKER_FLAGS',
    274 	-- 'CMAKE_EXE_LINKER_FLAGS_<CONFIG>',
    275 	-- 'CMAKE_EXE_LINKER_FLAGS_<CONFIG>_INIT',
    276 	'CMAKE_EXE_LINKER_FLAGS_INIT', 'CMAKE_FOLDER', 'CMAKE_Fortran_FORMAT',
    277 	'CMAKE_Fortran_MODULE_DIRECTORY', 'CMAKE_Fortran_PREPROCESS', 'CMAKE_FRAMEWORK',
    278 	-- 'CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG>',
    279 	'CMAKE_GHS_NO_SOURCE_GROUP_FILE', 'CMAKE_GLOBAL_AUTOGEN_TARGET',
    280 	'CMAKE_GLOBAL_AUTOGEN_TARGET_NAME', 'CMAKE_GLOBAL_AUTORCC_TARGET',
    281 	'CMAKE_GLOBAL_AUTORCC_TARGET_NAME', 'CMAKE_GNUtoMS', 'CMAKE_INCLUDE_CURRENT_DIR',
    282 	'CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE', 'CMAKE_INSTALL_NAME_DIR',
    283 	'CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH', 'CMAKE_INSTALL_RPATH',
    284 	'CMAKE_INSTALL_RPATH_USE_LINK_PATH', 'CMAKE_INTERPROCEDURAL_OPTIMIZATION',
    285 	-- 'CMAKE_INTERPROCEDURAL_OPTIMIZATION_<CONFIG>',
    286 	'CMAKE_IOS_INSTALL_COMBINED',
    287 	-- 'CMAKE_<LANG>_CLANG_TIDY',
    288 	-- 'CMAKE_<LANG>_COMPILER_LAUNCHER',
    289 	-- 'CMAKE_<LANG>_CPPCHECK',
    290 	-- 'CMAKE_<LANG>_CPPLINT',
    291 	-- 'CMAKE_<LANG>_INCLUDE_WHAT_YOU_USE',
    292 	-- 'CMAKE_<LANG>_LINK_GROUP_USING_<FEATURE>',
    293 	-- 'CMAKE_<LANG>_LINK_GROUP_USING_<FEATURE>_SUPPORTED',
    294 	-- 'CMAKE_<LANG>_LINK_LIBRARY_FILE_FLAG',
    295 	-- 'CMAKE_<LANG>_LINK_LIBRARY_FLAG',
    296 	-- 'CMAKE_<LANG>_LINK_LIBRARY_USING_<FEATURE>',
    297 	-- 'CMAKE_<LANG>_LINK_LIBRARY_USING_<FEATURE>_SUPPORTED',
    298 	-- 'CMAKE_<LANG>_LINK_WHAT_YOU_USE_FLAG',
    299 	-- 'CMAKE_<LANG>_LINKER_LAUNCHER',
    300 	-- 'CMAKE_<LANG>_VISIBILITY_PRESET',
    301 	'CMAKE_LIBRARY_OUTPUT_DIRECTORY',
    302 	-- 'CMAKE_LIBRARY_OUTPUT_DIRECTORY_<CONFIG>',
    303 	'CMAKE_LIBRARY_PATH_FLAG', 'CMAKE_LINK_DEF_FILE_FLAG', 'CMAKE_LINK_DEPENDS_NO_SHARED',
    304 	-- 'CMAKE_LINK_GROUP_USING_<FEATURE>',
    305 	-- 'CMAKE_LINK_GROUP_USING_<FEATURE>_SUPPORTED',
    306 	'CMAKE_LINK_INTERFACE_LIBRARIES', 'CMAKE_LINK_LIBRARY_FILE_FLAG', 'CMAKE_LINK_LIBRARY_FLAG',
    307 	-- 'CMAKE_LINK_LIBRARY_USING_<FEATURE>',
    308 	-- 'CMAKE_LINK_LIBRARY_USING_<FEATURE>_SUPPORTED',
    309 	'CMAKE_LINK_WHAT_YOU_USE', 'CMAKE_LINK_WHAT_YOU_USE_CHECK', 'CMAKE_MACOSX_BUNDLE',
    310 	'CMAKE_MACOSX_RPATH',
    311 	-- 'CMAKE_MAP_IMPORTED_CONFIG_<CONFIG>',
    312 	'CMAKE_MODULE_LINKER_FLAGS',
    313 	-- 'CMAKE_MODULE_LINKER_FLAGS_<CONFIG>',
    314 	-- 'CMAKE_MODULE_LINKER_FLAGS_<CONFIG>_INIT',
    315 	'CMAKE_MODULE_LINKER_FLAGS_INIT', 'CMAKE_MSVC_DEBUG_INFORMATION_FORMAT',
    316 	'CMAKE_MSVC_RUNTIME_LIBRARY', 'CMAKE_MSVCIDE_RUN_PATH', 'CMAKE_NINJA_OUTPUT_PATH_PREFIX',
    317 	'CMAKE_NO_BUILTIN_CHRPATH', 'CMAKE_NO_SYSTEM_FROM_IMPORTED', 'CMAKE_OPTIMIZE_DEPENDENCIES',
    318 	'CMAKE_OSX_ARCHITECTURES', 'CMAKE_OSX_DEPLOYMENT_TARGET', 'CMAKE_OSX_SYSROOT',
    319 	'CMAKE_PCH_INSTANTIATE_TEMPLATES', 'CMAKE_PCH_WARN_INVALID', 'CMAKE_PDB_OUTPUT_DIRECTORY',
    320 	-- 'CMAKE_PDB_OUTPUT_DIRECTORY_<CONFIG>',
    321 	'CMAKE_PLATFORM_NO_VERSIONED_SONAME', 'CMAKE_POSITION_INDEPENDENT_CODE',
    322 	'CMAKE_RUNTIME_OUTPUT_DIRECTORY',
    323 	-- 'CMAKE_RUNTIME_OUTPUT_DIRECTORY_<CONFIG>',
    324 	'CMAKE_SHARED_LINKER_FLAGS',
    325 	-- 'CMAKE_SHARED_LINKER_FLAGS_<CONFIG>',
    326 	-- 'CMAKE_SHARED_LINKER_FLAGS_<CONFIG>_INIT',
    327 	'CMAKE_SHARED_LINKER_FLAGS_INIT', 'CMAKE_SKIP_BUILD_RPATH', 'CMAKE_SKIP_INSTALL_RPATH',
    328 	'CMAKE_STATIC_LINKER_FLAGS',
    329 	-- 'CMAKE_STATIC_LINKER_FLAGS_<CONFIG>',
    330 	-- 'CMAKE_STATIC_LINKER_FLAGS_<CONFIG>_INIT',
    331 	'CMAKE_STATIC_LINKER_FLAGS_INIT', 'CMAKE_TASKING_TOOLSET', 'CMAKE_TRY_COMPILE_CONFIGURATION',
    332 	'CMAKE_TRY_COMPILE_NO_PLATFORM_VARIABLES', 'CMAKE_TRY_COMPILE_PLATFORM_VARIABLES',
    333 	'CMAKE_TRY_COMPILE_TARGET_TYPE', 'CMAKE_UNITY_BUILD', 'CMAKE_UNITY_BUILD_BATCH_SIZE',
    334 	'CMAKE_UNITY_BUILD_UNIQUE_ID', 'CMAKE_USE_RELATIVE_PATHS', 'CMAKE_VERIFY_INTERFACE_HEADER_SETS',
    335 	'CMAKE_VISIBILITY_INLINES_HIDDEN', 'CMAKE_VS_GLOBALS',
    336 	'CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD', 'CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD',
    337 	'CMAKE_VS_JUST_MY_CODE_DEBUGGING', 'CMAKE_VS_NO_COMPILE_BATCHING',
    338 	'CMAKE_VS_SDK_EXCLUDE_DIRECTORIES', 'CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES',
    339 	'CMAKE_VS_SDK_INCLUDE_DIRECTORIES', 'CMAKE_VS_SDK_LIBRARY_DIRECTORIES',
    340 	'CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES', 'CMAKE_VS_SDK_REFERENCE_DIRECTORIES',
    341 	'CMAKE_VS_SDK_SOURCE_DIRECTORIES', 'CMAKE_VS_WINRT_BY_DEFAULT', 'CMAKE_WATCOM_RUNTIME_LIBRARY',
    342 	'CMAKE_WIN32_EXECUTABLE', 'CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS',
    343 	-- 'CMAKE_XCODE_ATTRIBUTE_<an-attribute>',
    344 	'EXECUTABLE_OUTPUT_PATH', 'LIBRARY_OUTPUT_PATH',
    345 
    346 	-- Variables for languages.
    347 	'CMAKE_C_COMPILE_FEATURES', 'CMAKE_C_EXTENSIONS', 'CMAKE_C_STANDARD', 'CMAKE_C_STANDARD_REQUIRED',
    348 	'CMAKE_COMPILER_IS_GNUCC', 'CMAKE_COMPILER_IS_GNUCXX', 'CMAKE_COMPILER_IS_GNUG77',
    349 	'CMAKE_CUDA_ARCHITECTURES', 'CMAKE_CUDA_COMPILE_FEATURES', 'CMAKE_CUDA_EXTENSIONS',
    350 	'CMAKE_CUDA_HOST_COMPILER', 'CMAKE_CUDA_STANDARD', 'CMAKE_CUDA_STANDARD_REQUIRED',
    351 	'CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES', 'CMAKE_CXX_COMPILE_FEATURES', 'CMAKE_CXX_EXTENSIONS',
    352 	'CMAKE_CXX_STANDARD', 'CMAKE_CXX_STANDARD_REQUIRED', 'CMAKE_Fortran_MODDIR_DEFAULT',
    353 	'CMAKE_Fortran_MODDIR_FLAG', 'CMAKE_Fortran_MODOUT_FLAG', 'CMAKE_HIP_ARCHITECTURES',
    354 	'CMAKE_HIP_EXTENSIONS', 'CMAKE_HIP_STANDARD', 'CMAKE_HIP_STANDARD_REQUIRED',
    355 	'CMAKE_ISPC_HEADER_DIRECTORY', 'CMAKE_ISPC_HEADER_SUFFIX', 'CMAKE_ISPC_INSTRUCTION_SETS',
    356 	-- 'CMAKE_<LANG>_ANDROID_TOOLCHAIN_MACHINE',
    357 	-- 'CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX',
    358 	-- 'CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX',
    359 	-- 'CMAKE_<LANG>_ARCHIVE_APPEND',
    360 	-- 'CMAKE_<LANG>_ARCHIVE_CREATE',
    361 	-- 'CMAKE_<LANG>_ARCHIVE_FINISH',
    362 	-- 'CMAKE_<LANG>_BYTE_ORDER',
    363 	-- 'CMAKE_<LANG>_COMPILE_OBJECT',
    364 	-- 'CMAKE_<LANG>_COMPILER',
    365 	-- 'CMAKE_<LANG>_COMPILER_EXTERNAL_TOOLCHAIN',
    366 	-- 'CMAKE_<LANG>_COMPILER_ID',
    367 	-- 'CMAKE_<LANG>_COMPILER_LOADED',
    368 	-- 'CMAKE_<LANG>_COMPILER_PREDEFINES_COMMAND',
    369 	-- 'CMAKE_<LANG>_COMPILER_TARGET',
    370 	-- 'CMAKE_<LANG>_COMPILER_VERSION',
    371 	-- 'CMAKE_<LANG>_CREATE_SHARED_LIBRARY',
    372 	-- 'CMAKE_<LANG>_CREATE_SHARED_MODULE',
    373 	-- 'CMAKE_<LANG>_CREATE_STATIC_LIBRARY',
    374 	-- 'CMAKE_<LANG>_EXTENSIONS',
    375 	-- 'CMAKE_<LANG>_EXTENSIONS_DEFAULT',
    376 	-- 'CMAKE_<LANG>_FLAGS',
    377 	-- 'CMAKE_<LANG>_FLAGS_<CONFIG>',
    378 	-- 'CMAKE_<LANG>_FLAGS_<CONFIG>_INIT',
    379 	-- 'CMAKE_<LANG>_FLAGS_DEBUG',
    380 	-- 'CMAKE_<LANG>_FLAGS_DEBUG_INIT',
    381 	-- 'CMAKE_<LANG>_FLAGS_INIT',
    382 	-- 'CMAKE_<LANG>_FLAGS_MINSIZEREL',
    383 	-- 'CMAKE_<LANG>_FLAGS_MINSIZEREL_INIT',
    384 	-- 'CMAKE_<LANG>_FLAGS_RELEASE',
    385 	-- 'CMAKE_<LANG>_FLAGS_RELEASE_INIT',
    386 	-- 'CMAKE_<LANG>_FLAGS_RELWITHDEBINFO',
    387 	-- 'CMAKE_<LANG>_FLAGS_RELWITHDEBINFO_INIT',
    388 	-- 'CMAKE_<LANG>_IGNORE_EXTENSIONS',
    389 	-- 'CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES',
    390 	-- 'CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES',
    391 	-- 'CMAKE_<LANG>_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES',
    392 	-- 'CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES',
    393 	-- 'CMAKE_<LANG>_LIBRARY_ARCHITECTURE',
    394 	-- 'CMAKE_<LANG>_LINK_EXECUTABLE',
    395 	-- 'CMAKE_<LANG>_LINKER_WRAPPER_FLAG',
    396 	-- 'CMAKE_<LANG>_LINKER_WRAPPER_FLAG_SEP',
    397 	-- 'CMAKE_<LANG>_OUTPUT_EXTENSION',
    398 	-- 'CMAKE_<LANG>_SIMULATE_ID',
    399 	-- 'CMAKE_<LANG>_SIMULATE_VERSION',
    400 	-- 'CMAKE_<LANG>_SIZEOF_DATA_PTR',
    401 	-- 'CMAKE_<LANG>_SOURCE_FILE_EXTENSIONS',
    402 	-- 'CMAKE_<LANG>_STANDARD',
    403 	-- 'CMAKE_<LANG>_STANDARD_DEFAULT',
    404 	-- 'CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES',
    405 	-- 'CMAKE_<LANG>_STANDARD_LIBRARIES',
    406 	-- 'CMAKE_<LANG>_STANDARD_REQUIRED',
    407 	'CMAKE_OBJC_EXTENSIONS', 'CMAKE_OBJC_STANDARD', 'CMAKE_OBJC_STANDARD_REQUIRED',
    408 	'CMAKE_OBJCXX_EXTENSIONS', 'CMAKE_OBJCXX_STANDARD', 'CMAKE_OBJCXX_STANDARD_REQUIRED',
    409 	'CMAKE_Swift_LANGUAGE_VERSION',
    410 	-- 'CMAKE_USER_MAKE_RULES_OVERRIDE_<LANG>',
    411 	
    412 	-- Variables for CTest.
    413 	'CTEST_BINARY_DIRECTORY', 'CTEST_BUILD_COMMAND', 'CTEST_BUILD_NAME', 'CTEST_BZR_COMMAND',
    414 	'CTEST_BZR_UPDATE_OPTIONS', 'CTEST_CHANGE_ID', 'CTEST_CHECKOUT_COMMAND',
    415 	'CTEST_CONFIGURATION_TYPE', 'CTEST_CONFIGURE_COMMAND', 'CTEST_COVERAGE_COMMAND',
    416 	'CTEST_COVERAGE_EXTRA_FLAGS', 'CTEST_CURL_OPTIONS', 'CTEST_CUSTOM_COVERAGE_EXCLUDE',
    417 	'CTEST_CUSTOM_ERROR_EXCEPTION', 'CTEST_CUSTOM_ERROR_MATCH', 'CTEST_CUSTOM_ERROR_POST_CONTEXT',
    418 	'CTEST_CUSTOM_ERROR_PRE_CONTEXT', 'CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE',
    419 	'CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS', 'CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS',
    420 	'CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE', 'CTEST_CUSTOM_MEMCHECK_IGNORE',
    421 	'CTEST_CUSTOM_POST_MEMCHECK', 'CTEST_CUSTOM_POST_TEST', 'CTEST_CUSTOM_PRE_MEMCHECK',
    422 	'CTEST_CUSTOM_PRE_TEST', 'CTEST_CUSTOM_TEST_OUTPUT_TRUNCATION', 'CTEST_CUSTOM_TESTS_IGNORE',
    423 	'CTEST_CUSTOM_WARNING_EXCEPTION', 'CTEST_CUSTOM_WARNING_MATCH', 'CTEST_CVS_CHECKOUT',
    424 	'CTEST_CVS_COMMAND', 'CTEST_CVS_UPDATE_OPTIONS', 'CTEST_DROP_LOCATION', 'CTEST_DROP_METHOD',
    425 	'CTEST_DROP_SITE', 'CTEST_DROP_SITE_CDASH', 'CTEST_DROP_SITE_PASSWORD', 'CTEST_DROP_SITE_USER',
    426 	'CTEST_EXTRA_COVERAGE_GLOB', 'CTEST_GIT_COMMAND', 'CTEST_GIT_INIT_SUBMODULES',
    427 	'CTEST_GIT_UPDATE_CUSTOM', 'CTEST_GIT_UPDATE_OPTIONS', 'CTEST_HG_COMMAND',
    428 	'CTEST_HG_UPDATE_OPTIONS', 'CTEST_LABELS_FOR_SUBPROJECTS', 'CTEST_MEMORYCHECK_COMMAND',
    429 	'CTEST_MEMORYCHECK_COMMAND_OPTIONS', 'CTEST_MEMORYCHECK_SANITIZER_OPTIONS',
    430 	'CTEST_MEMORYCHECK_SUPPRESSIONS_FILE', 'CTEST_MEMORYCHECK_TYPE', 'CTEST_NIGHTLY_START_TIME',
    431 	'CTEST_P4_CLIENT', 'CTEST_P4_COMMAND', 'CTEST_P4_OPTIONS', 'CTEST_P4_UPDATE_OPTIONS',
    432 	'CTEST_RESOURCE_SPEC_FILE', 'CTEST_RUN_CURRENT_SCRIPT', 'CTEST_SCP_COMMAND',
    433 	'CTEST_SCRIPT_DIRECTORY', 'CTEST_SITE', 'CTEST_SOURCE_DIRECTORY',
    434 	'CTEST_SUBMIT_INACTIVITY_TIMEOUT', 'CTEST_SUBMIT_URL', 'CTEST_SVN_COMMAND', 'CTEST_SVN_OPTIONS',
    435 	'CTEST_SVN_UPDATE_OPTIONS', 'CTEST_TEST_LOAD', 'CTEST_TEST_TIMEOUT', 'CTEST_TRIGGER_SITE',
    436 	'CTEST_UPDATE_COMMAND', 'CTEST_UPDATE_OPTIONS', 'CTEST_UPDATE_VERSION_ONLY',
    437 	'CTEST_UPDATE_VERSION_OVERRIDE', 'CTEST_USE_LAUNCHERS',
    438 
    439 	-- Variables for CPack.
    440 	'CPACK_ABSOLUTE_DESTINATION_FILES', 'CPACK_COMPONENT_INCLUDE_TOPLEVEL_DIRECTORY',
    441 	'CPACK_CUSTOM_INSTALL_VARIABLES', 'CPACK_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION',
    442 	'CPACK_INCLUDE_TOPLEVEL_DIRECTORY', 'CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS',
    443 	'CPACK_PACKAGING_INSTALL_PREFIX', 'CPACK_SET_DESTDIR',
    444 	'CPACK_WARN_ON_ABSOLUTE_INSTALL_DESTINATION'
    445 })
    446 
    447 lex:set_word_list(lexer.PREPROCESSOR, {
    448 	'IF', 'BOOL', -- conditional
    449 	'AND', 'OR', 'NOT', -- logical
    450 	'STREQUAL', 'EQUAL', -- string comparison
    451 	'VERSION_LESS', 'VERSION_GREATER', 'VERSION_EQUAL', 'VERSION_LESS_EQUAL', 'VERSION_GREATER_EQUAL', -- version comparison
    452 	'LOWER_CASE', 'UPPER_CASE', 'MAKE_C_IDENTIFIER', -- string transformations
    453 	'IN_LIST', 'JOIN', 'REMOVE_DUPLICATES', 'FILTER', -- list expressions
    454 	'PATH_EQUAL', 'PATH', -- path expressions (note: cannot use ':' parts)
    455 	'SHELL_PATH', -- shell paths
    456 	'CONFIG', 'OUTPUT_CONFIG', 'COMMAND_CONFIG', -- configuration expressions
    457 	'PLATFORM_ID', -- platform
    458 	'C_COMPILER_VERSION', 'CXX_COMPILER_VERSION', 'CUDA_COMPILER_VERSION', 'OBJC_COMPILER_VERSION',
    459 	'OBJCXX_COMPILER_VERSION', 'Fortran_COMPILER_VERSION', 'HIP_COMPILER_VERSION',
    460 	'ISPC_COMPILER_VERSION', -- compiler version
    461 	'C_COMPILER_ID', 'CXX_COMPILER_ID', 'CUDA_COMPILER_ID', 'OBJC_COMPILER_ID', 'OBJCXX_COMPILER_ID',
    462 	'Fortran_COMPILER_ID', 'HIP_COMPILER_ID', 'ISPC_COMPILER_ID', 'COMPILE_LANGUAGE',
    463 	'COMPILE_LANG_AND_ID', 'COMPILE_FEATURES', -- compile features
    464 	'LINK_LANGUAGE', 'LINK_LANG_AND_ID', -- linker language and ID
    465 	'LINK_LIBRARY', 'LINK_GROUP', -- link features
    466 	'LINK_ONLY', 'DEVICE_LINK', 'HOST_LINK', -- link context
    467 	'TARGET_EXISTS', 'TARGET_NAME_IF_EXISTS', 'TARGET_NAME', 'TARGET_PROPERTY', 'TARGET_OBJECTS',
    468 	'TARGET_POLICY', 'TARGET_FILE', 'TARGET_FILE_BASE_NAME', 'TARGET_FILE_PREFIX',
    469 	'TARGET_FILE_SUFFIX', 'TARGET_FILE_NAME', 'TARGET_FILE_DIR', 'TARGET_LINKER_FILE',
    470 	'TARGET_LINKER_FILE_BASE_NAME', 'TARGET_LINKER_FILE_PREFIX', 'TARGET_LINKER_FILE_SUFFIX',
    471 	'TARGET_LINKER_FILE_NAME', 'TARGET_LINKER_FILE_DIR', 'TARGET_SONAME_FILE',
    472 	'TARGET_SONAME_FILE_NAME', 'TARGET_SONAME_FILE_DIR', 'TARGET_PDB_FILE',
    473 	'TARGET_PDB_FILE_BASE_NAME', 'TARGET_PDB_FILE_NAME', 'TARGET_PDB_FILE_DIR', 'TARGET_BUNDLE_DIR',
    474 	'TARGET_BUNDLE_DIR_NAME', 'TARGET_BUNDLE_CONTENT_DIR', 'TARGET_RUNTIME_DLLS', -- target-dependent expressions
    475 	'INSTALL_INTERFACE', 'BUILD_INTERFACE', 'INSTALL_PREFIX', -- export and install expressions
    476 	'GENEX_EVAL', 'TARGET_GENEX_EVAL', -- multi-level expression evaluation
    477 	'ANGLE-R', 'COMMA', 'SEMICOLON' -- escaped characters
    478 })
    479 
    480 lex:set_word_list(lexer.OPERATOR, {
    481 	-- Unary test.
    482 	'EXISTS', 'COMMAND', 'DEFINED',
    483 	-- Binary test.
    484 	'EQUAL', 'LESS', 'LESS_EQUAL', 'GREATER', 'GREATER_EQUAL', 'STREQUAL', 'STRLESS', 'STRLESS_EQUAL',
    485 	'STRGREATER', 'STRGREATER_EQUAL', 'VERSION_EQUAL', 'VERSION_LESS', 'VERSION_LESS_EQUAL',
    486 	'VERSION_GREATER', 'VERSION_GREATER_EQUAL', 'PATH_EQUAL', 'MATCHES',
    487 	-- Logical.
    488 	'NOT', 'AND', 'OR'
    489 })
    490 
    491 lexer.property['scintillua.comment'] = '#'
    492 
    493 return lex