<?xml version="1.0" encoding="UTF-8"?>
<!--

 Author: Yevgen Muntyan <muntyan@tamu.edu>
 Copyright (C) 2008 Yevgen Muntyan

 This library is free software; you can redistribute it and/or
 modify it under the terms of the GNU Library General Public
 License as published by the Free Software Foundation; either
 version 2 of the License, or (at your option) any later version.

 This library is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 Library General Public License for more details.

 You should have received a copy of the GNU Library General Public
 License along with this library; if not, write to the
 Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 Boston, MA 02111-1307, USA.

-->
<language id="cmake" _name="CMake" version="2.0" _section="Others">
  <metadata>
    <property name="globs">CMakeLists.txt;*.cmake;*.cmake.in;*.ctest;*.ctest.in</property>
    <property name="line-comment-start">#</property>
  </metadata>

  <styles>
    <style id="builtin-command" _name="Builtin Command" map-to="def:function"/>
    <style id="builtin-variable" _name="Builtin Variable" map-to="def:builtin"/>
    <style id="constant" _name="Constant" map-to="def:constant"/>
    <style id="operator" _name="Operator" map-to="def:operator"/>
    <style id="control" _name="Control Keyword" map-to="def:keyword"/>
    <style id="variable" _name="Variable" map-to="makefile:variable"/>
  </styles>

  <definitions>

    <context id="builtin-command" style-ref="builtin-command">
      <prefix>(?i)\b</prefix> <!-- case insensitive -->
      <keyword>ADD_CUSTOM_COMMAND</keyword>
      <keyword>ADD_CUSTOM_TARGET</keyword>
      <keyword>ADD_DEFINITIONS</keyword>
      <keyword>ADD_DEPENDENCIES</keyword>
      <keyword>ADD_EXECUTABLE</keyword>
      <keyword>ADD_LIBRARY</keyword>
      <keyword>ADD_SUBDIRECTORY</keyword>
      <keyword>ADD_TEST</keyword>
      <keyword>AUX_SOURCE_DIRECTORY</keyword>
      <keyword>BUILD_COMMAND</keyword>
      <keyword>BUILD_NAME</keyword>
      <keyword>CMAKE_MINIMUM_REQUIRED</keyword>
      <keyword>CONFIGURE_FILE</keyword>
      <keyword>CREATE_TEST_SOURCELIST</keyword>
      <keyword>ENABLE_LANGUAGE</keyword>
      <keyword>ENABLE_TESTING</keyword>
      <keyword>ENDMACRO</keyword>
      <keyword>EXECUTE_PROCESS</keyword>
      <keyword>EXEC_PROGRAM</keyword>
      <keyword>EXPORT_LIBRARY_DEPENDENCIES</keyword>
      <keyword>FILE</keyword>
      <keyword>FIND_FILE</keyword>
      <keyword>FIND_LIBRARY</keyword>
      <keyword>FIND_PACKAGE</keyword>
      <keyword>FIND_PATH</keyword>
      <keyword>FIND_PROGRAM</keyword>
      <keyword>FLTK_WRAP_UI</keyword>
      <keyword>GET_CMAKE_PROPERTY</keyword>
      <keyword>GET_DIRECTORY_PROPERTY</keyword>
      <keyword>GET_FILENAME_COMPONENT</keyword>
      <keyword>GET_SOURCE_FILE_PROPERTY</keyword>
      <keyword>GET_TARGET_PROPERTY</keyword>
      <keyword>GET_TEST_PROPERTY</keyword>
      <keyword>INCLUDE</keyword>
      <keyword>INCLUDE_DIRECTORIES</keyword>
      <keyword>INCLUDE_EXTERNAL_MSPROJECT</keyword>
      <keyword>INCLUDE_REGULAR_EXPRESSION</keyword>
      <keyword>INSTALL</keyword>
      <keyword>INSTALL_FILES</keyword>
      <keyword>INSTALL_PROGRAMS</keyword>
      <keyword>INSTALL_TARGETS</keyword>
      <keyword>LINK_DIRECTORIES</keyword>
      <keyword>LINK_LIBRARIES</keyword>
      <keyword>LIST</keyword>
      <keyword>LOAD_CACHE</keyword>
      <keyword>LOAD_COMMAND</keyword>
      <keyword>MACRO</keyword>
      <keyword>MAKE_DIRECTORY</keyword>
      <keyword>MARK_AS_ADVANCED</keyword>
      <keyword>MATH</keyword>
      <keyword>MESSAGE</keyword>
      <keyword>OPTION</keyword>
      <keyword>OUTPUT_REQUIRED_FILES</keyword>
      <keyword>PROJECT</keyword>
      <keyword>QT_WRAP_CPP</keyword>
      <keyword>QT_WRAP_UI</keyword>
      <keyword>REMOVE</keyword>
      <keyword>REMOVE_DEFINITIONS</keyword>
      <keyword>SEPARATE_ARGUMENTS</keyword>
      <keyword>SET</keyword>
      <keyword>SET_DIRECTORY_PROPERTIES</keyword>
      <keyword>SET_SOURCE_FILES_PROPERTIES</keyword>
      <keyword>SET_TARGET_PROPERTIES</keyword>
      <keyword>SET_TESTS_PROPERTIES</keyword>
      <keyword>SITE_NAME</keyword>
      <keyword>SOURCE_GROUP</keyword>
      <keyword>STRING</keyword>
      <keyword>SUBDIRS</keyword>
      <keyword>SUBDIR_DEPENDS</keyword>
      <keyword>TARGET_LINK_LIBRARIES</keyword>
      <keyword>TRY_COMPILE</keyword>
      <keyword>TRY_RUN</keyword>
      <keyword>USE_MANGLED_MESA</keyword>
      <keyword>UTILITY_SOURCE</keyword>
      <keyword>VARIABLE_REQUIRES</keyword>
      <keyword>VTK_MAKE_INSTANTIATOR</keyword>
      <keyword>VTK_WRAP_JAVA</keyword>
      <keyword>VTK_WRAP_PYTHON</keyword>
      <keyword>VTK_WRAP_TCL</keyword>
      <keyword>WRITE_FILE</keyword>
    </context>

    <context id="constant" style-ref="constant">
      <prefix>(?i)\b</prefix> <!-- case insensitive -->
      <keyword>BOOL</keyword>
      <keyword>CACHE</keyword>
      <keyword>FALSE</keyword>
      <keyword>N</keyword>
      <keyword>NO</keyword>
      <keyword>ON</keyword>
      <keyword>OFF</keyword>
      <keyword>NOTFOUND</keyword>
      <keyword>TRUE</keyword>
    </context>

    <context id="builtin-variable" style-ref="builtin-variable">
      <keyword>APPLE</keyword>
      <keyword>BORLAND</keyword>
      <keyword>CMAKE_AR</keyword>
      <keyword>CMAKE_BACKWARDS_COMPATIBILITY</keyword>
      <keyword>CMAKE_BASE_NAME</keyword>
      <keyword>CMAKE_BINARY_DIR</keyword>
      <keyword>CMAKE_BUILD_TOOL</keyword>
      <keyword>CMAKE_BUILD_TYPE</keyword>
      <keyword>CMAKE_CACHEFILE_DIR</keyword>
      <keyword>CMAKE_CACHE_MAJOR_VERSION</keyword>
      <keyword>CMAKE_CACHE_MINOR_VERSION</keyword>
      <keyword>CMAKE_CACHE_RELEASE_VERSION</keyword>
      <keyword>CMAKE_CFG_INTDIR</keyword>
      <keyword>CMAKE_COLOR_MAKEFILE</keyword>
      <keyword>CMAKE_COMMAND</keyword>
      <keyword>CMAKE_COMPILER_IS_GNUCC</keyword>
      <keyword>CMAKE_COMPILER_IS_GNUCC_RUN</keyword>
      <keyword>CMAKE_COMPILER_IS_GNUCXX</keyword>
      <keyword>CMAKE_COMPILER_IS_GNUCXX_RUN</keyword>
      <keyword>CMAKE_CTEST_COMMAND</keyword>
      <keyword>CMAKE_CURRENT_BINARY_DIR</keyword>
      <keyword>CMAKE_CURRENT_SOURCE_DIR</keyword>
      <keyword>CMAKE_CXX_COMPILER</keyword>
      <keyword>CMAKE_CXX_COMPILER_ARG1</keyword>
      <keyword>CMAKE_CXX_COMPILER_ENV_VAR</keyword>
      <keyword>CMAKE_CXX_COMPILER_FULLPATH</keyword>
      <keyword>CMAKE_CXX_COMPILER_LOADED</keyword>
      <keyword>CMAKE_CXX_COMPILER_WORKS</keyword>
      <keyword>CMAKE_CXX_COMPILE_OBJECT</keyword>
      <keyword>CMAKE_CXX_CREATE_SHARED_LIBRARY</keyword>
      <keyword>CMAKE_CXX_CREATE_SHARED_LIBRARY_FORBIDDEN_FLAGS</keyword>
      <keyword>CMAKE_CXX_CREATE_SHARED_MODULE</keyword>
      <keyword>CMAKE_CXX_CREATE_STATIC_LIBRARY</keyword>
      <keyword>CMAKE_CXX_FLAGS</keyword>
      <keyword>CMAKE_CXX_FLAGS_DEBUG</keyword>
      <keyword>CMAKE_CXX_FLAGS_DEBUG_INIT</keyword>
      <keyword>CMAKE_CXX_FLAGS_INIT</keyword>
      <keyword>CMAKE_CXX_FLAGS_MINSIZEREL</keyword>
      <keyword>CMAKE_CXX_FLAGS_MINSIZEREL_INIT</keyword>
      <keyword>CMAKE_CXX_FLAGS_RELEASE</keyword>
      <keyword>CMAKE_CXX_FLAGS_RELEASE_INIT</keyword>
      <keyword>CMAKE_CXX_FLAGS_RELWITHDEBINFO</keyword>
      <keyword>CMAKE_CXX_FLAGS_RELWITHDEBINFO_INIT</keyword>
      <keyword>CMAKE_CXX_IGNORE_EXTENSIONS</keyword>
      <keyword>CMAKE_CXX_INFORMATION_LOADED</keyword>
      <keyword>CMAKE_CXX_LINKER_PREFERENCE</keyword>
      <keyword>CMAKE_CXX_LINK_EXECUTABLE</keyword>
      <keyword>CMAKE_CXX_LINK_FLAGS</keyword>
      <keyword>CMAKE_CXX_OUTPUT_EXTENSION</keyword>
      <keyword>CMAKE_CXX_SOURCE_FILE_EXTENSIONS</keyword>
      <keyword>CMAKE_C_COMPILER</keyword>
      <keyword>CMAKE_C_COMPILER_ARG1</keyword>
      <keyword>CMAKE_C_COMPILER_ENV_VAR</keyword>
      <keyword>CMAKE_C_COMPILER_FULLPATH</keyword>
      <keyword>CMAKE_C_COMPILER_LOADED</keyword>
      <keyword>CMAKE_C_COMPILER_WORKS</keyword>
      <keyword>CMAKE_C_COMPILE_OBJECT</keyword>
      <keyword>CMAKE_C_CREATE_SHARED_LIBRARY</keyword>
      <keyword>CMAKE_C_CREATE_SHARED_LIBRARY_FORBIDDEN_FLAGS</keyword>
      <keyword>CMAKE_C_CREATE_SHARED_MODULE</keyword>
      <keyword>CMAKE_C_CREATE_STATIC_LIBRARY</keyword>
      <keyword>CMAKE_C_FLAGS</keyword>
      <keyword>CMAKE_C_FLAGS_DEBUG</keyword>
      <keyword>CMAKE_C_FLAGS_DEBUG_INIT</keyword>
      <keyword>CMAKE_C_FLAGS_INIT</keyword>
      <keyword>CMAKE_C_FLAGS_MINSIZEREL</keyword>
      <keyword>CMAKE_C_FLAGS_MINSIZEREL_INIT</keyword>
      <keyword>CMAKE_C_FLAGS_RELEASE</keyword>
      <keyword>CMAKE_C_FLAGS_RELEASE_INIT</keyword>
      <keyword>CMAKE_C_FLAGS_RELWITHDEBINFO</keyword>
      <keyword>CMAKE_C_FLAGS_RELWITHDEBINFO_INIT</keyword>
      <keyword>CMAKE_C_IGNORE_EXTENSIONS</keyword>
      <keyword>CMAKE_C_INFORMATION_LOADED</keyword>
      <keyword>CMAKE_C_LINKER_PREFERENCE</keyword>
      <keyword>CMAKE_C_LINK_EXECUTABLE</keyword>
      <keyword>CMAKE_C_LINK_FLAGS</keyword>
      <keyword>CMAKE_C_OUTPUT_EXTENSION</keyword>
      <keyword>CMAKE_C_SOURCE_FILE_EXTENSIONS</keyword>
      <keyword>CMAKE_DL_LIBS</keyword>
      <keyword>CMAKE_EDIT_COMMAND</keyword>
      <keyword>CMAKE_EXECUTABLE_SUFFIX</keyword>
      <keyword>CMAKE_EXE_LINKER_FLAGS</keyword>
      <keyword>CMAKE_EXE_LINKER_FLAGS_DEBUG</keyword>
      <keyword>CMAKE_EXE_LINKER_FLAGS_MINSIZEREL</keyword>
      <keyword>CMAKE_EXE_LINKER_FLAGS_RELEASE</keyword>
      <keyword>CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO</keyword>
      <keyword>CMAKE_FILES_DIRECTORY</keyword>
      <keyword>CMAKE_FIND_APPBUNDLE</keyword>
      <keyword>CMAKE_FIND_FRAMEWORK</keyword>
      <keyword>CMAKE_FIND_LIBRARY_PREFIXES</keyword>
      <keyword>CMAKE_FIND_LIBRARY_SUFFIXES</keyword>
      <keyword>CMAKE_GENERATOR</keyword>
      <keyword>CMAKE_HOME_DIRECTORY</keyword>
      <keyword>CMAKE_INCLUDE_FLAG_C</keyword>
      <keyword>CMAKE_INCLUDE_FLAG_CXX</keyword>
      <keyword>CMAKE_INCLUDE_FLAG_C_SEP</keyword>
      <keyword>CMAKE_INIT_VALUE</keyword>
      <keyword>CMAKE_INSTALL_PREFIX</keyword>
      <keyword>CMAKE_LIBRARY_PATH_FLAG</keyword>
      <keyword>CMAKE_LINK_LIBRARY_FLAG</keyword>
      <keyword>CMAKE_LINK_LIBRARY_SUFFIX</keyword>
      <keyword>CMAKE_MAJOR_VERSION</keyword>
      <keyword>CMAKE_MAKE_PROGRAM</keyword>
      <keyword>CMAKE_MINOR_VERSION</keyword>
      <keyword>CMAKE_MODULE_EXISTS</keyword>
      <keyword>CMAKE_MODULE_LINKER_FLAGS</keyword>
      <keyword>CMAKE_MODULE_LINKER_FLAGS_DEBUG</keyword>
      <keyword>CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL</keyword>
      <keyword>CMAKE_MODULE_LINKER_FLAGS_RELEASE</keyword>
      <keyword>CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO</keyword>
      <keyword>CMAKE_MacOSX_Content_COMPILE_OBJECT</keyword>
      <keyword>CMAKE_NUMBER_OF_LOCAL_GENERATORS</keyword>
      <keyword>CMAKE_OSX_ARCHITECTURES</keyword>
      <keyword>CMAKE_OSX_SYSROOT</keyword>
      <keyword>CMAKE_PARENT_LIST_FILE</keyword>
      <keyword>CMAKE_PATCH_VERSION</keyword>
      <keyword>CMAKE_PLATFORM_HAS_INSTALLNAME</keyword>
      <keyword>CMAKE_PLATFORM_IMPLICIT_INCLUDE_DIRECTORIES</keyword>
      <keyword>CMAKE_PLATFORM_ROOT_BIN</keyword>
      <keyword>CMAKE_PROJECT_NAME</keyword>
      <keyword>CMAKE_RANLIB</keyword>
      <keyword>CMAKE_ROOT</keyword>
      <keyword>CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS</keyword>
      <keyword>CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS</keyword>
      <keyword>CMAKE_SHARED_LIBRARY_CXX_FLAGS</keyword>
      <keyword>CMAKE_SHARED_LIBRARY_C_FLAGS</keyword>
      <keyword>CMAKE_SHARED_LIBRARY_LINK_C_FLAGS</keyword>
      <keyword>CMAKE_SHARED_LIBRARY_PREFIX</keyword>
      <keyword>CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG</keyword>
      <keyword>CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP</keyword>
      <keyword>CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG</keyword>
      <keyword>CMAKE_SHARED_LIBRARY_SONAME_C_FLAG</keyword>
      <keyword>CMAKE_SHARED_LIBRARY_SUFFIX</keyword>
      <keyword>CMAKE_SHARED_LINKER_FLAGS</keyword>
      <keyword>CMAKE_SHARED_LINKER_FLAGS_DEBUG</keyword>
      <keyword>CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL</keyword>
      <keyword>CMAKE_SHARED_LINKER_FLAGS_RELEASE</keyword>
      <keyword>CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO</keyword>
      <keyword>CMAKE_SHARED_MODULE_CREATE_CXX_FLAGS</keyword>
      <keyword>CMAKE_SHARED_MODULE_CREATE_C_FLAGS</keyword>
      <keyword>CMAKE_SHARED_MODULE_PREFIX</keyword>
      <keyword>CMAKE_SHARED_MODULE_SUFFIX</keyword>
      <keyword>CMAKE_SIZEOF_VOID_P</keyword>
      <keyword>CMAKE_SKIP_RPATH</keyword>
      <keyword>CMAKE_SOURCE_DIR</keyword>
      <keyword>CMAKE_STATIC_LIBRARY_PREFIX</keyword>
      <keyword>CMAKE_STATIC_LIBRARY_SUFFIX</keyword>
      <keyword>CMAKE_SYSTEM</keyword>
      <keyword>CMAKE_SYSTEM_AND_CXX_COMPILER_INFO_FILE</keyword>
      <keyword>CMAKE_SYSTEM_AND_C_COMPILER_INFO_FILE</keyword>
      <keyword>CMAKE_SYSTEM_APPBUNDLE_PATH</keyword>
      <keyword>CMAKE_SYSTEM_FRAMEWORK_PATH</keyword>
      <keyword>CMAKE_SYSTEM_INCLUDE_PATH</keyword>
      <keyword>CMAKE_SYSTEM_INFO_FILE</keyword>
      <keyword>CMAKE_SYSTEM_LIBRARY_PATH</keyword>
      <keyword>CMAKE_SYSTEM_LOADED</keyword>
      <keyword>CMAKE_SYSTEM_NAME</keyword>
      <keyword>CMAKE_SYSTEM_PROCESSOR</keyword>
      <keyword>CMAKE_SYSTEM_PROGRAM_PATH</keyword>
      <keyword>CMAKE_SYSTEM_SPECIFIC_INFORMATION_LOADED</keyword>
      <keyword>CMAKE_SYSTEM_VERSION</keyword>
      <keyword>CMAKE_UNAME</keyword>
      <keyword>CMAKE_USE_RELATIVE_PATHS</keyword>
      <keyword>CMAKE_VERBOSE_MAKEFILE</keyword>
      <keyword>CYGWIN</keyword>
      <keyword>EXECUTABLE_OUTPUT_PATH</keyword>
      <keyword>FORCE</keyword>
      <keyword>HAVE_CMAKE_SIZEOF_VOID_P</keyword>
      <keyword>LIBRARY_OUTPUT_PATH</keyword>
      <keyword>MACOSX_BUNDLE</keyword>
      <keyword>MINGW</keyword>
      <keyword>MSVC60</keyword>
      <keyword>MSVC70</keyword>
      <keyword>MSVC71</keyword>
      <keyword>MSVC80</keyword>
      <keyword>MSVC</keyword>
      <keyword>MSVC_IDE</keyword>
      <keyword>PROJECT_BINARY_DIR</keyword>
      <keyword>PROJECT_NAME</keyword>
      <keyword>PROJECT_SOURCE_DIR</keyword>
      <keyword>Project_BINARY_DIR</keyword>
      <keyword>Project_SOURCE_DIR</keyword>
      <keyword>RUN_CONFIGURE</keyword>
      <keyword>UNIX</keyword>
      <keyword>WIN32</keyword>
      <keyword>_CMAKE_OSX_MACHINE</keyword>
    </context>

    <context id="builtin-variable-2" style-ref="builtin-variable">
      <keyword>LOCATION</keyword>
      <keyword>TARGET</keyword>
      <keyword>POST_BUILD</keyword>
      <keyword>PRE_BUILD</keyword>
      <keyword>ARGS</keyword>
    </context>

    <context id="operator" style-ref="operator">
      <keyword>AND</keyword>
      <keyword>COMMAND</keyword>
      <keyword>DEFINED</keyword>
      <keyword>DOC</keyword>
      <keyword>EQUAL</keyword>
      <keyword>EXISTS</keyword>
      <keyword>GREATER</keyword>
      <keyword>INTERNAL</keyword>
      <keyword>LESS</keyword>
      <keyword>MATCHES</keyword>
      <keyword>NAME</keyword>
      <keyword>NAMES</keyword>
      <keyword>NAME_WE</keyword>
      <keyword>NOT</keyword>
      <keyword>OR</keyword>
      <keyword>PATH</keyword>
      <keyword>PATHS</keyword>
      <keyword>PROGRAM</keyword>
      <keyword>STREQUAL</keyword>
      <keyword>STRGREATER</keyword>
      <keyword>STRING</keyword>
      <keyword>STRLESS</keyword>
    </context>

    <context id="control" style-ref="control">
      <prefix>(?i)\b</prefix> <!-- case insensitive -->
      <keyword>IF</keyword>
      <keyword>ENDIF</keyword>
      <keyword>FOREACH</keyword>
      <keyword>ENDFOREACH</keyword>
      <keyword>WHILE</keyword>
      <keyword>ENDWHILE</keyword>
      <keyword>ELSE</keyword>
      <keyword>ELSEIF</keyword>
    </context>

    <context id="variable" style-ref="variable"
             style-inside="true" end-at-line-end="true"
    >
      <start>\$\{</start>
      <end>\}</end>
      <include>
        <context ref="builtin-variable"/>
        <context ref="builtin-variable-2"/>
      </include>
    </context>

    <context id="variable-assignment">
      <start>\b((?i)SET)\b\s*\(\s*([\w_][\w\d_]*)</start>
      <end>\)</end>
      <include>
        <context sub-pattern="1" where="start" style-ref="builtin-command"/>
        <context sub-pattern="2" where="start" style-ref="variable"/>
        <context ref="variable"/>
        <context ref="constant"/>
        <context ref="def:shell-like-comment"/>
      </include>
    </context>

    <context id="cmake">
      <include>
        <context ref="variable"/>
        <context ref="variable-assignment"/>
        <context ref="def:shell-like-comment"/>
        <context ref="constant"/>
        <context ref="builtin-command"/>
        <context ref="operator"/>
        <context ref="control"/>
      </include>
    </context>

  </definitions>
</language>
