#include "cmDocumentVariables.h"
#include "cmake.h"

#include <cmsys/ios/sstream>

void cmDocumentVariables::DefineVariables(cmake* cm)
{
  // Subsection: variables defined by cmake, that give
  // information about the project, and cmake
  cm->DefineProperty
    ("CMAKE_AR", cmProperty::VARIABLE,
     "Name of archiving tool for static libraries.",
     "This specifies the name of the program that creates archive "
     "or static libraries.",false,
     "Variables that Provide Information");

  cm->DefineProperty
    ("CMAKE_COMMAND", cmProperty::VARIABLE,
     "The full path to the cmake executable.",
     "This is the full path to the CMake executable cmake which is "
     "useful from custom commands that want to use the cmake -E "
     "option for portable system commands.  "
     "(e.g. /usr/local/bin/cmake", false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_BINARY_DIR", cmProperty::VARIABLE,
     "The path to the top level of the build tree.",
     "This is the full path to the top level of the current CMake "
     "build tree. For an in-source build, this would be the same "
     "as CMAKE_SOURCE_DIR.", false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_SOURCE_DIR", cmProperty::VARIABLE,
     "The path to the top level of the source tree.",
     "This is the full path to the top level of the current CMake "
     "source tree. For an in-source build, this would be the same "
     "as CMAKE_BINARY_DIR.", false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_CURRENT_BINARY_DIR", cmProperty::VARIABLE,
     "The path to the binary directory currently being processed.",
     "This the full path to the build directory that is currently "
     "being processed by cmake.  Each directory added by "
     "add_subdirectory will create a binary directory in the build "
     "tree, and as it is being processed this variable will be set.  "
     "For in-source builds this is the current source directory "
     "being processed.", false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_CURRENT_SOURCE_DIR", cmProperty::VARIABLE,
     "The path to the source directory currently being processed.",
     "This the full path to the source directory that is currently "
     "being processed by cmake.  ", false,
     "Variables that Provide Information");

  cm->DefineProperty
    ("CMAKE_CURRENT_LIST_FILE", cmProperty::VARIABLE,
     "Full path to the listfile currently being processed.",
     "As CMake processes the listfiles in your project this "
     "variable will always be set to the one currently being "
     "processed.  "
     "The value has dynamic scope.  "
     "When CMake starts processing commands in a source file "
     "it sets this variable to the location of the file.  "
     "When CMake finishes processing commands from the file it "
     "restores the previous value.  "
     "Therefore the value of the variable inside a macro or "
     "function is the file invoking the bottom-most entry on "
     "the call stack, not the file containing the macro or "
     "function definition."
     "\n"
     "See also CMAKE_PARENT_LIST_FILE.",false,
     "Variables that Provide Information");

  cm->DefineProperty
    ("CMAKE_CURRENT_LIST_LINE", cmProperty::VARIABLE,
     "The line number of the current file being processed.",
     "This is the line number of the file currently being"
     " processed by cmake.", false,
     "Variables that Provide Information");

  cm->DefineProperty
    ("CMAKE_CURRENT_LIST_DIR", cmProperty::VARIABLE,
     "Full directory of the listfile currently being processed.",
     "As CMake processes the listfiles in your project this "
     "variable will always be set to the directory where the listfile which "
     "is currently being processed (CMAKE_CURRENT_LIST_FILE) is located.  "
     "The value has dynamic scope.  "
     "When CMake starts processing commands in a source file "
     "it sets this variable to the directory where this file is located.  "
     "When CMake finishes processing commands from the file it "
     "restores the previous value.  "
     "Therefore the value of the variable inside a macro or "
     "function is the directory of the file invoking the bottom-most entry on "
     "the call stack, not the directory of the file containing the macro or "
     "function definition."
     "\n"
     "See also CMAKE_CURRENT_LIST_FILE.",false,
     "Variables that Provide Information");

  cm->DefineProperty
    ("CMAKE_SCRIPT_MODE_FILE", cmProperty::VARIABLE,
     "Full path to the -P script file currently being processed.",
     "When run in -P script mode, CMake sets this variable to the full "
     "path of the script file. When run to configure a CMakeLists.txt "
     "file, this variable is not set.", false,
     "Variables that Provide Information");

  cm->DefineProperty
    ("CMAKE_ARGC", cmProperty::VARIABLE,
     "Number of command line arguments passed to CMake in script mode.",
     "When run in -P script mode, CMake sets this variable to the number "
     "of command line arguments. See also CMAKE_ARGV0, 1, 2 ...", false,
     "Variables that Provide Information");

  cm->DefineProperty
    ("CMAKE_ARGV0", cmProperty::VARIABLE,
     "Command line argument passed to CMake in script mode.",
     "When run in -P script mode, CMake sets this variable to "
     "the first command line argument. It then also sets CMAKE_ARGV1, "
     "CMAKE_ARGV2, ... and so on, up to the number of command line arguments "
     "given. See also CMAKE_ARGC.", false,
     "Variables that Provide Information");

  cm->DefineProperty
    ("CMAKE_BUILD_TOOL", cmProperty::VARIABLE,
     "Tool used for the actual build process.",
     "This variable is set to the program that will be"
     " needed to build the output of CMake.   If the "
     "generator selected was Visual Studio 6, the "
     "CMAKE_BUILD_TOOL will be set to msdev, for "
     "Unix Makefiles it will be set to make or gmake, "
     "and for Visual Studio 7 it set to devenv.  For "
     "NMake Makefiles the value is nmake. This can be "
     "useful for adding special flags and commands based"
     " on the final build environment.", false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_CROSSCOMPILING", cmProperty::VARIABLE,
     "Is CMake currently cross compiling.",
     "This variable will be set to true by CMake if CMake is cross "
     "compiling. Specifically if the build platform is different "
     "from the target platform.", false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_CACHEFILE_DIR", cmProperty::VARIABLE,
     "The directory with the CMakeCache.txt file.",
     "This is the full path to the directory that has the "
     "CMakeCache.txt file in it.  This is the same as "
     "CMAKE_BINARY_DIR.", false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_CACHE_MAJOR_VERSION", cmProperty::VARIABLE,
     "Major version of CMake used to create the CMakeCache.txt file",
     "This stores the major version of CMake used to "
     "write a CMake cache file. It is only different when "
     "a different version of CMake is run on a previously "
     "created cache file.", false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_CACHE_MINOR_VERSION", cmProperty::VARIABLE,
     "Minor version of CMake used to create the CMakeCache.txt file",
     "This stores the minor version of CMake used to "
     "write a CMake cache file. It is only different when "
     "a different version of CMake is run on a previously "
     "created cache file.", false,
     "Variables that Provide Information");

  cm->DefineProperty
    ("CMAKE_CACHE_PATCH_VERSION", cmProperty::VARIABLE,
     "Patch version of CMake used to create the CMakeCache.txt file",
     "This stores the patch version of CMake used to "
     "write a CMake cache file. It is only different when "
     "a different version of CMake is run on a previously "
     "created cache file.", false,
     "Variables that Provide Information");

  cm->DefineProperty
    ("CMAKE_CFG_INTDIR", cmProperty::VARIABLE,
     "Build-time reference to per-configuration output subdirectory.",
     "For native build systems supporting multiple configurations "
     "in the build tree (such as Visual Studio and Xcode), "
     "the value is a reference to a build-time variable specifying "
     "the name of the per-configuration output subdirectory.  "
     "On Makefile generators this evaluates to \".\" because there "
     "is only one configuration in a build tree.  "
     "Example values:\n"
     "  $(IntDir)        = Visual Studio 6\n"
     "  $(OutDir)        = Visual Studio 7, 8, 9\n"
     "  $(Configuration) = Visual Studio 10\n"
     "  $(CONFIGURATION) = Xcode\n"
     "  .                = Make-based tools\n"
     "Since these values are evaluated by the native build system, this "
     "variable is suitable only for use in command lines that will be "
     "evaluated at build time.  "
     "Example of intended usage:\n"
     "  add_executable(mytool mytool.c)\n"
     "  add_custom_command(\n"
     "    OUTPUT out.txt\n"
     "    COMMAND ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/mytool\n"
     "            ${CMAKE_CURRENT_SOURCE_DIR}/in.txt out.txt\n"
     "    DEPENDS mytool in.txt\n"
     "    )\n"
     "  add_custom_target(drive ALL DEPENDS out.txt)\n"
     "Note that CMAKE_CFG_INTDIR is no longer necessary for this purpose "
     "but has been left for compatibility with existing projects.  "
     "Instead add_custom_command() recognizes executable target names in "
     "its COMMAND option, so "
     "\"${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/mytool\" can be "
     "replaced by just \"mytool\"."
     "\n"
     "This variable is read-only.  Setting it is undefined behavior.  "
     "In multi-configuration build systems the value of this variable "
     "is passed as the value of preprocessor symbol \"CMAKE_INTDIR\" to "
     "the compilation of all source files.",false,
     "Variables that Provide Information");

  cm->DefineProperty
    ("CMAKE_CTEST_COMMAND", cmProperty::VARIABLE,
     "Full path to ctest command installed with cmake.",
     "This is the full path to the CTest executable ctest "
     "which is useful from custom commands that want "
     "to use the cmake -E option for portable system "
     "commands.",false,
     "Variables that Provide Information");

  cm->DefineProperty
    ("CMAKE_DL_LIBS", cmProperty::VARIABLE,
     "Name of library containing dlopen and dlcose.",
     "The name of the library that has dlopen and "
     "dlclose in it, usually -ldl on most UNIX machines.",false,
     "Variables that Provide Information");

  cm->DefineProperty
    ("CMAKE_EDIT_COMMAND", cmProperty::VARIABLE,
     "Full path to cmake-gui or ccmake.",
     "This is the full path to the CMake executable "
     "that can graphically edit the cache.  For example,"
     " cmake-gui, ccmake, or cmake -i.",false,
     "Variables that Provide Information");

  cm->DefineProperty
    ("CMAKE_GENERATOR", cmProperty::VARIABLE,
     "The generator used to build the project.",
     "The name of the generator that is being used to generate the "
     "build files.  (e.g. \"Unix Makefiles\", "
     "\"Visual Studio 6\", etc.)",false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_EXTRA_GENERATOR", cmProperty::VARIABLE,
     "The extra generator used to build the project.",
     "When using the Eclipse, CodeBlocks or KDevelop generators, CMake "
     "generates Makefiles (CMAKE_GENERATOR) and additionally project files "
     "for the respective IDE. This IDE project file generator is stored in "
     "CMAKE_EXTRA_GENERATOR (e.g. \"Eclipse CDT4\").",false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_GENERATOR_TOOLSET", cmProperty::VARIABLE,
     "Native build system toolset name specified by user.",
     "Some CMake generators support a toolset name to be given to the "
     "native build system to choose a compiler.  "
     "If the user specifies a toolset name (e.g. via the cmake -T option) "
     "the value will be available in this variable.",false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_HOME_DIRECTORY", cmProperty::VARIABLE,
     "Path to top of source tree.",
     "This is the path to the top level of the source tree.",false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_LINK_LIBRARY_SUFFIX", cmProperty::VARIABLE,
     "The suffix for libraries that you link to.",
     "The suffix to use for the end of a library filename, .lib on Windows."
     ,false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_EXECUTABLE_SUFFIX", cmProperty::VARIABLE,
     "The suffix for executables on this platform.",
     "The suffix to use for the end of an executable filename if any, "
     ".exe on Windows."
     "\n"
     "CMAKE_EXECUTABLE_SUFFIX_<LANG> overrides this for language <LANG>."
     ,false, "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_MAJOR_VERSION", cmProperty::VARIABLE,
     "The Major version of cmake (i.e. the 2 in 2.X.X)",
     "This specifies the major version of the CMake executable"
     " being run.",false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_MAKE_PROGRAM", cmProperty::VARIABLE,
     "See CMAKE_BUILD_TOOL.",
     "This variable is around for backwards compatibility, "
     "see CMAKE_BUILD_TOOL.",false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_VS_PLATFORM_TOOLSET", cmProperty::VARIABLE,
     "Visual Studio Platform Toolset name.",
     "VS 10 and above use MSBuild under the hood and support multiple "
     "compiler toolchains.  "
     "CMake may specify a toolset explicitly, such as \"v110\" for "
     "VS 11 or \"Windows7.1SDK\" for 64-bit support in VS 10 Express.  "
     "CMake provides the name of the chosen toolset in this variable."
     ,false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_XCODE_PLATFORM_TOOLSET", cmProperty::VARIABLE,
     "Xcode compiler selection.",
     "Xcode supports selection of a compiler from one of the installed "
     "toolsets.  "
     "CMake provides the name of the chosen toolset in this variable, "
     "if any is explicitly selected (e.g. via the cmake -T option)."
     ,false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_MINOR_VERSION", cmProperty::VARIABLE,
     "The Minor version of cmake (i.e. the 4 in X.4.X).",
     "This specifies the minor version of the CMake"
     " executable being run.",false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_PATCH_VERSION", cmProperty::VARIABLE,
     "The patch version of cmake (i.e. the 3 in X.X.3).",
     "This specifies the patch version of the CMake"
     " executable being run.",false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_TWEAK_VERSION", cmProperty::VARIABLE,
     "The tweak version of cmake (i.e. the 1 in X.X.X.1).",
     "This specifies the tweak version of the CMake executable being run.  "
     "Releases use tweak < 20000000 and development versions use the date "
     "format CCYYMMDD for the tweak level."
     ,false, "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_VERSION", cmProperty::VARIABLE,
     "The full version of cmake in major.minor.patch[.tweak[-id]] format.",
     "This specifies the full version of the CMake executable being run.  "
     "This variable is defined by versions 2.6.3 and higher.  "
     "See variables CMAKE_MAJOR_VERSION, CMAKE_MINOR_VERSION, "
     "CMAKE_PATCH_VERSION, and CMAKE_TWEAK_VERSION "
     "for individual version components.  "
     "The [-id] component appears in non-release versions "
     "and may be arbitrary text.", false,
     "Variables that Provide Information");

  cm->DefineProperty
    ("CMAKE_PARENT_LIST_FILE", cmProperty::VARIABLE,
     "Full path to the CMake file that included the current one.",
     "While processing a CMake file loaded by include() or find_package() "
     "this variable contains the full path to the file including it.  "
     "The top of the include stack is always the CMakeLists.txt for the "
     "current directory.  "
     "See also CMAKE_CURRENT_LIST_FILE.",false,
     "Variables that Provide Information");

  cm->DefineProperty
    ("CMAKE_PROJECT_NAME", cmProperty::VARIABLE,
     "The name of the current project.",
     "This specifies name of the current project from"
     " the closest inherited PROJECT command.",false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_RANLIB", cmProperty::VARIABLE,
     "Name of randomizing tool for static libraries.",
     "This specifies name of the program that randomizes "
     "libraries on UNIX, not used on Windows, but may be present.",false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_ROOT", cmProperty::VARIABLE,
     "Install directory for running cmake.",
     "This is the install root for the running CMake and"
     " the Modules directory can be found here. This is"
     " commonly used in this format: ${CMAKE_ROOT}/Modules",false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_SIZEOF_VOID_P", cmProperty::VARIABLE,
     "Size of a void pointer.",
     "This is set to the size of a pointer on the machine, "
     "and is determined by a try compile. If a 64 bit size "
     "is found, then the library search path is modified to "
     "look for 64 bit libraries first.",false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_SKIP_RPATH", cmProperty::VARIABLE,
     "If true, do not add run time path information.",
     "If this is set to TRUE, then the rpath information "
     "is not added to compiled executables.  The default "
     "is to add rpath information if the platform supports it.  "
     "This allows for easy running from the build tree.  To omit RPATH "
     "in the install step, but not the build step, use "
     "CMAKE_SKIP_INSTALL_RPATH instead.",false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_SOURCE_DIR", cmProperty::VARIABLE,
     "Source directory for project.",
     "This is the top level source directory for the project.  "
     "It corresponds to the source directory given to "
     "cmake-gui or ccmake.",false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_STANDARD_LIBRARIES", cmProperty::VARIABLE,
     "Libraries linked into every executable and shared library.",
     "This is the list of libraries that are linked "
     "into all executables and libraries.",false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_VERBOSE_MAKEFILE", cmProperty::VARIABLE,
     "Create verbose makefiles if on.",
     "This variable defaults to false. You can set "
     "this variable to true to make CMake produce verbose "
     "makefiles that show each command line as it is used.",false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("PROJECT_BINARY_DIR", cmProperty::VARIABLE,
     "Full path to build directory for project.",
     "This is the binary directory of the most recent "
     "PROJECT command.",false,"Variables that Provide Information");
  cm->DefineProperty
    ("PROJECT_NAME", cmProperty::VARIABLE,
     "Name of the project given to the project command.",
     "This is the name given to the most "
     "recent PROJECT command.",false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("PROJECT_SOURCE_DIR", cmProperty::VARIABLE,
     "Top level source directory for the current project.",
     "This is the source directory of the most recent "
     "PROJECT command.",false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("[Project name]_BINARY_DIR", cmProperty::VARIABLE,
     "Top level binary directory for the named project.",
     "A variable is created with the name used in the PROJECT "
     "command, and is the binary directory for the project.  "
     " This can be useful when SUBDIR is used to connect "
     "several projects.",false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("[Project name]_SOURCE_DIR", cmProperty::VARIABLE,
     "Top level source directory for the named project.",
     "A variable is created with the name used in the PROJECT "
     "command, and is the source directory for the project."
     "   This can be useful when add_subdirectory "
     "is used to connect several projects.",false,
     "Variables that Provide Information");

  cm->DefineProperty
    ("CMAKE_IMPORT_LIBRARY_PREFIX", cmProperty::VARIABLE,
     "The prefix for import libraries that you link to.",
     "The prefix to use for the name of an import library if used "
     "on this platform."
     "\n"
     "CMAKE_IMPORT_LIBRARY_PREFIX_<LANG> overrides this for language <LANG>."
     ,false, "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_IMPORT_LIBRARY_SUFFIX", cmProperty::VARIABLE,
     "The suffix for import libraries that you link to.",
     "The suffix to use for the end of an import library filename if used "
     "on this platform."
     "\n"
     "CMAKE_IMPORT_LIBRARY_SUFFIX_<LANG> overrides this for language <LANG>."
     ,false, "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_SHARED_LIBRARY_PREFIX", cmProperty::VARIABLE,
     "The prefix for shared libraries that you link to.",
     "The prefix to use for the name of a shared library, lib on UNIX."
     "\n"
     "CMAKE_SHARED_LIBRARY_PREFIX_<LANG> overrides this for language <LANG>."
     ,false, "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_SHARED_LIBRARY_SUFFIX", cmProperty::VARIABLE,
     "The suffix for shared libraries that you link to.",
     "The suffix to use for the end of a shared library filename, "
     ".dll on Windows."
     "\n"
     "CMAKE_SHARED_LIBRARY_SUFFIX_<LANG> overrides this for language <LANG>."
     ,false, "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_SHARED_MODULE_PREFIX", cmProperty::VARIABLE,
     "The prefix for loadable modules that you link to.",
     "The prefix to use for the name of a loadable module on this platform."
     "\n"
     "CMAKE_SHARED_MODULE_PREFIX_<LANG> overrides this for language <LANG>."
     ,false, "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_SHARED_MODULE_SUFFIX", cmProperty::VARIABLE,
     "The suffix for shared libraries that you link to.",
     "The suffix to use for the end of a loadable module filename "
     "on this platform"
     "\n"
     "CMAKE_SHARED_MODULE_SUFFIX_<LANG> overrides this for language <LANG>."
     ,false, "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_STATIC_LIBRARY_PREFIX", cmProperty::VARIABLE,
     "The prefix for static libraries that you link to.",
     "The prefix to use for the name of a static library, lib on UNIX."
     "\n"
     "CMAKE_STATIC_LIBRARY_PREFIX_<LANG> overrides this for language <LANG>."
     ,false, "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_STATIC_LIBRARY_SUFFIX", cmProperty::VARIABLE,
     "The suffix for static libraries that you link to.",
     "The suffix to use for the end of a static library filename, "
     ".lib on Windows."
     "\n"
     "CMAKE_STATIC_LIBRARY_SUFFIX_<LANG> overrides this for language <LANG>."
     ,false, "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_EXTRA_SHARED_LIBRARY_SUFFIXES", cmProperty::VARIABLE,
     "Additional suffixes for shared libraries.",
     "Extensions for shared libraries other than that specified by "
     "CMAKE_SHARED_LIBRARY_SUFFIX, if any.  "
     "CMake uses this to recognize external shared library files during "
     "analysis of libraries linked by a target.",
     false,
     "Variables that Provide Information");
  cm->DefineProperty
    ("CMAKE_MINIMUM_REQUIRED_VERSION", cmProperty::VARIABLE,
     "Version specified to cmake_minimum_required command",
     "Variable containing the VERSION component specified in the "
     "cmake_minimum_required command.",
     false,
     "Variables that Provide Information");


  // Variables defined by cmake, that change the behavior
  // of cmake

  cm->DefineProperty
    ("CMAKE_POLICY_DEFAULT_CMP<NNNN>",  cmProperty::VARIABLE,
     "Default for CMake Policy CMP<NNNN> when it is otherwise left unset.",
     "Commands cmake_minimum_required(VERSION) and cmake_policy(VERSION) "
     "by default leave policies introduced after the given version unset.  "
     "Set CMAKE_POLICY_DEFAULT_CMP<NNNN> to OLD or NEW to specify the "
     "default for policy CMP<NNNN>, where <NNNN> is the policy number."
     "\n"
     "This variable should not be set by a project in CMake code; "
     "use cmake_policy(SET) instead.  "
     "Users running CMake may set this variable in the cache "
     "(e.g. -DCMAKE_POLICY_DEFAULT_CMP<NNNN>=<OLD|NEW>) "
     "to set a policy not otherwise set by the project.  "
     "Set to OLD to quiet a policy warning while using old behavior "
     "or to NEW to try building the project with new behavior.",
     false,
     "Variables That Change Behavior");

    cm->DefineProperty
    ("CMAKE_AUTOMOC_RELAXED_MODE",  cmProperty::VARIABLE,
     "Switch between strict and relaxed automoc mode.",
     "By default, automoc behaves exactly as described in the documentation "
     "of the AUTOMOC target property.  "
     "When set to TRUE, it accepts more input and tries to find the correct "
     "input file for moc even if it differs from the documented behaviour.  "
     "In this mode it e.g. also checks whether a header file is intended to "
     "be processed by moc when a \"foo.moc\" file has been included.\n"
     "Relaxed mode has to be enabled for KDE4 compatibility.",
     false,
     "Variables That Change Behavior");

    cm->DefineProperty
    ("CMAKE_INSTALL_DEFAULT_COMPONENT_NAME",  cmProperty::VARIABLE,
     "Default component used in install() commands.",
     "If an install() command is used without the COMPONENT argument, "
     "these files will be grouped into a default component. The name of this "
     "default install component will be taken from this variable.  "
     "It defaults to \"Unspecified\".",
     false,
     "Variables That Change Behavior");

    cm->DefineProperty
    ("CMAKE_FIND_LIBRARY_PREFIXES",  cmProperty::VARIABLE,
     "Prefixes to prepend when looking for libraries.",
     "This specifies what prefixes to add to library names when "
     "the find_library command looks for libraries. On UNIX "
     "systems this is typically lib, meaning that when trying "
     "to find the foo library it will look for libfoo.",
     false,
     "Variables That Change Behavior");

    cm->DefineProperty
    ("CMAKE_FIND_LIBRARY_SUFFIXES",  cmProperty::VARIABLE,
     "Suffixes to append when looking for libraries.",
     "This specifies what suffixes to add to library names when "
     "the find_library command looks for libraries. On Windows "
     "systems this is typically .lib and .dll, meaning that when trying "
     "to find the foo library it will look for foo.dll etc.",
     false,
     "Variables That Change Behavior");

    cm->DefineProperty
    ("CMAKE_CONFIGURATION_TYPES",  cmProperty::VARIABLE,
     "Specifies the available build types on multi-config generators.",
     "This specifies what build types (configurations) will be available "
     "such as Debug, Release, RelWithDebInfo etc.  "
     "This has reasonable defaults on most platforms, "
     "but can be extended to provide other build types.  "
     "See also CMAKE_BUILD_TYPE for details of managing configuration data, "
     "and CMAKE_CFG_INTDIR."
     ,false,
     "Variables That Change Behavior");

    cm->DefineProperty
    ("CMAKE_BUILD_TYPE",  cmProperty::VARIABLE,
     "Specifies the build type on single-configuration generators.",
     "This statically specifies what build type (configuration) "
     "will be built in this build tree. Possible values are "
     "empty, Debug, Release, RelWithDebInfo and MinSizeRel.  "
     "This variable is only meaningful to single-configuration generators "
     "(such as make and Ninja) i.e. "
     "those which choose a single configuration "
     "when CMake runs to generate a build tree as opposed to "
     "multi-configuration generators which offer selection of the build "
     "configuration within the generated build environment.  "
     "There are many per-config properties and variables "
     "(usually following clean SOME_VAR_<CONFIG> order conventions), "
     "such as CMAKE_C_FLAGS_<CONFIG>, specified as uppercase: "
     "CMAKE_C_FLAGS_[DEBUG|RELEASE|RELWITHDEBINFO|MINSIZEREL].  "
     "For example, in a build tree configured "
     "to build type Debug, CMake will see to having "
     "CMAKE_C_FLAGS_DEBUG settings get added to the CMAKE_C_FLAGS settings.  "
     "See also CMAKE_CONFIGURATION_TYPES."
     ,false,
     "Variables That Change Behavior");

  cm->DefineProperty
    ("CMAKE_BACKWARDS_COMPATIBILITY", cmProperty::VARIABLE,
     "Version of cmake required to build project",
     "From the point of view of backwards compatibility, this "
     "specifies what version of CMake should be supported. By "
     "default this value is the version number of CMake that "
     "you are running. You can set this to an older version of"
     " CMake to support deprecated commands of CMake in projects"
     " that were written to use older versions of CMake. This "
     "can be set by the user or set at the beginning of a "
     "CMakeLists file.",false,
     "Variables That Change Behavior");

  cm->DefineProperty
    ("CMAKE_INSTALL_PREFIX", cmProperty::VARIABLE,
     "Install directory used by install.",
     "If \"make install\" is invoked or INSTALL is built"
     ", this directory is prepended onto all install "
     "directories. This variable defaults to /usr/local"
     " on UNIX and c:/Program Files on Windows.\n"
     "On UNIX one can use the DESTDIR mechanism in order"
     " to relocate the whole installation.  "
     "DESTDIR means DESTination DIRectory. It is "
     "commonly used by makefile users "
     "in order to install software at non-default location.  "
     "It is usually invoked like this:\n"
     " make DESTDIR=/home/john install\n"
     "which will install the concerned software using the"
     " installation prefix, e.g. \"/usr/local\" prepended with "
     "the DESTDIR value which finally gives \"/home/john/usr/local\".\n"
     "WARNING: DESTDIR may not be used on Windows because installation"
     " prefix usually contains a drive letter like in \"C:/Program Files\""
     " which cannot be prepended with some other prefix."
     "\n"
     "The installation prefix is also added to CMAKE_SYSTEM_PREFIX_PATH "
     "so that find_package, find_program, find_library, find_path, and "
     "find_file will search the prefix for other software."
     ,false,
     "Variables That Change Behavior");

  cm->DefineProperty
    ("CMAKE_SKIP_INSTALL_ALL_DEPENDENCY", cmProperty::VARIABLE,
     "Don't make the install target depend on the all target.",
     "By default, the \"install\" target depends on the \"all\" target.  "
     "This has the effect, that when \"make install\" is invoked or INSTALL "
     "is built, first the \"all\" target is built, then the installation "
     "starts.  "
     "If CMAKE_SKIP_INSTALL_ALL_DEPENDENCY is set to TRUE, this dependency "
     "is not created, so the installation process will start immediately, "
     "independent from whether the project has been completely built or not."
     ,false,
     "Variables That Change Behavior");

  cm->DefineProperty
    ("CMAKE_MODULE_PATH", cmProperty::VARIABLE,
     "List of directories to search for CMake modules.",
     "Commands like include() and find_package() search for files in "
     "directories listed by this variable before checking the default "
     "modules that come with CMake.",
     false,
     "Variables That Change Behavior");

  cm->DefineProperty
    ("CMAKE_WARN_DEPRECATED", cmProperty::VARIABLE,
     "Whether to issue deprecation warnings for macros and functions.",
     "If TRUE, this can be used by macros and functions to issue "
     "deprecation warnings.  This variable is FALSE by default.",
     false,
     "Variables That Change Behavior");

  cm->DefineProperty
    ("CMAKE_ERROR_DEPRECATED", cmProperty::VARIABLE,
     "Whether to issue deprecation errors for macros and functions.",
     "If TRUE, this can be used by macros and functions to issue "
     "fatal errors when deprecated macros or functions are used.  This "
     "variable is FALSE by default.",
     false,
     "Variables That Change Behavior");

  cm->DefineProperty
    ("CMAKE_PREFIX_PATH", cmProperty::VARIABLE,
     "Path used for searching by FIND_XXX(), with appropriate suffixes added.",
     "Specifies a path which will be used by the FIND_XXX() commands. It "
     "contains the \"base\" directories, the FIND_XXX() commands append "
     "appropriate subdirectories to the base directories. So FIND_PROGRAM() "
     "adds /bin to each of the directories in the path, FIND_LIBRARY() "
     "appends /lib to each of the directories, and FIND_PATH() and "
     "FIND_FILE() append /include . By default it is empty, it is intended "
     "to be set by the project. See also CMAKE_SYSTEM_PREFIX_PATH, "
     "CMAKE_INCLUDE_PATH, CMAKE_LIBRARY_PATH, CMAKE_PROGRAM_PATH.", false,
     "Variables That Change Behavior");

  cm->DefineProperty
    ("CMAKE_INCLUDE_PATH", cmProperty::VARIABLE,
     "Path used for searching by FIND_FILE() and FIND_PATH().",
     "Specifies a path which will be used both by FIND_FILE() and "
     "FIND_PATH(). Both commands will check each of the contained directories "
     "for the existence of the file which is currently searched. By default "
     "it is empty, it is intended to be set by the project. See also "
     "CMAKE_SYSTEM_INCLUDE_PATH, CMAKE_PREFIX_PATH.", false,
     "Variables That Change Behavior");

  cm->DefineProperty
    ("CMAKE_LIBRARY_PATH", cmProperty::VARIABLE,
     "Path used for searching by FIND_LIBRARY().",
     "Specifies a path which will be used by FIND_LIBRARY(). FIND_LIBRARY() "
     "will check each of the contained directories for the existence of the "
     "library which is currently searched. By default it is empty, it is "
     "intended to be set by the project. See also CMAKE_SYSTEM_LIBRARY_PATH, "
     "CMAKE_PREFIX_PATH.", false,
     "Variables That Change Behavior");

  cm->DefineProperty
    ("CMAKE_PROGRAM_PATH", cmProperty::VARIABLE,
     "Path used for searching by FIND_PROGRAM().",
     "Specifies a path which will be used by FIND_PROGRAM(). FIND_PROGRAM() "
     "will check each of the contained directories for the existence of the "
     "program which is currently searched. By default it is empty, it is "
     "intended to be set by the project. See also CMAKE_SYSTEM_PROGRAM_PATH, "
     " CMAKE_PREFIX_PATH.", false,
     "Variables That Change Behavior");

  cm->DefineProperty
    ("CMAKE_SYSTEM_PREFIX_PATH", cmProperty::VARIABLE,
     "Path used for searching by FIND_XXX(), with appropriate suffixes added.",
     "Specifies a path which will be used by the FIND_XXX() commands. It "
     "contains the \"base\" directories, the FIND_XXX() commands append "
     "appropriate subdirectories to the base directories. So FIND_PROGRAM() "
     "adds /bin to each of the directories in the path, FIND_LIBRARY() "
     "appends /lib to each of the directories, and FIND_PATH() and "
     "FIND_FILE() append /include . By default this contains the standard "
     "directories for the current system and the CMAKE_INSTALL_PREFIX.  "
     "It is NOT intended "
     "to be modified by the project, use CMAKE_PREFIX_PATH for this. See also "
     "CMAKE_SYSTEM_INCLUDE_PATH, CMAKE_SYSTEM_LIBRARY_PATH, "
     "CMAKE_SYSTEM_PROGRAM_PATH, and CMAKE_SYSTEM_IGNORE_PATH.", false,
     "Variables That Change Behavior");

  cm->DefineProperty
    ("CMAKE_SYSTEM_IGNORE_PATH", cmProperty::VARIABLE,
     "Path to be ignored by FIND_XXX() commands.",
     "Specifies directories to be ignored by searches in FIND_XXX() "
     "commands.  "
     "This is useful in cross-compiled environments where some system "
     "directories contain incompatible but possibly linkable libraries. For "
     "example, on cross-compiled cluster environments, this allows a user to "
     "ignore directories containing libraries meant for the front-end "
     "machine that modules like FindX11 (and others) would normally search.  "
     "By default this contains a list of directories containing incompatible "
     "binaries for the host system.  "
     "See also CMAKE_SYSTEM_PREFIX_PATH, CMAKE_SYSTEM_LIBRARY_PATH, "
     "CMAKE_SYSTEM_INCLUDE_PATH, and CMAKE_SYSTEM_PROGRAM_PATH.", false,
     "Variables That Change Behavior");

  cm->DefineProperty
    ("CMAKE_IGNORE_PATH", cmProperty::VARIABLE,
     "Path to be ignored by FIND_XXX() commands.",
     "Specifies directories to be ignored by searches in FIND_XXX() "
     "commands.  "
     "This is useful in cross-compiled environments where some system "
     "directories contain incompatible but possibly linkable libraries. For "
     "example, on cross-compiled cluster environments, this allows a user to "
     "ignore directories containing libraries meant for the front-end "
     "machine that modules like FindX11 (and others) would normally search.  "
     "By default this is empty; it is intended to be set by the project.  "
     "Note that CMAKE_IGNORE_PATH takes a list of directory names, NOT a "
     "list of prefixes. If you want to ignore paths under prefixes (bin, "
     "include, lib, etc.), you'll need to specify them explicitly.  "
     "See also CMAKE_PREFIX_PATH, CMAKE_LIBRARY_PATH, CMAKE_INCLUDE_PATH, "
     "CMAKE_PROGRAM_PATH.", false,
     "Variables That Change Behavior");

  cm->DefineProperty
    ("CMAKE_SYSTEM_INCLUDE_PATH", cmProperty::VARIABLE,
     "Path used for searching by FIND_FILE() and FIND_PATH().",
     "Specifies a path which will be used both by FIND_FILE() and "
     "FIND_PATH(). Both commands will check each of the contained directories "
     "for the existence of the file which is currently searched. By default "
     "it contains the standard directories for the current system. It is "
     "NOT intended to be modified by the project, use CMAKE_INCLUDE_PATH "
     "for this. See also CMAKE_SYSTEM_PREFIX_PATH.", false,
     "Variables That Change Behavior");

  cm->DefineProperty
    ("CMAKE_SYSTEM_LIBRARY_PATH", cmProperty::VARIABLE,
     "Path used for searching by FIND_LIBRARY().",
     "Specifies a path which will be used by FIND_LIBRARY(). FIND_LIBRARY() "
     "will check each of the contained directories for the existence of the "
     "library which is currently searched. By default it contains the "
     "standard directories for the current system. It is NOT intended to be "
     "modified by the project, use CMAKE_LIBRARY_PATH for this. See "
     "also CMAKE_SYSTEM_PREFIX_PATH.", false,
     "Variables That Change Behavior");

  cm->DefineProperty
    ("CMAKE_SYSTEM_PROGRAM_PATH", cmProperty::VARIABLE,
     "Path used for searching by FIND_PROGRAM().",
     "Specifies a path which will be used by FIND_PROGRAM(). FIND_PROGRAM() "
     "will check each of the contained directories for the existence of the "
     "program which is currently searched. By default it contains the "
     "standard directories for the current system. It is NOT intended to be "
     "modified by the project, use CMAKE_PROGRAM_PATH for this. See also "
     "CMAKE_SYSTEM_PREFIX_PATH.", false,
     "Variables That Change Behavior");

  cm->DefineProperty
    ("CMAKE_DISABLE_FIND_PACKAGE_<PackageName>", cmProperty::VARIABLE,
     "Variable for disabling find_package() calls.",
     "Every non-REQUIRED find_package() call in a project can be disabled "
     "by setting the variable CMAKE_DISABLE_FIND_PACKAGE_<PackageName> to "
     "TRUE. This can be used to build a project without an optional package, "
     "although that package is installed.\n"
     "This switch should be used during the initial CMake run. Otherwise if "
     "the package has already been found in a previous CMake run, the "
     "variables which have been stored in the cache will still be there.  "
     "In that case it is recommended to remove the cache variables for "
     "this package from the cache using the cache editor or cmake -U", false,
     "Variables That Change Behavior");

  cm->DefineProperty
    ("CMAKE_FIND_PACKAGE_WARN_NO_MODULE", cmProperty::VARIABLE,
     "Tell find_package to warn if called without an explicit mode.",
     "If find_package is called without an explicit mode option "
     "(MODULE, CONFIG or NO_MODULE) and no Find<pkg>.cmake module is "
     "in CMAKE_MODULE_PATH then CMake implicitly assumes that the "
     "caller intends to search for a package configuration file.  "
     "If no package configuration file is found then the wording "
     "of the failure message must account for both the case that the "
     "package is really missing and the case that the project has a "
     "bug and failed to provide the intended Find module.  "
     "If instead the caller specifies an explicit mode option then "
     "the failure message can be more specific."
     "\n"
     "Set CMAKE_FIND_PACKAGE_WARN_NO_MODULE to TRUE to tell find_package "
     "to warn when it implicitly assumes Config mode.  "
     "This helps developers enforce use of an explicit mode in all calls "
     "to find_package within a project.", false,
     "Variables That Change Behavior");

  cm->DefineProperty
    ("CMAKE_USER_MAKE_RULES_OVERRIDE", cmProperty::VARIABLE,
     "Specify a CMake file that overrides platform information.",
     "CMake loads the specified file while enabling support for each "
     "language from either the project() or enable_language() commands.  "
     "It is loaded after CMake's builtin compiler and platform information "
     "modules have been loaded but before the information is used.  "
     "The file may set platform information variables to override CMake's "
     "defaults."
     "\n"
     "This feature is intended for use only in overriding information "
     "variables that must be set before CMake builds its first test "
     "project to check that the compiler for a language works.  "
     "It should not be used to load a file in cases that a normal include() "
     "will work.  "
     "Use it only as a last resort for behavior that cannot be achieved "
     "any other way.  "
     "For example, one may set CMAKE_C_FLAGS_INIT to change the default "
     "value used to initialize CMAKE_C_FLAGS before it is cached.  "
     "The override file should NOT be used to set anything that could "
     "be set after languages are enabled, such as variables like "
     "CMAKE_RUNTIME_OUTPUT_DIRECTORY that affect the placement of binaries.  "
     "Information set in the file will be used for try_compile and try_run "
     "builds too."
     ,false,
     "Variables That Change Behavior");

  cm->DefineProperty
    ("BUILD_SHARED_LIBS", cmProperty::VARIABLE,
     "Global flag to cause add_library to create shared libraries if on.",
     "If present and true, this will cause all libraries to be "
     "built shared unless the library was explicitly added as a "
     "static library.  This variable is often added to projects "
     "as an OPTION so that each user of a project can decide if "
     "they want to build the project using shared or static "
     "libraries.",false,
     "Variables That Change Behavior");

  cm->DefineProperty
    ("CMAKE_NOT_USING_CONFIG_FLAGS", cmProperty::VARIABLE,
     "Skip _BUILD_TYPE flags if true.",
     "This is an internal flag used by the generators in "
     "CMake to tell CMake to skip the _BUILD_TYPE flags.",false,
     "Variables That Change Behavior");

  cm->DefineProperty
    ("CMAKE_MFC_FLAG", cmProperty::VARIABLE,
     "Tell cmake to use MFC for an executable or dll.",
     "This can be set in a CMakeLists.txt file and will "
     "enable MFC in the application.  It should be set "
     "to 1 for the static MFC library, and 2 for "
     "the shared MFC library.  This is used in Visual "
     "Studio 6 and 7 project files.   The CMakeSetup "
     "dialog used MFC and the CMakeLists.txt looks like this:\n"
     "  add_definitions(-D_AFXDLL)\n"
     "  set(CMAKE_MFC_FLAG 2)\n"
     "  add_executable(CMakeSetup WIN32 ${SRCS})\n",false,
     "Variables That Change Behavior");

  cm->DefineProperty
    ("CMAKE_COLOR_MAKEFILE", cmProperty::VARIABLE,
     "Enables color output when using the Makefile generator.",
     "When enabled, the generated Makefiles will produce colored output.  "
     "Default is ON.",false,
     "Variables That Change Behavior");

  cm->DefineProperty
    ("CMAKE_ABSOLUTE_DESTINATION_FILES", cmProperty::VARIABLE,
      "List of files which have been installed using "
      " an ABSOLUTE DESTINATION path.",
      "This variable is defined by CMake-generated cmake_install.cmake "
      "scripts."
      " It can be used (read-only) by programs or scripts that source those"
      " install scripts. This is used by some CPack generators (e.g. RPM).",
      false,
      "Variables That Change Behavior");

  cm->DefineProperty
    ("CMAKE_WARN_ON_ABSOLUTE_INSTALL_DESTINATION", cmProperty::VARIABLE,
      "Ask cmake_install.cmake script to warn each time a file with "
      "absolute INSTALL DESTINATION is encountered.",
      "This variable is used by CMake-generated cmake_install.cmake"
      " scripts. If one sets this variable to ON while running the"
      " script, it may get warning messages from the script.", false,
      "Variables That Change Behavior");

  cm->DefineProperty
    ("CMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION", cmProperty::VARIABLE,
      "Ask cmake_install.cmake script to error out as soon as "
      "a file with absolute INSTALL DESTINATION is encountered.",
      "The fatal error is emitted before the installation of "
      "the offending file takes place."
      " This variable is used by CMake-generated cmake_install.cmake"
      " scripts. If one sets this variable to ON while running the"
      " script, it may get fatal error messages from the script.",false,
      "Variables That Change Behavior");

  cm->DefineProperty
    ("CMAKE_DEBUG_TARGET_PROPERTIES", cmProperty::VARIABLE,
     "Enables tracing output for target properties.",
     "This variable can be populated with a list of properties to generate "
     "debug output for when evaluating target properties.  Currently it can "
     "only be used when evaluating the INCLUDE_DIRECTORIES, "
     "COMPILE_DEFINITIONS and COMPILE_OPTIONS target properties.  "
     "In that case, it outputs a backtrace for each entry in the target "
     "property.  Default is unset.", false, "Variables That Change Behavior");

  // Variables defined by CMake that describe the system

  cm->DefineProperty
    ("CMAKE_SYSTEM", cmProperty::VARIABLE,
     "Name of system cmake is compiling for.",
     "This variable is the composite of CMAKE_SYSTEM_NAME "
     "and CMAKE_SYSTEM_VERSION, like this "
     "${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_VERSION}.  "
     "If CMAKE_SYSTEM_VERSION is not set, then "
     "CMAKE_SYSTEM is the same as CMAKE_SYSTEM_NAME.",false,
     "Variables That Describe the System");
  cm->DefineProperty
    ("CMAKE_SYSTEM_NAME", cmProperty::VARIABLE,
     "Name of the OS CMake is building for.",
     "This is the name of the operating system on "
     "which CMake is targeting.   On systems that "
     "have the uname command, this variable is set "
     "to the output of uname -s.  Linux, Windows, "
     " and Darwin for Mac OS X are the values found "
     " on the big three operating systems."  ,false,
     "Variables That Describe the System");
  cm->DefineProperty
    ("CMAKE_SYSTEM_PROCESSOR", cmProperty::VARIABLE,
     "The name of the CPU CMake is building for.",
     "On systems that support uname, this variable is "
     "set to the output of uname -p, on windows it is "
     "set to the value of the environment variable "
     "PROCESSOR_ARCHITECTURE",false,
     "Variables That Describe the System");
  cm->DefineProperty
    ("CMAKE_SYSTEM_VERSION", cmProperty::VARIABLE,
     "OS version CMake is building for.",
     "A numeric version string for the system, on "
     "systems that support uname, this variable is "
     "set to the output of uname -r. On other "
     "systems this is set to major-minor version numbers.",false,
     "Variables That Describe the System");
  cm->DefineProperty
    ("CMAKE_LIBRARY_ARCHITECTURE", cmProperty::VARIABLE,
     "Target architecture library directory name, if detected.",
     "This is the value of CMAKE_<lang>_LIBRARY_ARCHITECTURE as "
     "detected for one of the enabled languages.",false,
     "Variables That Describe the System");
  cm->DefineProperty
    ("CMAKE_LIBRARY_ARCHITECTURE_REGEX", cmProperty::VARIABLE,
     "Regex matching possible target architecture library directory names.",
     "This is used to detect CMAKE_<lang>_LIBRARY_ARCHITECTURE from the "
     "implicit linker search path by matching the <arch> name.",false,
     "Variables That Describe the System");

  cm->DefineProperty
    ("CMAKE_HOST_SYSTEM", cmProperty::VARIABLE,
     "Name of system cmake is being run on.",
     "The same as CMAKE_SYSTEM but for the host system instead "
     "of the target system when cross compiling.",false,
     "Variables That Describe the System");
  cm->DefineProperty
    ("CMAKE_HOST_SYSTEM_NAME", cmProperty::VARIABLE,
     "Name of the OS CMake is running on.",
     "The same as CMAKE_SYSTEM_NAME but for the host system instead "
     "of the target system when cross compiling.",false,
     "Variables That Describe the System");
  cm->DefineProperty
    ("CMAKE_HOST_SYSTEM_PROCESSOR", cmProperty::VARIABLE,
     "The name of the CPU CMake is running on.",
     "The same as CMAKE_SYSTEM_PROCESSOR but for the host system instead "
     "of the target system when cross compiling.",false,
     "Variables That Describe the System");
  cm->DefineProperty
    ("CMAKE_HOST_SYSTEM_VERSION", cmProperty::VARIABLE,
     "OS version CMake is running on.",
     "The same as CMAKE_SYSTEM_VERSION but for the host system instead "
     "of the target system when cross compiling.",false,
     "Variables That Describe the System");

  cm->DefineProperty
    ("APPLE", cmProperty::VARIABLE,
     "True if running on Mac OS X.",
     "Set to true on Mac OS X."
     ,false,
     "Variables That Describe the System");

  cm->DefineProperty
    ("BORLAND", cmProperty::VARIABLE,
     "True if the Borland compiler is being used.",
     "This is set to true if the Borland compiler is being used.",false,
     "Variables That Describe the System");

  cm->DefineProperty
    ("CYGWIN", cmProperty::VARIABLE,
     "True for Cygwin.",
     "Set to true when using Cygwin."
     ,false,
     "Variables That Describe the System");

  cm->DefineProperty
    ("MSVC", cmProperty::VARIABLE,
     "True when using Microsoft Visual C",
     "Set to true when the compiler is some version of Microsoft Visual C.",
     false,
     "Variables That Describe the System");

  int msvc_versions[] = { 60, 70, 71, 80, 90, 100, 110, 120, 0 };
  for (int i = 0; msvc_versions[i] != 0; i ++)
    {
    const char minor = (char)('0' + (msvc_versions[i] % 10));
    cmStdString varName = "MSVC";
    cmsys_ios::ostringstream majorStr;

    majorStr << (msvc_versions[i] / 10);
    varName += majorStr.str();
    if (msvc_versions[i] < 100)
      {
      varName += minor;
      }

    cmStdString verString = majorStr.str() + "." + minor;

    cmStdString shortStr = "True when using Microsoft Visual C " + verString;
    cmStdString fullStr = "Set to true when the compiler is version " +
                          verString +
                          " of Microsoft Visual C.";
    cm->DefineProperty
      (varName.c_str(), cmProperty::VARIABLE,
       shortStr.c_str(),
       fullStr.c_str(),
       false,
       "Variables That Describe the System");
    }

  cm->DefineProperty
    ("MSVC_IDE", cmProperty::VARIABLE,
     "True when using the Microsoft Visual C IDE",
     "Set to true when the target platform is the Microsoft Visual C IDE, "
     "as opposed to the command line compiler.",
     false,
     "Variables That Describe the System");

  cm->DefineProperty
    ("MSVC_VERSION", cmProperty::VARIABLE,
     "The version of Microsoft Visual C/C++ being used if any.",
     "Known version numbers are:\n"
     "  1200 = VS  6.0\n"
     "  1300 = VS  7.0\n"
     "  1310 = VS  7.1\n"
     "  1400 = VS  8.0\n"
     "  1500 = VS  9.0\n"
     "  1600 = VS 10.0\n"
     "  1700 = VS 11.0\n"
     "  1800 = VS 12.0\n"
     "",
     false,
     "Variables That Describe the System");

  cm->DefineProperty
    ("CMAKE_CL_64", cmProperty::VARIABLE,
     "Using the 64 bit compiler from Microsoft",
     "Set to true when using the 64 bit cl compiler from Microsoft.",
     false,
     "Variables That Describe the System");

  cm->DefineProperty
    ("CMAKE_COMPILER_2005", cmProperty::VARIABLE,
     "Using the Visual Studio 2005 compiler from Microsoft",
     "Set to true when using the Visual Studio 2005 compiler "
     "from Microsoft.",
     false,
     "Variables That Describe the System");

  cm->DefineProperty
    ("UNIX", cmProperty::VARIABLE,
     "True for UNIX and UNIX like operating systems.",
     "Set to true when the target system is UNIX or UNIX like "
     "(i.e. APPLE and CYGWIN).",false,
     "Variables That Describe the System");

  cm->DefineProperty
    ("WIN32", cmProperty::VARIABLE,
     "True on windows systems, including win64.",
     "Set to true when the target system is Windows.",false,
     "Variables That Describe the System");

  cm->DefineProperty
    ("XCODE_VERSION", cmProperty::VARIABLE,
     "Version of Xcode (Xcode generator only).",
     "Under the Xcode generator, this is the version of Xcode as specified in "
     "\"Xcode.app/Contents/version.plist\" (such as \"3.1.2\").",false,
     "Variables That Describe the System");

  cm->DefineProperty
    ("CMAKE_HOST_APPLE", cmProperty::VARIABLE,
     "True for Apple OS X operating systems.",
     "Set to true when the host system is Apple OS X.",
     false,
     "Variables That Describe the System");

  cm->DefineProperty
    ("CMAKE_HOST_UNIX", cmProperty::VARIABLE,
     "True for UNIX and UNIX like operating systems.",
     "Set to true when the host system is UNIX or UNIX like "
     "(i.e. APPLE and CYGWIN).",false,
     "Variables That Describe the System");

  cm->DefineProperty
    ("CMAKE_HOST_WIN32", cmProperty::VARIABLE,
     "True on windows systems, including win64.",
     "Set to true when the host system is Windows and on Cygwin."
     ,false,
     "Variables That Describe the System");

  cm->DefineProperty
    ("CMAKE_OBJECT_PATH_MAX", cmProperty::VARIABLE,
     "Maximum object file full-path length allowed by native build tools.",
     "CMake computes for every source file an object file name that is "
     "unique to the source file and deterministic with respect to the "
     "full path to the source file.  "
     "This allows multiple source files in a target to share the same name "
     "if they lie in different directories without rebuilding when one is "
     "added or removed.  "
     "However, it can produce long full paths in a few cases, so CMake "
     "shortens the path using a hashing scheme when the full path to an "
     "object file exceeds a limit.  "
     "CMake has a built-in limit for each platform that is sufficient for "
     "common tools, but some native tools may have a lower limit.  "
     "This variable may be set to specify the limit explicitly.  "
     "The value must be an integer no less than 128.",false,
     "Variables That Describe the System");

  cm->DefineProperty
    ("ENV", cmProperty::VARIABLE,
     "Access environment variables.",
     "Use the syntax $ENV{VAR} to read environment variable VAR.  "
     "See also the set() command to set ENV{VAR}."
     ,false,
     "Variables That Describe the System");

  // Variables that affect the building of object files and
  // targets.
  //
  cm->DefineProperty
    ("CMAKE_INCLUDE_CURRENT_DIR", cmProperty::VARIABLE,
     "Automatically add the current source- and build directories "
     "to the include path.",
     "If this variable is enabled, CMake automatically adds in each "
     "directory ${CMAKE_CURRENT_SOURCE_DIR} and ${CMAKE_CURRENT_BINARY_DIR} "
     "to the include path for this directory. These additional include "
     "directories do not propagate down to subdirectories. This is useful "
     "mainly for out-of-source builds, where files generated into the "
     "build tree are included by files located in the source tree.\n"
     "By default CMAKE_INCLUDE_CURRENT_DIR is OFF.",
     false,
     "Variables that Control the Build");

  cm->DefineProperty
    ("CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE", cmProperty::VARIABLE,
     "Automatically add the current source- and build directories "
     "to the INTERFACE_INCLUDE_DIRECTORIES.",
     "If this variable is enabled, CMake automatically adds for each shared "
     "library target, static library target, module target and executable "
     "target, ${CMAKE_CURRENT_SOURCE_DIR} and ${CMAKE_CURRENT_BINARY_DIR} to "
     "the INTERFACE_INCLUDE_DIRECTORIES."
     "By default CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE is OFF.",
     false,
     "Variables that Control the Build");

  cm->DefineProperty
    ("CMAKE_INSTALL_RPATH", cmProperty::VARIABLE,
     "The rpath to use for installed targets.",
     "A semicolon-separated list specifying the rpath "
     "to use in installed targets (for platforms that support it).  "
     "This is used to initialize the target property "
     "INSTALL_RPATH for all targets.",
     false,
     "Variables that Control the Build");

  cm->DefineProperty
    ("CMAKE_INSTALL_RPATH_USE_LINK_PATH", cmProperty::VARIABLE,
     "Add paths to linker search and installed rpath.",
     "CMAKE_INSTALL_RPATH_USE_LINK_PATH is a boolean that if set to true "
     "will append directories in the linker search path and outside the "
     "project to the INSTALL_RPATH.  "
     "This is used to initialize the target property "
     "INSTALL_RPATH_USE_LINK_PATH for all targets.",
     false,
     "Variables that Control the Build");

  cm->DefineProperty
    ("CMAKE_INSTALL_NAME_DIR", cmProperty::VARIABLE,
     "Mac OS X directory name for installed targets.",
     "CMAKE_INSTALL_NAME_DIR is used to initialize the "
     "INSTALL_NAME_DIR property on all targets. See that target "
     "property for more information.",
     false,
     "Variables that Control the Build");

  cm->DefineProperty
    ("CMAKE_Fortran_FORMAT", cmProperty::VARIABLE,
     "Set to FIXED or FREE to indicate the Fortran source layout.",
     "This variable is used to initialize the Fortran_FORMAT "
     "property on all the targets.  "
     "See that target property for additional information.",
     false,
     "Variables that Control the Build");

  cm->DefineProperty
    ("CMAKE_Fortran_MODULE_DIRECTORY", cmProperty::VARIABLE,
     "Fortran module output directory.",
     "This variable is used to initialize the "
     "Fortran_MODULE_DIRECTORY property on all the targets.  "
     "See that target property for additional information.",
     false,
     "Variables that Control the Build");

  cm->DefineProperty
    ("CMAKE_LIBRARY_OUTPUT_DIRECTORY", cmProperty::VARIABLE,
     "Where to put all the LIBRARY targets when built.",
     "This variable is used to initialize the "
     "LIBRARY_OUTPUT_DIRECTORY property on all the targets.  "
     "See that target property for additional information.",
     false,
     "Variables that Control the Build");

  cm->DefineProperty
    ("CMAKE_ARCHIVE_OUTPUT_DIRECTORY", cmProperty::VARIABLE,
     "Where to put all the ARCHIVE targets when built.",
     "This variable is used to initialize the "
     "ARCHIVE_OUTPUT_DIRECTORY property on all the targets.  "
     "See that target property for additional information.",
     false,
     "Variables that Control the Build");

  cm->DefineProperty
    ("CMAKE_RUNTIME_OUTPUT_DIRECTORY", cmProperty::VARIABLE,
     "Where to put all the RUNTIME targets when built.",
     "This variable is used to initialize the "
     "RUNTIME_OUTPUT_DIRECTORY property on all the targets.  "
     "See that target property for additional information.",
     false,
     "Variables that Control the Build");

  cm->DefineProperty
    ("CMAKE_PDB_OUTPUT_DIRECTORY", cmProperty::VARIABLE,
     "Where to put all the MS debug symbol files from linker.",
     "This variable is used to initialize the "
     "PDB_OUTPUT_DIRECTORY property on all the targets.  "
     "See that target property for additional information.",
     false,
     "Variables that Control the Build");

  cm->DefineProperty
    ("CMAKE_LINK_DEPENDS_NO_SHARED", cmProperty::VARIABLE,
     "Whether to skip link dependencies on shared library files.",
     "This variable initializes the LINK_DEPENDS_NO_SHARED "
     "property on targets when they are created.  "
     "See that target property for additional information.",
     false,
     "Variables that Control the Build");

  cm->DefineProperty
    ("CMAKE_AUTOMOC", cmProperty::VARIABLE,
     "Whether to handle moc automatically for Qt targets.",
     "This variable is used to initialize the "
     "AUTOMOC property on all the targets.  "
     "See that target property for additional information.",
     false,
     "Variables that Control the Build");

  cm->DefineProperty
    ("CMAKE_AUTOMOC_MOC_OPTIONS", cmProperty::VARIABLE,
     "Additional options for moc when using automoc (see CMAKE_AUTOMOC).",
     "This variable is used to initialize the "
     "AUTOMOC_MOC_OPTIONS property on all the targets.  "
     "See that target property for additional information.",
     false,
     "Variables that Control the Build");

  cm->DefineProperty
    ("CMAKE_GNUtoMS", cmProperty::VARIABLE,
     "Convert GNU import libraries (.dll.a) to MS format (.lib).",
     "This variable is used to initialize the GNUtoMS property on targets "
     "when they are created.  "
     "See that target property for additional information.",
     false,
     "Variables that Control the Build");

  cm->DefineProperty
    ("CMAKE_DEBUG_POSTFIX", cmProperty::VARIABLE,
     "See variable CMAKE_<CONFIG>_POSTFIX.",
     "This variable is a special case of the more-general "
     "CMAKE_<CONFIG>_POSTFIX variable for the DEBUG configuration.",
     false,
     "Variables that Control the Build");
  cm->DefineProperty
    ("CMAKE_<CONFIG>_POSTFIX", cmProperty::VARIABLE,
     "Default filename postfix for libraries under configuration <CONFIG>.",
     "When a non-executable target is created its <CONFIG>_POSTFIX "
     "target property is initialized with the value of this variable "
     "if it is set.",
     false,
     "Variables that Control the Build");

  cm->DefineProperty
    ("CMAKE_BUILD_WITH_INSTALL_RPATH", cmProperty::VARIABLE,
     "Use the install path for the RPATH",
     "Normally CMake uses the build tree for the RPATH when building "
     "executables etc on systems that use RPATH. When the software "
     "is installed the executables etc are relinked by CMake to have "
     "the install RPATH. If this variable is set to true then the software "
     "is always built with the install path for the RPATH and does not "
     "need to be relinked when installed.",false,
     "Variables that Control the Build");

  cm->DefineProperty
    ("CMAKE_NO_BUILTIN_CHRPATH", cmProperty::VARIABLE,
     "Do not use the builtin ELF editor to fix RPATHs on installation.",
     "When an ELF binary needs to have a different RPATH after installation "
     "than it does in the build tree, CMake uses a builtin editor to change "
     "the RPATH in the installed copy.  "
     "If this variable is set to true then CMake will relink the binary "
     "before installation instead of using its builtin editor.",false,
     "Variables that Control the Build");

  cm->DefineProperty
    ("CMAKE_SKIP_BUILD_RPATH", cmProperty::VARIABLE,
     "Do not include RPATHs in the build tree.",
     "Normally CMake uses the build tree for the RPATH when building "
     "executables etc on systems that use RPATH. When the software "
     "is installed the executables etc are relinked by CMake to have "
     "the install RPATH. If this variable is set to true then the software "
     "is always built with no RPATH.",false,
     "Variables that Control the Build");

  cm->DefineProperty
    ("CMAKE_SKIP_INSTALL_RPATH", cmProperty::VARIABLE,
     "Do not include RPATHs in the install tree.",
     "Normally CMake uses the build tree for the RPATH when building "
     "executables etc on systems that use RPATH. When the software "
     "is installed the executables etc are relinked by CMake to have "
     "the install RPATH. If this variable is set to true then the software "
     "is always installed without RPATH, even if RPATH is enabled when "
     "building.  This can be useful for example to allow running tests from "
     "the build directory with RPATH enabled before the installation step.  "
     "To omit RPATH in both the build and install steps, use "
     "CMAKE_SKIP_RPATH instead.",false,
     "Variables that Control the Build");

  cm->DefineProperty
    ("CMAKE_EXE_LINKER_FLAGS", cmProperty::VARIABLE,
     "Linker flags to be used to create executables.",
     "These flags will be used by the linker when creating an executable."
     ,false,
     "Variables that Control the Build");

  cm->DefineProperty
    ("CMAKE_EXE_LINKER_FLAGS_<CONFIG>", cmProperty::VARIABLE,
     "Flags to be used when linking an executable.",
     "Same as CMAKE_C_FLAGS_* but used by the linker "
     "when creating executables.",false,
     "Variables that Control the Build");

  cm->DefineProperty
    ("CMAKE_MODULE_LINKER_FLAGS", cmProperty::VARIABLE,
     "Linker flags to be used to create modules.",
     "These flags will be used by the linker when creating a module."
     ,false,
     "Variables that Control the Build");

  cm->DefineProperty
    ("CMAKE_MODULE_LINKER_FLAGS_<CONFIG>", cmProperty::VARIABLE,
     "Flags to be used when linking a module.",
     "Same as CMAKE_C_FLAGS_* but used by the linker "
     "when creating modules.",false,
     "Variables that Control the Build");

  cm->DefineProperty
    ("CMAKE_SHARED_LINKER_FLAGS", cmProperty::VARIABLE,
     "Linker flags to be used to create shared libraries.",
     "These flags will be used by the linker when creating a shared library."
     ,false,
     "Variables that Control the Build");

  cm->DefineProperty
    ("CMAKE_SHARED_LINKER_FLAGS_<CONFIG>", cmProperty::VARIABLE,
     "Flags to be used when linking a shared library.",
     "Same as CMAKE_C_FLAGS_* but used by the linker "
     "when creating shared libraries.",false,
     "Variables that Control the Build");

  cm->DefineProperty
    ("CMAKE_STATIC_LINKER_FLAGS", cmProperty::VARIABLE,
     "Linker flags to be used to create static libraries.",
     "These flags will be used by the linker when creating a static library."
     ,false,
     "Variables that Control the Build");

  cm->DefineProperty
    ("CMAKE_STATIC_LINKER_FLAGS_<CONFIG>", cmProperty::VARIABLE,
     "Flags to be used when linking a static library.",
     "Same as CMAKE_C_FLAGS_* but used by the linker "
     "when creating static libraries.",false,
     "Variables that Control the Build");

  cm->DefineProperty
    ("CMAKE_LIBRARY_PATH_FLAG", cmProperty::VARIABLE,
     "The flag to be used to add a library search path to a compiler.",
     "The flag will be used to specify a library directory to the compiler.  "
     "On most compilers this is \"-L\".",false,
     "Variables that Control the Build");
  cm->DefineProperty
    ("CMAKE_LINK_DEF_FILE_FLAG  ", cmProperty::VARIABLE,
     "Linker flag to be used to specify a .def file for dll creation.",
     "The flag will be used to add a .def file when creating "
     "a dll on Windows; this is only defined on Windows."
     ,false,
     "Variables that Control the Build");
  cm->DefineProperty
    ("CMAKE_LINK_LIBRARY_FLAG", cmProperty::VARIABLE,
     "Flag to be used to link a library into an executable.",
     "The flag will be used to specify a library to link to an executable.  "
     "On most compilers this is \"-l\".",false,
     "Variables that Control the Build");
  cm->DefineProperty
    ("CMAKE_LINK_LIBRARY_FILE_FLAG", cmProperty::VARIABLE,
     "Flag to be used to link a library specified by a path to its file.",
     "The flag will be used before a library file path is given to the "
     "linker.  "
     "This is needed only on very few platforms.", false,
     "Variables that Control the Build");
  cm->DefineProperty
    ("CMAKE_USE_RELATIVE_PATHS", cmProperty::VARIABLE,
     "Use relative paths (May not work!).",
     "If this is set to TRUE, then CMake will use "
     "relative paths between the source and binary tree.  "
     "This option does not work for more complicated "
     "projects, and relative paths are used when possible.  "
     "In general, it is not possible to move CMake generated"
     " makefiles to a different location regardless "
     "of the value of this variable.",false,
     "Variables that Control the Build");
  cm->DefineProperty
    ("EXECUTABLE_OUTPUT_PATH", cmProperty::VARIABLE,
     "Old executable location variable.",
     "The target property RUNTIME_OUTPUT_DIRECTORY supercedes "
     "this variable for a target if it is set.  "
     "Executable targets are otherwise placed in this directory.",false,
     "Variables that Control the Build");
  cm->DefineProperty
    ("LIBRARY_OUTPUT_PATH", cmProperty::VARIABLE,
     "Old library location variable.",
     "The target properties ARCHIVE_OUTPUT_DIRECTORY, "
     "LIBRARY_OUTPUT_DIRECTORY, and RUNTIME_OUTPUT_DIRECTORY supercede "
     "this variable for a target if they are set.  "
     "Library targets are otherwise placed in this directory.",false,
     "Variables that Control the Build");
  cm->DefineProperty
    ("CMAKE_TRY_COMPILE_CONFIGURATION", cmProperty::VARIABLE,
     "Build configuration used for try_compile and try_run projects.",
     "Projects built by try_compile and try_run are built "
     "synchronously during the CMake configuration step.  "
     "Therefore a specific build configuration must be chosen even "
     "if the generated build system supports multiple configurations.",false,
     "Variables that Control the Build");
  cm->DefineProperty
    ("CMAKE_LINK_INTERFACE_LIBRARIES", cmProperty::VARIABLE,
     "Default value for LINK_INTERFACE_LIBRARIES of targets.",
     "This variable is used to initialize the "
     "LINK_INTERFACE_LIBRARIES property on all the targets.  "
     "See that target property for additional information.",
     false,
     "Variables that Control the Build");
  cm->DefineProperty
    ("CMAKE_WIN32_EXECUTABLE", cmProperty::VARIABLE,
     "Default value for WIN32_EXECUTABLE of targets.",
     "This variable is used to initialize the "
     "WIN32_EXECUTABLE property on all the targets.  "
     "See that target property for additional information.",
     false,
     "Variables that Control the Build");
  cm->DefineProperty
    ("CMAKE_MACOSX_BUNDLE", cmProperty::VARIABLE,
     "Default value for MACOSX_BUNDLE of targets.",
     "This variable is used to initialize the "
     "MACOSX_BUNDLE property on all the targets.  "
     "See that target property for additional information.",
     false,
     "Variables that Control the Build");
  cm->DefineProperty
    ("CMAKE_POSITION_INDEPENDENT_CODE", cmProperty::VARIABLE,
     "Default value for POSITION_INDEPENDENT_CODE of targets.",
     "This variable is used to initialize the "
     "POSITION_INDEPENDENT_CODE property on all the targets.  "
     "See that target property for additional information.",
     false,
     "Variables that Control the Build");
  cm->DefineProperty
    ("CMAKE_<LANG>_VISIBILITY_PRESET", cmProperty::VARIABLE,
     "Default value for <LANG>_VISIBILITY_PRESET of targets.",
     "This variable is used to initialize the "
     "<LANG>_VISIBILITY_PRESET property on all the targets.  "
     "See that target property for additional information.",
     false,
     "Variables that Control the Build");
  cm->DefineProperty
    ("CMAKE_VISIBILITY_INLINES_HIDDEN", cmProperty::VARIABLE,
     "Default value for VISIBILITY_INLINES_HIDDEN of targets.",
     "This variable is used to initialize the "
     "VISIBILITY_INLINES_HIDDEN property on all the targets.  "
     "See that target property for additional information.",
     false,
     "Variables that Control the Build");

//   Variables defined when the a language is enabled These variables will
// also be defined whenever CMake has loaded its support for compiling (LANG)
// programs. This support will be loaded whenever CMake is used to compile
// (LANG) files. C and CXX are examples of the most common values for (LANG).

  cm->DefineProperty
    ("CMAKE_USER_MAKE_RULES_OVERRIDE_<LANG>", cmProperty::VARIABLE,
     "Specify a CMake file that overrides platform information for <LANG>.",
     "This is a language-specific version of "
     "CMAKE_USER_MAKE_RULES_OVERRIDE loaded only when enabling "
     "language <LANG>.",false,
     "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_<LANG>_COMPILER", cmProperty::VARIABLE,
     "The full path to the compiler for LANG.",
     "This is the command that will be used as the <LANG> compiler.  "
     "Once set, you can not change this variable.",false,
     "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_<LANG>_COMPILER_ID", cmProperty::VARIABLE,
     "Compiler identification string.",
     "A short string unique to the compiler vendor.  "
     "Possible values include:\n"
     "  Absoft = Absoft Fortran (absoft.com)\n"
     "  ADSP = Analog VisualDSP++ (analog.com)\n"
     "  Clang = LLVM Clang (clang.llvm.org)\n"
     "  Cray = Cray Compiler (cray.com)\n"
     "  Embarcadero, Borland = Embarcadero (embarcadero.com)\n"
     "  G95 = G95 Fortran (g95.org)\n"
     "  GNU = GNU Compiler Collection (gcc.gnu.org)\n"
     "  HP = Hewlett-Packard Compiler (hp.com)\n"
     "  Intel = Intel Compiler (intel.com)\n"
     "  MIPSpro = SGI MIPSpro (sgi.com)\n"
     "  MSVC = Microsoft Visual Studio (microsoft.com)\n"
     "  PGI = The Portland Group (pgroup.com)\n"
     "  PathScale = PathScale (pathscale.com)\n"
     "  SDCC = Small Device C Compiler (sdcc.sourceforge.net)\n"
     "  SunPro = Oracle Solaris Studio (oracle.com)\n"
     "  TI = Texas Instruments (ti.com)\n"
     "  TinyCC = Tiny C Compiler (tinycc.org)\n"
     "  Watcom = Open Watcom (openwatcom.org)\n"
     "  XL, VisualAge, zOS = IBM XL (ibm.com)\n"
     "This variable is not guaranteed to be defined for all "
     "compilers or languages.",
     false,
     "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_<LANG>_PLATFORM_ID", cmProperty::VARIABLE,
     "An internal variable subject to change.",
     "This is used in determining the platform and is subject to change.",
     false,
     "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_<LANG>_COMPILER_ABI", cmProperty::VARIABLE,
     "An internal variable subject to change.",
     "This is used in determining the compiler ABI and is subject to change.",
     false,
     "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_<LANG>_COMPILER_VERSION", cmProperty::VARIABLE,
     "Compiler version string.",
     "Compiler version in major[.minor[.patch[.tweak]]] format.  "
     "This variable is not guaranteed to be defined for all "
     "compilers or languages.",
     false,
     "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_INTERNAL_PLATFORM_ABI", cmProperty::VARIABLE,
     "An internal variable subject to change.",
     "This is used in determining the compiler ABI and is subject to change.",
     false,
     "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_<LANG>_SIZEOF_DATA_PTR", cmProperty::VARIABLE,
     "Size of pointer-to-data types for language <LANG>.",
     "This holds the size (in bytes) of pointer-to-data types in the target "
     "platform ABI.  "
     "It is defined for languages C and CXX (C++).",
     false,
     "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_COMPILER_IS_GNU<LANG>", cmProperty::VARIABLE,
     "True if the compiler is GNU.",
     "If the selected <LANG> compiler is the GNU "
     "compiler then this is TRUE, if not it is FALSE.  "
     "Unlike the other per-language variables, this uses the GNU syntax for "
     "identifying languages instead of the CMake syntax. Recognized values of "
     "the <LANG> suffix are:\n"
     "  CC = C compiler\n"
     "  CXX = C++ compiler\n"
     "  G77 = Fortran compiler",
     false,
     "Variables for Languages");

  cm->DefineProperty
     ("CMAKE_<LANG>_FLAGS", cmProperty::VARIABLE,
      "Flags for all build types.",
      "<LANG> flags used regardless of the value of CMAKE_BUILD_TYPE.",false,
      "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_<LANG>_FLAGS_DEBUG", cmProperty::VARIABLE,
     "Flags for Debug build type or configuration.",
     "<LANG> flags used when CMAKE_BUILD_TYPE is Debug.",false,
     "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_<LANG>_FLAGS_MINSIZEREL", cmProperty::VARIABLE,
     "Flags for MinSizeRel build type or configuration.",
     "<LANG> flags used when CMAKE_BUILD_TYPE is MinSizeRel."
     "Short for minimum size release.",false,
     "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_<LANG>_FLAGS_RELEASE", cmProperty::VARIABLE,
     "Flags for Release build type or configuration.",
     "<LANG> flags used when CMAKE_BUILD_TYPE is Release",false,
     "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_<LANG>_FLAGS_RELWITHDEBINFO", cmProperty::VARIABLE,
     "Flags for RelWithDebInfo type or configuration.",
     "<LANG> flags used when CMAKE_BUILD_TYPE is RelWithDebInfo.  "
     "Short for Release With Debug Information.",false,
     "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_<LANG>_COMPILE_OBJECT", cmProperty::VARIABLE,
     "Rule variable to compile a single object file.",
     "This is a rule variable that tells CMake how to "
     "compile a single object file for the language <LANG>."
     ,false,
     "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_<LANG>_CREATE_SHARED_LIBRARY", cmProperty::VARIABLE,
     "Rule variable to create a shared library.",
     "This is a rule variable that tells CMake how to "
     "create a shared library for the language <LANG>.",false,
     "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_<LANG>_CREATE_SHARED_MODULE", cmProperty::VARIABLE,
     "Rule variable to create a shared module.",
     "This is a rule variable that tells CMake how to "
     "create a shared library for the language <LANG>.",false,
     "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_<LANG>_CREATE_STATIC_LIBRARY", cmProperty::VARIABLE,
     "Rule variable to create a static library.",
     "This is a rule variable that tells CMake how "
     "to create a static library for the language <LANG>.",false,
     "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_<LANG>_ARCHIVE_CREATE", cmProperty::VARIABLE,
     "Rule variable to create a new static archive.",
     "This is a rule variable that tells CMake how to create a static "
     "archive.  It is used in place of CMAKE_<LANG>_CREATE_STATIC_LIBRARY "
     "on some platforms in order to support large object counts.  "
     "See also CMAKE_<LANG>_ARCHIVE_APPEND and CMAKE_<LANG>_ARCHIVE_FINISH.",
     false, "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_<LANG>_ARCHIVE_APPEND", cmProperty::VARIABLE,
     "Rule variable to append to a static archive.",
     "This is a rule variable that tells CMake how to append to a static "
     "archive.  It is used in place of CMAKE_<LANG>_CREATE_STATIC_LIBRARY "
     "on some platforms in order to support large object counts.  "
     "See also CMAKE_<LANG>_ARCHIVE_CREATE and CMAKE_<LANG>_ARCHIVE_FINISH.",
     false, "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_<LANG>_ARCHIVE_FINISH", cmProperty::VARIABLE,
     "Rule variable to finish an existing static archive.",
     "This is a rule variable that tells CMake how to finish a static "
     "archive.  It is used in place of CMAKE_<LANG>_CREATE_STATIC_LIBRARY "
     "on some platforms in order to support large object counts.  "
     "See also CMAKE_<LANG>_ARCHIVE_CREATE and CMAKE_<LANG>_ARCHIVE_APPEND.",
     false, "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_<LANG>_IGNORE_EXTENSIONS", cmProperty::VARIABLE,
     "File extensions that should be ignored by the build.",
     "This is a list of file extensions that may be "
     "part of a project for a given language but are not compiled.",false,
     "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_<LANG>_IMPLICIT_INCLUDE_DIRECTORIES", cmProperty::VARIABLE,
     "Directories implicitly searched by the compiler for header files.",
     "CMake does not explicitly specify these directories on compiler "
     "command lines for language <LANG>.  "
     "This prevents system include directories from being treated as user "
     "include directories on some compilers.", false,
     "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_<LANG>_IMPLICIT_LINK_DIRECTORIES", cmProperty::VARIABLE,
     "Implicit linker search path detected for language <LANG>.",
     "Compilers typically pass directories containing language runtime "
     "libraries and default library search paths when they invoke a linker.  "
     "These paths are implicit linker search directories for the compiler's "
     "language.  "
     "CMake automatically detects these directories for each language and "
     "reports the results in this variable."
     "\n"
     "When a library in one of these directories is given by full path to "
     "target_link_libraries() CMake will generate the -l<name> form on "
     "link lines to ensure the linker searches its implicit directories "
     "for the library.  "
     "Note that some toolchains read implicit directories from an "
     "environment variable such as LIBRARY_PATH so keep its value "
     "consistent when operating in a given build tree.",false,
     "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_<LANG>_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES", cmProperty::VARIABLE,
     "Implicit linker framework search path detected for language <LANG>.",
     "These paths are implicit linker framework search directories for "
     "the compiler's language.  "
     "CMake automatically detects these directories for each language and "
     "reports the results in this variable.", false,
     "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_<LANG>_IMPLICIT_LINK_LIBRARIES", cmProperty::VARIABLE,
     "Implicit link libraries and flags detected for language <LANG>.",
     "Compilers typically pass language runtime library names and "
     "other flags when they invoke a linker.  "
     "These flags are implicit link options for the compiler's language.  "
     "CMake automatically detects these libraries and flags for each "
     "language and reports the results in this variable.", false,
     "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_<LANG>_LIBRARY_ARCHITECTURE", cmProperty::VARIABLE,
     "Target architecture library directory name detected for <lang>.",
     "If the <lang> compiler passes to the linker an architecture-specific "
     "system library search directory such as <prefix>/lib/<arch> this "
     "variable contains the <arch> name if/as detected by CMake.",false,
     "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_<LANG>_LINKER_PREFERENCE_PROPAGATES", cmProperty::VARIABLE,
     "True if CMAKE_<LANG>_LINKER_PREFERENCE propagates across targets.",
     "This is used when CMake selects a linker language for a target.  "
     "Languages compiled directly into the target are always considered.  "
     "A language compiled into static libraries linked by the target is "
     "considered if this variable is true.", false,
     "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_<LANG>_LINKER_PREFERENCE", cmProperty::VARIABLE,
     "Preference value for linker language selection.",
     "The \"linker language\" for executable, shared library, and module "
     "targets is the language whose compiler will invoke the linker.  "
     "The LINKER_LANGUAGE target property sets the language explicitly.  "
     "Otherwise, the linker language is that whose linker preference value "
     "is highest among languages compiled and linked into the target.  "
     "See also the CMAKE_<LANG>_LINKER_PREFERENCE_PROPAGATES variable.",
     false,
     "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_<LANG>_LINK_EXECUTABLE ", cmProperty::VARIABLE,
     "Rule variable to link an executable.",
     "Rule variable to link an executable for the given language."
     ,false,
     "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_<LANG>_OUTPUT_EXTENSION", cmProperty::VARIABLE,
     "Extension for the output of a compile for a single file.",
     "This is the extension for an object file for "
     "the given <LANG>. For example .obj for C on Windows.",false,
     "Variables for Languages");

  cm->DefineProperty
    ("CMAKE_<LANG>_SOURCE_FILE_EXTENSIONS", cmProperty::VARIABLE,
     "Extensions of source files for the given language.",
     "This is the list of extensions for a "
     "given language's source files."
     ,false,
     "Variables for Languages");

  cm->DefineProperty(
    "CMAKE_<LANG>_COMPILER_LOADED", cmProperty::VARIABLE,
    "Defined to true if the language is enabled.",
    "When language <LANG> is enabled by project() or enable_language() "
    "this variable is defined to 1.",
    false,"Variables for Languages");

  cm->DefineProperty(
    "CMAKE_Fortran_MODDIR_FLAG", cmProperty::VARIABLE,
    "Fortran flag for module output directory.",
    "This stores the flag needed to pass the value of the "
    "Fortran_MODULE_DIRECTORY target property to the compiler.",
    false,"Variables for Languages");

  cm->DefineProperty(
    "CMAKE_Fortran_MODDIR_DEFAULT", cmProperty::VARIABLE,
    "Fortran default module output directory.",
    "Most Fortran compilers write .mod files to the current working "
    "directory.  "
    "For those that do not, this is set to \".\" and used when the "
    "Fortran_MODULE_DIRECTORY target property is not set.",
    false,"Variables for Languages");

  cm->DefineProperty(
    "CMAKE_Fortran_MODOUT_FLAG", cmProperty::VARIABLE,
    "Fortran flag to enable module output.",
    "Most Fortran compilers write .mod files out by default.  "
    "For others, this stores the flag needed to enable module output.",
    false,"Variables for Languages");

  // variables that are used by cmake but not to be documented
  cm->DefineProperty("CMAKE_MATCH_0", cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_MATCH_1", cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_MATCH_2", cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_MATCH_3", cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_MATCH_4", cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_MATCH_5", cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_MATCH_6", cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_MATCH_7", cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_MATCH_8", cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_MATCH_9", cmProperty::VARIABLE,0,0);

  cm->DefineProperty("CMAKE_<LANG>_COMPILER_ARG1",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_<LANG>_COMPILER_ENV_VAR",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_<LANG>_COMPILER_ID_RUN",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_<LANG>_ABI_FILES",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_<LANG>_CREATE_ASSEMBLY_SOURCE",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_<LANG>_CREATE_PREPROCESSED_SOURCE",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_<LANG>_FLAGS_DEBUG_INIT",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_<LANG>_FLAGS_INIT",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_<LANG>_FLAGS_MINSIZEREL_INIT",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_<LANG>_FLAGS_RELEASE_INIT",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_<LANG>_FLAGS_RELWITHDEBINFO_INIT",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_<LANG>_INFORMATION_LOADED",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_<LANG>_LINK_EXECUTABLE",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_<LANG>_LINK_FLAGS",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_<LANG>_RESPONSE_FILE_LINK_FLAG",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_<LANG>_STANDARD_LIBRARIES",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_<LANG>_STANDARD_LIBRARIES_INIT",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_<LANG>_USE_RESPONSE_FILE_FOR_INCLUDES",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_<LANG>_USE_RESPONSE_FILE_FOR_OBJECTS",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_EXECUTABLE_SUFFIX_<LANG>",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_EXE_LINK_DYNAMIC_<LANG>_FLAGS",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_EXE_LINK_STATIC_<LANG>_FLAGS",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_GENERATOR_<LANG>",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_IMPORT_LIBRARY_PREFIX_<LANG>",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_IMPORT_LIBRARY_SUFFIX_<LANG>",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_INCLUDE_FLAG_<LANG>",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_INCLUDE_FLAG_SEP_<LANG>",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_INCLUDE_SYSTEM_FLAG_<LANG>",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_NEEDS_REQUIRES_STEP_<LANG>_FLAG",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_SHARED_LIBRARY_CREATE_<LANG>_FLAGS",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_SHARED_LIBRARY_<LANG>_FLAGS",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_SHARED_LIBRARY_LINK_<LANG>_FLAGS",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_SHARED_LIBRARY_LINK_DYNAMIC_<LANG>_FLAGS",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_SHARED_LIBRARY_LINK_STATIC_<LANG>_FLAGS",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_SHARED_LIBRARY_PREFIX_<LANG>",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_SHARED_LIBRARY_SUFFIX_<LANG>",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_SHARED_LIBRARY_RUNTIME_<LANG>_FLAG",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_SHARED_LIBRARY_RUNTIME_<LANG>_FLAG_SEP",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_SHARED_LIBRARY_RPATH_LINK_<LANG>_FLAG",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_EXECUTABLE_RUNTIME_<LANG>_FLAG",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_EXECUTABLE_RUNTIME_<LANG>_FLAG_SEP",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_EXECUTABLE_RPATH_LINK_<LANG>_FLAG",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_PLATFORM_REQUIRED_RUNTIME_PATH",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty(
    "CMAKE_<LANG>_USE_IMPLICIT_LINK_DIRECTORIES_IN_RUNTIME_PATH",
    cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_SHARED_MODULE_CREATE_<LANG>_FLAGS",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_SHARED_MODULE_<LANG>_FLAGS",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_SHARED_MODULE_LINK_DYNAMIC_<LANG>_FLAGS",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_SHARED_MODULE_LINK_STATIC_<LANG>_FLAGS",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_SHARED_MODULE_PREFIX_<LANG>",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_SHARED_MODULE_SUFFIX_<LANG>",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_STATIC_LIBRARY_PREFIX_<LANG>",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_STATIC_LIBRARY_SUFFIX_<LANG>",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_LINK_DEPENDENT_LIBRARY_FILES",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_LINK_DEPENDENT_LIBRARY_DIRS",
                     cmProperty::VARIABLE,0,0);
  cm->DefineProperty("CMAKE_MAKE_INCLUDE_FROM_ROOT",
                     cmProperty::VARIABLE,0,0);
}
