/*
Language: CMake
Description: CMake is an open-source cross-platform system for build automation.
Author: Igor Kalnitsky <igor@kalnitsky.org>
Website: http://kalnitsky.org/
*/

import { LanguageDef } from '../types';
import {
    HASH_COMMENT_MODE,
    QUOTE_STRING_MODE,
    NUMBER_MODE
} from '../common';

export const CMake: LanguageDef = {
    name: 'cmake',
    aliases: ['cmake.in'],
    case_insensitive: true,
    keywords: {
        keyword:
            'add_custom_command add_custom_target add_definitions add_dependencies ' +
            'add_executable add_library add_subdirectory add_test aux_source_directory ' +
            'break build_command cmake_minimum_required cmake_policy configure_file ' +
            'create_test_sourcelist define_property else elseif enable_language enable_testing ' +
            'endforeach endfunction endif endmacro endwhile execute_process export find_file ' +
            'find_library find_package find_path find_program fltk_wrap_ui foreach function ' +
            'get_cmake_property get_directory_property get_filename_component get_property ' +
            'get_source_file_property get_target_property get_test_property if include ' +
            'include_directories include_external_msproject include_regular_expression install ' +
            'link_directories load_cache load_command macro mark_as_advanced message option ' +
            'output_required_files project qt_wrap_cpp qt_wrap_ui 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 target_link_libraries try_compile try_run unset variable_watch ' +
            'while build_name exec_program export_library_dependencies install_files ' +
            'install_programs install_targets link_libraries make_directory remove subdir_depends ' +
            'subdirs use_mangled_mesa utility_source variable_requires write_file ' +
            'qt5_use_modules qt5_use_package qt5_wrap_cpp on off true false and or ' +
            'equal less greater strless strgreater strequal matches'
    },
    contains: [
        {
            className: 'variable',
            begin: '\\${', end: '}'
        },
        HASH_COMMENT_MODE,
        QUOTE_STRING_MODE,
        NUMBER_MODE
    ]
};
