diff options
954 files changed, 3915 insertions, 1935 deletions
diff --git a/Help/command/add_compile_definitions.rst b/Help/command/add_compile_definitions.rst index e10aba0..48e33be 100644 --- a/Help/command/add_compile_definitions.rst +++ b/Help/command/add_compile_definitions.rst @@ -1,6 +1,8 @@ add_compile_definitions ----------------------- +.. versionadded:: 3.12 + Add preprocessor definitions to the compilation of source files. .. code-block:: cmake diff --git a/Help/command/add_link_options.rst b/Help/command/add_link_options.rst index faa4afb..f03e7c0 100644 --- a/Help/command/add_link_options.rst +++ b/Help/command/add_link_options.rst @@ -1,6 +1,8 @@ add_link_options ---------------- +.. versionadded:: 3.13 + Add options to the link step for executable, shared library or module library targets in the current directory and below that are added after this command is invoked. diff --git a/Help/command/cmake_language.rst b/Help/command/cmake_language.rst index 0988097..9e98d79 100644 --- a/Help/command/cmake_language.rst +++ b/Help/command/cmake_language.rst @@ -1,6 +1,8 @@ cmake_language -------------- +.. versionadded:: 3.18 + Call meta-operations on CMake commands. Synopsis diff --git a/Help/command/cmake_parse_arguments.rst b/Help/command/cmake_parse_arguments.rst index fcd36d0..8803ec8 100644 --- a/Help/command/cmake_parse_arguments.rst +++ b/Help/command/cmake_parse_arguments.rst @@ -1,6 +1,8 @@ cmake_parse_arguments --------------------- +.. versionadded:: 3.5 + Parse function or macro arguments. .. code-block:: cmake diff --git a/Help/command/configure_file.rst b/Help/command/configure_file.rst index 29e85bd..46d1a05 100644 --- a/Help/command/configure_file.rst +++ b/Help/command/configure_file.rst @@ -7,6 +7,7 @@ Copy a file to another location and modify its contents. configure_file(<input> <output> [COPYONLY] [ESCAPE_QUOTES] [@ONLY] + [NO_SOURCE_PERMISSIONS] [NEWLINE_STYLE [UNIX|DOS|WIN32|LF|CRLF] ]) Copies an ``<input>`` file to an ``<output>`` file and substitutes @@ -82,6 +83,11 @@ The arguments are: Restrict variable replacement to references of the form ``@VAR@``. This is useful for configuring scripts that use ``${VAR}`` syntax. + ``NO_SOURCE_PERMISSIONS`` + Does not transfer the file permissions of the original file to the copy. + The copied file permissions default to the standard 644 value + (-rw-r--r--). + ``NEWLINE_STYLE <style>`` Specify the newline style for the output file. Specify ``UNIX`` or ``LF`` for ``\n`` newlines, or specify diff --git a/Help/command/continue.rst b/Help/command/continue.rst index 31c7089..f62802e 100644 --- a/Help/command/continue.rst +++ b/Help/command/continue.rst @@ -1,6 +1,8 @@ continue -------- +.. versionadded:: 3.2 + Continue to the top of enclosing foreach or while loop. .. code-block:: cmake diff --git a/Help/command/file.rst b/Help/command/file.rst index b109f9d..e7bc8d2 100644 --- a/Help/command/file.rst +++ b/Help/command/file.rst @@ -43,8 +43,8 @@ Synopsis file(`LOCK`_ <path> [...]) `Archiving`_ - file(`ARCHIVE_CREATE`_ OUTPUT <archive> FILES <files> [...]) - file(`ARCHIVE_EXTRACT`_ INPUT <archive> DESTINATION <dir> [...]) + file(`ARCHIVE_CREATE`_ OUTPUT <archive> PATHS <paths>... [...]) + file(`ARCHIVE_EXTRACT`_ INPUT <archive> [...]) Reading ^^^^^^^ @@ -508,8 +508,7 @@ The arguments are: ``OUTPUT <output-file>`` Specify the output file name to generate. A relative path is treated with - respect to the value of :variable:`CMAKE_CURRENT_BINARY_DIR`. See policy - :policy:`CMP0070`. + respect to the value of :variable:`CMAKE_CURRENT_BINARY_DIR`. ``<output-file>`` does not support generator expressions. ``CONTENT <content>`` @@ -900,15 +899,15 @@ Archiving .. code-block:: cmake file(ARCHIVE_CREATE OUTPUT <archive> - [FILES <files>] - [DIRECTORY <dirs>] + PATHS <paths>... [FORMAT <format>] [COMPRESSION <compression>] [MTIME <mtime>] [VERBOSE]) -Creates the specified ``<archive>`` file with the content of ``<files>`` and -``<dirs>``. +Creates the specified ``<archive>`` file with the files and directories +listed in ``<paths>``. Note that ``<paths>`` must list actual files or +directories, wildcards are not supported. Use the ``FORMAT`` option to specify the archive format. Supported values for ``<format>`` are ``7zip``, ``gnutar``, ``pax``, ``paxr``, ``raw`` and @@ -934,21 +933,23 @@ the ``MTIME`` option. .. code-block:: cmake file(ARCHIVE_EXTRACT INPUT <archive> - [FILES <files>] - [DIRECTORY <dirs>] [DESTINATION <dir>] + [PATTERNS <patterns>...] [LIST_ONLY] [VERBOSE]) -Extracts or lists the content of an archive specified by ``INPUT``. +Extracts or lists the content of the specified ``<archive>``. -The directory where the content of the archive will be extracted can -be specified via ``DESTINATION``. If the directory does not exit, it -will be created. +The directory where the content of the archive will be extracted to can +be specified using the ``DESTINATION`` option. If the directory does not +exist, it will be created. If ``DESTINATION`` is not given, the current +binary directory will be used. -To select which files and directories will be extracted or listed -use ``FILES`` and ``DIRECTORY`` options. +If required, you may select which files and directories to list or extract +from the archive using the specified ``<patterns>``. Wildcards are supported. +If the ``PATTERNS`` option is not given, the entire archive will be listed or +extracted. -``LIST_ONLY`` will only list the files in the archive. +``LIST_ONLY`` will list the files in the archive rather than extract them. -With ``VERBOSE`` the command will produce verbose output. +With ``VERBOSE``, the command will produce verbose output. diff --git a/Help/command/get_property.rst b/Help/command/get_property.rst index 80d97fd..0602518 100644 --- a/Help/command/get_property.rst +++ b/Help/command/get_property.rst @@ -10,7 +10,7 @@ Get a property. DIRECTORY [<dir>] | TARGET <target> | SOURCE <source> | - [<TARGET_DIRECTORY ... | DIRECTORY ...>] | + [DIRECTORY <dir> | TARGET_DIRECTORY <target>] | INSTALL <file> | TEST <test> | CACHE <entry> | @@ -31,18 +31,36 @@ It must be one of the following: Scope defaults to the current directory but another directory (already processed by CMake) may be named by the full or relative path ``<dir>``. + See also the :command:`get_directory_property` command. ``TARGET`` Scope must name one existing target. + See also the :command:`get_target_property` command. ``SOURCE`` - Scope must name one source file. + Scope must name one source file. By default, the source file's property + will be read from the current source directory's scope, but this can be + overridden with one of the following sub-options: + + ``DIRECTORY <dir>`` + The source file property will be read from the ``<dir>`` directory's + scope. CMake must already know about that source directory, either by + having added it through a call to :command:`add_subdirectory` or ``<dir>`` + being the top level source directory. Relative paths are treated as + relative to the current source directory. + + ``TARGET_DIRECTORY <target>`` + The source file property will be read from the directory scope in which + ``<target>`` was created (``<target>`` must therefore already exist). + + See also the :command:`get_source_file_property` command. ``INSTALL`` Scope must name one installed file path. ``TEST`` Scope must name one existing test. + See also the :command:`get_test_property` command. ``CACHE`` Scope must name one cache entry. @@ -50,15 +68,6 @@ It must be one of the following: ``VARIABLE`` Scope is unique and does not accept a name. -In the ``SOURCE`` case, the queried source file scope can be changed by -specifying one of the additional options: ``DIRECTORY`` or ``TARGET_DIRECTORY``. - -``DIRECTORY`` takes a path to a processed directory, and the source file property -will be read from that directory scope. - -``TARGET_DIRECTORY`` takes the name of an existing target. The source file -property will be read from this target's directory scope. - The required ``PROPERTY`` option is immediately followed by the name of the property to get. If the property is not set an empty value is returned, although some properties support inheriting from a parent scope diff --git a/Help/command/get_source_file_property.rst b/Help/command/get_source_file_property.rst index 893a1b6..76ed776 100644 --- a/Help/command/get_source_file_property.rst +++ b/Help/command/get_source_file_property.rst @@ -5,24 +5,33 @@ Get a property for a source file. .. code-block:: cmake - get_source_file_property(VAR file [<TARGET_DIRECTORY ... | DIRECTORY ...>] property) + get_source_file_property(<variable> <file> + [DIRECTORY <dir> | TARGET_DIRECTORY <target>] + <property>) Gets a property from a source file. The value of the property is -stored in the variable ``VAR``. If the source property is not found, the -behavior depends on whether it has been defined to be an ``INHERITED`` property -or not (see :command:`define_property`). Non-inherited properties will set -``VAR`` to "NOTFOUND", whereas inherited properties will search the relevant -parent scope as described for the :command:`define_property` command and -if still unable to find the property, ``VAR`` will be set to an empty string. - -The queried source file scope can be changed by specifying one of the -additional options: ``DIRECTORY`` or ``TARGET_DIRECTORY``. - -``DIRECTORY`` takes a path to a processed directory, and the source file property -will be read from that directory scope. - -``TARGET_DIRECTORY`` takes the name of an existing target. The source file -property will be read from this target's directory scope. +stored in the specified ``<variable>``. If the source property is not found, +the behavior depends on whether it has been defined to be an ``INHERITED`` +property or not (see :command:`define_property`). Non-inherited properties +will set ``variable`` to ``NOTFOUND``, whereas inherited properties will search +the relevant parent scope as described for the :command:`define_property` +command and if still unable to find the property, ``variable`` will be set to +an empty string. + +By default, the source file's property will be read from the current source +directory's scope, but this can be overridden with one of the following +sub-options: + +``DIRECTORY <dir>`` + The source file property will be read from the ``<dir>`` directory's + scope. CMake must already know about that source directory, either by + having added it through a call to :command:`add_subdirectory` or ``<dir>`` + being the top level source directory. Relative paths are treated as + relative to the current source directory. + +``TARGET_DIRECTORY <target>`` + The source file property will be read from the directory scope in which + ``<target>`` was created (``<target>`` must therefore already exist). Use :command:`set_source_files_properties` to set property values. Source file properties usually control how the file is built. One property that is diff --git a/Help/command/include_guard.rst b/Help/command/include_guard.rst index 877aa86..dca3b6f 100644 --- a/Help/command/include_guard.rst +++ b/Help/command/include_guard.rst @@ -1,6 +1,8 @@ include_guard ------------- +.. versionadded:: 3.10 + Provides an include guard for the file currently being processed by CMake. .. code-block:: cmake diff --git a/Help/command/install.rst b/Help/command/install.rst index c8df7d9..c11eaf4 100644 --- a/Help/command/install.rst +++ b/Help/command/install.rst @@ -45,6 +45,9 @@ signatures that specify them. The common options are: As absolute paths are not supported by :manual:`cpack <cpack(1)>` installer generators, it is preferable to use relative paths throughout. + In particular, there is no need to make paths absolute by prepending + :variable:`CMAKE_INSTALL_PREFIX`; this prefix is used by default if + the DESTINATION is a relative path. ``PERMISSIONS`` Specify permissions for installed files. Valid permissions are diff --git a/Help/command/set_property.rst b/Help/command/set_property.rst index de28be3..93c2d9c 100644 --- a/Help/command/set_property.rst +++ b/Help/command/set_property.rst @@ -9,12 +9,13 @@ Set a named property in a given scope. DIRECTORY [<dir>] | TARGET [<target1> ...] | SOURCE [<src1> ...] - [<TARGET_DIRECTORY ... | DIRECTORY ...>] | + [DIRECTORY <dirs> ...] | + [TARGET_DIRECTORY <targets> ...] INSTALL [<file1> ...] | TEST [<test1> ...] | CACHE [<entry1> ...] > [APPEND] [APPEND_STRING] - PROPERTY <name> [value1 ...]) + PROPERTY <name> [<value1> ...]) Sets one property on zero or more objects of a scope. @@ -34,17 +35,23 @@ It must be one of the following: See also the :command:`set_target_properties` command. ``SOURCE`` - Scope may name zero or more source files. Note that source - file properties are by default visible only to targets added in the same - directory (``CMakeLists.txt``). - The file properties can be made visible in a different directory by specifying - one of the additional options: ``TARGET_DIRECTORY`` or ``DIRECTORY``. + Scope may name zero or more source files. By default, source file properties + are only visible to targets added in the same directory (``CMakeLists.txt``). + Visibility can be set in other directory scopes using one or both of the + following sub-options: + + ``DIRECTORY <dirs>...`` + The source file property will be set in each of the ``<dirs>`` + directories' scopes. CMake must already know about each of these + source directories, either by having added them through a call to + :command:`add_subdirectory` or it being the top level source directory. + Relative paths are treated as relative to the current source directory. + + ``TARGET_DIRECTORY <targets>...`` + The source file property will be set in each of the directory scopes + where any of the specified ``<targets>`` were created (the ``<targets>`` + must therefore already exist). - ``DIRECTORY`` takes a list of processed directories paths, and sets the file - properties in those directory scopes. - - ``TARGET_DIRECTORY`` takes a list of existing targets. The file - properties will be set in these targets' directory scopes. See also the :command:`set_source_files_properties` command. ``INSTALL`` diff --git a/Help/command/set_source_files_properties.rst b/Help/command/set_source_files_properties.rst index 8adfb9e..9558b40 100644 --- a/Help/command/set_source_files_properties.rst +++ b/Help/command/set_source_files_properties.rst @@ -5,28 +5,33 @@ Source files can have properties that affect how they are built. .. code-block:: cmake - set_source_files_properties([file1 [file2 [...]]] - [<TARGET_DIRECTORY ... | DIRECTORY ...>] - PROPERTIES prop1 value1 - [prop2 value2 [...]]) + set_source_files_properties(<files> ... + [DIRECTORY <dirs> ...] + [TARGET_DIRECTORY <targets> ...] + PROPERTIES <prop1> <value1> + [<prop2> <value2>] ...) Sets properties associated with source files using a key/value paired list. -Note that source file properties are by default visible only to -targets added in the same directory (``CMakeLists.txt``). +By default, source file properties are only visible to targets added in the +same directory (``CMakeLists.txt``). Visibility can be set in other directory +scopes using one or both of the following options: -The file properties can be made visible in a different directory by specifying -one of the additional options: ``TARGET_DIRECTORY`` or ``DIRECTORY``. +``DIRECTORY <dirs>...`` + The source file properties will be set in each of the ``<dirs>`` + directories' scopes. CMake must already know about each of these + source directories, either by having added them through a call to + :command:`add_subdirectory` or it being the top level source directory. + Relative paths are treated as relative to the current source directory. -``DIRECTORY`` takes a list of processed directories paths, and sets the file -properties in those directory scopes. - -``TARGET_DIRECTORY`` takes a list of existing targets. The file -properties will be set in these targets' directory scopes. +``TARGET_DIRECTORY <targets>...`` + The source file properties will be set in each of the directory scopes + where any of the specified ``<targets>`` were created (the ``<targets>`` + must therefore already exist). +Use :command:`get_source_file_property` to get property values. See also the :command:`set_property(SOURCE)` command. See :ref:`Source File Properties` for the list of properties known -to CMake. Source file properties are visible only to targets added -in the same directory (``CMakeLists.txt``). +to CMake. diff --git a/Help/command/target_compile_features.rst b/Help/command/target_compile_features.rst index c5401e6..b50be34 100644 --- a/Help/command/target_compile_features.rst +++ b/Help/command/target_compile_features.rst @@ -1,6 +1,8 @@ target_compile_features ----------------------- +.. versionadded:: 3.1 + Add expected compiler features to a target. .. code-block:: cmake diff --git a/Help/command/target_link_directories.rst b/Help/command/target_link_directories.rst index 76da94d..bb75a3d 100644 --- a/Help/command/target_link_directories.rst +++ b/Help/command/target_link_directories.rst @@ -1,6 +1,8 @@ target_link_directories ----------------------- +.. versionadded:: 3.13 + Add link directories to a target. .. code-block:: cmake diff --git a/Help/command/target_link_options.rst b/Help/command/target_link_options.rst index 89038e3..e59e0e1 100644 --- a/Help/command/target_link_options.rst +++ b/Help/command/target_link_options.rst @@ -1,6 +1,8 @@ target_link_options ------------------- +.. versionadded:: 3.13 + Add options to the link step for an executable, shared library or module library target. diff --git a/Help/command/target_precompile_headers.rst b/Help/command/target_precompile_headers.rst index d4280b1..7005180 100644 --- a/Help/command/target_precompile_headers.rst +++ b/Help/command/target_precompile_headers.rst @@ -1,6 +1,8 @@ target_precompile_headers ------------------------- +.. versionadded:: 3.16 + Add a list of header files to precompile. Precompiling header files can speed up compilation by creating a partially diff --git a/Help/command/target_sources.rst b/Help/command/target_sources.rst index 27e737b..856d869 100644 --- a/Help/command/target_sources.rst +++ b/Help/command/target_sources.rst @@ -1,6 +1,8 @@ target_sources -------------- +.. versionadded:: 3.1 + Add sources to a target. .. code-block:: cmake diff --git a/Help/command/variable_watch.rst b/Help/command/variable_watch.rst index ce69bcf..8293f5a 100644 --- a/Help/command/variable_watch.rst +++ b/Help/command/variable_watch.rst @@ -7,9 +7,42 @@ Watch the CMake variable for change. variable_watch(<variable> [<command>]) -If the specified ``<variable>`` changes, a message will be printed -to inform about the change. +If the specified ``<variable>`` changes and no ``<command>`` is given, +a message will be printed to inform about the change. -Additionally, if ``<command>`` is given, this command will be executed. +If ``<command>`` is given, this command will be executed instead. The command will receive the following arguments: ``COMMAND(<variable> <access> <value> <current_list_file> <stack>)`` + +``<variable>`` + Name of the variable being accessed. + +``<access>`` + One of ``READ_ACCESS``, ``UNKNOWN_READ_ACCESS``, ``MODIFIED_ACCESS``, + ``UNKNOWN_MODIFIED_ACCESS``, or ``REMOVED_ACCESS``. The ``UNKNOWN_`` + values are only used when the variable has never been set. Once set, + they are never used again during the same CMake run, even if the + variable is later unset. + +``<value>`` + The value of the variable. On a modification, this is the new + (modified) value of the variable. On removal, the value is empty. + +``<current_list_file>`` + Full path to the file doing the access. + +``<stack>`` + List of absolute paths of all files currently on the stack of file + inclusion, with the bottom-most file first and the currently + processed file (that is, ``current_list_file``) last. + +Note that for some accesses such as :command:`list(APPEND)`, the watcher +is executed twice, first with a read access and then with a write one. +Also note that an :command:`if(DEFINED)` query on the variable does not +register as an access and the watcher is not executed. + +Only non-cache variables can be watched using this command. Access to +cache variables is never watched. However, the existence of a cache +variable ``var`` causes accesses to the non-cache variable ``var`` to +not use the ``UNKNOWN_`` prefix, even if a non-cache variable ``var`` +has never existed. diff --git a/Help/dev/maint.rst b/Help/dev/maint.rst index 9b6774b..4c2c89f 100644 --- a/Help/dev/maint.rst +++ b/Help/dev/maint.rst @@ -200,6 +200,23 @@ the notes, and revise wording. Then commit with a message such as:: Add section headers similar to the $prev release notes and move each individual bullet into an appropriate section. Revise a few bullets. +Update Sphinx ``versionadded`` directives in documents added since +the previous release by running the `update_versions.py`_ script: + +.. code-block:: shell + + Utilities/Sphinx/update_versions.py --since v$prev.0 --overwrite + +.. _`update_versions.py`: ../../Utilities/Sphinx/update_versions.py + +Commit the changes with a message such as:: + + Help: Update Sphinx versionadded directives for $ver release + + Run the script: + + Utilities/Sphinx/update_versions.py --since v$prev.0 --overwrite + Open a merge request with the ``doc-$ver-relnotes`` branch for review and integration. Further steps may proceed after this has been merged to ``master``. diff --git a/Help/envvar/ASM_DIALECT.rst b/Help/envvar/ASM_DIALECT.rst index a06e3cb..768d8fe 100644 --- a/Help/envvar/ASM_DIALECT.rst +++ b/Help/envvar/ASM_DIALECT.rst @@ -1,6 +1,8 @@ ASM<DIALECT> ------------ +.. versionadded:: 3.10 + .. include:: ENV_VAR.txt Preferred executable for compiling a specific dialect of assembly language diff --git a/Help/envvar/ASM_DIALECTFLAGS.rst b/Help/envvar/ASM_DIALECTFLAGS.rst index 2e1c6d2..66a75e2 100644 --- a/Help/envvar/ASM_DIALECTFLAGS.rst +++ b/Help/envvar/ASM_DIALECTFLAGS.rst @@ -1,6 +1,8 @@ ASM<DIALECT>FLAGS ----------------- +.. versionadded:: 3.10 + .. include:: ENV_VAR.txt Default compilation flags to be used when compiling a specific dialect of an diff --git a/Help/envvar/CC.rst b/Help/envvar/CC.rst index ef12059..7d2b870 100644 --- a/Help/envvar/CC.rst +++ b/Help/envvar/CC.rst @@ -1,6 +1,8 @@ CC -- +.. versionadded:: 3.10 + .. include:: ENV_VAR.txt Preferred executable for compiling ``C`` language files. Will only be used by diff --git a/Help/envvar/CCMAKE_COLORS.rst b/Help/envvar/CCMAKE_COLORS.rst index d4750c3..4e76bf8 100644 --- a/Help/envvar/CCMAKE_COLORS.rst +++ b/Help/envvar/CCMAKE_COLORS.rst @@ -1,6 +1,8 @@ CCMAKE_COLORS ------------- +.. versionadded:: 3.18 + Determines what colors are used by the CMake curses interface, when run on a terminal that supports colors. The syntax follows the same conventions as ``LS_COLORS``; diff --git a/Help/envvar/CFLAGS.rst b/Help/envvar/CFLAGS.rst index 190b4f4..31db6a6 100644 --- a/Help/envvar/CFLAGS.rst +++ b/Help/envvar/CFLAGS.rst @@ -1,6 +1,8 @@ CFLAGS ------ +.. versionadded:: 3.10 + .. include:: ENV_VAR.txt Default compilation flags to be used when compiling ``C`` files. Will only be diff --git a/Help/envvar/CMAKE_BUILD_PARALLEL_LEVEL.rst b/Help/envvar/CMAKE_BUILD_PARALLEL_LEVEL.rst index 199ca3e..dbc589a 100644 --- a/Help/envvar/CMAKE_BUILD_PARALLEL_LEVEL.rst +++ b/Help/envvar/CMAKE_BUILD_PARALLEL_LEVEL.rst @@ -1,6 +1,8 @@ CMAKE_BUILD_PARALLEL_LEVEL -------------------------- +.. versionadded:: 3.12 + .. include:: ENV_VAR.txt Specifies the maximum number of concurrent processes to use when building diff --git a/Help/envvar/CMAKE_CONFIG_TYPE.rst b/Help/envvar/CMAKE_CONFIG_TYPE.rst index 168593d..c207a48 100644 --- a/Help/envvar/CMAKE_CONFIG_TYPE.rst +++ b/Help/envvar/CMAKE_CONFIG_TYPE.rst @@ -1,6 +1,8 @@ CMAKE_CONFIG_TYPE ----------------- +.. versionadded:: 3.10 + .. include:: ENV_VAR.txt The default build configuration for :ref:`Build Tool Mode` and diff --git a/Help/envvar/CMAKE_EXPORT_COMPILE_COMMANDS.rst b/Help/envvar/CMAKE_EXPORT_COMPILE_COMMANDS.rst index e9e0810..9e678be 100644 --- a/Help/envvar/CMAKE_EXPORT_COMPILE_COMMANDS.rst +++ b/Help/envvar/CMAKE_EXPORT_COMPILE_COMMANDS.rst @@ -1,6 +1,8 @@ CMAKE_EXPORT_COMPILE_COMMANDS ----------------------------- +.. versionadded:: 3.17 + .. include:: ENV_VAR.txt The default value for :variable:`CMAKE_EXPORT_COMPILE_COMMANDS` when there diff --git a/Help/envvar/CMAKE_GENERATOR.rst b/Help/envvar/CMAKE_GENERATOR.rst index f2d055f..3488b04 100644 --- a/Help/envvar/CMAKE_GENERATOR.rst +++ b/Help/envvar/CMAKE_GENERATOR.rst @@ -1,6 +1,8 @@ CMAKE_GENERATOR --------------- +.. versionadded:: 3.15 + .. include:: ENV_VAR.txt Specifies the CMake default generator to use when no generator is supplied diff --git a/Help/envvar/CMAKE_GENERATOR_INSTANCE.rst b/Help/envvar/CMAKE_GENERATOR_INSTANCE.rst index 1654fa1..8ca7d80 100644 --- a/Help/envvar/CMAKE_GENERATOR_INSTANCE.rst +++ b/Help/envvar/CMAKE_GENERATOR_INSTANCE.rst @@ -1,6 +1,8 @@ CMAKE_GENERATOR_INSTANCE ------------------------ +.. versionadded:: 3.15 + .. include:: ENV_VAR.txt Default value for :variable:`CMAKE_GENERATOR_INSTANCE` if no Cache entry is diff --git a/Help/envvar/CMAKE_GENERATOR_PLATFORM.rst b/Help/envvar/CMAKE_GENERATOR_PLATFORM.rst index 917b30b..b039845 100644 --- a/Help/envvar/CMAKE_GENERATOR_PLATFORM.rst +++ b/Help/envvar/CMAKE_GENERATOR_PLATFORM.rst @@ -1,6 +1,8 @@ CMAKE_GENERATOR_PLATFORM ------------------------ +.. versionadded:: 3.15 + .. include:: ENV_VAR.txt Default value for :variable:`CMAKE_GENERATOR_PLATFORM` if no Cache entry diff --git a/Help/envvar/CMAKE_GENERATOR_TOOLSET.rst b/Help/envvar/CMAKE_GENERATOR_TOOLSET.rst index 7ac3856..394dd88 100644 --- a/Help/envvar/CMAKE_GENERATOR_TOOLSET.rst +++ b/Help/envvar/CMAKE_GENERATOR_TOOLSET.rst @@ -1,6 +1,8 @@ CMAKE_GENERATOR_TOOLSET ----------------------- +.. versionadded:: 3.15 + .. include:: ENV_VAR.txt Default value for :variable:`CMAKE_GENERATOR_TOOLSET` if no Cache entry diff --git a/Help/envvar/CMAKE_LANG_COMPILER_LAUNCHER.rst b/Help/envvar/CMAKE_LANG_COMPILER_LAUNCHER.rst index 4f91e9a..c384fa1 100644 --- a/Help/envvar/CMAKE_LANG_COMPILER_LAUNCHER.rst +++ b/Help/envvar/CMAKE_LANG_COMPILER_LAUNCHER.rst @@ -1,6 +1,8 @@ CMAKE_<LANG>_COMPILER_LAUNCHER ------------------------------ +.. versionadded:: 3.17 + .. include:: ENV_VAR.txt Default compiler launcher to use for the specified language. Will only be used diff --git a/Help/envvar/CMAKE_MSVCIDE_RUN_PATH.rst b/Help/envvar/CMAKE_MSVCIDE_RUN_PATH.rst index 77ead4d..5babbe5 100644 --- a/Help/envvar/CMAKE_MSVCIDE_RUN_PATH.rst +++ b/Help/envvar/CMAKE_MSVCIDE_RUN_PATH.rst @@ -1,6 +1,8 @@ CMAKE_MSVCIDE_RUN_PATH ---------------------- +.. versionadded:: 3.10 + .. include:: ENV_VAR.txt Extra PATH locations for custom commands when using diff --git a/Help/envvar/CMAKE_NO_VERBOSE.rst b/Help/envvar/CMAKE_NO_VERBOSE.rst index 149efbd..fe733f8 100644 --- a/Help/envvar/CMAKE_NO_VERBOSE.rst +++ b/Help/envvar/CMAKE_NO_VERBOSE.rst @@ -1,6 +1,8 @@ CMAKE_NO_VERBOSE ---------------- +.. versionadded:: 3.14 + Disables verbose output from CMake when :envvar:`VERBOSE` environment variable is set. diff --git a/Help/envvar/CMAKE_OSX_ARCHITECTURES.rst b/Help/envvar/CMAKE_OSX_ARCHITECTURES.rst index ef7d547..4bfa36a 100644 --- a/Help/envvar/CMAKE_OSX_ARCHITECTURES.rst +++ b/Help/envvar/CMAKE_OSX_ARCHITECTURES.rst @@ -1,6 +1,8 @@ CMAKE_OSX_ARCHITECTURES ----------------------- +.. versionadded:: 3.10 + .. include:: ENV_VAR.txt Target specific architectures for macOS. diff --git a/Help/envvar/CMAKE_PREFIX_PATH.rst b/Help/envvar/CMAKE_PREFIX_PATH.rst index 276fdd6..e5d6aa1 100644 --- a/Help/envvar/CMAKE_PREFIX_PATH.rst +++ b/Help/envvar/CMAKE_PREFIX_PATH.rst @@ -1,6 +1,8 @@ CMAKE_PREFIX_PATH ----------------- +.. versionadded:: 3.18 + .. include:: ENV_VAR.txt The ``CMAKE_PREFIX_PATH`` environment variable may be set to a list of diff --git a/Help/envvar/CSFLAGS.rst b/Help/envvar/CSFLAGS.rst index 8762982..e8c0a11 100644 --- a/Help/envvar/CSFLAGS.rst +++ b/Help/envvar/CSFLAGS.rst @@ -1,6 +1,8 @@ CSFLAGS ------- +.. versionadded:: 3.10 + .. include:: ENV_VAR.txt Preferred executable for compiling ``CSharp`` language files. Will only be diff --git a/Help/envvar/CTEST_INTERACTIVE_DEBUG_MODE.rst b/Help/envvar/CTEST_INTERACTIVE_DEBUG_MODE.rst index e1991b2..b27bc09 100644 --- a/Help/envvar/CTEST_INTERACTIVE_DEBUG_MODE.rst +++ b/Help/envvar/CTEST_INTERACTIVE_DEBUG_MODE.rst @@ -1,6 +1,8 @@ CTEST_INTERACTIVE_DEBUG_MODE ---------------------------- +.. versionadded:: 3.10 + .. include:: ENV_VAR.txt Environment variable that will exist and be set to ``1`` when a test executed diff --git a/Help/envvar/CTEST_OUTPUT_ON_FAILURE.rst b/Help/envvar/CTEST_OUTPUT_ON_FAILURE.rst index d8b4262..9c6bd03 100644 --- a/Help/envvar/CTEST_OUTPUT_ON_FAILURE.rst +++ b/Help/envvar/CTEST_OUTPUT_ON_FAILURE.rst @@ -1,6 +1,8 @@ CTEST_OUTPUT_ON_FAILURE ----------------------- +.. versionadded:: 3.10 + .. include:: ENV_VAR.txt Boolean environment variable that controls if the output should be logged for diff --git a/Help/envvar/CTEST_PARALLEL_LEVEL.rst b/Help/envvar/CTEST_PARALLEL_LEVEL.rst index fd4936e..a21c783 100644 --- a/Help/envvar/CTEST_PARALLEL_LEVEL.rst +++ b/Help/envvar/CTEST_PARALLEL_LEVEL.rst @@ -1,6 +1,8 @@ CTEST_PARALLEL_LEVEL -------------------- +.. versionadded:: 3.10 + .. include:: ENV_VAR.txt Specify the number of tests for CTest to run in parallel. See :manual:`ctest(1)` diff --git a/Help/envvar/CTEST_PROGRESS_OUTPUT.rst b/Help/envvar/CTEST_PROGRESS_OUTPUT.rst index b36a6b8..8c29d7d 100644 --- a/Help/envvar/CTEST_PROGRESS_OUTPUT.rst +++ b/Help/envvar/CTEST_PROGRESS_OUTPUT.rst @@ -1,6 +1,8 @@ CTEST_PROGRESS_OUTPUT --------------------- +.. versionadded:: 3.13 + .. include:: ENV_VAR.txt Boolean environment variable that affects how :manual:`ctest <ctest(1)>` diff --git a/Help/envvar/CTEST_USE_LAUNCHERS_DEFAULT.rst b/Help/envvar/CTEST_USE_LAUNCHERS_DEFAULT.rst index 79dbb79..dffd63d 100644 --- a/Help/envvar/CTEST_USE_LAUNCHERS_DEFAULT.rst +++ b/Help/envvar/CTEST_USE_LAUNCHERS_DEFAULT.rst @@ -1,6 +1,8 @@ CTEST_USE_LAUNCHERS_DEFAULT --------------------------- +.. versionadded:: 3.10 + .. include:: ENV_VAR.txt Initializes the :variable:`CTEST_USE_LAUNCHERS` variable if not already defined. diff --git a/Help/envvar/CUDACXX.rst b/Help/envvar/CUDACXX.rst index 10c0f9d..1affab6 100644 --- a/Help/envvar/CUDACXX.rst +++ b/Help/envvar/CUDACXX.rst @@ -1,6 +1,8 @@ CUDACXX ------- +.. versionadded:: 3.10 + .. include:: ENV_VAR.txt Preferred executable for compiling ``CUDA`` language files. Will only be used by diff --git a/Help/envvar/CUDAFLAGS.rst b/Help/envvar/CUDAFLAGS.rst index 14c5d84..1f1bde5 100644 --- a/Help/envvar/CUDAFLAGS.rst +++ b/Help/envvar/CUDAFLAGS.rst @@ -1,6 +1,8 @@ CUDAFLAGS --------- +.. versionadded:: 3.10 + .. include:: ENV_VAR.txt Default compilation flags to be used when compiling ``CUDA`` files. Will only be diff --git a/Help/envvar/CUDAHOSTCXX.rst b/Help/envvar/CUDAHOSTCXX.rst index b9f65bd..81c1228 100644 --- a/Help/envvar/CUDAHOSTCXX.rst +++ b/Help/envvar/CUDAHOSTCXX.rst @@ -1,6 +1,8 @@ CUDAHOSTCXX ----------- +.. versionadded:: 3.10 + .. include:: ENV_VAR.txt Preferred executable for compiling host code when compiling ``CUDA`` diff --git a/Help/envvar/CXX.rst b/Help/envvar/CXX.rst index d655350..df927d5 100644 --- a/Help/envvar/CXX.rst +++ b/Help/envvar/CXX.rst @@ -1,6 +1,8 @@ CXX --- +.. versionadded:: 3.10 + .. include:: ENV_VAR.txt Preferred executable for compiling ``CXX`` language files. Will only be used by diff --git a/Help/envvar/CXXFLAGS.rst b/Help/envvar/CXXFLAGS.rst index 460a347..a3cef77 100644 --- a/Help/envvar/CXXFLAGS.rst +++ b/Help/envvar/CXXFLAGS.rst @@ -1,6 +1,8 @@ CXXFLAGS -------- +.. versionadded:: 3.10 + .. include:: ENV_VAR.txt Default compilation flags to be used when compiling ``CXX`` (C++) files. Will diff --git a/Help/envvar/DASHBOARD_TEST_FROM_CTEST.rst b/Help/envvar/DASHBOARD_TEST_FROM_CTEST.rst index 6a52d64..7635342 100644 --- a/Help/envvar/DASHBOARD_TEST_FROM_CTEST.rst +++ b/Help/envvar/DASHBOARD_TEST_FROM_CTEST.rst @@ -1,6 +1,8 @@ DASHBOARD_TEST_FROM_CTEST ------------------------- +.. versionadded:: 3.10 + .. include:: ENV_VAR.txt Environment variable that will exist when a test executed by :manual:`ctest(1)` diff --git a/Help/envvar/DESTDIR.rst b/Help/envvar/DESTDIR.rst index d2144ae..ee290f2 100644 --- a/Help/envvar/DESTDIR.rst +++ b/Help/envvar/DESTDIR.rst @@ -1,6 +1,8 @@ DESTDIR ------- +.. versionadded:: 3.12 + .. include:: ENV_VAR.txt On UNIX one can use the ``DESTDIR`` mechanism in order to relocate the diff --git a/Help/envvar/FC.rst b/Help/envvar/FC.rst index d6cabbc..f1c26b0 100644 --- a/Help/envvar/FC.rst +++ b/Help/envvar/FC.rst @@ -1,6 +1,8 @@ FC -- +.. versionadded:: 3.10 + .. include:: ENV_VAR.txt Preferred executable for compiling ``Fortran`` language files. Will only be used diff --git a/Help/envvar/FFLAGS.rst b/Help/envvar/FFLAGS.rst index 53bffb6..4c1f3d2 100644 --- a/Help/envvar/FFLAGS.rst +++ b/Help/envvar/FFLAGS.rst @@ -1,6 +1,8 @@ FFLAGS ------ +.. versionadded:: 3.10 + .. include:: ENV_VAR.txt Default compilation flags to be used when compiling ``Fortran`` files. Will only diff --git a/Help/envvar/LDFLAGS.rst b/Help/envvar/LDFLAGS.rst index 816d6ef..78b34f4 100644 --- a/Help/envvar/LDFLAGS.rst +++ b/Help/envvar/LDFLAGS.rst @@ -1,6 +1,8 @@ LDFLAGS ------- +.. versionadded:: 3.10 + .. include:: ENV_VAR.txt Will only be used by CMake on the first configuration to determine the default diff --git a/Help/envvar/MACOSX_DEPLOYMENT_TARGET.rst b/Help/envvar/MACOSX_DEPLOYMENT_TARGET.rst index 662bd03..1558704 100644 --- a/Help/envvar/MACOSX_DEPLOYMENT_TARGET.rst +++ b/Help/envvar/MACOSX_DEPLOYMENT_TARGET.rst @@ -1,6 +1,8 @@ MACOSX_DEPLOYMENT_TARGET ------------------------ +.. versionadded:: 3.10 + .. include:: ENV_VAR.txt Specify the minimum version of macOS on which the target binaries are diff --git a/Help/envvar/OBJC.rst b/Help/envvar/OBJC.rst index 30c0d13..2d95806 100644 --- a/Help/envvar/OBJC.rst +++ b/Help/envvar/OBJC.rst @@ -1,6 +1,8 @@ OBJC ---- +.. versionadded:: 3.16.7 + .. include:: ENV_VAR.txt Preferred executable for compiling ``OBJC`` language files. Will only be used diff --git a/Help/envvar/OBJCXX.rst b/Help/envvar/OBJCXX.rst index a72f7e7..71286d9 100644 --- a/Help/envvar/OBJCXX.rst +++ b/Help/envvar/OBJCXX.rst @@ -1,6 +1,8 @@ OBJCXX ------ +.. versionadded:: 3.16.7 + .. include:: ENV_VAR.txt Preferred executable for compiling ``OBJCXX`` language files. Will only be used diff --git a/Help/envvar/PackageName_ROOT.rst b/Help/envvar/PackageName_ROOT.rst index 82b0a06..fc2a1d5 100644 --- a/Help/envvar/PackageName_ROOT.rst +++ b/Help/envvar/PackageName_ROOT.rst @@ -1,6 +1,8 @@ <PackageName>_ROOT ------------------ +.. versionadded:: 3.12.1 + .. include:: ENV_VAR.txt Calls to :command:`find_package(<PackageName>)` will search in prefixes diff --git a/Help/envvar/RC.rst b/Help/envvar/RC.rst index 557520e..3ec1788 100644 --- a/Help/envvar/RC.rst +++ b/Help/envvar/RC.rst @@ -1,6 +1,8 @@ RC -- +.. versionadded:: 3.10 + .. include:: ENV_VAR.txt Preferred executable for compiling ``resource`` files. Will only be used by CMake diff --git a/Help/envvar/RCFLAGS.rst b/Help/envvar/RCFLAGS.rst index bc43cb2..f33a9a8 100644 --- a/Help/envvar/RCFLAGS.rst +++ b/Help/envvar/RCFLAGS.rst @@ -1,6 +1,8 @@ RCFLAGS ------- +.. versionadded:: 3.10 + .. include:: ENV_VAR.txt Default compilation flags to be used when compiling ``resource`` files. Will diff --git a/Help/envvar/SWIFTC.rst b/Help/envvar/SWIFTC.rst index b12e51d..ce01ca2 100644 --- a/Help/envvar/SWIFTC.rst +++ b/Help/envvar/SWIFTC.rst @@ -1,6 +1,8 @@ SWIFTC ------ +.. versionadded:: 3.15 + .. include:: ENV_VAR.txt Preferred executable for compiling ``Swift`` language files. Will only be used by diff --git a/Help/envvar/VERBOSE.rst b/Help/envvar/VERBOSE.rst index 2d775a5..5911951 100644 --- a/Help/envvar/VERBOSE.rst +++ b/Help/envvar/VERBOSE.rst @@ -1,6 +1,8 @@ VERBOSE ------- +.. versionadded:: 3.14 + Activates verbose output from CMake and your build tools of choice when you start to actually build your project. diff --git a/Help/generator/Green Hills MULTI.rst b/Help/generator/Green Hills MULTI.rst index dffc679..2246699 100644 --- a/Help/generator/Green Hills MULTI.rst +++ b/Help/generator/Green Hills MULTI.rst @@ -1,6 +1,8 @@ Green Hills MULTI ----------------- +.. versionadded:: 3.3 + Generates Green Hills MULTI project files (experimental, work-in-progress). The buildsystem has predetermined build-configuration settings that can be controlled diff --git a/Help/generator/Ninja Multi-Config.rst b/Help/generator/Ninja Multi-Config.rst index f480eb8..e6c7a1c 100644 --- a/Help/generator/Ninja Multi-Config.rst +++ b/Help/generator/Ninja Multi-Config.rst @@ -1,6 +1,8 @@ Ninja Multi-Config ------------------ +.. versionadded:: 3.17 + Generates multiple ``build-<Config>.ninja`` files. This generator is very much like the :generator:`Ninja` generator, but with diff --git a/Help/generator/Visual Studio 14 2015.rst b/Help/generator/Visual Studio 14 2015.rst index 7383f7a..401845d 100644 --- a/Help/generator/Visual Studio 14 2015.rst +++ b/Help/generator/Visual Studio 14 2015.rst @@ -1,6 +1,8 @@ Visual Studio 14 2015 --------------------- +.. versionadded:: 3.1 + Generates Visual Studio 14 (VS 2015) project files. Project Types diff --git a/Help/generator/Visual Studio 15 2017.rst b/Help/generator/Visual Studio 15 2017.rst index 7e6f0fb..e7baaad 100644 --- a/Help/generator/Visual Studio 15 2017.rst +++ b/Help/generator/Visual Studio 15 2017.rst @@ -1,6 +1,8 @@ Visual Studio 15 2017 --------------------- +.. versionadded:: 3.7.1 + Generates Visual Studio 15 (VS 2017) project files. Project Types diff --git a/Help/generator/Visual Studio 16 2019.rst b/Help/generator/Visual Studio 16 2019.rst index 4aec7f7..3da8091 100644 --- a/Help/generator/Visual Studio 16 2019.rst +++ b/Help/generator/Visual Studio 16 2019.rst @@ -1,6 +1,8 @@ Visual Studio 16 2019 --------------------- +.. versionadded:: 3.14 + Generates Visual Studio 16 (VS 2019) project files. Project Types diff --git a/Help/manual/cmake-file-api.7.rst b/Help/manual/cmake-file-api.7.rst index b54859c..34edc56 100644 --- a/Help/manual/cmake-file-api.7.rst +++ b/Help/manual/cmake-file-api.7.rst @@ -425,7 +425,7 @@ Version 1 does not exist to avoid confusion with that from { "kind": "codemodel", - "version": { "major": 2, "minor": 0 }, + "version": { "major": 2, "minor": 2 }, "paths": { "source": "/path/to/top-level-source-dir", "build": "/path/to/top-level-build-dir" @@ -887,6 +887,8 @@ with members: ``standard`` String representing the language standard. + This field was added in codemodel version 2.2. + ``compileCommandFragments`` Optional member that is present when fragments of the compiler command line invocation are available. The value is a JSON array of entries @@ -933,6 +935,8 @@ with members: unsigned integer 0-based index into the ``backtraceGraph`` member's ``nodes`` array. + This field was added in codemodel version 2.1. + ``defines`` Optional member that is present when there are preprocessor definitions. The value is a JSON array with an entry for each definition. Each diff --git a/Help/manual/cmake.1.rst b/Help/manual/cmake.1.rst index 72ecfc7..d5fe34c 100644 --- a/Help/manual/cmake.1.rst +++ b/Help/manual/cmake.1.rst @@ -341,9 +341,9 @@ Options Print a warning when an uninitialized variable is used. ``--warn-unused-vars`` - Warn about unused variables. - - Find variables that are declared or set, but not used. + Does nothing. In CMake versions 3.2 and below this enabled warnings about + unused variables. In CMake versions 3.3 through 3.18 the option was broken. + In CMake 3.19 and above the option has been removed. ``--no-warn-unused-cli`` Don't warn about command line options. diff --git a/Help/manual/ctest.1.rst b/Help/manual/ctest.1.rst index 5f953b3..d3ab75a 100644 --- a/Help/manual/ctest.1.rst +++ b/Help/manual/ctest.1.rst @@ -1410,9 +1410,16 @@ Resource Specification File The resource specification file is a JSON file which is passed to CTest, either on the :manual:`ctest(1)` command line as ``--resource-spec-file``, or as the -``RESOURCE_SPEC_FILE`` argument of :command:`ctest_test`. The resource -specification file must be a JSON object. All examples in this document assume -the following resource specification file: +``RESOURCE_SPEC_FILE`` argument of :command:`ctest_test`. If a dashboard script +is used and ``RESOURCE_SPEC_FILE`` is not specified, the value of +:variable:`CTEST_RESOURCE_SPEC_FILE` in the dashboard script is used instead. +If ``--resource-spec-file``, ``RESOURCE_SPEC_FILE``, and +:variable:`CTEST_RESOURCE_SPEC_FILE` in the dashboard script are not specified, +the value of :variable:`CTEST_RESOURCE_SPEC_FILE` in the CMake build is used +instead. If none of these are specified, no resource spec file is used. + +The resource specification file must be a JSON object. All examples in this +document assume the following resource specification file: .. code-block:: json diff --git a/Help/module/CPackArchive.rst b/Help/module/CPackArchive.rst index 8616098..f5d6da4 100644 --- a/Help/module/CPackArchive.rst +++ b/Help/module/CPackArchive.rst @@ -1,4 +1,6 @@ CPackArchive ------------ +.. versionadded:: 3.9 + The documentation for the CPack Archive generator has moved here: :cpack_gen:`CPack Archive Generator` diff --git a/Help/module/CPackFreeBSD.rst b/Help/module/CPackFreeBSD.rst index 69701b8..7ae6164 100644 --- a/Help/module/CPackFreeBSD.rst +++ b/Help/module/CPackFreeBSD.rst @@ -1,4 +1,6 @@ CPackFreeBSD ------------ +.. versionadded:: 3.10 + The documentation for the CPack FreeBSD generator has moved here: :cpack_gen:`CPack FreeBSD Generator` diff --git a/Help/module/CPackNuGet.rst b/Help/module/CPackNuGet.rst index 4f39b3a..bbed7f9 100644 --- a/Help/module/CPackNuGet.rst +++ b/Help/module/CPackNuGet.rst @@ -1,4 +1,6 @@ CPackNuGet ---------- +.. versionadded:: 3.12 + The documentation for the CPack NuGet generator has moved here: :cpack_gen:`CPack NuGet Generator` diff --git a/Help/module/CPackProductBuild.rst b/Help/module/CPackProductBuild.rst index 8cd9198..e12cd32 100644 --- a/Help/module/CPackProductBuild.rst +++ b/Help/module/CPackProductBuild.rst @@ -1,4 +1,6 @@ CPackProductBuild ----------------- +.. versionadded:: 3.7 + The documentation for the CPack productbuild generator has moved here: :cpack_gen:`CPack productbuild Generator` diff --git a/Help/policy/CMP0051.rst b/Help/policy/CMP0051.rst index 6b679e5..053bc97 100644 --- a/Help/policy/CMP0051.rst +++ b/Help/policy/CMP0051.rst @@ -1,6 +1,8 @@ CMP0051 ------- +.. versionadded:: 3.1 + List TARGET_OBJECTS in SOURCES target property. CMake 3.0 and lower did not include the ``TARGET_OBJECTS`` diff --git a/Help/policy/CMP0052.rst b/Help/policy/CMP0052.rst index ee2e6e8..c75f9ab 100644 --- a/Help/policy/CMP0052.rst +++ b/Help/policy/CMP0052.rst @@ -1,6 +1,8 @@ CMP0052 ------- +.. versionadded:: 3.1 + Reject source and build dirs in installed :prop_tgt:`INTERFACE_INCLUDE_DIRECTORIES`. diff --git a/Help/policy/CMP0053.rst b/Help/policy/CMP0053.rst index 032b3e5..9b18b2d 100644 --- a/Help/policy/CMP0053.rst +++ b/Help/policy/CMP0053.rst @@ -1,6 +1,8 @@ CMP0053 ------- +.. versionadded:: 3.1 + Simplify variable reference and escape sequence evaluation. CMake 3.1 introduced a much faster implementation of evaluation of the diff --git a/Help/policy/CMP0054.rst b/Help/policy/CMP0054.rst index 1e000a6..c7ae019 100644 --- a/Help/policy/CMP0054.rst +++ b/Help/policy/CMP0054.rst @@ -1,6 +1,8 @@ CMP0054 ------- +.. versionadded:: 3.1 + Only interpret :command:`if` arguments as variables or keywords when unquoted. CMake 3.1 and above no longer implicitly dereference variables or diff --git a/Help/policy/CMP0055.rst b/Help/policy/CMP0055.rst index bc5ad08..47cac8e 100644 --- a/Help/policy/CMP0055.rst +++ b/Help/policy/CMP0055.rst @@ -1,6 +1,8 @@ CMP0055 ------- +.. versionadded:: 3.2 + Strict checking for the :command:`break` command. CMake 3.1 and lower allowed calls to the :command:`break` command diff --git a/Help/policy/CMP0056.rst b/Help/policy/CMP0056.rst index 834da84..628a6a1 100644 --- a/Help/policy/CMP0056.rst +++ b/Help/policy/CMP0056.rst @@ -1,6 +1,8 @@ CMP0056 ------- +.. versionadded:: 3.2 + Honor link flags in :command:`try_compile` source-file signature. The :command:`try_compile` command source-file signature generates a diff --git a/Help/policy/CMP0057.rst b/Help/policy/CMP0057.rst index 83db186..76aebfb 100644 --- a/Help/policy/CMP0057.rst +++ b/Help/policy/CMP0057.rst @@ -1,6 +1,8 @@ CMP0057 ------- +.. versionadded:: 3.3 + Support new :command:`if` IN_LIST operator. CMake 3.3 adds support for the new IN_LIST operator. diff --git a/Help/policy/CMP0058.rst b/Help/policy/CMP0058.rst index 05efd48..06cc74b 100644 --- a/Help/policy/CMP0058.rst +++ b/Help/policy/CMP0058.rst @@ -1,6 +1,8 @@ CMP0058 ------- +.. versionadded:: 3.3 + Ninja requires custom command byproducts to be explicit. When an intermediate file generated during the build is consumed diff --git a/Help/policy/CMP0059.rst b/Help/policy/CMP0059.rst index bce982e..6317d05 100644 --- a/Help/policy/CMP0059.rst +++ b/Help/policy/CMP0059.rst @@ -1,6 +1,8 @@ CMP0059 ------- +.. versionadded:: 3.3 + Do not treat ``DEFINITIONS`` as a built-in directory property. CMake 3.3 and above no longer make a list of definitions available through diff --git a/Help/policy/CMP0060.rst b/Help/policy/CMP0060.rst index 98ac2cf..09257d1 100644 --- a/Help/policy/CMP0060.rst +++ b/Help/policy/CMP0060.rst @@ -1,6 +1,8 @@ CMP0060 ------- +.. versionadded:: 3.3 + Link libraries by full path even in implicit directories. Policy :policy:`CMP0003` was introduced with the intention of always diff --git a/Help/policy/CMP0061.rst b/Help/policy/CMP0061.rst index 57e4161..aca551d 100644 --- a/Help/policy/CMP0061.rst +++ b/Help/policy/CMP0061.rst @@ -1,6 +1,8 @@ CMP0061 ------- +.. versionadded:: 3.3 + CTest does not by default tell ``make`` to ignore errors (``-i``). The :command:`ctest_build` and :command:`build_command` commands no diff --git a/Help/policy/CMP0062.rst b/Help/policy/CMP0062.rst index 0db7aaf..01e93f0 100644 --- a/Help/policy/CMP0062.rst +++ b/Help/policy/CMP0062.rst @@ -1,6 +1,8 @@ CMP0062 ------- +.. versionadded:: 3.3 + Disallow :command:`install` of :command:`export` result. The :command:`export()` command generates a file containing diff --git a/Help/policy/CMP0063.rst b/Help/policy/CMP0063.rst index d736d06..fec3ad8 100644 --- a/Help/policy/CMP0063.rst +++ b/Help/policy/CMP0063.rst @@ -1,6 +1,8 @@ CMP0063 ------- +.. versionadded:: 3.3 + Honor visibility properties for all target types. The :prop_tgt:`<LANG>_VISIBILITY_PRESET` and diff --git a/Help/policy/CMP0064.rst b/Help/policy/CMP0064.rst index e9a061b..0c20c13 100644 --- a/Help/policy/CMP0064.rst +++ b/Help/policy/CMP0064.rst @@ -1,6 +1,8 @@ CMP0064 ------- +.. versionadded:: 3.4 + Recognize ``TEST`` as a operator for the :command:`if` command. The ``TEST`` operator was added to the :command:`if` command to determine if a diff --git a/Help/policy/CMP0065.rst b/Help/policy/CMP0065.rst index b820aad..8968b91 100644 --- a/Help/policy/CMP0065.rst +++ b/Help/policy/CMP0065.rst @@ -1,6 +1,8 @@ CMP0065 ------- +.. versionadded:: 3.4 + Do not add flags to export symbols from executables without the :prop_tgt:`ENABLE_EXPORTS` target property. diff --git a/Help/policy/CMP0066.rst b/Help/policy/CMP0066.rst index e110ae1..b08430f 100644 --- a/Help/policy/CMP0066.rst +++ b/Help/policy/CMP0066.rst @@ -1,6 +1,8 @@ CMP0066 ------- +.. versionadded:: 3.7 + Honor per-config flags in :command:`try_compile` source-file signature. The source file signature of the :command:`try_compile` command uses the value diff --git a/Help/policy/CMP0067.rst b/Help/policy/CMP0067.rst index f802787..8358bb2 100644 --- a/Help/policy/CMP0067.rst +++ b/Help/policy/CMP0067.rst @@ -1,6 +1,8 @@ CMP0067 ------- +.. versionadded:: 3.8 + Honor language standard in :command:`try_compile` source-file signature. The :command:`try_compile` source file signature is intended to allow diff --git a/Help/policy/CMP0068.rst b/Help/policy/CMP0068.rst index 978a6e3..5d2a4b1 100644 --- a/Help/policy/CMP0068.rst +++ b/Help/policy/CMP0068.rst @@ -1,6 +1,8 @@ CMP0068 ------- +.. versionadded:: 3.9 + ``RPATH`` settings on macOS do not affect ``install_name``. CMake 3.9 and newer remove any effect the following settings may have on the diff --git a/Help/policy/CMP0069.rst b/Help/policy/CMP0069.rst index 0d5ddfd..eafac45 100644 --- a/Help/policy/CMP0069.rst +++ b/Help/policy/CMP0069.rst @@ -1,6 +1,8 @@ CMP0069 ------- +.. versionadded:: 3.9 + :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` is enforced when enabled. CMake 3.9 and newer prefer to add IPO flags whenever the diff --git a/Help/policy/CMP0070.rst b/Help/policy/CMP0070.rst index 0fb3617..c880d1f 100644 --- a/Help/policy/CMP0070.rst +++ b/Help/policy/CMP0070.rst @@ -1,6 +1,8 @@ CMP0070 ------- +.. versionadded:: 3.10 + Define :command:`file(GENERATE)` behavior for relative paths. CMake 3.10 and newer define that relative paths given to ``INPUT`` and diff --git a/Help/policy/CMP0071.rst b/Help/policy/CMP0071.rst index 855ecf0..700d3b0 100644 --- a/Help/policy/CMP0071.rst +++ b/Help/policy/CMP0071.rst @@ -1,6 +1,8 @@ CMP0071 ------- +.. versionadded:: 3.10 + Let :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC` process :prop_sf:`GENERATED` files. diff --git a/Help/policy/CMP0072.rst b/Help/policy/CMP0072.rst index 3abbad7..1dcdfef 100644 --- a/Help/policy/CMP0072.rst +++ b/Help/policy/CMP0072.rst @@ -1,6 +1,8 @@ CMP0072 ------- +.. versionadded:: 3.11 + :module:`FindOpenGL` prefers GLVND by default when available. The :module:`FindOpenGL` module provides an ``OpenGL::GL`` target and an diff --git a/Help/policy/CMP0073.rst b/Help/policy/CMP0073.rst index 9bfa0e9..8f0345c 100644 --- a/Help/policy/CMP0073.rst +++ b/Help/policy/CMP0073.rst @@ -1,6 +1,8 @@ CMP0073 ------- +.. versionadded:: 3.12 + Do not produce legacy ``_LIB_DEPENDS`` cache entries. Ancient CMake versions once used ``<tgt>_LIB_DEPENDS`` cache entries to diff --git a/Help/policy/CMP0074.rst b/Help/policy/CMP0074.rst index 63ebf7b..863bbb2 100644 --- a/Help/policy/CMP0074.rst +++ b/Help/policy/CMP0074.rst @@ -1,6 +1,8 @@ CMP0074 ------- +.. versionadded:: 3.12 + :command:`find_package` uses ``<PackageName>_ROOT`` variables. In CMake 3.12 and above the :command:`find_package(<PackageName>)` command now diff --git a/Help/policy/CMP0075.rst b/Help/policy/CMP0075.rst index aa5c3f7..4213782 100644 --- a/Help/policy/CMP0075.rst +++ b/Help/policy/CMP0075.rst @@ -1,6 +1,8 @@ CMP0075 ------- +.. versionadded:: 3.12 + Include file check macros honor ``CMAKE_REQUIRED_LIBRARIES``. In CMake 3.12 and above, the diff --git a/Help/policy/CMP0076.rst b/Help/policy/CMP0076.rst index dd25f80..edca742 100644 --- a/Help/policy/CMP0076.rst +++ b/Help/policy/CMP0076.rst @@ -1,6 +1,8 @@ CMP0076 ------- +.. versionadded:: 3.13 + The :command:`target_sources` command converts relative paths to absolute. In CMake 3.13 and above, the :command:`target_sources` command now converts diff --git a/Help/policy/CMP0077.rst b/Help/policy/CMP0077.rst index 44797b6..174cde9 100644 --- a/Help/policy/CMP0077.rst +++ b/Help/policy/CMP0077.rst @@ -1,6 +1,8 @@ CMP0077 ------- +.. versionadded:: 3.13 + :command:`option` honors normal variables. The :command:`option` command is typically used to create a cache entry diff --git a/Help/policy/CMP0078.rst b/Help/policy/CMP0078.rst index 2e97934..89fdb0b 100644 --- a/Help/policy/CMP0078.rst +++ b/Help/policy/CMP0078.rst @@ -1,6 +1,8 @@ CMP0078 ------- +.. versionadded:: 3.13 + :module:`UseSWIG` generates standard target names. Starting with CMake 3.13, :module:`UseSWIG` generates now standard target diff --git a/Help/policy/CMP0079.rst b/Help/policy/CMP0079.rst index 0244d6c..01aa08d 100644 --- a/Help/policy/CMP0079.rst +++ b/Help/policy/CMP0079.rst @@ -1,6 +1,8 @@ CMP0079 ------- +.. versionadded:: 3.13 + :command:`target_link_libraries` allows use with targets in other directories. Prior to CMake 3.13 the :command:`target_link_libraries` command did not diff --git a/Help/policy/CMP0080.rst b/Help/policy/CMP0080.rst index 5ce9591..789efea 100644 --- a/Help/policy/CMP0080.rst +++ b/Help/policy/CMP0080.rst @@ -1,6 +1,8 @@ CMP0080 ------- +.. versionadded:: 3.13 + :module:`BundleUtilities` cannot be included at configure time. The macros provided by :module:`BundleUtilities` are intended to be invoked diff --git a/Help/policy/CMP0081.rst b/Help/policy/CMP0081.rst index d3b2872..d1573dd 100644 --- a/Help/policy/CMP0081.rst +++ b/Help/policy/CMP0081.rst @@ -1,6 +1,8 @@ CMP0081 ------- +.. versionadded:: 3.13 + Relative paths not allowed in :prop_tgt:`LINK_DIRECTORIES` target property. CMake 3.12 and lower allowed the :prop_dir:`LINK_DIRECTORIES` directory diff --git a/Help/policy/CMP0082.rst b/Help/policy/CMP0082.rst index d887616..25c9580 100644 --- a/Help/policy/CMP0082.rst +++ b/Help/policy/CMP0082.rst @@ -1,6 +1,8 @@ CMP0082 ------- +.. versionadded:: 3.14 + Install rules from :command:`add_subdirectory` calls are interleaved with those in caller. diff --git a/Help/policy/CMP0083.rst b/Help/policy/CMP0083.rst index e0b09cf..7518ee3 100644 --- a/Help/policy/CMP0083.rst +++ b/Help/policy/CMP0083.rst @@ -1,6 +1,8 @@ CMP0083 ------- +.. versionadded:: 3.14 + To control generation of Position Independent Executable (``PIE``) or not, some flags are required at link time. diff --git a/Help/policy/CMP0084.rst b/Help/policy/CMP0084.rst index 713d295..9547701 100644 --- a/Help/policy/CMP0084.rst +++ b/Help/policy/CMP0084.rst @@ -1,6 +1,8 @@ CMP0084 ------- +.. versionadded:: 3.14 + The :module:`FindQt` module does not exist for :command:`find_package`. The existence of :module:`FindQt` means that for Qt upstream to provide diff --git a/Help/policy/CMP0085.rst b/Help/policy/CMP0085.rst index d9ec9a2..d90c72f 100644 --- a/Help/policy/CMP0085.rst +++ b/Help/policy/CMP0085.rst @@ -1,6 +1,8 @@ CMP0085 ------- +.. versionadded:: 3.14 + ``$<IN_LIST:...>`` handles empty list items. In CMake 3.13 and lower, the ``$<IN_LIST:...>`` generator expression always diff --git a/Help/policy/CMP0086.rst b/Help/policy/CMP0086.rst index 4a9e8b8..725b502 100644 --- a/Help/policy/CMP0086.rst +++ b/Help/policy/CMP0086.rst @@ -1,6 +1,8 @@ CMP0086 ------- +.. versionadded:: 3.14 + :module:`UseSWIG` honors ``SWIG_MODULE_NAME`` via ``-module`` flag. Starting with CMake 3.14, :module:`UseSWIG` passes option diff --git a/Help/policy/CMP0087.rst b/Help/policy/CMP0087.rst index 4c45b99..4a65506 100644 --- a/Help/policy/CMP0087.rst +++ b/Help/policy/CMP0087.rst @@ -1,6 +1,8 @@ CMP0087 ------- +.. versionadded:: 3.14 + :command:`install(CODE)` and :command:`install(SCRIPT)` support generator expressions. diff --git a/Help/policy/CMP0088.rst b/Help/policy/CMP0088.rst index 82c04ef..1840a58 100644 --- a/Help/policy/CMP0088.rst +++ b/Help/policy/CMP0088.rst @@ -1,6 +1,8 @@ CMP0088 ------- +.. versionadded:: 3.14 + :module:`FindBISON` runs bison in :variable:`CMAKE_CURRENT_BINARY_DIR` when executing. diff --git a/Help/policy/CMP0089.rst b/Help/policy/CMP0089.rst index 029de55..e3fc77a 100644 --- a/Help/policy/CMP0089.rst +++ b/Help/policy/CMP0089.rst @@ -1,6 +1,8 @@ CMP0089 ------- +.. versionadded:: 3.15 + Compiler id for IBM Clang-based XL compilers is now ``XLClang``. CMake 3.15 and above recognize that IBM's Clang-based XL compilers diff --git a/Help/policy/CMP0090.rst b/Help/policy/CMP0090.rst index 720c17c..58dd999 100644 --- a/Help/policy/CMP0090.rst +++ b/Help/policy/CMP0090.rst @@ -1,6 +1,8 @@ CMP0090 ------- +.. versionadded:: 3.15 + :command:`export(PACKAGE)` does not populate package registry by default. In CMake 3.14 and below the :command:`export(PACKAGE)` command populated the diff --git a/Help/policy/CMP0091.rst b/Help/policy/CMP0091.rst index 1a5878a..ffc0ade 100644 --- a/Help/policy/CMP0091.rst +++ b/Help/policy/CMP0091.rst @@ -1,6 +1,8 @@ CMP0091 ------- +.. versionadded:: 3.15 + MSVC runtime library flags are selected by an abstraction. Compilers targeting the MSVC ABI have flags to select the MSVC runtime library. diff --git a/Help/policy/CMP0092.rst b/Help/policy/CMP0092.rst index 8d3a288..66e3f3de 100644 --- a/Help/policy/CMP0092.rst +++ b/Help/policy/CMP0092.rst @@ -1,6 +1,8 @@ CMP0092 ------- +.. versionadded:: 3.15 + MSVC warning flags are not in :variable:`CMAKE_<LANG>_FLAGS` by default. When using MSVC-like compilers in CMake 3.14 and below, warning flags diff --git a/Help/policy/CMP0093.rst b/Help/policy/CMP0093.rst index 0ffc493..4a9955f 100644 --- a/Help/policy/CMP0093.rst +++ b/Help/policy/CMP0093.rst @@ -1,6 +1,8 @@ CMP0093 ------- +.. versionadded:: 3.15 + :module:`FindBoost` reports ``Boost_VERSION`` in ``x.y.z`` format. In CMake 3.14 and below the module would report the Boost version diff --git a/Help/policy/CMP0094.rst b/Help/policy/CMP0094.rst index 836f30f..1b57658 100644 --- a/Help/policy/CMP0094.rst +++ b/Help/policy/CMP0094.rst @@ -1,6 +1,8 @@ CMP0094 ------- +.. versionadded:: 3.15 + Modules :module:`FindPython3`, :module:`FindPython2` and :module:`FindPython` use ``LOCATION`` for lookup strategy. diff --git a/Help/policy/CMP0095.rst b/Help/policy/CMP0095.rst index 4c56a05..ebdbab6 100644 --- a/Help/policy/CMP0095.rst +++ b/Help/policy/CMP0095.rst @@ -1,6 +1,8 @@ CMP0095 ------- +.. versionadded:: 3.16 + ``RPATH`` entries are properly escaped in the intermediary CMake install script. In CMake 3.15 and earlier, ``RPATH`` entries set via diff --git a/Help/policy/CMP0096.rst b/Help/policy/CMP0096.rst index 8eaf0f9..8fd6f72 100644 --- a/Help/policy/CMP0096.rst +++ b/Help/policy/CMP0096.rst @@ -1,6 +1,8 @@ CMP0096 ------- +.. versionadded:: 3.16 + The :command:`project` command preserves leading zeros in version components. When a ``VERSION <major>[.<minor>[.<patch>[.<tweak>]]]]`` argument is given diff --git a/Help/policy/CMP0097.rst b/Help/policy/CMP0097.rst index 4840aa6..2240874 100644 --- a/Help/policy/CMP0097.rst +++ b/Help/policy/CMP0097.rst @@ -1,6 +1,8 @@ CMP0097 ------- +.. versionadded:: 3.16 + :command:`ExternalProject_Add` with ``GIT_SUBMODULES ""`` initializes no submodules. diff --git a/Help/policy/CMP0098.rst b/Help/policy/CMP0098.rst index 6d1443b..e793380 100644 --- a/Help/policy/CMP0098.rst +++ b/Help/policy/CMP0098.rst @@ -1,6 +1,8 @@ CMP0098 ------- +.. versionadded:: 3.17 + :module:`FindFLEX` runs ``flex`` in directory :variable:`CMAKE_CURRENT_BINARY_DIR` when executing. diff --git a/Help/policy/CMP0099.rst b/Help/policy/CMP0099.rst index c897e7b..0c64949 100644 --- a/Help/policy/CMP0099.rst +++ b/Help/policy/CMP0099.rst @@ -1,6 +1,8 @@ CMP0099 ------- +.. versionadded:: 3.17 + Target link properties :prop_tgt:`INTERFACE_LINK_OPTIONS`, :prop_tgt:`INTERFACE_LINK_DIRECTORIES` and :prop_tgt:`INTERFACE_LINK_DEPENDS` are now transitive over private dependencies of static libraries. diff --git a/Help/policy/CMP0100.rst b/Help/policy/CMP0100.rst index b24d013..730fa82 100644 --- a/Help/policy/CMP0100.rst +++ b/Help/policy/CMP0100.rst @@ -1,6 +1,8 @@ CMP0100 ------- +.. versionadded:: 3.17 + Let :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC` process header files that end with a ``.hh`` extension. diff --git a/Help/policy/CMP0101.rst b/Help/policy/CMP0101.rst index 9941acf..f02bccc 100644 --- a/Help/policy/CMP0101.rst +++ b/Help/policy/CMP0101.rst @@ -1,6 +1,8 @@ CMP0101 ------- +.. versionadded:: 3.17 + :command:`target_compile_options` now honors ``BEFORE`` keyword in all scopes. In CMake 3.16 and below the :command:`target_compile_options` ignores the diff --git a/Help/policy/CMP0102.rst b/Help/policy/CMP0102.rst index 9859006..78b5584 100644 --- a/Help/policy/CMP0102.rst +++ b/Help/policy/CMP0102.rst @@ -1,6 +1,8 @@ CMP0102 ------- +.. versionadded:: 3.17 + The :command:`mark_as_advanced` command no longer creates a cache entry if one does not already exist. diff --git a/Help/policy/CMP0103.rst b/Help/policy/CMP0103.rst index 223e0cb..b5f44d1 100644 --- a/Help/policy/CMP0103.rst +++ b/Help/policy/CMP0103.rst @@ -1,6 +1,8 @@ CMP0103 ------- +.. versionadded:: 3.18 + Multiple calls to :command:`export` command with same ``FILE`` without ``APPEND`` is no longer allowed. diff --git a/Help/policy/CMP0104.rst b/Help/policy/CMP0104.rst index 8516716..7c7a16e 100644 --- a/Help/policy/CMP0104.rst +++ b/Help/policy/CMP0104.rst @@ -1,6 +1,8 @@ CMP0104 ------- +.. versionadded:: 3.18 + Initialize :variable:`CMAKE_CUDA_ARCHITECTURES` when :variable:`CMAKE_CUDA_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` is ``NVIDIA``. Raise an error if :prop_tgt:`CUDA_ARCHITECTURES` is empty. diff --git a/Help/policy/CMP0105.rst b/Help/policy/CMP0105.rst index 19a1edb..097a59a 100644 --- a/Help/policy/CMP0105.rst +++ b/Help/policy/CMP0105.rst @@ -1,6 +1,8 @@ CMP0105 ------- +.. versionadded:: 3.18 + :prop_tgt:`LINK_OPTIONS` and :prop_tgt:`INTERFACE_LINK_OPTIONS` target properties are now used for the device link step. diff --git a/Help/policy/CMP0106.rst b/Help/policy/CMP0106.rst index e34d15a..18a6635 100644 --- a/Help/policy/CMP0106.rst +++ b/Help/policy/CMP0106.rst @@ -1,6 +1,8 @@ CMP0106 ------- +.. versionadded:: 3.18 + The :module:`Documentation` module is removed. The :module:`Documentation` was added as a support mechanism for the VTK diff --git a/Help/policy/CMP0107.rst b/Help/policy/CMP0107.rst index 111bef7..da5ae06 100644 --- a/Help/policy/CMP0107.rst +++ b/Help/policy/CMP0107.rst @@ -1,6 +1,8 @@ CMP0107 ------- +.. versionadded:: 3.18 + It is not allowed to create an ``ALIAS`` target with the same name as an another target. diff --git a/Help/policy/CMP0108.rst b/Help/policy/CMP0108.rst index 0d54cfa..4d1091d 100644 --- a/Help/policy/CMP0108.rst +++ b/Help/policy/CMP0108.rst @@ -1,6 +1,8 @@ CMP0108 ------- +.. versionadded:: 3.18 + A target is not allowed to link to itself even through an ``ALIAS`` target. In CMake 3.17 and below, a target can link to a target aliased to itself. diff --git a/Help/policy/CMP0109.rst b/Help/policy/CMP0109.rst index 7542c8f..f86287f 100644 --- a/Help/policy/CMP0109.rst +++ b/Help/policy/CMP0109.rst @@ -1,6 +1,8 @@ CMP0109 ------- +.. versionadded:: 3.19 + :command:`find_program` requires permission to execute but not to read. In CMake 3.18 and below, the :command:`find_program` command on UNIX diff --git a/Help/prop_dir/ADDITIONAL_CLEAN_FILES.rst b/Help/prop_dir/ADDITIONAL_CLEAN_FILES.rst index 051d22a..6097d14 100644 --- a/Help/prop_dir/ADDITIONAL_CLEAN_FILES.rst +++ b/Help/prop_dir/ADDITIONAL_CLEAN_FILES.rst @@ -1,6 +1,8 @@ ADDITIONAL_CLEAN_FILES ---------------------- +.. versionadded:: 3.15 + A :ref:`;-list <CMake Language Lists>` of files or directories that will be removed as a part of the global ``clean`` target. It is useful for specifying generated files or directories that are used by multiple targets diff --git a/Help/prop_dir/BINARY_DIR.rst b/Help/prop_dir/BINARY_DIR.rst index 597c79a..fcf9d17 100644 --- a/Help/prop_dir/BINARY_DIR.rst +++ b/Help/prop_dir/BINARY_DIR.rst @@ -1,5 +1,7 @@ BINARY_DIR ---------- +.. versionadded:: 3.7 + This read-only directory property reports absolute path to the binary directory corresponding to the source on which it is read. diff --git a/Help/prop_dir/BUILDSYSTEM_TARGETS.rst b/Help/prop_dir/BUILDSYSTEM_TARGETS.rst index 04bb56e..5c5893d 100644 --- a/Help/prop_dir/BUILDSYSTEM_TARGETS.rst +++ b/Help/prop_dir/BUILDSYSTEM_TARGETS.rst @@ -1,6 +1,8 @@ BUILDSYSTEM_TARGETS ------------------- +.. versionadded:: 3.7 + This read-only directory property contains a :ref:`semicolon-separated list <CMake Language Lists>` of buildsystem targets added in the directory by calls to the :command:`add_library`, :command:`add_executable`, diff --git a/Help/prop_dir/LABELS.rst b/Help/prop_dir/LABELS.rst index de27d90..bf14368 100644 --- a/Help/prop_dir/LABELS.rst +++ b/Help/prop_dir/LABELS.rst @@ -1,6 +1,8 @@ LABELS ------ +.. versionadded:: 3.10 + Specify a list of text labels associated with a directory and all of its subdirectories. This is equivalent to setting the :prop_tgt:`LABELS` target property and the :prop_test:`LABELS` test property on all targets and tests in diff --git a/Help/prop_dir/LINK_OPTIONS.rst b/Help/prop_dir/LINK_OPTIONS.rst index f229ba6..3a5c72f 100644 --- a/Help/prop_dir/LINK_OPTIONS.rst +++ b/Help/prop_dir/LINK_OPTIONS.rst @@ -1,6 +1,8 @@ LINK_OPTIONS ------------ +.. versionadded:: 3.13 + List of options to use for the link step of shared library, module and executable targets as well as the device link step. diff --git a/Help/prop_dir/SOURCE_DIR.rst b/Help/prop_dir/SOURCE_DIR.rst index ac98c3b..d73707d 100644 --- a/Help/prop_dir/SOURCE_DIR.rst +++ b/Help/prop_dir/SOURCE_DIR.rst @@ -1,5 +1,7 @@ SOURCE_DIR ---------- +.. versionadded:: 3.7 + This read-only directory property reports absolute path to the source directory on which it is read. diff --git a/Help/prop_dir/SUBDIRECTORIES.rst b/Help/prop_dir/SUBDIRECTORIES.rst index 6a0ac80..71ea496 100644 --- a/Help/prop_dir/SUBDIRECTORIES.rst +++ b/Help/prop_dir/SUBDIRECTORIES.rst @@ -1,6 +1,8 @@ SUBDIRECTORIES -------------- +.. versionadded:: 3.7 + This read-only directory property contains a :ref:`semicolon-separated list <CMake Language Lists>` of subdirectories processed so far by the :command:`add_subdirectory` or :command:`subdirs` commands. Each entry is diff --git a/Help/prop_dir/TESTS.rst b/Help/prop_dir/TESTS.rst index 1c9f6e5..294be17 100644 --- a/Help/prop_dir/TESTS.rst +++ b/Help/prop_dir/TESTS.rst @@ -1,6 +1,8 @@ TESTS ----- +.. versionadded:: 3.12 + List of tests. This read-only property holds a diff --git a/Help/prop_dir/TEST_INCLUDE_FILES.rst b/Help/prop_dir/TEST_INCLUDE_FILES.rst index c3e4602..f9a66f4 100644 --- a/Help/prop_dir/TEST_INCLUDE_FILES.rst +++ b/Help/prop_dir/TEST_INCLUDE_FILES.rst @@ -1,6 +1,8 @@ TEST_INCLUDE_FILES ------------------ +.. versionadded:: 3.10 + A list of cmake files that will be included when ctest is run. If you specify ``TEST_INCLUDE_FILES``, those files will be included and diff --git a/Help/prop_dir/VS_STARTUP_PROJECT.rst b/Help/prop_dir/VS_STARTUP_PROJECT.rst index 2680dfa..8a0c3c8 100644 --- a/Help/prop_dir/VS_STARTUP_PROJECT.rst +++ b/Help/prop_dir/VS_STARTUP_PROJECT.rst @@ -1,6 +1,8 @@ VS_STARTUP_PROJECT ------------------ +.. versionadded:: 3.6 + Specify the default startup project in a Visual Studio solution. The :ref:`Visual Studio Generators` create a ``.sln`` file for each directory diff --git a/Help/prop_gbl/AUTOGEN_SOURCE_GROUP.rst b/Help/prop_gbl/AUTOGEN_SOURCE_GROUP.rst index d294eb1..2e32320 100644 --- a/Help/prop_gbl/AUTOGEN_SOURCE_GROUP.rst +++ b/Help/prop_gbl/AUTOGEN_SOURCE_GROUP.rst @@ -1,6 +1,8 @@ AUTOGEN_SOURCE_GROUP -------------------- +.. versionadded:: 3.9 + Name of the :command:`source_group` for :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTORCC` generated files. diff --git a/Help/prop_gbl/AUTOMOC_SOURCE_GROUP.rst b/Help/prop_gbl/AUTOMOC_SOURCE_GROUP.rst index 2455dc7..a266fde 100644 --- a/Help/prop_gbl/AUTOMOC_SOURCE_GROUP.rst +++ b/Help/prop_gbl/AUTOMOC_SOURCE_GROUP.rst @@ -1,6 +1,8 @@ AUTOMOC_SOURCE_GROUP -------------------- +.. versionadded:: 3.9 + Name of the :command:`source_group` for :prop_tgt:`AUTOMOC` generated files. When set this is used instead of :prop_gbl:`AUTOGEN_SOURCE_GROUP` for diff --git a/Help/prop_gbl/AUTORCC_SOURCE_GROUP.rst b/Help/prop_gbl/AUTORCC_SOURCE_GROUP.rst index 65ea95b..54ebabb 100644 --- a/Help/prop_gbl/AUTORCC_SOURCE_GROUP.rst +++ b/Help/prop_gbl/AUTORCC_SOURCE_GROUP.rst @@ -1,6 +1,8 @@ AUTORCC_SOURCE_GROUP -------------------- +.. versionadded:: 3.9 + Name of the :command:`source_group` for :prop_tgt:`AUTORCC` generated files. When set this is used instead of :prop_gbl:`AUTOGEN_SOURCE_GROUP` for diff --git a/Help/prop_gbl/CMAKE_CUDA_KNOWN_FEATURES.rst b/Help/prop_gbl/CMAKE_CUDA_KNOWN_FEATURES.rst index 44e37fe..e8e3148 100644 --- a/Help/prop_gbl/CMAKE_CUDA_KNOWN_FEATURES.rst +++ b/Help/prop_gbl/CMAKE_CUDA_KNOWN_FEATURES.rst @@ -1,6 +1,8 @@ CMAKE_CUDA_KNOWN_FEATURES ------------------------- +.. versionadded:: 3.17 + List of CUDA features known to this version of CMake. The features listed in this global property may be known to be available to the diff --git a/Help/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.rst b/Help/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.rst index b921c6b..9b53282 100644 --- a/Help/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.rst +++ b/Help/prop_gbl/CMAKE_CXX_KNOWN_FEATURES.rst @@ -1,6 +1,8 @@ CMAKE_CXX_KNOWN_FEATURES ------------------------ +.. versionadded:: 3.1 + List of C++ features known to this version of CMake. The features listed in this global property may be known to be available to the diff --git a/Help/prop_gbl/CMAKE_C_KNOWN_FEATURES.rst b/Help/prop_gbl/CMAKE_C_KNOWN_FEATURES.rst index e5f896e..7166381 100644 --- a/Help/prop_gbl/CMAKE_C_KNOWN_FEATURES.rst +++ b/Help/prop_gbl/CMAKE_C_KNOWN_FEATURES.rst @@ -1,6 +1,8 @@ CMAKE_C_KNOWN_FEATURES ---------------------- +.. versionadded:: 3.1 + List of C features known to this version of CMake. The features listed in this global property may be known to be available to the diff --git a/Help/prop_gbl/CMAKE_ROLE.rst b/Help/prop_gbl/CMAKE_ROLE.rst index 27512fa..3f4492f 100644 --- a/Help/prop_gbl/CMAKE_ROLE.rst +++ b/Help/prop_gbl/CMAKE_ROLE.rst @@ -1,6 +1,8 @@ CMAKE_ROLE ---------- +.. versionadded:: 3.14 + Tells what mode the current running script is in. Could be one of several values: diff --git a/Help/prop_gbl/ECLIPSE_EXTRA_CPROJECT_CONTENTS.rst b/Help/prop_gbl/ECLIPSE_EXTRA_CPROJECT_CONTENTS.rst index 50c41a9..2f110a7 100644 --- a/Help/prop_gbl/ECLIPSE_EXTRA_CPROJECT_CONTENTS.rst +++ b/Help/prop_gbl/ECLIPSE_EXTRA_CPROJECT_CONTENTS.rst @@ -1,6 +1,8 @@ ECLIPSE_EXTRA_CPROJECT_CONTENTS ------------------------------- +.. versionadded:: 3.12 + Additional contents to be inserted into the generated Eclipse cproject file. The cproject file defines the CDT specific information. Some third party IDE's diff --git a/Help/prop_gbl/FIND_LIBRARY_USE_LIB32_PATHS.rst b/Help/prop_gbl/FIND_LIBRARY_USE_LIB32_PATHS.rst index 8396026..f6cad66 100644 --- a/Help/prop_gbl/FIND_LIBRARY_USE_LIB32_PATHS.rst +++ b/Help/prop_gbl/FIND_LIBRARY_USE_LIB32_PATHS.rst @@ -1,6 +1,8 @@ FIND_LIBRARY_USE_LIB32_PATHS ---------------------------- +.. versionadded:: 3.7 + Whether the :command:`find_library` command should automatically search ``lib32`` directories. diff --git a/Help/prop_gbl/FIND_LIBRARY_USE_LIBX32_PATHS.rst b/Help/prop_gbl/FIND_LIBRARY_USE_LIBX32_PATHS.rst index b87b09b..851f859 100644 --- a/Help/prop_gbl/FIND_LIBRARY_USE_LIBX32_PATHS.rst +++ b/Help/prop_gbl/FIND_LIBRARY_USE_LIBX32_PATHS.rst @@ -1,6 +1,8 @@ FIND_LIBRARY_USE_LIBX32_PATHS ----------------------------- +.. versionadded:: 3.9 + Whether the :command:`find_library` command should automatically search ``libx32`` directories. diff --git a/Help/prop_gbl/GENERATOR_IS_MULTI_CONFIG.rst b/Help/prop_gbl/GENERATOR_IS_MULTI_CONFIG.rst index b8ec8a6..6f1a9e1 100644 --- a/Help/prop_gbl/GENERATOR_IS_MULTI_CONFIG.rst +++ b/Help/prop_gbl/GENERATOR_IS_MULTI_CONFIG.rst @@ -1,6 +1,8 @@ GENERATOR_IS_MULTI_CONFIG ------------------------- +.. versionadded:: 3.9 + Read-only property that is true on multi-configuration generators. True when using a multi-configuration generator diff --git a/Help/prop_gbl/TARGET_MESSAGES.rst b/Help/prop_gbl/TARGET_MESSAGES.rst index 275b074..bb91772 100644 --- a/Help/prop_gbl/TARGET_MESSAGES.rst +++ b/Help/prop_gbl/TARGET_MESSAGES.rst @@ -1,6 +1,8 @@ TARGET_MESSAGES --------------- +.. versionadded:: 3.4 + Specify whether to report the completion of each target. This property specifies whether :ref:`Makefile Generators` should diff --git a/Help/prop_gbl/XCODE_EMIT_EFFECTIVE_PLATFORM_NAME.rst b/Help/prop_gbl/XCODE_EMIT_EFFECTIVE_PLATFORM_NAME.rst index 9500443..392b704 100644 --- a/Help/prop_gbl/XCODE_EMIT_EFFECTIVE_PLATFORM_NAME.rst +++ b/Help/prop_gbl/XCODE_EMIT_EFFECTIVE_PLATFORM_NAME.rst @@ -1,6 +1,8 @@ XCODE_EMIT_EFFECTIVE_PLATFORM_NAME ---------------------------------- +.. versionadded:: 3.8 + Control emission of ``EFFECTIVE_PLATFORM_NAME`` by the :generator:`Xcode` generator. diff --git a/Help/prop_inst/CPACK_DESKTOP_SHORTCUTS.rst b/Help/prop_inst/CPACK_DESKTOP_SHORTCUTS.rst index 729ab60..55e9a20 100644 --- a/Help/prop_inst/CPACK_DESKTOP_SHORTCUTS.rst +++ b/Help/prop_inst/CPACK_DESKTOP_SHORTCUTS.rst @@ -1,6 +1,8 @@ CPACK_DESKTOP_SHORTCUTS ----------------------- +.. versionadded:: 3.3 + Species a list of shortcut names that should be created on the `Desktop` for this file. diff --git a/Help/prop_inst/CPACK_NEVER_OVERWRITE.rst b/Help/prop_inst/CPACK_NEVER_OVERWRITE.rst index 4789e25..12eef9e 100644 --- a/Help/prop_inst/CPACK_NEVER_OVERWRITE.rst +++ b/Help/prop_inst/CPACK_NEVER_OVERWRITE.rst @@ -1,6 +1,8 @@ CPACK_NEVER_OVERWRITE --------------------- +.. versionadded:: 3.1 + Request that this file not be overwritten on install or reinstall. The property is currently only supported by the :cpack_gen:`CPack WIX Generator`. diff --git a/Help/prop_inst/CPACK_PERMANENT.rst b/Help/prop_inst/CPACK_PERMANENT.rst index 985de0d..e89c552 100644 --- a/Help/prop_inst/CPACK_PERMANENT.rst +++ b/Help/prop_inst/CPACK_PERMANENT.rst @@ -1,6 +1,8 @@ CPACK_PERMANENT --------------- +.. versionadded:: 3.1 + Request that this file not be removed on uninstall. The property is currently only supported by the :cpack_gen:`CPack WIX Generator`. diff --git a/Help/prop_inst/CPACK_STARTUP_SHORTCUTS.rst b/Help/prop_inst/CPACK_STARTUP_SHORTCUTS.rst index d9208b9..e896acd 100644 --- a/Help/prop_inst/CPACK_STARTUP_SHORTCUTS.rst +++ b/Help/prop_inst/CPACK_STARTUP_SHORTCUTS.rst @@ -1,6 +1,8 @@ CPACK_STARTUP_SHORTCUTS ----------------------- +.. versionadded:: 3.3 + Species a list of shortcut names that should be created in the `Startup` folder for this file. diff --git a/Help/prop_inst/CPACK_START_MENU_SHORTCUTS.rst b/Help/prop_inst/CPACK_START_MENU_SHORTCUTS.rst index 092334a..fb8807f 100644 --- a/Help/prop_inst/CPACK_START_MENU_SHORTCUTS.rst +++ b/Help/prop_inst/CPACK_START_MENU_SHORTCUTS.rst @@ -1,6 +1,8 @@ CPACK_START_MENU_SHORTCUTS -------------------------- +.. versionadded:: 3.3 + Species a list of shortcut names that should be created in the `Start Menu` for this file. diff --git a/Help/prop_inst/CPACK_WIX_ACL.rst b/Help/prop_inst/CPACK_WIX_ACL.rst index c88f426..8b4fb5c 100644 --- a/Help/prop_inst/CPACK_WIX_ACL.rst +++ b/Help/prop_inst/CPACK_WIX_ACL.rst @@ -1,6 +1,8 @@ CPACK_WIX_ACL ------------- +.. versionadded:: 3.1 + Specifies access permissions for files or directories installed by a WiX installer. diff --git a/Help/prop_sf/COMPILE_OPTIONS.rst b/Help/prop_sf/COMPILE_OPTIONS.rst index 537dcec..a694c3e 100644 --- a/Help/prop_sf/COMPILE_OPTIONS.rst +++ b/Help/prop_sf/COMPILE_OPTIONS.rst @@ -1,6 +1,8 @@ COMPILE_OPTIONS --------------- +.. versionadded:: 3.11 + List of additional options to pass to the compiler. This property holds a :ref:`semicolon-separated list <CMake Language Lists>` of options diff --git a/Help/prop_sf/Fortran_PREPROCESS.rst b/Help/prop_sf/Fortran_PREPROCESS.rst index 25ea827..548a97b 100644 --- a/Help/prop_sf/Fortran_PREPROCESS.rst +++ b/Help/prop_sf/Fortran_PREPROCESS.rst @@ -1,6 +1,8 @@ Fortran_PREPROCESS ------------------ +.. versionadded:: 3.18 + Control whether the Fortran source file should be unconditionally preprocessed. If unset or empty, rely on the compiler to determine whether the file diff --git a/Help/prop_sf/INCLUDE_DIRECTORIES.rst b/Help/prop_sf/INCLUDE_DIRECTORIES.rst index 23de70e..89ffd15 100644 --- a/Help/prop_sf/INCLUDE_DIRECTORIES.rst +++ b/Help/prop_sf/INCLUDE_DIRECTORIES.rst @@ -1,6 +1,8 @@ INCLUDE_DIRECTORIES ------------------- +.. versionadded:: 3.11 + List of preprocessor include file search directories. This property holds a :ref:`semicolon-separated list <CMake Language Lists>` of paths diff --git a/Help/prop_sf/SKIP_AUTOGEN.rst b/Help/prop_sf/SKIP_AUTOGEN.rst index f31185a..2173f59 100644 --- a/Help/prop_sf/SKIP_AUTOGEN.rst +++ b/Help/prop_sf/SKIP_AUTOGEN.rst @@ -1,6 +1,8 @@ SKIP_AUTOGEN ------------ +.. versionadded:: 3.8 + Exclude the source file from :prop_tgt:`AUTOMOC`, :prop_tgt:`AUTOUIC` and :prop_tgt:`AUTORCC` processing (for Qt projects). diff --git a/Help/prop_sf/SKIP_AUTOMOC.rst b/Help/prop_sf/SKIP_AUTOMOC.rst index a929448..e92cfe0 100644 --- a/Help/prop_sf/SKIP_AUTOMOC.rst +++ b/Help/prop_sf/SKIP_AUTOMOC.rst @@ -1,6 +1,8 @@ SKIP_AUTOMOC ------------ +.. versionadded:: 3.8 + Exclude the source file from :prop_tgt:`AUTOMOC` processing (for Qt projects). For broader exclusion control see :prop_sf:`SKIP_AUTOGEN`. diff --git a/Help/prop_sf/SKIP_AUTORCC.rst b/Help/prop_sf/SKIP_AUTORCC.rst index bccccfc..2829c25 100644 --- a/Help/prop_sf/SKIP_AUTORCC.rst +++ b/Help/prop_sf/SKIP_AUTORCC.rst @@ -1,6 +1,8 @@ SKIP_AUTORCC ------------ +.. versionadded:: 3.8 + Exclude the source file from :prop_tgt:`AUTORCC` processing (for Qt projects). For broader exclusion control see :prop_sf:`SKIP_AUTOGEN`. diff --git a/Help/prop_sf/SKIP_AUTOUIC.rst b/Help/prop_sf/SKIP_AUTOUIC.rst index 8c962db..ae9725a 100644 --- a/Help/prop_sf/SKIP_AUTOUIC.rst +++ b/Help/prop_sf/SKIP_AUTOUIC.rst @@ -1,6 +1,8 @@ SKIP_AUTOUIC ------------ +.. versionadded:: 3.8 + Exclude the source file from :prop_tgt:`AUTOUIC` processing (for Qt projects). :prop_sf:`SKIP_AUTOUIC` can be set on C++ header and source files and on diff --git a/Help/prop_sf/SKIP_PRECOMPILE_HEADERS.rst b/Help/prop_sf/SKIP_PRECOMPILE_HEADERS.rst index 0031da3..660de3f 100644 --- a/Help/prop_sf/SKIP_PRECOMPILE_HEADERS.rst +++ b/Help/prop_sf/SKIP_PRECOMPILE_HEADERS.rst @@ -1,6 +1,8 @@ SKIP_PRECOMPILE_HEADERS ----------------------- +.. versionadded:: 3.16 + Is this source file skipped by :prop_tgt:`PRECOMPILE_HEADERS` feature. This property helps with build problems that one would run into diff --git a/Help/prop_sf/SKIP_UNITY_BUILD_INCLUSION.rst b/Help/prop_sf/SKIP_UNITY_BUILD_INCLUSION.rst index 6d1e60d..ae526ac 100644 --- a/Help/prop_sf/SKIP_UNITY_BUILD_INCLUSION.rst +++ b/Help/prop_sf/SKIP_UNITY_BUILD_INCLUSION.rst @@ -1,6 +1,8 @@ SKIP_UNITY_BUILD_INCLUSION -------------------------- +.. versionadded:: 3.16 + Setting this property to true ensures the source file will be skipped by unity builds when its associated target has its :prop_tgt:`UNITY_BUILD` property set to true. The source file will instead be compiled on its own diff --git a/Help/prop_sf/Swift_DEPENDENCIES_FILE.rst b/Help/prop_sf/Swift_DEPENDENCIES_FILE.rst index faac2df..a90c7eb 100644 --- a/Help/prop_sf/Swift_DEPENDENCIES_FILE.rst +++ b/Help/prop_sf/Swift_DEPENDENCIES_FILE.rst @@ -1,5 +1,7 @@ Swift_DEPENDENCIES_FILE ----------------------- +.. versionadded:: 3.15 + This property sets the path for the Swift dependency file (swiftdeps) for the source. If one is not specified, it will default to ``<OBJECT>.swiftdeps``. diff --git a/Help/prop_sf/Swift_DIAGNOSTICS_FILE.rst b/Help/prop_sf/Swift_DIAGNOSTICS_FILE.rst index 5bf5d59..47d5ac3 100644 --- a/Help/prop_sf/Swift_DIAGNOSTICS_FILE.rst +++ b/Help/prop_sf/Swift_DIAGNOSTICS_FILE.rst @@ -1,4 +1,6 @@ Swift_DIAGNOSTICS_FILE ---------------------- +.. versionadded:: 3.15 + This property controls where the Swift diagnostics are serialized. diff --git a/Help/prop_sf/UNITY_GROUP.rst b/Help/prop_sf/UNITY_GROUP.rst index ec6b0f6..9c18b70 100644 --- a/Help/prop_sf/UNITY_GROUP.rst +++ b/Help/prop_sf/UNITY_GROUP.rst @@ -1,5 +1,7 @@ UNITY_GROUP ----------- +.. versionadded:: 3.18 + This property controls which *bucket* the source will be part of when the :prop_tgt:`UNITY_BUILD_MODE` is set to ``GROUP``. diff --git a/Help/prop_sf/VS_COPY_TO_OUT_DIR.rst b/Help/prop_sf/VS_COPY_TO_OUT_DIR.rst index 16c8d83..ebc3061 100644 --- a/Help/prop_sf/VS_COPY_TO_OUT_DIR.rst +++ b/Help/prop_sf/VS_COPY_TO_OUT_DIR.rst @@ -1,6 +1,8 @@ VS_COPY_TO_OUT_DIR ------------------ +.. versionadded:: 3.8 + Sets the ``<CopyToOutputDirectory>`` tag for a source file in a Visual Studio project file. Valid values are ``Never``, ``Always`` and ``PreserveNewest``. diff --git a/Help/prop_sf/VS_CSHARP_tagname.rst b/Help/prop_sf/VS_CSHARP_tagname.rst index 91c4a06..75720f8 100644 --- a/Help/prop_sf/VS_CSHARP_tagname.rst +++ b/Help/prop_sf/VS_CSHARP_tagname.rst @@ -1,6 +1,8 @@ VS_CSHARP_<tagname> ------------------- +.. versionadded:: 3.8 + Visual Studio and CSharp source-file-specific configuration. Tell the :manual:`Visual Studio generators <cmake-generators(7)>` diff --git a/Help/prop_sf/VS_DEPLOYMENT_CONTENT.rst b/Help/prop_sf/VS_DEPLOYMENT_CONTENT.rst index 6a38478..ee49b27 100644 --- a/Help/prop_sf/VS_DEPLOYMENT_CONTENT.rst +++ b/Help/prop_sf/VS_DEPLOYMENT_CONTENT.rst @@ -1,6 +1,8 @@ VS_DEPLOYMENT_CONTENT --------------------- +.. versionadded:: 3.1 + Mark a source file as content for deployment with a Windows Phone or Windows Store application when built with a :manual:`Visual Studio generators <cmake-generators(7)>`. diff --git a/Help/prop_sf/VS_DEPLOYMENT_LOCATION.rst b/Help/prop_sf/VS_DEPLOYMENT_LOCATION.rst index 2ce22fc..b170544 100644 --- a/Help/prop_sf/VS_DEPLOYMENT_LOCATION.rst +++ b/Help/prop_sf/VS_DEPLOYMENT_LOCATION.rst @@ -1,6 +1,8 @@ VS_DEPLOYMENT_LOCATION ---------------------- +.. versionadded:: 3.1 + Specifies the deployment location for a content source file with a Windows Phone or Windows Store application when built with a :manual:`Visual Studio generators <cmake-generators(7)>`. diff --git a/Help/prop_sf/VS_INCLUDE_IN_VSIX.rst b/Help/prop_sf/VS_INCLUDE_IN_VSIX.rst index db470ef..16c56bf 100644 --- a/Help/prop_sf/VS_INCLUDE_IN_VSIX.rst +++ b/Help/prop_sf/VS_INCLUDE_IN_VSIX.rst @@ -1,6 +1,8 @@ VS_INCLUDE_IN_VSIX ------------------ +.. versionadded:: 3.8 + Boolean property to specify if the file should be included within a VSIX (Visual Studio Integration Extension) extension package. This is needed for development of Visual Studio extensions. diff --git a/Help/prop_sf/VS_RESOURCE_GENERATOR.rst b/Help/prop_sf/VS_RESOURCE_GENERATOR.rst index 97e5aac..c5bb4f6 100644 --- a/Help/prop_sf/VS_RESOURCE_GENERATOR.rst +++ b/Help/prop_sf/VS_RESOURCE_GENERATOR.rst @@ -1,6 +1,8 @@ VS_RESOURCE_GENERATOR --------------------- +.. versionadded:: 3.8 + This property allows to specify the resource generator to be used on this file. It defaults to ``PublicResXFileCodeGenerator`` if not set. diff --git a/Help/prop_sf/VS_SETTINGS.rst b/Help/prop_sf/VS_SETTINGS.rst index 50034fb..322f5a6 100644 --- a/Help/prop_sf/VS_SETTINGS.rst +++ b/Help/prop_sf/VS_SETTINGS.rst @@ -1,6 +1,8 @@ VS_SETTINGS ----------- +.. versionadded:: 3.18 + Set any item metadata on a non-built file. Takes a list of ``Key=Value`` pairs. Tells the Visual Studio generator to set diff --git a/Help/prop_sf/VS_SHADER_DISABLE_OPTIMIZATIONS.rst b/Help/prop_sf/VS_SHADER_DISABLE_OPTIMIZATIONS.rst index 446dd26..6fb6778 100644 --- a/Help/prop_sf/VS_SHADER_DISABLE_OPTIMIZATIONS.rst +++ b/Help/prop_sf/VS_SHADER_DISABLE_OPTIMIZATIONS.rst @@ -1,6 +1,8 @@ VS_SHADER_DISABLE_OPTIMIZATIONS ------------------------------- +.. versionadded:: 3.11 + Disable compiler optimizations for an ``.hlsl`` source file. This adds the ``-Od`` flag to the command line for the FxCompiler tool. Specify the value ``true`` for this property to disable compiler optimizations. diff --git a/Help/prop_sf/VS_SHADER_ENABLE_DEBUG.rst b/Help/prop_sf/VS_SHADER_ENABLE_DEBUG.rst index c0e60a3..9c8f9d7 100644 --- a/Help/prop_sf/VS_SHADER_ENABLE_DEBUG.rst +++ b/Help/prop_sf/VS_SHADER_ENABLE_DEBUG.rst @@ -1,6 +1,8 @@ VS_SHADER_ENABLE_DEBUG ---------------------- +.. versionadded:: 3.11 + Enable debugging information for an ``.hlsl`` source file. This adds the ``-Zi`` flag to the command line for the FxCompiler tool. Specify the value ``true`` to generate debugging information for the compiled shader. diff --git a/Help/prop_sf/VS_SHADER_ENTRYPOINT.rst b/Help/prop_sf/VS_SHADER_ENTRYPOINT.rst index fe3471f..4b311ba 100644 --- a/Help/prop_sf/VS_SHADER_ENTRYPOINT.rst +++ b/Help/prop_sf/VS_SHADER_ENTRYPOINT.rst @@ -1,5 +1,7 @@ VS_SHADER_ENTRYPOINT -------------------- +.. versionadded:: 3.1 + Specifies the name of the entry point for the shader of a ``.hlsl`` source file. diff --git a/Help/prop_sf/VS_SHADER_FLAGS.rst b/Help/prop_sf/VS_SHADER_FLAGS.rst index 0a53afd..07f8497 100644 --- a/Help/prop_sf/VS_SHADER_FLAGS.rst +++ b/Help/prop_sf/VS_SHADER_FLAGS.rst @@ -1,4 +1,6 @@ VS_SHADER_FLAGS --------------- +.. versionadded:: 3.2 + Set additional Visual Studio shader flags of a ``.hlsl`` source file. diff --git a/Help/prop_sf/VS_SHADER_MODEL.rst b/Help/prop_sf/VS_SHADER_MODEL.rst index b1cf0df..072df89 100644 --- a/Help/prop_sf/VS_SHADER_MODEL.rst +++ b/Help/prop_sf/VS_SHADER_MODEL.rst @@ -1,5 +1,7 @@ VS_SHADER_MODEL --------------- +.. versionadded:: 3.1 + Specifies the shader model of a ``.hlsl`` source file. Some shader types can only be used with recent shader models diff --git a/Help/prop_sf/VS_SHADER_OBJECT_FILE_NAME.rst b/Help/prop_sf/VS_SHADER_OBJECT_FILE_NAME.rst index 093bcc6..3647a5e 100644 --- a/Help/prop_sf/VS_SHADER_OBJECT_FILE_NAME.rst +++ b/Help/prop_sf/VS_SHADER_OBJECT_FILE_NAME.rst @@ -1,6 +1,8 @@ VS_SHADER_OBJECT_FILE_NAME -------------------------- +.. versionadded:: 3.12 + Specifies a file name for the compiled shader object file for an ``.hlsl`` source file. This adds the ``-Fo`` flag to the command line for the FxCompiler tool. diff --git a/Help/prop_sf/VS_SHADER_OUTPUT_HEADER_FILE.rst b/Help/prop_sf/VS_SHADER_OUTPUT_HEADER_FILE.rst index e6763d3..4113a16 100644 --- a/Help/prop_sf/VS_SHADER_OUTPUT_HEADER_FILE.rst +++ b/Help/prop_sf/VS_SHADER_OUTPUT_HEADER_FILE.rst @@ -1,5 +1,7 @@ VS_SHADER_OUTPUT_HEADER_FILE ---------------------------- +.. versionadded:: 3.10 + Set filename for output header file containing object code of a ``.hlsl`` source file. diff --git a/Help/prop_sf/VS_SHADER_TYPE.rst b/Help/prop_sf/VS_SHADER_TYPE.rst index f104837..3fb7e60 100644 --- a/Help/prop_sf/VS_SHADER_TYPE.rst +++ b/Help/prop_sf/VS_SHADER_TYPE.rst @@ -1,4 +1,6 @@ VS_SHADER_TYPE -------------- +.. versionadded:: 3.1 + Set the Visual Studio shader type of a ``.hlsl`` source file. diff --git a/Help/prop_sf/VS_SHADER_VARIABLE_NAME.rst b/Help/prop_sf/VS_SHADER_VARIABLE_NAME.rst index 1a5e369..3361b40 100644 --- a/Help/prop_sf/VS_SHADER_VARIABLE_NAME.rst +++ b/Help/prop_sf/VS_SHADER_VARIABLE_NAME.rst @@ -1,5 +1,7 @@ VS_SHADER_VARIABLE_NAME ----------------------- +.. versionadded:: 3.10 + Set name of variable in header file containing object code of a ``.hlsl`` source file. diff --git a/Help/prop_sf/VS_TOOL_OVERRIDE.rst b/Help/prop_sf/VS_TOOL_OVERRIDE.rst index 8bdc5ca..b2f4112 100644 --- a/Help/prop_sf/VS_TOOL_OVERRIDE.rst +++ b/Help/prop_sf/VS_TOOL_OVERRIDE.rst @@ -1,5 +1,7 @@ VS_TOOL_OVERRIDE ---------------- +.. versionadded:: 3.7 + Override the default Visual Studio tool that will be applied to the source file with a new tool not based on the extension of the file. diff --git a/Help/prop_sf/VS_XAML_TYPE.rst b/Help/prop_sf/VS_XAML_TYPE.rst index 1a274ba..612b07b 100644 --- a/Help/prop_sf/VS_XAML_TYPE.rst +++ b/Help/prop_sf/VS_XAML_TYPE.rst @@ -1,6 +1,8 @@ VS_XAML_TYPE ------------ +.. versionadded:: 3.3 + Mark a Extensible Application Markup Language (XAML) source file as a different type than the default ``Page``. The most common usage would be to set the default ``App.xaml`` file as diff --git a/Help/prop_sf/XCODE_EXPLICIT_FILE_TYPE.rst b/Help/prop_sf/XCODE_EXPLICIT_FILE_TYPE.rst index b8cf946..5a50d7d 100644 --- a/Help/prop_sf/XCODE_EXPLICIT_FILE_TYPE.rst +++ b/Help/prop_sf/XCODE_EXPLICIT_FILE_TYPE.rst @@ -1,6 +1,8 @@ XCODE_EXPLICIT_FILE_TYPE ------------------------ +.. versionadded:: 3.1 + Set the :generator:`Xcode` ``explicitFileType`` attribute on its reference to a source file. CMake computes a default based on file extension but can be told explicitly with this property. diff --git a/Help/prop_sf/XCODE_FILE_ATTRIBUTES.rst b/Help/prop_sf/XCODE_FILE_ATTRIBUTES.rst index 4c93f44..ba51e00 100644 --- a/Help/prop_sf/XCODE_FILE_ATTRIBUTES.rst +++ b/Help/prop_sf/XCODE_FILE_ATTRIBUTES.rst @@ -1,6 +1,8 @@ XCODE_FILE_ATTRIBUTES --------------------- +.. versionadded:: 3.7 + Add values to the :generator:`Xcode` ``ATTRIBUTES`` setting on its reference to a source file. Among other things, this can be used to set the role on a ``.mig`` file:: diff --git a/Help/prop_sf/XCODE_LAST_KNOWN_FILE_TYPE.rst b/Help/prop_sf/XCODE_LAST_KNOWN_FILE_TYPE.rst index b21891f..0b84e31 100644 --- a/Help/prop_sf/XCODE_LAST_KNOWN_FILE_TYPE.rst +++ b/Help/prop_sf/XCODE_LAST_KNOWN_FILE_TYPE.rst @@ -1,6 +1,8 @@ XCODE_LAST_KNOWN_FILE_TYPE -------------------------- +.. versionadded:: 3.1 + Set the :generator:`Xcode` ``lastKnownFileType`` attribute on its reference to a source file. CMake computes a default based on file extension but can be told explicitly with this property. diff --git a/Help/prop_test/DISABLED.rst b/Help/prop_test/DISABLED.rst index 1d469e8..cbf07a5 100644 --- a/Help/prop_test/DISABLED.rst +++ b/Help/prop_test/DISABLED.rst @@ -1,6 +1,8 @@ DISABLED -------- +.. versionadded:: 3.9 + If set to ``True``, the test will be skipped and its status will be 'Not Run'. A ``DISABLED`` test will not be counted in the total number of tests and its completion status will be reported to CDash as ``Disabled``. diff --git a/Help/prop_test/FIXTURES_CLEANUP.rst b/Help/prop_test/FIXTURES_CLEANUP.rst index 3075b4d..aa043da 100644 --- a/Help/prop_test/FIXTURES_CLEANUP.rst +++ b/Help/prop_test/FIXTURES_CLEANUP.rst @@ -1,6 +1,8 @@ FIXTURES_CLEANUP ---------------- +.. versionadded:: 3.7 + Specifies a list of fixtures for which the test is to be treated as a cleanup test. These fixture names are distinct from test case names and are not required to have any similarity to the names of tests associated with them. diff --git a/Help/prop_test/FIXTURES_REQUIRED.rst b/Help/prop_test/FIXTURES_REQUIRED.rst index e3f60c4..d92808a 100644 --- a/Help/prop_test/FIXTURES_REQUIRED.rst +++ b/Help/prop_test/FIXTURES_REQUIRED.rst @@ -1,6 +1,8 @@ FIXTURES_REQUIRED ----------------- +.. versionadded:: 3.7 + Specifies a list of fixtures the test requires. Fixture names are case sensitive and they are not required to have any similarity to test names. diff --git a/Help/prop_test/FIXTURES_SETUP.rst b/Help/prop_test/FIXTURES_SETUP.rst index fdb21cc..04a09d8 100644 --- a/Help/prop_test/FIXTURES_SETUP.rst +++ b/Help/prop_test/FIXTURES_SETUP.rst @@ -1,6 +1,8 @@ FIXTURES_SETUP -------------- +.. versionadded:: 3.7 + Specifies a list of fixtures for which the test is to be treated as a setup test. These fixture names are distinct from test case names and are not required to have any similarity to the names of tests associated with them. diff --git a/Help/prop_test/PROCESSOR_AFFINITY.rst b/Help/prop_test/PROCESSOR_AFFINITY.rst index 38ec179..f48a69c 100644 --- a/Help/prop_test/PROCESSOR_AFFINITY.rst +++ b/Help/prop_test/PROCESSOR_AFFINITY.rst @@ -1,6 +1,8 @@ PROCESSOR_AFFINITY ------------------ +.. versionadded:: 3.12 + Set to a true value to ask CTest to launch the test process with CPU affinity for a fixed set of processors. If enabled and supported for the current platform, CTest will choose a set of processors to place in the CPU affinity diff --git a/Help/prop_test/RESOURCE_GROUPS.rst b/Help/prop_test/RESOURCE_GROUPS.rst index 63c56ce..26c8fa2 100644 --- a/Help/prop_test/RESOURCE_GROUPS.rst +++ b/Help/prop_test/RESOURCE_GROUPS.rst @@ -1,6 +1,8 @@ RESOURCE_GROUPS --------------- +.. versionadded:: 3.16 + Specify resources required by a test, grouped in a way that is meaningful to the test. See :ref:`resource allocation <ctest-resource-allocation>` for more information on how this property integrates into the CTest resource diff --git a/Help/prop_test/SKIP_REGULAR_EXPRESSION.rst b/Help/prop_test/SKIP_REGULAR_EXPRESSION.rst index 2c6d980..46c4363 100644 --- a/Help/prop_test/SKIP_REGULAR_EXPRESSION.rst +++ b/Help/prop_test/SKIP_REGULAR_EXPRESSION.rst @@ -1,6 +1,8 @@ SKIP_REGULAR_EXPRESSION ----------------------- +.. versionadded:: 3.16 + If the output matches this regular expression the test will be marked as skipped. If set, if the output matches one of specified regular expressions, diff --git a/Help/prop_test/TIMEOUT_AFTER_MATCH.rst b/Help/prop_test/TIMEOUT_AFTER_MATCH.rst index d607992..726dcab 100644 --- a/Help/prop_test/TIMEOUT_AFTER_MATCH.rst +++ b/Help/prop_test/TIMEOUT_AFTER_MATCH.rst @@ -1,6 +1,8 @@ TIMEOUT_AFTER_MATCH ------------------- +.. versionadded:: 3.6 + Change a test's timeout duration after a matching line is encountered in its output. diff --git a/Help/prop_tgt/ADDITIONAL_CLEAN_FILES.rst b/Help/prop_tgt/ADDITIONAL_CLEAN_FILES.rst index 3b9d965..dc87d23 100644 --- a/Help/prop_tgt/ADDITIONAL_CLEAN_FILES.rst +++ b/Help/prop_tgt/ADDITIONAL_CLEAN_FILES.rst @@ -1,6 +1,8 @@ ADDITIONAL_CLEAN_FILES ---------------------- +.. versionadded:: 3.15 + A :ref:`;-list <CMake Language Lists>` of files or directories that will be removed as a part of the global ``clean`` target. It can be used to specify files and directories that are generated as part of building the target or diff --git a/Help/prop_tgt/AIX_EXPORT_ALL_SYMBOLS.rst b/Help/prop_tgt/AIX_EXPORT_ALL_SYMBOLS.rst index 15ddc0b..de98fdf 100644 --- a/Help/prop_tgt/AIX_EXPORT_ALL_SYMBOLS.rst +++ b/Help/prop_tgt/AIX_EXPORT_ALL_SYMBOLS.rst @@ -1,6 +1,8 @@ AIX_EXPORT_ALL_SYMBOLS ---------------------- +.. versionadded:: 3.17 + On AIX, CMake automatically exports all symbols from shared libraries, and from executables with the :prop_tgt:`ENABLE_EXPORTS` target property set. Explicitly disable this boolean property to suppress the behavior and diff --git a/Help/prop_tgt/ALIAS_GLOBAL.rst b/Help/prop_tgt/ALIAS_GLOBAL.rst index 8854f57..a8859c6 100644 --- a/Help/prop_tgt/ALIAS_GLOBAL.rst +++ b/Help/prop_tgt/ALIAS_GLOBAL.rst @@ -1,6 +1,8 @@ ALIAS_GLOBAL ------------ +.. versionadded:: 3.18 + Read-only property indicating of whether an :ref:`ALIAS target <Alias Targets>` is globally visible. diff --git a/Help/prop_tgt/ANDROID_ANT_ADDITIONAL_OPTIONS.rst b/Help/prop_tgt/ANDROID_ANT_ADDITIONAL_OPTIONS.rst index af6b405..eceb17d 100644 --- a/Help/prop_tgt/ANDROID_ANT_ADDITIONAL_OPTIONS.rst +++ b/Help/prop_tgt/ANDROID_ANT_ADDITIONAL_OPTIONS.rst @@ -1,6 +1,8 @@ ANDROID_ANT_ADDITIONAL_OPTIONS ------------------------------ +.. versionadded:: 3.4 + Set the additional options for Android Ant build system. This is a string value containing all command line options for the Ant build. This property is initialized by the value of the diff --git a/Help/prop_tgt/ANDROID_API.rst b/Help/prop_tgt/ANDROID_API.rst index 63464d7..7664f18 100644 --- a/Help/prop_tgt/ANDROID_API.rst +++ b/Help/prop_tgt/ANDROID_API.rst @@ -1,6 +1,8 @@ ANDROID_API ----------- +.. versionadded:: 3.1 + When :ref:`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio Edition`, this property sets the Android target API version (e.g. ``15``). The version number must be a positive decimal integer. This property is diff --git a/Help/prop_tgt/ANDROID_API_MIN.rst b/Help/prop_tgt/ANDROID_API_MIN.rst index 773ab3f..7ca2455 100644 --- a/Help/prop_tgt/ANDROID_API_MIN.rst +++ b/Help/prop_tgt/ANDROID_API_MIN.rst @@ -1,6 +1,8 @@ ANDROID_API_MIN --------------- +.. versionadded:: 3.2 + Set the Android MIN API version (e.g. ``9``). The version number must be a positive decimal integer. This property is initialized by the value of the :variable:`CMAKE_ANDROID_API_MIN` variable if it is set diff --git a/Help/prop_tgt/ANDROID_ARCH.rst b/Help/prop_tgt/ANDROID_ARCH.rst index 3e07e5a..94b76dd 100644 --- a/Help/prop_tgt/ANDROID_ARCH.rst +++ b/Help/prop_tgt/ANDROID_ARCH.rst @@ -1,6 +1,8 @@ ANDROID_ARCH ------------ +.. versionadded:: 3.4 + When :ref:`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio Edition`, this property sets the Android target architecture. diff --git a/Help/prop_tgt/ANDROID_ASSETS_DIRECTORIES.rst b/Help/prop_tgt/ANDROID_ASSETS_DIRECTORIES.rst index 764a582..b09a8b7 100644 --- a/Help/prop_tgt/ANDROID_ASSETS_DIRECTORIES.rst +++ b/Help/prop_tgt/ANDROID_ASSETS_DIRECTORIES.rst @@ -1,6 +1,8 @@ ANDROID_ASSETS_DIRECTORIES -------------------------- +.. versionadded:: 3.4 + Set the Android assets directories to copy into the main assets folder before build. This a string property that contains the directory paths separated by semicolon. diff --git a/Help/prop_tgt/ANDROID_GUI.rst b/Help/prop_tgt/ANDROID_GUI.rst index 92e2041..cc022db 100644 --- a/Help/prop_tgt/ANDROID_GUI.rst +++ b/Help/prop_tgt/ANDROID_GUI.rst @@ -1,6 +1,8 @@ ANDROID_GUI ----------- +.. versionadded:: 3.1 + When :ref:`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio Edition`, this property specifies whether to build an executable as an application package on Android. diff --git a/Help/prop_tgt/ANDROID_JAR_DEPENDENCIES.rst b/Help/prop_tgt/ANDROID_JAR_DEPENDENCIES.rst index 42937c1..9880daf 100644 --- a/Help/prop_tgt/ANDROID_JAR_DEPENDENCIES.rst +++ b/Help/prop_tgt/ANDROID_JAR_DEPENDENCIES.rst @@ -1,6 +1,8 @@ ANDROID_JAR_DEPENDENCIES ------------------------ +.. versionadded:: 3.4 + Set the Android property that specifies JAR dependencies. This is a string value property. This property is initialized by the value of the :variable:`CMAKE_ANDROID_JAR_DEPENDENCIES` diff --git a/Help/prop_tgt/ANDROID_JAR_DIRECTORIES.rst b/Help/prop_tgt/ANDROID_JAR_DIRECTORIES.rst index 54f0a8f..6fef50b 100644 --- a/Help/prop_tgt/ANDROID_JAR_DIRECTORIES.rst +++ b/Help/prop_tgt/ANDROID_JAR_DIRECTORIES.rst @@ -1,6 +1,8 @@ ANDROID_JAR_DIRECTORIES ----------------------- +.. versionadded:: 3.4 + Set the Android property that specifies directories to search for the JAR libraries. diff --git a/Help/prop_tgt/ANDROID_JAVA_SOURCE_DIR.rst b/Help/prop_tgt/ANDROID_JAVA_SOURCE_DIR.rst index 90ef1ce..9ea9884 100644 --- a/Help/prop_tgt/ANDROID_JAVA_SOURCE_DIR.rst +++ b/Help/prop_tgt/ANDROID_JAVA_SOURCE_DIR.rst @@ -1,6 +1,8 @@ ANDROID_JAVA_SOURCE_DIR ----------------------- +.. versionadded:: 3.4 + Set the Android property that defines the Java source code root directories. This a string property that contains the directory paths separated by semicolon. This property is initialized by the value of the diff --git a/Help/prop_tgt/ANDROID_NATIVE_LIB_DEPENDENCIES.rst b/Help/prop_tgt/ANDROID_NATIVE_LIB_DEPENDENCIES.rst index 759a37b..3aa741f 100644 --- a/Help/prop_tgt/ANDROID_NATIVE_LIB_DEPENDENCIES.rst +++ b/Help/prop_tgt/ANDROID_NATIVE_LIB_DEPENDENCIES.rst @@ -1,6 +1,8 @@ ANDROID_NATIVE_LIB_DEPENDENCIES ------------------------------- +.. versionadded:: 3.4 + Set the Android property that specifies the .so dependencies. This is a string property. diff --git a/Help/prop_tgt/ANDROID_NATIVE_LIB_DIRECTORIES.rst b/Help/prop_tgt/ANDROID_NATIVE_LIB_DIRECTORIES.rst index d0cd29d..98200d9 100644 --- a/Help/prop_tgt/ANDROID_NATIVE_LIB_DIRECTORIES.rst +++ b/Help/prop_tgt/ANDROID_NATIVE_LIB_DIRECTORIES.rst @@ -1,6 +1,8 @@ ANDROID_NATIVE_LIB_DIRECTORIES ------------------------------ +.. versionadded:: 3.4 + Set the Android property that specifies directories to search for the ``.so`` libraries. diff --git a/Help/prop_tgt/ANDROID_PROCESS_MAX.rst b/Help/prop_tgt/ANDROID_PROCESS_MAX.rst index 847acae..0b6aba7 100644 --- a/Help/prop_tgt/ANDROID_PROCESS_MAX.rst +++ b/Help/prop_tgt/ANDROID_PROCESS_MAX.rst @@ -1,6 +1,8 @@ ANDROID_PROCESS_MAX ------------------- +.. versionadded:: 3.4 + Set the Android property that defines the maximum number of a parallel Android NDK compiler processes (e.g. ``4``). This property is initialized by the value of the diff --git a/Help/prop_tgt/ANDROID_PROGUARD.rst b/Help/prop_tgt/ANDROID_PROGUARD.rst index dafc51e..b5ce166 100644 --- a/Help/prop_tgt/ANDROID_PROGUARD.rst +++ b/Help/prop_tgt/ANDROID_PROGUARD.rst @@ -1,6 +1,8 @@ ANDROID_PROGUARD ---------------- +.. versionadded:: 3.4 + When this property is set to true that enables the ProGuard tool to shrink, optimize, and obfuscate the code by removing unused code and renaming classes, fields, and methods with semantically obscure names. diff --git a/Help/prop_tgt/ANDROID_PROGUARD_CONFIG_PATH.rst b/Help/prop_tgt/ANDROID_PROGUARD_CONFIG_PATH.rst index 0e929d1..6ac59d8 100644 --- a/Help/prop_tgt/ANDROID_PROGUARD_CONFIG_PATH.rst +++ b/Help/prop_tgt/ANDROID_PROGUARD_CONFIG_PATH.rst @@ -1,6 +1,8 @@ ANDROID_PROGUARD_CONFIG_PATH ---------------------------- +.. versionadded:: 3.4 + Set the Android property that specifies the location of the ProGuard config file. Leave empty to use the default one. This a string property that contains the path to ProGuard config file. diff --git a/Help/prop_tgt/ANDROID_SECURE_PROPS_PATH.rst b/Help/prop_tgt/ANDROID_SECURE_PROPS_PATH.rst index 9533f1a..f2ffa2e 100644 --- a/Help/prop_tgt/ANDROID_SECURE_PROPS_PATH.rst +++ b/Help/prop_tgt/ANDROID_SECURE_PROPS_PATH.rst @@ -1,6 +1,8 @@ ANDROID_SECURE_PROPS_PATH ------------------------- +.. versionadded:: 3.4 + Set the Android property that states the location of the secure properties file. This is a string property that contains the file path. This property is initialized by the value of the diff --git a/Help/prop_tgt/ANDROID_SKIP_ANT_STEP.rst b/Help/prop_tgt/ANDROID_SKIP_ANT_STEP.rst index 6361896..1a54bce 100644 --- a/Help/prop_tgt/ANDROID_SKIP_ANT_STEP.rst +++ b/Help/prop_tgt/ANDROID_SKIP_ANT_STEP.rst @@ -1,6 +1,8 @@ ANDROID_SKIP_ANT_STEP --------------------- +.. versionadded:: 3.4 + Set the Android property that defines whether or not to skip the Ant build step. This is a boolean property initialized by the value of the :variable:`CMAKE_ANDROID_SKIP_ANT_STEP` variable if it is set when a target is created. diff --git a/Help/prop_tgt/ANDROID_STL_TYPE.rst b/Help/prop_tgt/ANDROID_STL_TYPE.rst index 386e96e..c83712b 100644 --- a/Help/prop_tgt/ANDROID_STL_TYPE.rst +++ b/Help/prop_tgt/ANDROID_STL_TYPE.rst @@ -1,6 +1,8 @@ ANDROID_STL_TYPE ---------------- +.. versionadded:: 3.4 + When :ref:`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio Edition`, this property specifies the type of STL support for the project. This is a string property that could set to the one of the following values: diff --git a/Help/prop_tgt/AUTOGEN_BUILD_DIR.rst b/Help/prop_tgt/AUTOGEN_BUILD_DIR.rst index 909b14c..ff42ae8 100644 --- a/Help/prop_tgt/AUTOGEN_BUILD_DIR.rst +++ b/Help/prop_tgt/AUTOGEN_BUILD_DIR.rst @@ -1,6 +1,8 @@ AUTOGEN_BUILD_DIR ----------------- +.. versionadded:: 3.9 + Directory where :prop_tgt:`AUTOMOC`, :prop_tgt:`AUTOUIC` and :prop_tgt:`AUTORCC` generate files for the target. diff --git a/Help/prop_tgt/AUTOGEN_ORIGIN_DEPENDS.rst b/Help/prop_tgt/AUTOGEN_ORIGIN_DEPENDS.rst index 022bab5..563190a 100644 --- a/Help/prop_tgt/AUTOGEN_ORIGIN_DEPENDS.rst +++ b/Help/prop_tgt/AUTOGEN_ORIGIN_DEPENDS.rst @@ -1,6 +1,8 @@ AUTOGEN_ORIGIN_DEPENDS ---------------------- +.. versionadded:: 3.14 + Switch for forwarding origin target dependencies to the corresponding ``_autogen`` target. diff --git a/Help/prop_tgt/AUTOGEN_PARALLEL.rst b/Help/prop_tgt/AUTOGEN_PARALLEL.rst index 968b619..663b54e 100644 --- a/Help/prop_tgt/AUTOGEN_PARALLEL.rst +++ b/Help/prop_tgt/AUTOGEN_PARALLEL.rst @@ -1,6 +1,8 @@ AUTOGEN_PARALLEL ---------------- +.. versionadded:: 3.11 + Number of parallel ``moc`` or ``uic`` processes to start when using :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC`. diff --git a/Help/prop_tgt/AUTOMOC_COMPILER_PREDEFINES.rst b/Help/prop_tgt/AUTOMOC_COMPILER_PREDEFINES.rst index 57a647f..8998284 100644 --- a/Help/prop_tgt/AUTOMOC_COMPILER_PREDEFINES.rst +++ b/Help/prop_tgt/AUTOMOC_COMPILER_PREDEFINES.rst @@ -1,6 +1,8 @@ AUTOMOC_COMPILER_PREDEFINES --------------------------- +.. versionadded:: 3.10 + Boolean value used by :prop_tgt:`AUTOMOC` to determine if the compiler pre definitions file ``moc_predefs.h`` should be generated. diff --git a/Help/prop_tgt/AUTOMOC_DEPEND_FILTERS.rst b/Help/prop_tgt/AUTOMOC_DEPEND_FILTERS.rst index 6eda26c..1f31700 100644 --- a/Help/prop_tgt/AUTOMOC_DEPEND_FILTERS.rst +++ b/Help/prop_tgt/AUTOMOC_DEPEND_FILTERS.rst @@ -1,6 +1,8 @@ AUTOMOC_DEPEND_FILTERS ---------------------- +.. versionadded:: 3.9 + Filter definitions used by :prop_tgt:`AUTOMOC` to extract file names from a source file that are registered as additional dependencies for the ``moc`` file of the source file. diff --git a/Help/prop_tgt/AUTOMOC_EXECUTABLE.rst b/Help/prop_tgt/AUTOMOC_EXECUTABLE.rst index 6b66ce8..f4b8396 100644 --- a/Help/prop_tgt/AUTOMOC_EXECUTABLE.rst +++ b/Help/prop_tgt/AUTOMOC_EXECUTABLE.rst @@ -1,6 +1,8 @@ AUTOMOC_EXECUTABLE ------------------ +.. versionadded:: 3.14 + :prop_tgt:`AUTOMOC_EXECUTABLE` is file path pointing to the ``moc`` executable to use for :prop_tgt:`AUTOMOC` enabled files. Setting this property will make CMake skip the automatic detection of the diff --git a/Help/prop_tgt/AUTOMOC_MACRO_NAMES.rst b/Help/prop_tgt/AUTOMOC_MACRO_NAMES.rst index 5329bba..a53810d 100644 --- a/Help/prop_tgt/AUTOMOC_MACRO_NAMES.rst +++ b/Help/prop_tgt/AUTOMOC_MACRO_NAMES.rst @@ -1,6 +1,8 @@ AUTOMOC_MACRO_NAMES ------------------- +.. versionadded:: 3.10 + A :ref:`semicolon-separated list <CMake Language Lists>` list of macro names used by :prop_tgt:`AUTOMOC` to determine if a C++ file needs to be processed by ``moc``. diff --git a/Help/prop_tgt/AUTOMOC_PATH_PREFIX.rst b/Help/prop_tgt/AUTOMOC_PATH_PREFIX.rst index 3e3059d..4f85c16 100644 --- a/Help/prop_tgt/AUTOMOC_PATH_PREFIX.rst +++ b/Help/prop_tgt/AUTOMOC_PATH_PREFIX.rst @@ -1,6 +1,8 @@ AUTOMOC_PATH_PREFIX ------------------- +.. versionadded:: 3.16 + When this property is ``ON``, CMake will generate the ``-p`` path prefix option for ``moc`` on :prop_tgt:`AUTOMOC` enabled Qt targets. diff --git a/Help/prop_tgt/AUTORCC_EXECUTABLE.rst b/Help/prop_tgt/AUTORCC_EXECUTABLE.rst index ca0fbd7..4f85fba 100644 --- a/Help/prop_tgt/AUTORCC_EXECUTABLE.rst +++ b/Help/prop_tgt/AUTORCC_EXECUTABLE.rst @@ -1,6 +1,8 @@ AUTORCC_EXECUTABLE ------------------ +.. versionadded:: 3.14 + :prop_tgt:`AUTORCC_EXECUTABLE` is file path pointing to the ``rcc`` executable to use for :prop_tgt:`AUTORCC` enabled files. Setting this property will make CMake skip the automatic detection of the diff --git a/Help/prop_tgt/AUTOUIC_EXECUTABLE.rst b/Help/prop_tgt/AUTOUIC_EXECUTABLE.rst index 03bd554..5966326 100644 --- a/Help/prop_tgt/AUTOUIC_EXECUTABLE.rst +++ b/Help/prop_tgt/AUTOUIC_EXECUTABLE.rst @@ -1,6 +1,8 @@ AUTOUIC_EXECUTABLE ------------------ +.. versionadded:: 3.14 + :prop_tgt:`AUTOUIC_EXECUTABLE` is file path pointing to the ``uic`` executable to use for :prop_tgt:`AUTOUIC` enabled files. Setting this property will make CMake skip the automatic detection of the diff --git a/Help/prop_tgt/AUTOUIC_SEARCH_PATHS.rst b/Help/prop_tgt/AUTOUIC_SEARCH_PATHS.rst index 96d9f89..87fea48 100644 --- a/Help/prop_tgt/AUTOUIC_SEARCH_PATHS.rst +++ b/Help/prop_tgt/AUTOUIC_SEARCH_PATHS.rst @@ -1,6 +1,8 @@ AUTOUIC_SEARCH_PATHS -------------------- +.. versionadded:: 3.9 + Search path list used by :prop_tgt:`AUTOUIC` to find included ``.ui`` files. diff --git a/Help/prop_tgt/BINARY_DIR.rst b/Help/prop_tgt/BINARY_DIR.rst index 246f7e6..beab12c 100644 --- a/Help/prop_tgt/BINARY_DIR.rst +++ b/Help/prop_tgt/BINARY_DIR.rst @@ -1,6 +1,8 @@ BINARY_DIR ---------- +.. versionadded:: 3.4 + This read-only property reports the value of the :variable:`CMAKE_CURRENT_BINARY_DIR` variable in the directory in which the target was defined. diff --git a/Help/prop_tgt/BUILD_RPATH.rst b/Help/prop_tgt/BUILD_RPATH.rst index d978b94..1f917a5 100644 --- a/Help/prop_tgt/BUILD_RPATH.rst +++ b/Help/prop_tgt/BUILD_RPATH.rst @@ -1,6 +1,8 @@ BUILD_RPATH ----------- +.. versionadded:: 3.8 + A :ref:`semicolon-separated list <CMake Language Lists>` specifying runtime path (``RPATH``) entries to add to binaries linked in the build tree (for platforms that support it). The entries will *not* be used for binaries in the install diff --git a/Help/prop_tgt/BUILD_RPATH_USE_ORIGIN.rst b/Help/prop_tgt/BUILD_RPATH_USE_ORIGIN.rst index 3378797..2cdfa0d 100644 --- a/Help/prop_tgt/BUILD_RPATH_USE_ORIGIN.rst +++ b/Help/prop_tgt/BUILD_RPATH_USE_ORIGIN.rst @@ -1,6 +1,8 @@ BUILD_RPATH_USE_ORIGIN ---------------------- +.. versionadded:: 3.14 + Whether to use relative paths for the build ``RPATH``. This property is initialized by the value of the variable diff --git a/Help/prop_tgt/BUILD_WITH_INSTALL_NAME_DIR.rst b/Help/prop_tgt/BUILD_WITH_INSTALL_NAME_DIR.rst index bbb9a24..073dce5 100644 --- a/Help/prop_tgt/BUILD_WITH_INSTALL_NAME_DIR.rst +++ b/Help/prop_tgt/BUILD_WITH_INSTALL_NAME_DIR.rst @@ -1,6 +1,8 @@ BUILD_WITH_INSTALL_NAME_DIR --------------------------- +.. versionadded:: 3.9 + ``BUILD_WITH_INSTALL_NAME_DIR`` is a boolean specifying whether the macOS ``install_name`` of a target in the build tree uses the directory given by :prop_tgt:`INSTALL_NAME_DIR`. This setting only applies to targets on macOS. diff --git a/Help/prop_tgt/COMMON_LANGUAGE_RUNTIME.rst b/Help/prop_tgt/COMMON_LANGUAGE_RUNTIME.rst index 052ac6d..adfa6f7 100644 --- a/Help/prop_tgt/COMMON_LANGUAGE_RUNTIME.rst +++ b/Help/prop_tgt/COMMON_LANGUAGE_RUNTIME.rst @@ -1,6 +1,8 @@ COMMON_LANGUAGE_RUNTIME ----------------------- +.. versionadded:: 3.12 + By setting this target property, the target is configured to build with ``C++/CLI`` support. diff --git a/Help/prop_tgt/COMPILE_FEATURES.rst b/Help/prop_tgt/COMPILE_FEATURES.rst index 46aec4f..9b937ed 100644 --- a/Help/prop_tgt/COMPILE_FEATURES.rst +++ b/Help/prop_tgt/COMPILE_FEATURES.rst @@ -1,6 +1,8 @@ COMPILE_FEATURES ---------------- +.. versionadded:: 3.1 + Compiler features enabled for this target. The list of features in this property are a subset of the features listed diff --git a/Help/prop_tgt/COMPILE_PDB_NAME.rst b/Help/prop_tgt/COMPILE_PDB_NAME.rst index 24a9f62..b76afeb 100644 --- a/Help/prop_tgt/COMPILE_PDB_NAME.rst +++ b/Help/prop_tgt/COMPILE_PDB_NAME.rst @@ -1,6 +1,8 @@ COMPILE_PDB_NAME ---------------- +.. versionadded:: 3.1 + Output name for the MS debug symbol ``.pdb`` file generated by the compiler while building source files. diff --git a/Help/prop_tgt/COMPILE_PDB_NAME_CONFIG.rst b/Help/prop_tgt/COMPILE_PDB_NAME_CONFIG.rst index e4077f5..4c9825d 100644 --- a/Help/prop_tgt/COMPILE_PDB_NAME_CONFIG.rst +++ b/Help/prop_tgt/COMPILE_PDB_NAME_CONFIG.rst @@ -1,6 +1,8 @@ COMPILE_PDB_NAME_<CONFIG> ------------------------- +.. versionadded:: 3.1 + Per-configuration output name for the MS debug symbol ``.pdb`` file generated by the compiler while building source files. diff --git a/Help/prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY.rst b/Help/prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY.rst index 34f49be..3f3df66 100644 --- a/Help/prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY.rst +++ b/Help/prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY.rst @@ -1,6 +1,8 @@ COMPILE_PDB_OUTPUT_DIRECTORY ---------------------------- +.. versionadded:: 3.1 + Output directory for the MS debug symbol ``.pdb`` file generated by the compiler while building source files. diff --git a/Help/prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG.rst b/Help/prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG.rst index f261756..c25c2fc 100644 --- a/Help/prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG.rst +++ b/Help/prop_tgt/COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG.rst @@ -1,6 +1,8 @@ COMPILE_PDB_OUTPUT_DIRECTORY_<CONFIG> ------------------------------------- +.. versionadded:: 3.1 + Per-configuration output directory for the MS debug symbol ``.pdb`` file generated by the compiler while building source files. diff --git a/Help/prop_tgt/CROSSCOMPILING_EMULATOR.rst b/Help/prop_tgt/CROSSCOMPILING_EMULATOR.rst index 87c5978..d7fb9b1 100644 --- a/Help/prop_tgt/CROSSCOMPILING_EMULATOR.rst +++ b/Help/prop_tgt/CROSSCOMPILING_EMULATOR.rst @@ -1,6 +1,8 @@ CROSSCOMPILING_EMULATOR ----------------------- +.. versionadded:: 3.3 + Use the given emulator to run executables created when crosscompiling. This command will be added as a prefix to :command:`add_test`, :command:`add_custom_command`, and :command:`add_custom_target` commands diff --git a/Help/prop_tgt/CUDA_ARCHITECTURES.rst b/Help/prop_tgt/CUDA_ARCHITECTURES.rst index bae3c6f..d56b769 100644 --- a/Help/prop_tgt/CUDA_ARCHITECTURES.rst +++ b/Help/prop_tgt/CUDA_ARCHITECTURES.rst @@ -1,6 +1,8 @@ CUDA_ARCHITECTURES ------------------ +.. versionadded:: 3.18 + List of architectures to generate device code for. An architecture can be suffixed by either ``-real`` or ``-virtual`` to specify diff --git a/Help/prop_tgt/CUDA_EXTENSIONS.rst b/Help/prop_tgt/CUDA_EXTENSIONS.rst index 098ca3c..2ddba0b 100644 --- a/Help/prop_tgt/CUDA_EXTENSIONS.rst +++ b/Help/prop_tgt/CUDA_EXTENSIONS.rst @@ -1,6 +1,8 @@ CUDA_EXTENSIONS --------------- +.. versionadded:: 3.8 + Boolean specifying whether compiler specific extensions are requested. This property specifies whether compiler specific extensions should be diff --git a/Help/prop_tgt/CUDA_PTX_COMPILATION.rst b/Help/prop_tgt/CUDA_PTX_COMPILATION.rst index 0ee372b..4e90afe 100644 --- a/Help/prop_tgt/CUDA_PTX_COMPILATION.rst +++ b/Help/prop_tgt/CUDA_PTX_COMPILATION.rst @@ -1,6 +1,8 @@ CUDA_PTX_COMPILATION -------------------- +.. versionadded:: 3.9 + Compile CUDA sources to ``.ptx`` files instead of ``.obj`` files within :ref:`Object Libraries`. diff --git a/Help/prop_tgt/CUDA_RESOLVE_DEVICE_SYMBOLS.rst b/Help/prop_tgt/CUDA_RESOLVE_DEVICE_SYMBOLS.rst index dae960f..819ce3e 100644 --- a/Help/prop_tgt/CUDA_RESOLVE_DEVICE_SYMBOLS.rst +++ b/Help/prop_tgt/CUDA_RESOLVE_DEVICE_SYMBOLS.rst @@ -1,6 +1,8 @@ CUDA_RESOLVE_DEVICE_SYMBOLS --------------------------- +.. versionadded:: 3.9 + CUDA only: Enables device linking for the specific library target where required. diff --git a/Help/prop_tgt/CUDA_RUNTIME_LIBRARY.rst b/Help/prop_tgt/CUDA_RUNTIME_LIBRARY.rst index 11b344c..e937fc6 100644 --- a/Help/prop_tgt/CUDA_RUNTIME_LIBRARY.rst +++ b/Help/prop_tgt/CUDA_RUNTIME_LIBRARY.rst @@ -1,6 +1,8 @@ CUDA_RUNTIME_LIBRARY -------------------- +.. versionadded:: 3.17 + Select the CUDA runtime library for use by compilers targeting the CUDA language. The allowed case insensitive values are: diff --git a/Help/prop_tgt/CUDA_SEPARABLE_COMPILATION.rst b/Help/prop_tgt/CUDA_SEPARABLE_COMPILATION.rst index d306d7f..32222f9 100644 --- a/Help/prop_tgt/CUDA_SEPARABLE_COMPILATION.rst +++ b/Help/prop_tgt/CUDA_SEPARABLE_COMPILATION.rst @@ -1,6 +1,8 @@ CUDA_SEPARABLE_COMPILATION -------------------------- +.. versionadded:: 3.8 + CUDA only: Enables separate compilation of device code If set this will enable separable compilation for all CUDA files for diff --git a/Help/prop_tgt/CUDA_STANDARD.rst b/Help/prop_tgt/CUDA_STANDARD.rst index 6d6774e..fcc4725 100644 --- a/Help/prop_tgt/CUDA_STANDARD.rst +++ b/Help/prop_tgt/CUDA_STANDARD.rst @@ -1,6 +1,8 @@ CUDA_STANDARD ------------- +.. versionadded:: 3.8 + The CUDA/C++ standard whose features are requested to build this target. This property specifies the CUDA/C++ standard whose features are requested diff --git a/Help/prop_tgt/CUDA_STANDARD_REQUIRED.rst b/Help/prop_tgt/CUDA_STANDARD_REQUIRED.rst index b2d5b28..b923800 100644 --- a/Help/prop_tgt/CUDA_STANDARD_REQUIRED.rst +++ b/Help/prop_tgt/CUDA_STANDARD_REQUIRED.rst @@ -1,6 +1,8 @@ CUDA_STANDARD_REQUIRED ---------------------- +.. versionadded:: 3.8 + Boolean describing whether the value of :prop_tgt:`CUDA_STANDARD` is a requirement. If this property is set to ``ON``, then the value of the diff --git a/Help/prop_tgt/CXX_EXTENSIONS.rst b/Help/prop_tgt/CXX_EXTENSIONS.rst index 280bb3a..bda531e 100644 --- a/Help/prop_tgt/CXX_EXTENSIONS.rst +++ b/Help/prop_tgt/CXX_EXTENSIONS.rst @@ -1,6 +1,8 @@ CXX_EXTENSIONS -------------- +.. versionadded:: 3.1 + Boolean specifying whether compiler specific extensions are requested. This property specifies whether compiler specific extensions should be diff --git a/Help/prop_tgt/CXX_STANDARD.rst b/Help/prop_tgt/CXX_STANDARD.rst index ccc0147..f322ffe 100644 --- a/Help/prop_tgt/CXX_STANDARD.rst +++ b/Help/prop_tgt/CXX_STANDARD.rst @@ -1,6 +1,8 @@ CXX_STANDARD ------------ +.. versionadded:: 3.1 + The C++ standard whose features are requested to build this target. This property specifies the C++ standard whose features are requested diff --git a/Help/prop_tgt/CXX_STANDARD_REQUIRED.rst b/Help/prop_tgt/CXX_STANDARD_REQUIRED.rst index 697d7f6..2ea2215 100644 --- a/Help/prop_tgt/CXX_STANDARD_REQUIRED.rst +++ b/Help/prop_tgt/CXX_STANDARD_REQUIRED.rst @@ -1,6 +1,8 @@ CXX_STANDARD_REQUIRED --------------------- +.. versionadded:: 3.1 + Boolean describing whether the value of :prop_tgt:`CXX_STANDARD` is a requirement. If this property is set to ``ON``, then the value of the diff --git a/Help/prop_tgt/C_EXTENSIONS.rst b/Help/prop_tgt/C_EXTENSIONS.rst index 05b14ce..b2abb46 100644 --- a/Help/prop_tgt/C_EXTENSIONS.rst +++ b/Help/prop_tgt/C_EXTENSIONS.rst @@ -1,6 +1,8 @@ C_EXTENSIONS ------------ +.. versionadded:: 3.1 + Boolean specifying whether compiler specific extensions are requested. This property specifies whether compiler specific extensions should be diff --git a/Help/prop_tgt/C_STANDARD.rst b/Help/prop_tgt/C_STANDARD.rst index 6a05139..999a9e7 100644 --- a/Help/prop_tgt/C_STANDARD.rst +++ b/Help/prop_tgt/C_STANDARD.rst @@ -1,6 +1,8 @@ C_STANDARD ---------- +.. versionadded:: 3.1 + The C standard whose features are requested to build this target. This property specifies the C standard whose features are requested diff --git a/Help/prop_tgt/C_STANDARD_REQUIRED.rst b/Help/prop_tgt/C_STANDARD_REQUIRED.rst index acfad98..c1b58a0 100644 --- a/Help/prop_tgt/C_STANDARD_REQUIRED.rst +++ b/Help/prop_tgt/C_STANDARD_REQUIRED.rst @@ -1,6 +1,8 @@ C_STANDARD_REQUIRED ------------------- +.. versionadded:: 3.1 + Boolean describing whether the value of :prop_tgt:`C_STANDARD` is a requirement. If this property is set to ``ON``, then the value of the diff --git a/Help/prop_tgt/DEPLOYMENT_ADDITIONAL_FILES.rst b/Help/prop_tgt/DEPLOYMENT_ADDITIONAL_FILES.rst index 5e9c191..f11fe7c 100644 --- a/Help/prop_tgt/DEPLOYMENT_ADDITIONAL_FILES.rst +++ b/Help/prop_tgt/DEPLOYMENT_ADDITIONAL_FILES.rst @@ -1,6 +1,8 @@ DEPLOYMENT_ADDITIONAL_FILES --------------------------- +.. versionadded:: 3.13 + Set the WinCE project ``AdditionalFiles`` in ``DeploymentTool`` in ``.vcproj`` files generated by the :generator:`Visual Studio 9 2008` generator. This is useful when you want to debug on remote WinCE device. diff --git a/Help/prop_tgt/DEPLOYMENT_REMOTE_DIRECTORY.rst b/Help/prop_tgt/DEPLOYMENT_REMOTE_DIRECTORY.rst index 368768a..0680238 100644 --- a/Help/prop_tgt/DEPLOYMENT_REMOTE_DIRECTORY.rst +++ b/Help/prop_tgt/DEPLOYMENT_REMOTE_DIRECTORY.rst @@ -1,6 +1,8 @@ DEPLOYMENT_REMOTE_DIRECTORY --------------------------- +.. versionadded:: 3.6 + Set the WinCE project ``RemoteDirectory`` in ``DeploymentTool`` and ``RemoteExecutable`` in ``DebuggerTool`` in ``.vcproj`` files generated by the :generator:`Visual Studio 9 2008` generator. diff --git a/Help/prop_tgt/DEPRECATION.rst b/Help/prop_tgt/DEPRECATION.rst index fef2e2e..45ca848 100644 --- a/Help/prop_tgt/DEPRECATION.rst +++ b/Help/prop_tgt/DEPRECATION.rst @@ -1,6 +1,8 @@ DEPRECATION ----------- +.. versionadded:: 3.17 + Deprecation message from imported target's developer. ``DEPRECATION`` is the message regarding a deprecation status to be displayed diff --git a/Help/prop_tgt/DISABLE_PRECOMPILE_HEADERS.rst b/Help/prop_tgt/DISABLE_PRECOMPILE_HEADERS.rst index 4cef023..7b3826b 100644 --- a/Help/prop_tgt/DISABLE_PRECOMPILE_HEADERS.rst +++ b/Help/prop_tgt/DISABLE_PRECOMPILE_HEADERS.rst @@ -1,6 +1,8 @@ DISABLE_PRECOMPILE_HEADERS -------------------------- +.. versionadded:: 3.16 + Disables the precompilation of header files specified by :prop_tgt:`PRECOMPILE_HEADERS` property. diff --git a/Help/prop_tgt/DOTNET_TARGET_FRAMEWORK.rst b/Help/prop_tgt/DOTNET_TARGET_FRAMEWORK.rst index 8698eb6..3ba4e25 100644 --- a/Help/prop_tgt/DOTNET_TARGET_FRAMEWORK.rst +++ b/Help/prop_tgt/DOTNET_TARGET_FRAMEWORK.rst @@ -1,6 +1,8 @@ DOTNET_TARGET_FRAMEWORK ----------------------- +.. versionadded:: 3.17 + Specify the .NET target framework. Used to specify the .NET target framework for C++/CLI and C#. For diff --git a/Help/prop_tgt/DOTNET_TARGET_FRAMEWORK_VERSION.rst b/Help/prop_tgt/DOTNET_TARGET_FRAMEWORK_VERSION.rst index b33f4fb..fbd1aab 100644 --- a/Help/prop_tgt/DOTNET_TARGET_FRAMEWORK_VERSION.rst +++ b/Help/prop_tgt/DOTNET_TARGET_FRAMEWORK_VERSION.rst @@ -1,6 +1,8 @@ DOTNET_TARGET_FRAMEWORK_VERSION ------------------------------- +.. versionadded:: 3.12 + Specify the .NET target framework version. Used to specify the .NET target framework version for C++/CLI and C#. diff --git a/Help/prop_tgt/EXPORT_PROPERTIES.rst b/Help/prop_tgt/EXPORT_PROPERTIES.rst index bcf47a6..34c054f 100644 --- a/Help/prop_tgt/EXPORT_PROPERTIES.rst +++ b/Help/prop_tgt/EXPORT_PROPERTIES.rst @@ -1,6 +1,8 @@ EXPORT_PROPERTIES ----------------- +.. versionadded:: 3.12 + List additional properties to export for a target. This property contains a list of property names that should be exported by diff --git a/Help/prop_tgt/FRAMEWORK_MULTI_CONFIG_POSTFIX_CONFIG.rst b/Help/prop_tgt/FRAMEWORK_MULTI_CONFIG_POSTFIX_CONFIG.rst index 5d0fc3d..84d0c1e 100644 --- a/Help/prop_tgt/FRAMEWORK_MULTI_CONFIG_POSTFIX_CONFIG.rst +++ b/Help/prop_tgt/FRAMEWORK_MULTI_CONFIG_POSTFIX_CONFIG.rst @@ -1,6 +1,8 @@ FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG> --------------------------------------- +.. versionadded:: 3.18 + Postfix to append to the framework file name for configuration ``<CONFIG>``, when using a multi-config generator (like Xcode and Ninja Multi-Config). @@ -8,7 +10,7 @@ When building with configuration ``<CONFIG>`` the value of this property is appended to the framework file name built on disk. For example, given a framework called ``my_fw``, a value of ``_debug`` -for the ``FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG>`` property, and +for the ``FRAMEWORK_MULTI_CONFIG_POSTFIX_DEBUG`` property, and ``Debug;Release`` in :variable:`CMAKE_CONFIGURATION_TYPES`, the following relevant files would be created for the ``Debug`` and ``Release`` configurations: diff --git a/Help/prop_tgt/FRAMEWORK_VERSION.rst b/Help/prop_tgt/FRAMEWORK_VERSION.rst index c2ae7b9..38b8137 100644 --- a/Help/prop_tgt/FRAMEWORK_VERSION.rst +++ b/Help/prop_tgt/FRAMEWORK_VERSION.rst @@ -1,6 +1,8 @@ FRAMEWORK_VERSION ----------------- +.. versionadded:: 3.4 + Version of a framework created using the :prop_tgt:`FRAMEWORK` target property (e.g. ``A``). diff --git a/Help/prop_tgt/Fortran_PREPROCESS.rst b/Help/prop_tgt/Fortran_PREPROCESS.rst index 47a15c0..e7e2fba 100644 --- a/Help/prop_tgt/Fortran_PREPROCESS.rst +++ b/Help/prop_tgt/Fortran_PREPROCESS.rst @@ -1,6 +1,8 @@ Fortran_PREPROCESS ------------------ +.. versionadded:: 3.18 + Control whether the Fortran source file should be unconditionally preprocessed. diff --git a/Help/prop_tgt/GHS_INTEGRITY_APP.rst b/Help/prop_tgt/GHS_INTEGRITY_APP.rst index b669781..cccd087 100644 --- a/Help/prop_tgt/GHS_INTEGRITY_APP.rst +++ b/Help/prop_tgt/GHS_INTEGRITY_APP.rst @@ -1,6 +1,8 @@ GHS_INTEGRITY_APP ----------------- +.. versionadded:: 3.14 + ``ON`` / ``OFF`` boolean to determine if an executable target should be treated as an `Integrity Application`. diff --git a/Help/prop_tgt/GHS_NO_SOURCE_GROUP_FILE.rst b/Help/prop_tgt/GHS_NO_SOURCE_GROUP_FILE.rst index 11ce0b22..fe6b8e6 100644 --- a/Help/prop_tgt/GHS_NO_SOURCE_GROUP_FILE.rst +++ b/Help/prop_tgt/GHS_NO_SOURCE_GROUP_FILE.rst @@ -1,6 +1,8 @@ GHS_NO_SOURCE_GROUP_FILE ------------------------ +.. versionadded:: 3.14 + ``ON`` / ``OFF`` boolean to control if the project file for a target should be one single file or multiple files. diff --git a/Help/prop_tgt/IMPORTED_COMMON_LANGUAGE_RUNTIME.rst b/Help/prop_tgt/IMPORTED_COMMON_LANGUAGE_RUNTIME.rst index 99e3bc4..8c20e07 100644 --- a/Help/prop_tgt/IMPORTED_COMMON_LANGUAGE_RUNTIME.rst +++ b/Help/prop_tgt/IMPORTED_COMMON_LANGUAGE_RUNTIME.rst @@ -1,6 +1,8 @@ IMPORTED_COMMON_LANGUAGE_RUNTIME -------------------------------- +.. versionadded:: 3.12 + Property to define if the target uses ``C++/CLI``. Ignored for non-imported targets. diff --git a/Help/prop_tgt/IMPORTED_GLOBAL.rst b/Help/prop_tgt/IMPORTED_GLOBAL.rst index 1a9129f..176127f 100644 --- a/Help/prop_tgt/IMPORTED_GLOBAL.rst +++ b/Help/prop_tgt/IMPORTED_GLOBAL.rst @@ -1,6 +1,8 @@ IMPORTED_GLOBAL --------------- +.. versionadded:: 3.11 + Indication of whether an :ref:`IMPORTED target <Imported Targets>` is globally visible. diff --git a/Help/prop_tgt/IMPORTED_LIBNAME.rst b/Help/prop_tgt/IMPORTED_LIBNAME.rst index 1943dba..7a83906 100644 --- a/Help/prop_tgt/IMPORTED_LIBNAME.rst +++ b/Help/prop_tgt/IMPORTED_LIBNAME.rst @@ -1,6 +1,8 @@ IMPORTED_LIBNAME ---------------- +.. versionadded:: 3.8 + Specify the link library name for an :ref:`imported <Imported Targets>` :ref:`Interface Library <Interface Libraries>`. diff --git a/Help/prop_tgt/IMPORTED_LIBNAME_CONFIG.rst b/Help/prop_tgt/IMPORTED_LIBNAME_CONFIG.rst index a28b838..df64769 100644 --- a/Help/prop_tgt/IMPORTED_LIBNAME_CONFIG.rst +++ b/Help/prop_tgt/IMPORTED_LIBNAME_CONFIG.rst @@ -1,6 +1,8 @@ IMPORTED_LIBNAME_<CONFIG> ------------------------- +.. versionadded:: 3.8 + <CONFIG>-specific version of :prop_tgt:`IMPORTED_LIBNAME` property. Configuration names correspond to those provided by the project from diff --git a/Help/prop_tgt/IMPORTED_OBJECTS.rst b/Help/prop_tgt/IMPORTED_OBJECTS.rst index 50a329f..bbbcd86 100644 --- a/Help/prop_tgt/IMPORTED_OBJECTS.rst +++ b/Help/prop_tgt/IMPORTED_OBJECTS.rst @@ -1,6 +1,8 @@ IMPORTED_OBJECTS ---------------- +.. versionadded:: 3.9 + A :ref:`semicolon-separated list <CMake Language Lists>` of absolute paths to the object files on disk for an :ref:`imported <Imported targets>` :ref:`object library <object libraries>`. diff --git a/Help/prop_tgt/IMPORTED_OBJECTS_CONFIG.rst b/Help/prop_tgt/IMPORTED_OBJECTS_CONFIG.rst index 4419ed1..b12ca38 100644 --- a/Help/prop_tgt/IMPORTED_OBJECTS_CONFIG.rst +++ b/Help/prop_tgt/IMPORTED_OBJECTS_CONFIG.rst @@ -1,6 +1,8 @@ IMPORTED_OBJECTS_<CONFIG> ------------------------- +.. versionadded:: 3.9 + <CONFIG>-specific version of :prop_tgt:`IMPORTED_OBJECTS` property. Configuration names correspond to those provided by the project from diff --git a/Help/prop_tgt/INSTALL_REMOVE_ENVIRONMENT_RPATH.rst b/Help/prop_tgt/INSTALL_REMOVE_ENVIRONMENT_RPATH.rst index 72dcaa0..f41e41c 100644 --- a/Help/prop_tgt/INSTALL_REMOVE_ENVIRONMENT_RPATH.rst +++ b/Help/prop_tgt/INSTALL_REMOVE_ENVIRONMENT_RPATH.rst @@ -1,6 +1,8 @@ INSTALL_REMOVE_ENVIRONMENT_RPATH -------------------------------- +.. versionadded:: 3.16 + Controls whether toolchain-defined rpaths should be removed during installation. When a target is being installed, CMake may need to rewrite its rpath diff --git a/Help/prop_tgt/INTERFACE_COMPILE_FEATURES.rst b/Help/prop_tgt/INTERFACE_COMPILE_FEATURES.rst index 31b594f..0db3b0c 100644 --- a/Help/prop_tgt/INTERFACE_COMPILE_FEATURES.rst +++ b/Help/prop_tgt/INTERFACE_COMPILE_FEATURES.rst @@ -1,6 +1,8 @@ INTERFACE_COMPILE_FEATURES -------------------------- +.. versionadded:: 3.1 + .. |property_name| replace:: compile features .. |command_name| replace:: :command:`target_compile_features` .. |PROPERTY_INTERFACE_NAME| replace:: ``INTERFACE_COMPILE_FEATURES`` diff --git a/Help/prop_tgt/INTERFACE_LINK_DEPENDS.rst b/Help/prop_tgt/INTERFACE_LINK_DEPENDS.rst index 790554d..9c8275d 100644 --- a/Help/prop_tgt/INTERFACE_LINK_DEPENDS.rst +++ b/Help/prop_tgt/INTERFACE_LINK_DEPENDS.rst @@ -1,6 +1,8 @@ INTERFACE_LINK_DEPENDS ---------------------- +.. versionadded:: 3.13 + Additional public interface files on which a target binary depends for linking. This property is supported only by :generator:`Ninja` and diff --git a/Help/prop_tgt/INTERFACE_LINK_DIRECTORIES.rst b/Help/prop_tgt/INTERFACE_LINK_DIRECTORIES.rst index 56a4ec0..de1dabb 100644 --- a/Help/prop_tgt/INTERFACE_LINK_DIRECTORIES.rst +++ b/Help/prop_tgt/INTERFACE_LINK_DIRECTORIES.rst @@ -1,6 +1,8 @@ INTERFACE_LINK_DIRECTORIES -------------------------- +.. versionadded:: 3.13 + .. |property_name| replace:: link directories .. |command_name| replace:: :command:`target_link_directories` .. |PROPERTY_INTERFACE_NAME| replace:: ``INTERFACE_LINK_DIRECTORIES`` diff --git a/Help/prop_tgt/INTERFACE_LINK_OPTIONS.rst b/Help/prop_tgt/INTERFACE_LINK_OPTIONS.rst index c293b98..4245fe9 100644 --- a/Help/prop_tgt/INTERFACE_LINK_OPTIONS.rst +++ b/Help/prop_tgt/INTERFACE_LINK_OPTIONS.rst @@ -1,6 +1,8 @@ INTERFACE_LINK_OPTIONS ---------------------- +.. versionadded:: 3.13 + .. |property_name| replace:: link options .. |command_name| replace:: :command:`target_link_options` .. |PROPERTY_INTERFACE_NAME| replace:: ``INTERFACE_LINK_OPTIONS`` diff --git a/Help/prop_tgt/INTERFACE_PRECOMPILE_HEADERS.rst b/Help/prop_tgt/INTERFACE_PRECOMPILE_HEADERS.rst index e285407..2299264 100644 --- a/Help/prop_tgt/INTERFACE_PRECOMPILE_HEADERS.rst +++ b/Help/prop_tgt/INTERFACE_PRECOMPILE_HEADERS.rst @@ -1,6 +1,8 @@ INTERFACE_PRECOMPILE_HEADERS ---------------------------- +.. versionadded:: 3.16 + List of interface header files to precompile into consuming targets. Targets may populate this property to publish the header files diff --git a/Help/prop_tgt/INTERFACE_SOURCES.rst b/Help/prop_tgt/INTERFACE_SOURCES.rst index a224b68..759c482 100644 --- a/Help/prop_tgt/INTERFACE_SOURCES.rst +++ b/Help/prop_tgt/INTERFACE_SOURCES.rst @@ -1,6 +1,8 @@ INTERFACE_SOURCES ----------------- +.. versionadded:: 3.1 + List of interface sources to compile into consuming targets. Targets may populate this property to publish the sources diff --git a/Help/prop_tgt/IOS_INSTALL_COMBINED.rst b/Help/prop_tgt/IOS_INSTALL_COMBINED.rst index 59f67a7..23a86e6 100644 --- a/Help/prop_tgt/IOS_INSTALL_COMBINED.rst +++ b/Help/prop_tgt/IOS_INSTALL_COMBINED.rst @@ -1,6 +1,8 @@ IOS_INSTALL_COMBINED -------------------- +.. versionadded:: 3.5 + Build a combined (device and simulator) target when installing. When this property is set to set to false (which is the default) then it will diff --git a/Help/prop_tgt/JOB_POOL_PRECOMPILE_HEADER.rst b/Help/prop_tgt/JOB_POOL_PRECOMPILE_HEADER.rst index ece28a4..42cace0 100644 --- a/Help/prop_tgt/JOB_POOL_PRECOMPILE_HEADER.rst +++ b/Help/prop_tgt/JOB_POOL_PRECOMPILE_HEADER.rst @@ -1,6 +1,8 @@ JOB_POOL_PRECOMPILE_HEADER -------------------------- +.. versionadded:: 3.17 + Ninja only: Pool used for generating pre-compiled headers. The number of parallel compile processes could be limited by defining diff --git a/Help/prop_tgt/LANG_CLANG_TIDY.rst b/Help/prop_tgt/LANG_CLANG_TIDY.rst index 2bfef66..7fc2372 100644 --- a/Help/prop_tgt/LANG_CLANG_TIDY.rst +++ b/Help/prop_tgt/LANG_CLANG_TIDY.rst @@ -1,6 +1,8 @@ <LANG>_CLANG_TIDY ----------------- +.. versionadded:: 3.6 + This property is implemented only when ``<LANG>`` is ``C`` or ``CXX``. Specify a :ref:`semicolon-separated list <CMake Language Lists>` containing a command diff --git a/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst b/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst index a6f2b24..77ae1f6 100644 --- a/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst +++ b/Help/prop_tgt/LANG_COMPILER_LAUNCHER.rst @@ -1,6 +1,8 @@ <LANG>_COMPILER_LAUNCHER ------------------------ +.. versionadded:: 3.4 + This property is implemented only when ``<LANG>`` is ``C``, ``CXX``, ``Fortran``, ``OBJC``, ``OBJCXX``, or ``CUDA``. diff --git a/Help/prop_tgt/LANG_CPPCHECK.rst b/Help/prop_tgt/LANG_CPPCHECK.rst index 60785d0..80acbc0 100644 --- a/Help/prop_tgt/LANG_CPPCHECK.rst +++ b/Help/prop_tgt/LANG_CPPCHECK.rst @@ -1,6 +1,8 @@ <LANG>_CPPCHECK --------------- +.. versionadded:: 3.10 + This property is supported only when ``<LANG>`` is ``C`` or ``CXX``. Specify a :ref:`semicolon-separated list <CMake Language Lists>` containing a command line diff --git a/Help/prop_tgt/LANG_CPPLINT.rst b/Help/prop_tgt/LANG_CPPLINT.rst index 9944c88..be6db46 100644 --- a/Help/prop_tgt/LANG_CPPLINT.rst +++ b/Help/prop_tgt/LANG_CPPLINT.rst @@ -1,6 +1,8 @@ <LANG>_CPPLINT -------------- +.. versionadded:: 3.8 + This property is supported only when ``<LANG>`` is ``C`` or ``CXX``. Specify a :ref:`semicolon-separated list <CMake Language Lists>` containing a command line diff --git a/Help/prop_tgt/LANG_INCLUDE_WHAT_YOU_USE.rst b/Help/prop_tgt/LANG_INCLUDE_WHAT_YOU_USE.rst index 35220e4..eebef56 100644 --- a/Help/prop_tgt/LANG_INCLUDE_WHAT_YOU_USE.rst +++ b/Help/prop_tgt/LANG_INCLUDE_WHAT_YOU_USE.rst @@ -1,6 +1,8 @@ <LANG>_INCLUDE_WHAT_YOU_USE --------------------------- +.. versionadded:: 3.3 + This property is implemented only when ``<LANG>`` is ``C`` or ``CXX``. Specify a :ref:`semicolon-separated list <CMake Language Lists>` containing a command diff --git a/Help/prop_tgt/LINK_DIRECTORIES.rst b/Help/prop_tgt/LINK_DIRECTORIES.rst index c2905b3..67be494 100644 --- a/Help/prop_tgt/LINK_DIRECTORIES.rst +++ b/Help/prop_tgt/LINK_DIRECTORIES.rst @@ -1,6 +1,8 @@ LINK_DIRECTORIES ---------------- +.. versionadded:: 3.13 + List of directories to use for the link step of shared library, module and executable targets. diff --git a/Help/prop_tgt/LINK_OPTIONS.rst b/Help/prop_tgt/LINK_OPTIONS.rst index ff3ee87..8c0dfc4 100644 --- a/Help/prop_tgt/LINK_OPTIONS.rst +++ b/Help/prop_tgt/LINK_OPTIONS.rst @@ -1,6 +1,8 @@ LINK_OPTIONS ------------ +.. versionadded:: 3.13 + List of options to use for the link step of shared library, module and executable targets as well as the device link step. Targets that are static libraries need to use the :prop_tgt:`STATIC_LIBRARY_OPTIONS` target property. diff --git a/Help/prop_tgt/LINK_WHAT_YOU_USE.rst b/Help/prop_tgt/LINK_WHAT_YOU_USE.rst index 32d6edb..2ed93ad 100644 --- a/Help/prop_tgt/LINK_WHAT_YOU_USE.rst +++ b/Help/prop_tgt/LINK_WHAT_YOU_USE.rst @@ -1,6 +1,8 @@ LINK_WHAT_YOU_USE --------------------------- +.. versionadded:: 3.7 + This is a boolean option that when set to ``TRUE`` will automatically run ``ldd -r -u`` on the target after it is linked. In addition, the linker flag ``-Wl,--no-as-needed`` will be passed to the target with the link command so diff --git a/Help/prop_tgt/MACHO_COMPATIBILITY_VERSION.rst b/Help/prop_tgt/MACHO_COMPATIBILITY_VERSION.rst index 26d5cc8..a24b255 100644 --- a/Help/prop_tgt/MACHO_COMPATIBILITY_VERSION.rst +++ b/Help/prop_tgt/MACHO_COMPATIBILITY_VERSION.rst @@ -1,6 +1,8 @@ MACHO_COMPATIBILITY_VERSION --------------------------- +.. versionadded:: 3.17 + What compatibility version number is this target for Mach-O binaries. For shared libraries on Mach-O systems (e.g. macOS, iOS) diff --git a/Help/prop_tgt/MACHO_CURRENT_VERSION.rst b/Help/prop_tgt/MACHO_CURRENT_VERSION.rst index 9afb356..530f79b 100644 --- a/Help/prop_tgt/MACHO_CURRENT_VERSION.rst +++ b/Help/prop_tgt/MACHO_CURRENT_VERSION.rst @@ -1,6 +1,8 @@ MACHO_CURRENT_VERSION --------------------- +.. versionadded:: 3.17 + What current version number is this target for Mach-O binaries. For shared libraries on Mach-O systems (e.g. macOS, iOS) diff --git a/Help/prop_tgt/MANUALLY_ADDED_DEPENDENCIES.rst b/Help/prop_tgt/MANUALLY_ADDED_DEPENDENCIES.rst index c12ea14..72871b3 100644 --- a/Help/prop_tgt/MANUALLY_ADDED_DEPENDENCIES.rst +++ b/Help/prop_tgt/MANUALLY_ADDED_DEPENDENCIES.rst @@ -1,6 +1,8 @@ MANUALLY_ADDED_DEPENDENCIES --------------------------- +.. versionadded:: 3.8 + Get manually added dependencies to other top-level targets. This read-only property can be used to query all dependencies that diff --git a/Help/prop_tgt/MSVC_RUNTIME_LIBRARY.rst b/Help/prop_tgt/MSVC_RUNTIME_LIBRARY.rst index 73792de..9b978b2 100644 --- a/Help/prop_tgt/MSVC_RUNTIME_LIBRARY.rst +++ b/Help/prop_tgt/MSVC_RUNTIME_LIBRARY.rst @@ -1,6 +1,8 @@ MSVC_RUNTIME_LIBRARY -------------------- +.. versionadded:: 3.15 + Select the MSVC runtime library for use by compilers targeting the MSVC ABI. The allowed values are: diff --git a/Help/prop_tgt/OBJCXX_EXTENSIONS.rst b/Help/prop_tgt/OBJCXX_EXTENSIONS.rst index 9f9d804..8a254f2 100644 --- a/Help/prop_tgt/OBJCXX_EXTENSIONS.rst +++ b/Help/prop_tgt/OBJCXX_EXTENSIONS.rst @@ -1,6 +1,8 @@ OBJCXX_EXTENSIONS ----------------- +.. versionadded:: 3.16 + Boolean specifying whether compiler specific extensions are requested. This property specifies whether compiler specific extensions should be diff --git a/Help/prop_tgt/OBJCXX_STANDARD.rst b/Help/prop_tgt/OBJCXX_STANDARD.rst index 3c925dc..1067153 100644 --- a/Help/prop_tgt/OBJCXX_STANDARD.rst +++ b/Help/prop_tgt/OBJCXX_STANDARD.rst @@ -1,6 +1,8 @@ OBJCXX_STANDARD --------------- +.. versionadded:: 3.16 + The ObjC++ standard whose features are requested to build this target. This property specifies the ObjC++ standard whose features are requested diff --git a/Help/prop_tgt/OBJCXX_STANDARD_REQUIRED.rst b/Help/prop_tgt/OBJCXX_STANDARD_REQUIRED.rst index c330abf..3cee740 100644 --- a/Help/prop_tgt/OBJCXX_STANDARD_REQUIRED.rst +++ b/Help/prop_tgt/OBJCXX_STANDARD_REQUIRED.rst @@ -1,6 +1,8 @@ OBJCXX_STANDARD_REQUIRED ------------------------ +.. versionadded:: 3.16 + Boolean describing whether the value of :prop_tgt:`OBJCXX_STANDARD` is a requirement. If this property is set to ``ON``, then the value of the diff --git a/Help/prop_tgt/OBJC_EXTENSIONS.rst b/Help/prop_tgt/OBJC_EXTENSIONS.rst index 2de9e48..ef1c754 100644 --- a/Help/prop_tgt/OBJC_EXTENSIONS.rst +++ b/Help/prop_tgt/OBJC_EXTENSIONS.rst @@ -1,6 +1,8 @@ OBJC_EXTENSIONS --------------- +.. versionadded:: 3.16 + Boolean specifying whether compiler specific extensions are requested. This property specifies whether compiler specific extensions should be diff --git a/Help/prop_tgt/OBJC_STANDARD.rst b/Help/prop_tgt/OBJC_STANDARD.rst index d1e1b24..2143ff9 100644 --- a/Help/prop_tgt/OBJC_STANDARD.rst +++ b/Help/prop_tgt/OBJC_STANDARD.rst @@ -1,6 +1,8 @@ OBJC_STANDARD ------------- +.. versionadded:: 3.16 + The OBJC standard whose features are requested to build this target. This property specifies the OBJC standard whose features are requested diff --git a/Help/prop_tgt/OBJC_STANDARD_REQUIRED.rst b/Help/prop_tgt/OBJC_STANDARD_REQUIRED.rst index 8cf377c..11547c8 100644 --- a/Help/prop_tgt/OBJC_STANDARD_REQUIRED.rst +++ b/Help/prop_tgt/OBJC_STANDARD_REQUIRED.rst @@ -1,6 +1,8 @@ OBJC_STANDARD_REQUIRED ---------------------- +.. versionadded:: 3.16 + Boolean describing whether the value of :prop_tgt:`OBJC_STANDARD` is a requirement. If this property is set to ``ON``, then the value of the diff --git a/Help/prop_tgt/PCH_WARN_INVALID.rst b/Help/prop_tgt/PCH_WARN_INVALID.rst index 96e1abd..2d5ec55 100644 --- a/Help/prop_tgt/PCH_WARN_INVALID.rst +++ b/Help/prop_tgt/PCH_WARN_INVALID.rst @@ -1,6 +1,8 @@ PCH_WARN_INVALID ---------------- +.. versionadded:: 3.18 + When this property is set to true, the precompile header compiler options will contain a compiler flag which should warn about invalid precompiled headers e.g. ``-Winvalid-pch`` for GNU compiler. diff --git a/Help/prop_tgt/PRECOMPILE_HEADERS.rst b/Help/prop_tgt/PRECOMPILE_HEADERS.rst index 9e70b65..af27947 100644 --- a/Help/prop_tgt/PRECOMPILE_HEADERS.rst +++ b/Help/prop_tgt/PRECOMPILE_HEADERS.rst @@ -1,6 +1,8 @@ PRECOMPILE_HEADERS ------------------ +.. versionadded:: 3.16 + List of header files to precompile. This property holds a :ref:`semicolon-separated list <CMake Language Lists>` diff --git a/Help/prop_tgt/PRECOMPILE_HEADERS_REUSE_FROM.rst b/Help/prop_tgt/PRECOMPILE_HEADERS_REUSE_FROM.rst index 9c3e7ea..6f5635b 100644 --- a/Help/prop_tgt/PRECOMPILE_HEADERS_REUSE_FROM.rst +++ b/Help/prop_tgt/PRECOMPILE_HEADERS_REUSE_FROM.rst @@ -1,6 +1,8 @@ PRECOMPILE_HEADERS_REUSE_FROM ----------------------------- +.. versionadded:: 3.16 + Target from which to reuse the precompiled headers build artifact. See the second signature of :command:`target_precompile_headers` command diff --git a/Help/prop_tgt/SOURCE_DIR.rst b/Help/prop_tgt/SOURCE_DIR.rst index b25813b..78ce220 100644 --- a/Help/prop_tgt/SOURCE_DIR.rst +++ b/Help/prop_tgt/SOURCE_DIR.rst @@ -1,6 +1,8 @@ SOURCE_DIR ---------- +.. versionadded:: 3.4 + This read-only property reports the value of the :variable:`CMAKE_CURRENT_SOURCE_DIR` variable in the directory in which the target was defined. diff --git a/Help/prop_tgt/STATIC_LIBRARY_OPTIONS.rst b/Help/prop_tgt/STATIC_LIBRARY_OPTIONS.rst index d05fda4..2f4a3ba 100644 --- a/Help/prop_tgt/STATIC_LIBRARY_OPTIONS.rst +++ b/Help/prop_tgt/STATIC_LIBRARY_OPTIONS.rst @@ -1,6 +1,8 @@ STATIC_LIBRARY_OPTIONS ---------------------- +.. versionadded:: 3.13 + Archiver (or MSVC librarian) flags for a static library target. Targets that are shared libraries, modules, or executables need to use the :prop_tgt:`LINK_OPTIONS` target property. diff --git a/Help/prop_tgt/Swift_DEPENDENCIES_FILE.rst b/Help/prop_tgt/Swift_DEPENDENCIES_FILE.rst index 46c9a1d..0f944b6 100644 --- a/Help/prop_tgt/Swift_DEPENDENCIES_FILE.rst +++ b/Help/prop_tgt/Swift_DEPENDENCIES_FILE.rst @@ -1,5 +1,7 @@ Swift_DEPENDENCIES_FILE ----------------------- +.. versionadded:: 3.15 + This property sets the path for the Swift dependency file (swiftdep) for the target. If one is not specified, it will default to ``<TARGET>.swiftdeps``. diff --git a/Help/prop_tgt/Swift_LANGUAGE_VERSION.rst b/Help/prop_tgt/Swift_LANGUAGE_VERSION.rst index 7579447..afc6b31 100644 --- a/Help/prop_tgt/Swift_LANGUAGE_VERSION.rst +++ b/Help/prop_tgt/Swift_LANGUAGE_VERSION.rst @@ -1,6 +1,8 @@ Swift_LANGUAGE_VERSION ---------------------- +.. versionadded:: 3.16 + This property sets the language version for the Swift sources in the target. If one is not specified, it will default to ``<CMAKE_Swift_LANGUAGE_VERSION>`` if specified, otherwise it is the latest version supported by the compiler. diff --git a/Help/prop_tgt/Swift_MODULE_DIRECTORY.rst b/Help/prop_tgt/Swift_MODULE_DIRECTORY.rst index d404251..a6484f2 100644 --- a/Help/prop_tgt/Swift_MODULE_DIRECTORY.rst +++ b/Help/prop_tgt/Swift_MODULE_DIRECTORY.rst @@ -1,6 +1,8 @@ Swift_MODULE_DIRECTORY ---------------------- +.. versionadded:: 3.15 + Specify output directory for Swift modules provided by the target. If the target contains Swift source files, this specifies the directory in which diff --git a/Help/prop_tgt/Swift_MODULE_NAME.rst b/Help/prop_tgt/Swift_MODULE_NAME.rst index 2866020..d941b54 100644 --- a/Help/prop_tgt/Swift_MODULE_NAME.rst +++ b/Help/prop_tgt/Swift_MODULE_NAME.rst @@ -1,5 +1,7 @@ Swift_MODULE_NAME ----------------- +.. versionadded:: 3.15 + This property specifies the name of the Swift module. It is defaulted to the name of the target. diff --git a/Help/prop_tgt/UNITY_BUILD.rst b/Help/prop_tgt/UNITY_BUILD.rst index e140952..04cede6 100644 --- a/Help/prop_tgt/UNITY_BUILD.rst +++ b/Help/prop_tgt/UNITY_BUILD.rst @@ -1,6 +1,8 @@ UNITY_BUILD ----------- +.. versionadded:: 3.16 + When this property is set to true, the target source files will be combined into batches for faster compilation. This is done by creating a (set of) unity sources which ``#include`` the original sources, then compiling these diff --git a/Help/prop_tgt/UNITY_BUILD_BATCH_SIZE.rst b/Help/prop_tgt/UNITY_BUILD_BATCH_SIZE.rst index 44ffe27..3886ec9 100644 --- a/Help/prop_tgt/UNITY_BUILD_BATCH_SIZE.rst +++ b/Help/prop_tgt/UNITY_BUILD_BATCH_SIZE.rst @@ -1,6 +1,8 @@ UNITY_BUILD_BATCH_SIZE ---------------------- +.. versionadded:: 3.16 + Specifies the maximum number of source files that can be combined into any one unity source file when unity builds are enabled by the :prop_tgt:`UNITY_BUILD` target property. The original source files will be distributed across as many diff --git a/Help/prop_tgt/UNITY_BUILD_CODE_AFTER_INCLUDE.rst b/Help/prop_tgt/UNITY_BUILD_CODE_AFTER_INCLUDE.rst index 7231b61..ac2b19c 100644 --- a/Help/prop_tgt/UNITY_BUILD_CODE_AFTER_INCLUDE.rst +++ b/Help/prop_tgt/UNITY_BUILD_CODE_AFTER_INCLUDE.rst @@ -1,6 +1,8 @@ UNITY_BUILD_CODE_AFTER_INCLUDE ------------------------------ +.. versionadded:: 3.16 + Code snippet which is included verbatim by the :prop_tgt:`UNITY_BUILD` feature just after every ``#include`` statement in the generated unity source files. For example: diff --git a/Help/prop_tgt/UNITY_BUILD_CODE_BEFORE_INCLUDE.rst b/Help/prop_tgt/UNITY_BUILD_CODE_BEFORE_INCLUDE.rst index 7ed6fa1..6f0d56b 100644 --- a/Help/prop_tgt/UNITY_BUILD_CODE_BEFORE_INCLUDE.rst +++ b/Help/prop_tgt/UNITY_BUILD_CODE_BEFORE_INCLUDE.rst @@ -1,6 +1,8 @@ UNITY_BUILD_CODE_BEFORE_INCLUDE ------------------------------- +.. versionadded:: 3.16 + Code snippet which is included verbatim by the :prop_tgt:`UNITY_BUILD` feature just before every ``#include`` statement in the generated unity source files. For example: diff --git a/Help/prop_tgt/UNITY_BUILD_MODE.rst b/Help/prop_tgt/UNITY_BUILD_MODE.rst index 1ebab23..003451e 100644 --- a/Help/prop_tgt/UNITY_BUILD_MODE.rst +++ b/Help/prop_tgt/UNITY_BUILD_MODE.rst @@ -1,6 +1,8 @@ UNITY_BUILD_MODE ---------------- +.. versionadded:: 3.18 + CMake provides different algorithms for selecting which sources are grouped together into a *bucket*. Selection is decided by this property, which has the following acceptable values: diff --git a/Help/prop_tgt/VS_CONFIGURATION_TYPE.rst b/Help/prop_tgt/VS_CONFIGURATION_TYPE.rst index 640bed5..4adffd4 100644 --- a/Help/prop_tgt/VS_CONFIGURATION_TYPE.rst +++ b/Help/prop_tgt/VS_CONFIGURATION_TYPE.rst @@ -1,6 +1,8 @@ VS_CONFIGURATION_TYPE --------------------- +.. versionadded:: 3.6 + Visual Studio project configuration type. Sets the ``ConfigurationType`` attribute for a generated Visual Studio project. diff --git a/Help/prop_tgt/VS_DEBUGGER_COMMAND.rst b/Help/prop_tgt/VS_DEBUGGER_COMMAND.rst index ba5fd0a..58476d6 100644 --- a/Help/prop_tgt/VS_DEBUGGER_COMMAND.rst +++ b/Help/prop_tgt/VS_DEBUGGER_COMMAND.rst @@ -1,6 +1,8 @@ VS_DEBUGGER_COMMAND ------------------- +.. versionadded:: 3.12 + Sets the local debugger command for Visual Studio C++ targets. The property value may use :manual:`generator expressions <cmake-generator-expressions(7)>`. diff --git a/Help/prop_tgt/VS_DEBUGGER_COMMAND_ARGUMENTS.rst b/Help/prop_tgt/VS_DEBUGGER_COMMAND_ARGUMENTS.rst index 06ef5d5..6c26601 100644 --- a/Help/prop_tgt/VS_DEBUGGER_COMMAND_ARGUMENTS.rst +++ b/Help/prop_tgt/VS_DEBUGGER_COMMAND_ARGUMENTS.rst @@ -1,6 +1,8 @@ VS_DEBUGGER_COMMAND_ARGUMENTS ----------------------------- +.. versionadded:: 3.13 + Sets the local debugger command line arguments for Visual Studio C++ targets. The property value may use :manual:`generator expressions <cmake-generator-expressions(7)>`. diff --git a/Help/prop_tgt/VS_DEBUGGER_ENVIRONMENT.rst b/Help/prop_tgt/VS_DEBUGGER_ENVIRONMENT.rst index f55ac7b..2f59a82 100644 --- a/Help/prop_tgt/VS_DEBUGGER_ENVIRONMENT.rst +++ b/Help/prop_tgt/VS_DEBUGGER_ENVIRONMENT.rst @@ -1,6 +1,8 @@ VS_DEBUGGER_ENVIRONMENT ----------------------- +.. versionadded:: 3.13 + Sets the local debugger environment for Visual Studio C++ targets. The property value may use :manual:`generator expressions <cmake-generator-expressions(7)>`. diff --git a/Help/prop_tgt/VS_DEBUGGER_WORKING_DIRECTORY.rst b/Help/prop_tgt/VS_DEBUGGER_WORKING_DIRECTORY.rst index 008bbf6..c163abf 100644 --- a/Help/prop_tgt/VS_DEBUGGER_WORKING_DIRECTORY.rst +++ b/Help/prop_tgt/VS_DEBUGGER_WORKING_DIRECTORY.rst @@ -1,6 +1,8 @@ VS_DEBUGGER_WORKING_DIRECTORY ----------------------------- +.. versionadded:: 3.8 + Sets the local debugger working directory for Visual Studio C++ targets. The property value may use :manual:`generator expressions <cmake-generator-expressions(7)>`. diff --git a/Help/prop_tgt/VS_DESKTOP_EXTENSIONS_VERSION.rst b/Help/prop_tgt/VS_DESKTOP_EXTENSIONS_VERSION.rst index 19d1620..5fd23e1 100644 --- a/Help/prop_tgt/VS_DESKTOP_EXTENSIONS_VERSION.rst +++ b/Help/prop_tgt/VS_DESKTOP_EXTENSIONS_VERSION.rst @@ -1,6 +1,8 @@ VS_DESKTOP_EXTENSIONS_VERSION ----------------------------- +.. versionadded:: 3.4 + Visual Studio Windows 10 Desktop Extensions Version Specifies the version of the Desktop Extensions that should be included in the diff --git a/Help/prop_tgt/VS_DOTNET_DOCUMENTATION_FILE.rst b/Help/prop_tgt/VS_DOTNET_DOCUMENTATION_FILE.rst index 1bc361c..a388256 100644 --- a/Help/prop_tgt/VS_DOTNET_DOCUMENTATION_FILE.rst +++ b/Help/prop_tgt/VS_DOTNET_DOCUMENTATION_FILE.rst @@ -1,6 +1,8 @@ VS_DOTNET_DOCUMENTATION_FILE ---------------------------- +.. versionadded:: 3.17 + Visual Studio managed project .NET documentation output Sets the target XML documentation file output. diff --git a/Help/prop_tgt/VS_DOTNET_REFERENCEPROP_refname_TAG_tagname.rst b/Help/prop_tgt/VS_DOTNET_REFERENCEPROP_refname_TAG_tagname.rst index ab311ea..5b9caee 100644 --- a/Help/prop_tgt/VS_DOTNET_REFERENCEPROP_refname_TAG_tagname.rst +++ b/Help/prop_tgt/VS_DOTNET_REFERENCEPROP_refname_TAG_tagname.rst @@ -1,6 +1,8 @@ VS_DOTNET_REFERENCEPROP_<refname>_TAG_<tagname> ----------------------------------------------- +.. versionadded:: 3.10 + Defines an XML property ``<tagname>`` for a .NET reference ``<refname>``. diff --git a/Help/prop_tgt/VS_DOTNET_REFERENCES_COPY_LOCAL.rst b/Help/prop_tgt/VS_DOTNET_REFERENCES_COPY_LOCAL.rst index 7641ba5..556fa8a 100644 --- a/Help/prop_tgt/VS_DOTNET_REFERENCES_COPY_LOCAL.rst +++ b/Help/prop_tgt/VS_DOTNET_REFERENCES_COPY_LOCAL.rst @@ -1,6 +1,8 @@ VS_DOTNET_REFERENCES_COPY_LOCAL ------------------------------- +.. versionadded:: 3.8 + Sets the **Copy Local** property for all .NET hint references in the target Boolean property to enable/disable copying of .NET hint references to diff --git a/Help/prop_tgt/VS_DOTNET_REFERENCE_refname.rst b/Help/prop_tgt/VS_DOTNET_REFERENCE_refname.rst index 5814005..9c4d34a 100644 --- a/Help/prop_tgt/VS_DOTNET_REFERENCE_refname.rst +++ b/Help/prop_tgt/VS_DOTNET_REFERENCE_refname.rst @@ -1,6 +1,8 @@ VS_DOTNET_REFERENCE_<refname> ----------------------------- +.. versionadded:: 3.8 + Visual Studio managed project .NET reference with name ``<refname>`` and hint path. diff --git a/Help/prop_tgt/VS_DPI_AWARE.rst b/Help/prop_tgt/VS_DPI_AWARE.rst index 82640cc..47ce1ce 100644 --- a/Help/prop_tgt/VS_DPI_AWARE.rst +++ b/Help/prop_tgt/VS_DPI_AWARE.rst @@ -1,6 +1,8 @@ VS_DPI_AWARE ------------ +.. versionadded:: 3.16 + Set the Manifest Tool -> Input and Output -> DPI Awareness in the Visual Studio target project properties. diff --git a/Help/prop_tgt/VS_IOT_EXTENSIONS_VERSION.rst b/Help/prop_tgt/VS_IOT_EXTENSIONS_VERSION.rst index 27c8a3d..ca6a3ca 100644 --- a/Help/prop_tgt/VS_IOT_EXTENSIONS_VERSION.rst +++ b/Help/prop_tgt/VS_IOT_EXTENSIONS_VERSION.rst @@ -1,6 +1,8 @@ VS_IOT_EXTENSIONS_VERSION ------------------------- +.. versionadded:: 3.4 + Visual Studio Windows 10 IoT Extensions Version Specifies the version of the IoT Extensions that should be included in the diff --git a/Help/prop_tgt/VS_IOT_STARTUP_TASK.rst b/Help/prop_tgt/VS_IOT_STARTUP_TASK.rst index add50cb..259055d 100644 --- a/Help/prop_tgt/VS_IOT_STARTUP_TASK.rst +++ b/Help/prop_tgt/VS_IOT_STARTUP_TASK.rst @@ -1,6 +1,8 @@ VS_IOT_STARTUP_TASK ------------------- +.. versionadded:: 3.4 + Visual Studio Windows 10 IoT Continuous Background Task Specifies that the target should be compiled as a Continuous Background Task library. diff --git a/Help/prop_tgt/VS_JUST_MY_CODE_DEBUGGING.rst b/Help/prop_tgt/VS_JUST_MY_CODE_DEBUGGING.rst index 42fb8ad..724bd2f 100644 --- a/Help/prop_tgt/VS_JUST_MY_CODE_DEBUGGING.rst +++ b/Help/prop_tgt/VS_JUST_MY_CODE_DEBUGGING.rst @@ -1,6 +1,8 @@ VS_JUST_MY_CODE_DEBUGGING ------------------------- +.. versionadded:: 3.15 + Enable Just My Code with Visual Studio debugger. Supported on :ref:`Visual Studio Generators` for VS 2010 and higher, diff --git a/Help/prop_tgt/VS_MOBILE_EXTENSIONS_VERSION.rst b/Help/prop_tgt/VS_MOBILE_EXTENSIONS_VERSION.rst index be3c9a0..b307e84 100644 --- a/Help/prop_tgt/VS_MOBILE_EXTENSIONS_VERSION.rst +++ b/Help/prop_tgt/VS_MOBILE_EXTENSIONS_VERSION.rst @@ -1,6 +1,8 @@ VS_MOBILE_EXTENSIONS_VERSION ---------------------------- +.. versionadded:: 3.4 + Visual Studio Windows 10 Mobile Extensions Version Specifies the version of the Mobile Extensions that should be included in the diff --git a/Help/prop_tgt/VS_NO_SOLUTION_DEPLOY.rst b/Help/prop_tgt/VS_NO_SOLUTION_DEPLOY.rst index ffcbde5..bf6ac10 100644 --- a/Help/prop_tgt/VS_NO_SOLUTION_DEPLOY.rst +++ b/Help/prop_tgt/VS_NO_SOLUTION_DEPLOY.rst @@ -1,6 +1,8 @@ VS_NO_SOLUTION_DEPLOY --------------------- +.. versionadded:: 3.15 + Specify that the target should not be marked for deployment to a Windows CE or Windows Phone device in the generated Visual Studio solution. diff --git a/Help/prop_tgt/VS_PACKAGE_REFERENCES.rst b/Help/prop_tgt/VS_PACKAGE_REFERENCES.rst index 5a0465b..ec17567 100644 --- a/Help/prop_tgt/VS_PACKAGE_REFERENCES.rst +++ b/Help/prop_tgt/VS_PACKAGE_REFERENCES.rst @@ -1,6 +1,8 @@ VS_PACKAGE_REFERENCES --------------------- +.. versionadded:: 3.15 + Visual Studio package references for nuget. Adds one or more semicolon-delimited package references to a generated diff --git a/Help/prop_tgt/VS_PLATFORM_TOOLSET.rst b/Help/prop_tgt/VS_PLATFORM_TOOLSET.rst index f8f2e8e..27a92d6 100644 --- a/Help/prop_tgt/VS_PLATFORM_TOOLSET.rst +++ b/Help/prop_tgt/VS_PLATFORM_TOOLSET.rst @@ -1,6 +1,8 @@ VS_PLATFORM_TOOLSET ------------------- +.. versionadded:: 3.18 + Overrides the platform toolset used to build a target. Only supported when the compiler used by the given toolset is the diff --git a/Help/prop_tgt/VS_PROJECT_IMPORT.rst b/Help/prop_tgt/VS_PROJECT_IMPORT.rst index 569c8ea..f5e9698 100644 --- a/Help/prop_tgt/VS_PROJECT_IMPORT.rst +++ b/Help/prop_tgt/VS_PROJECT_IMPORT.rst @@ -1,6 +1,8 @@ VS_PROJECT_IMPORT ----------------- +.. versionadded:: 3.15 + Visual Studio managed project imports Adds to a generated Visual Studio project one or more semicolon-delimited paths diff --git a/Help/prop_tgt/VS_SDK_REFERENCES.rst b/Help/prop_tgt/VS_SDK_REFERENCES.rst index 99987f5..9a082e7 100644 --- a/Help/prop_tgt/VS_SDK_REFERENCES.rst +++ b/Help/prop_tgt/VS_SDK_REFERENCES.rst @@ -1,6 +1,8 @@ VS_SDK_REFERENCES ----------------- +.. versionadded:: 3.7 + Visual Studio project SDK references. Specify a :ref:`semicolon-separated list <CMake Language Lists>` of SDK references to be added to a generated Visual Studio project, e.g. diff --git a/Help/prop_tgt/VS_SOLUTION_DEPLOY.rst b/Help/prop_tgt/VS_SOLUTION_DEPLOY.rst index eef848f..e56f411 100644 --- a/Help/prop_tgt/VS_SOLUTION_DEPLOY.rst +++ b/Help/prop_tgt/VS_SOLUTION_DEPLOY.rst @@ -1,6 +1,8 @@ VS_SOLUTION_DEPLOY ------------------ +.. versionadded:: 3.18 + Specify that the target should be marked for deployment when not targeting Windows CE, Windows Phone or a Windows Store application. diff --git a/Help/prop_tgt/VS_SOURCE_SETTINGS_tool.rst b/Help/prop_tgt/VS_SOURCE_SETTINGS_tool.rst index 738a912..b5a76fc 100644 --- a/Help/prop_tgt/VS_SOURCE_SETTINGS_tool.rst +++ b/Help/prop_tgt/VS_SOURCE_SETTINGS_tool.rst @@ -1,6 +1,8 @@ VS_SOURCE_SETTINGS_<tool> ------------------------- +.. versionadded:: 3.18 + Set any item metadata on all non-built files that use <tool>. Takes a list of ``Key=Value`` pairs. Tells the Visual Studio generator diff --git a/Help/prop_tgt/VS_USER_PROPS.rst b/Help/prop_tgt/VS_USER_PROPS.rst index 1be222b..8f2a105 100644 --- a/Help/prop_tgt/VS_USER_PROPS.rst +++ b/Help/prop_tgt/VS_USER_PROPS.rst @@ -1,6 +1,8 @@ VS_USER_PROPS ------------- +.. versionadded:: 3.8 + Sets the user props file to be included in the visual studio C++ project file. The standard path is ``$(UserRootDir)\\Microsoft.Cpp.$(Platform).user.props``, which is diff --git a/Help/prop_tgt/VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION.rst b/Help/prop_tgt/VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION.rst index 1ad7a71..50cf203 100644 --- a/Help/prop_tgt/VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION.rst +++ b/Help/prop_tgt/VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION.rst @@ -1,6 +1,8 @@ VS_WINDOWS_TARGET_PLATFORM_MIN_VERSION -------------------------------------- +.. versionadded:: 3.4 + Visual Studio Windows Target Platform Minimum Version For Windows 10. Specifies the minimum version of the OS that is being diff --git a/Help/prop_tgt/VS_WINRT_COMPONENT.rst b/Help/prop_tgt/VS_WINRT_COMPONENT.rst index e160bd6..8b4aaf7 100644 --- a/Help/prop_tgt/VS_WINRT_COMPONENT.rst +++ b/Help/prop_tgt/VS_WINRT_COMPONENT.rst @@ -1,6 +1,8 @@ VS_WINRT_COMPONENT ------------------ +.. versionadded:: 3.1 + Mark a target as a Windows Runtime component for the Visual Studio generator. Compile the target with ``C++/CX`` language extensions for Windows Runtime. For ``SHARED`` and ``MODULE`` libraries, this also defines the diff --git a/Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst b/Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst index 86711bf..00f32f6 100644 --- a/Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst +++ b/Help/prop_tgt/WINDOWS_EXPORT_ALL_SYMBOLS.rst @@ -1,6 +1,8 @@ WINDOWS_EXPORT_ALL_SYMBOLS -------------------------- +.. versionadded:: 3.4 + This property is implemented only for MS-compatible tools on Windows. Enable this boolean property to automatically create a module definition diff --git a/Help/prop_tgt/XCODE_EXPLICIT_FILE_TYPE.rst b/Help/prop_tgt/XCODE_EXPLICIT_FILE_TYPE.rst index dc92902..e01a034 100644 --- a/Help/prop_tgt/XCODE_EXPLICIT_FILE_TYPE.rst +++ b/Help/prop_tgt/XCODE_EXPLICIT_FILE_TYPE.rst @@ -1,6 +1,8 @@ XCODE_EXPLICIT_FILE_TYPE ------------------------ +.. versionadded:: 3.8 + Set the Xcode ``explicitFileType`` attribute on its reference to a target. CMake computes a default based on target type but can be told explicitly with this property. diff --git a/Help/prop_tgt/XCODE_GENERATE_SCHEME.rst b/Help/prop_tgt/XCODE_GENERATE_SCHEME.rst index c32b4de..06a3cf9 100644 --- a/Help/prop_tgt/XCODE_GENERATE_SCHEME.rst +++ b/Help/prop_tgt/XCODE_GENERATE_SCHEME.rst @@ -1,6 +1,8 @@ XCODE_GENERATE_SCHEME --------------------- +.. versionadded:: 3.15 + If enabled, the :generator:`Xcode` generator will generate schema files. These are useful to invoke analyze, archive, build-for-testing and test actions from the command line. diff --git a/Help/prop_tgt/XCODE_PRODUCT_TYPE.rst b/Help/prop_tgt/XCODE_PRODUCT_TYPE.rst index f4ef5c0..17a9c3f 100644 --- a/Help/prop_tgt/XCODE_PRODUCT_TYPE.rst +++ b/Help/prop_tgt/XCODE_PRODUCT_TYPE.rst @@ -1,6 +1,8 @@ XCODE_PRODUCT_TYPE ------------------ +.. versionadded:: 3.8 + Set the Xcode ``productType`` attribute on its reference to a target. CMake computes a default based on target type but can be told explicitly with this property. diff --git a/Help/prop_tgt/XCODE_SCHEME_ADDRESS_SANITIZER.rst b/Help/prop_tgt/XCODE_SCHEME_ADDRESS_SANITIZER.rst index cc9bac2..c72ec06 100644 --- a/Help/prop_tgt/XCODE_SCHEME_ADDRESS_SANITIZER.rst +++ b/Help/prop_tgt/XCODE_SCHEME_ADDRESS_SANITIZER.rst @@ -1,6 +1,8 @@ XCODE_SCHEME_ADDRESS_SANITIZER ------------------------------ +.. versionadded:: 3.13 + Whether to enable ``Address Sanitizer`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/prop_tgt/XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN.rst b/Help/prop_tgt/XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN.rst index 37a043a..293b5d4 100644 --- a/Help/prop_tgt/XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN.rst +++ b/Help/prop_tgt/XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN.rst @@ -1,6 +1,8 @@ XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN ----------------------------------------------- +.. versionadded:: 3.13 + Whether to enable ``Detect use of stack after return`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/prop_tgt/XCODE_SCHEME_ARGUMENTS.rst b/Help/prop_tgt/XCODE_SCHEME_ARGUMENTS.rst index 1f228e3..2bfcb41 100644 --- a/Help/prop_tgt/XCODE_SCHEME_ARGUMENTS.rst +++ b/Help/prop_tgt/XCODE_SCHEME_ARGUMENTS.rst @@ -1,6 +1,8 @@ XCODE_SCHEME_ARGUMENTS ---------------------- +.. versionadded:: 3.13 + Specify command line arguments that should be added to the Arguments section of the generated Xcode scheme. diff --git a/Help/prop_tgt/XCODE_SCHEME_DEBUG_AS_ROOT.rst b/Help/prop_tgt/XCODE_SCHEME_DEBUG_AS_ROOT.rst index 5407e80..2523deb 100644 --- a/Help/prop_tgt/XCODE_SCHEME_DEBUG_AS_ROOT.rst +++ b/Help/prop_tgt/XCODE_SCHEME_DEBUG_AS_ROOT.rst @@ -1,6 +1,8 @@ XCODE_SCHEME_DEBUG_AS_ROOT -------------------------- +.. versionadded:: 3.15 + Whether to debug the target as 'root'. Please refer to the :prop_tgt:`XCODE_GENERATE_SCHEME` target property diff --git a/Help/prop_tgt/XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING.rst b/Help/prop_tgt/XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING.rst index 9afeedd..bbcae35 100644 --- a/Help/prop_tgt/XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING.rst +++ b/Help/prop_tgt/XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING.rst @@ -1,6 +1,8 @@ XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING -------------------------------------- +.. versionadded:: 3.16 + Whether to enable ``Allow debugging when using document Versions Browser`` in the Options section of the generated Xcode scheme. diff --git a/Help/prop_tgt/XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER.rst b/Help/prop_tgt/XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER.rst index 1a6fcfd..3d315a2 100644 --- a/Help/prop_tgt/XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER.rst +++ b/Help/prop_tgt/XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER.rst @@ -1,6 +1,8 @@ XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER ---------------------------------------- +.. versionadded:: 3.13 + Whether to disable the ``Main Thread Checker`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/prop_tgt/XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS.rst b/Help/prop_tgt/XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS.rst index 9224022..2ca20f7 100644 --- a/Help/prop_tgt/XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS.rst +++ b/Help/prop_tgt/XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS.rst @@ -1,6 +1,8 @@ XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS ---------------------------------- +.. versionadded:: 3.13 + Whether to enable ``Dynamic Library Loads`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/prop_tgt/XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE.rst b/Help/prop_tgt/XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE.rst index 203c803..278c9ef 100644 --- a/Help/prop_tgt/XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE.rst +++ b/Help/prop_tgt/XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE.rst @@ -1,6 +1,8 @@ XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE ------------------------------------- +.. versionadded:: 3.13 + Whether to enable ``Dynamic Linker API usage`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/prop_tgt/XCODE_SCHEME_ENVIRONMENT.rst b/Help/prop_tgt/XCODE_SCHEME_ENVIRONMENT.rst index c6d875e..16542f8 100644 --- a/Help/prop_tgt/XCODE_SCHEME_ENVIRONMENT.rst +++ b/Help/prop_tgt/XCODE_SCHEME_ENVIRONMENT.rst @@ -1,6 +1,8 @@ XCODE_SCHEME_ENVIRONMENT ------------------------ +.. versionadded:: 3.13 + Specify environment variables that should be added to the Arguments section of the generated Xcode scheme. diff --git a/Help/prop_tgt/XCODE_SCHEME_EXECUTABLE.rst b/Help/prop_tgt/XCODE_SCHEME_EXECUTABLE.rst index 104841b..b453f10 100644 --- a/Help/prop_tgt/XCODE_SCHEME_EXECUTABLE.rst +++ b/Help/prop_tgt/XCODE_SCHEME_EXECUTABLE.rst @@ -1,6 +1,8 @@ XCODE_SCHEME_EXECUTABLE ----------------------- +.. versionadded:: 3.13 + Specify path to executable in the Info section of the generated Xcode scheme. If not set the schema generator will select the current target if it is actually executable. diff --git a/Help/prop_tgt/XCODE_SCHEME_GUARD_MALLOC.rst b/Help/prop_tgt/XCODE_SCHEME_GUARD_MALLOC.rst index c4e83da..4b242a2 100644 --- a/Help/prop_tgt/XCODE_SCHEME_GUARD_MALLOC.rst +++ b/Help/prop_tgt/XCODE_SCHEME_GUARD_MALLOC.rst @@ -1,6 +1,8 @@ XCODE_SCHEME_GUARD_MALLOC ------------------------------ +.. versionadded:: 3.13 + Whether to enable ``Guard Malloc`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/prop_tgt/XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP.rst b/Help/prop_tgt/XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP.rst index 73992c3..2a813aa 100644 --- a/Help/prop_tgt/XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP.rst +++ b/Help/prop_tgt/XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP.rst @@ -1,6 +1,8 @@ XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP ------------------------------------- +.. versionadded:: 3.13 + Whether to enable the ``Main Thread Checker`` option ``Pause on issues`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/prop_tgt/XCODE_SCHEME_MALLOC_GUARD_EDGES.rst b/Help/prop_tgt/XCODE_SCHEME_MALLOC_GUARD_EDGES.rst index ca761c0..750da74 100644 --- a/Help/prop_tgt/XCODE_SCHEME_MALLOC_GUARD_EDGES.rst +++ b/Help/prop_tgt/XCODE_SCHEME_MALLOC_GUARD_EDGES.rst @@ -1,6 +1,8 @@ XCODE_SCHEME_MALLOC_GUARD_EDGES ------------------------------- +.. versionadded:: 3.13 + Whether to enable ``Malloc Guard Edges`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/prop_tgt/XCODE_SCHEME_MALLOC_SCRIBBLE.rst b/Help/prop_tgt/XCODE_SCHEME_MALLOC_SCRIBBLE.rst index c5ddb95..4ebd21b 100644 --- a/Help/prop_tgt/XCODE_SCHEME_MALLOC_SCRIBBLE.rst +++ b/Help/prop_tgt/XCODE_SCHEME_MALLOC_SCRIBBLE.rst @@ -1,6 +1,8 @@ XCODE_SCHEME_MALLOC_SCRIBBLE ------------------------------ +.. versionadded:: 3.13 + Whether to enable ``Malloc Scribble`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/prop_tgt/XCODE_SCHEME_MALLOC_STACK.rst b/Help/prop_tgt/XCODE_SCHEME_MALLOC_STACK.rst index 170f33d..5afe34e 100644 --- a/Help/prop_tgt/XCODE_SCHEME_MALLOC_STACK.rst +++ b/Help/prop_tgt/XCODE_SCHEME_MALLOC_STACK.rst @@ -1,6 +1,8 @@ XCODE_SCHEME_MALLOC_STACK ------------------------- +.. versionadded:: 3.13 + Whether to enable ``Malloc Stack`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/prop_tgt/XCODE_SCHEME_THREAD_SANITIZER.rst b/Help/prop_tgt/XCODE_SCHEME_THREAD_SANITIZER.rst index bb70141..cc774c4 100644 --- a/Help/prop_tgt/XCODE_SCHEME_THREAD_SANITIZER.rst +++ b/Help/prop_tgt/XCODE_SCHEME_THREAD_SANITIZER.rst @@ -1,6 +1,8 @@ XCODE_SCHEME_THREAD_SANITIZER ----------------------------- +.. versionadded:: 3.13 + Whether to enable ``Thread Sanitizer`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/prop_tgt/XCODE_SCHEME_THREAD_SANITIZER_STOP.rst b/Help/prop_tgt/XCODE_SCHEME_THREAD_SANITIZER_STOP.rst index 5deadb1..3bb2596 100644 --- a/Help/prop_tgt/XCODE_SCHEME_THREAD_SANITIZER_STOP.rst +++ b/Help/prop_tgt/XCODE_SCHEME_THREAD_SANITIZER_STOP.rst @@ -1,6 +1,8 @@ XCODE_SCHEME_THREAD_SANITIZER_STOP ---------------------------------- +.. versionadded:: 3.13 + Whether to enable ``Thread Sanitizer - Pause on issues`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/prop_tgt/XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER.rst b/Help/prop_tgt/XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER.rst index 0cd823d..1146130 100644 --- a/Help/prop_tgt/XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER.rst +++ b/Help/prop_tgt/XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER.rst @@ -1,6 +1,8 @@ XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER ------------------------------------------ +.. versionadded:: 3.13 + Whether to enable ``Undefined Behavior Sanitizer`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/prop_tgt/XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP.rst b/Help/prop_tgt/XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP.rst index d1a9bca..358f298 100644 --- a/Help/prop_tgt/XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP.rst +++ b/Help/prop_tgt/XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP.rst @@ -1,6 +1,8 @@ XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP ----------------------------------------------- +.. versionadded:: 3.13 + Whether to enable ``Undefined Behavior Sanitizer`` option ``Pause on issues`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/prop_tgt/XCODE_SCHEME_WORKING_DIRECTORY.rst b/Help/prop_tgt/XCODE_SCHEME_WORKING_DIRECTORY.rst index f538f1d..d8d56fc 100644 --- a/Help/prop_tgt/XCODE_SCHEME_WORKING_DIRECTORY.rst +++ b/Help/prop_tgt/XCODE_SCHEME_WORKING_DIRECTORY.rst @@ -1,6 +1,8 @@ XCODE_SCHEME_WORKING_DIRECTORY ------------------------------ +.. versionadded:: 3.17 + Specify the ``Working Directory`` of the *Run* and *Profile* actions in the generated Xcode scheme. In case the value contains generator expressions those are evaluated. diff --git a/Help/prop_tgt/XCODE_SCHEME_ZOMBIE_OBJECTS.rst b/Help/prop_tgt/XCODE_SCHEME_ZOMBIE_OBJECTS.rst index 6e70e8b..6030109 100644 --- a/Help/prop_tgt/XCODE_SCHEME_ZOMBIE_OBJECTS.rst +++ b/Help/prop_tgt/XCODE_SCHEME_ZOMBIE_OBJECTS.rst @@ -1,6 +1,8 @@ XCODE_SCHEME_ZOMBIE_OBJECTS ------------------------------ +.. versionadded:: 3.13 + Whether to enable ``Zombie Objects`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/prop_tgt/XCTEST.rst b/Help/prop_tgt/XCTEST.rst index eb47e60..67e9a70 100644 --- a/Help/prop_tgt/XCTEST.rst +++ b/Help/prop_tgt/XCTEST.rst @@ -1,6 +1,8 @@ XCTEST ------ +.. versionadded:: 3.3 + This target is a XCTest CFBundle on the Mac. This property will usually get set via the :command:`xctest_add_bundle` diff --git a/Help/release/3.18.rst b/Help/release/3.18.rst index ef4fa30..386b61b 100644 --- a/Help/release/3.18.rst +++ b/Help/release/3.18.rst @@ -312,3 +312,9 @@ Other Changes network communication via ``http(s)``, such as :command:`file(DOWNLOAD)`, :command:`file(UPLOAD)`, and :command:`ctest_submit`. The precompiled binaries provided on ``cmake.org`` now support HTTP/2. + +* The :manual:`cmake-file-api(7)` "codemodel" version 2 ``version`` field has + been updated to 2.1. + +* The :manual:`cmake-file-api(7)` "codemodel" version 2 "target" object gained + a new ``precompileHeaders`` field in the ``compileGroups`` objects. diff --git a/Help/release/dev/FindTIFF-tiffxx.rst b/Help/release/dev/FindTIFF-tiffxx.rst new file mode 100644 index 0000000..656d38f --- /dev/null +++ b/Help/release/dev/FindTIFF-tiffxx.rst @@ -0,0 +1,5 @@ +FindTIFF-tiffxx +--------------- + +* The :module:`FindTIFF` module gained a ``CXX`` component to + find the ``tiffxx`` library containing C++ bindings. diff --git a/Help/release/dev/FindVulkan-glslc.rst b/Help/release/dev/FindVulkan-glslc.rst new file mode 100644 index 0000000..246bc8f --- /dev/null +++ b/Help/release/dev/FindVulkan-glslc.rst @@ -0,0 +1,10 @@ +FindVulkan-glslc +---------------- + +* The :module:`FindVulkan` module gained a new output variable + ``Vulkan_GLSLC_EXECUTABLE`` which contains the path to the + GLSL SPIR-V compiler. + +* The :module:`FindVulkan` module gained a new target + ``Vulkan::glslc`` which contains the path to the + GLSL SPIR-V compiler. diff --git a/Help/release/dev/configure_file-permission-control.rst b/Help/release/dev/configure_file-permission-control.rst new file mode 100644 index 0000000..54b52b7 --- /dev/null +++ b/Help/release/dev/configure_file-permission-control.rst @@ -0,0 +1,5 @@ +configure_file-permission-control +--------------------------------- + +* The :command:`configure_file` command gained a ``NO_SOURCE_PERMISSIONS`` + option to suppress copying the input file's permissions to the output file. diff --git a/Help/release/dev/fileapi-codemodel-2.2.rst b/Help/release/dev/fileapi-codemodel-2.2.rst new file mode 100644 index 0000000..5954df6 --- /dev/null +++ b/Help/release/dev/fileapi-codemodel-2.2.rst @@ -0,0 +1,7 @@ +fileapi-codemodel-2.2 +--------------------- + +* The :manual:`cmake-file-api(7)` "codemodel" version 2 ``version`` field has + been updated to 2.2. +* The :manual:`cmake-file-api(7)` "codemodel" version 2 "target" object gained + a new ``languageStandard`` field in the ``compileGroups`` objects. diff --git a/Help/release/dev/remove-warn-unused-vars.rst b/Help/release/dev/remove-warn-unused-vars.rst new file mode 100644 index 0000000..7a06e91 --- /dev/null +++ b/Help/release/dev/remove-warn-unused-vars.rst @@ -0,0 +1,6 @@ +remove-warn-unused-vars +----------------------- + +* The :manual:`cmake(1)` command-line option ``--warn-unused-vars`` has + been removed and is now silently ignored. The option has not worked + correctly since CMake 3.3. diff --git a/Help/variable/ANDROID.rst b/Help/variable/ANDROID.rst index fede4ca..68dccf2 100644 --- a/Help/variable/ANDROID.rst +++ b/Help/variable/ANDROID.rst @@ -1,5 +1,7 @@ ANDROID ------- +.. versionadded:: 3.7 + Set to ``1`` when the target system (:variable:`CMAKE_SYSTEM_NAME`) is ``Android``. diff --git a/Help/variable/CACHE.rst b/Help/variable/CACHE.rst index 2cef27e..d5489c8 100644 --- a/Help/variable/CACHE.rst +++ b/Help/variable/CACHE.rst @@ -1,6 +1,8 @@ CACHE ----- +.. versionadded:: 3.13 + Operator to read cache variables. Use the syntax ``$CACHE{VAR}`` to read cache entry ``VAR``. diff --git a/Help/variable/CMAKE_AIX_EXPORT_ALL_SYMBOLS.rst b/Help/variable/CMAKE_AIX_EXPORT_ALL_SYMBOLS.rst index c64dd48..699fe0f 100644 --- a/Help/variable/CMAKE_AIX_EXPORT_ALL_SYMBOLS.rst +++ b/Help/variable/CMAKE_AIX_EXPORT_ALL_SYMBOLS.rst @@ -1,6 +1,8 @@ CMAKE_AIX_EXPORT_ALL_SYMBOLS ---------------------------- +.. versionadded:: 3.17 + Default value for :prop_tgt:`AIX_EXPORT_ALL_SYMBOLS` target property. This variable is used to initialize the property on each target as it is created. diff --git a/Help/variable/CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS.rst b/Help/variable/CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS.rst index 8862ba9..2d6b4b9 100644 --- a/Help/variable/CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS.rst +++ b/Help/variable/CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS.rst @@ -1,5 +1,7 @@ CMAKE_ANDROID_ANT_ADDITIONAL_OPTIONS ------------------------------------ +.. versionadded:: 3.4 + Default value for the :prop_tgt:`ANDROID_ANT_ADDITIONAL_OPTIONS` target property. See that target property for additional information. diff --git a/Help/variable/CMAKE_ANDROID_API.rst b/Help/variable/CMAKE_ANDROID_API.rst index c07a05a..4388bf2 100644 --- a/Help/variable/CMAKE_ANDROID_API.rst +++ b/Help/variable/CMAKE_ANDROID_API.rst @@ -1,6 +1,8 @@ CMAKE_ANDROID_API ----------------- +.. versionadded:: 3.1 + When :ref:`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio Edition`, this variable may be set to specify the default value for the :prop_tgt:`ANDROID_API` target property. See that target property for diff --git a/Help/variable/CMAKE_ANDROID_API_MIN.rst b/Help/variable/CMAKE_ANDROID_API_MIN.rst index 0246c75..a0d2ab4 100644 --- a/Help/variable/CMAKE_ANDROID_API_MIN.rst +++ b/Help/variable/CMAKE_ANDROID_API_MIN.rst @@ -1,5 +1,7 @@ CMAKE_ANDROID_API_MIN --------------------- +.. versionadded:: 3.2 + Default value for the :prop_tgt:`ANDROID_API_MIN` target property. See that target property for additional information. diff --git a/Help/variable/CMAKE_ANDROID_ARCH.rst b/Help/variable/CMAKE_ANDROID_ARCH.rst index b91ca57..9f12742 100644 --- a/Help/variable/CMAKE_ANDROID_ARCH.rst +++ b/Help/variable/CMAKE_ANDROID_ARCH.rst @@ -1,6 +1,8 @@ CMAKE_ANDROID_ARCH ------------------ +.. versionadded:: 3.4 + When :ref:`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio Edition`, this variable may be set to specify the default value for the :prop_tgt:`ANDROID_ARCH` target property. See that target property for diff --git a/Help/variable/CMAKE_ANDROID_ARCH_ABI.rst b/Help/variable/CMAKE_ANDROID_ARCH_ABI.rst index 0a3ed3c..5a2e3ec 100644 --- a/Help/variable/CMAKE_ANDROID_ARCH_ABI.rst +++ b/Help/variable/CMAKE_ANDROID_ARCH_ABI.rst @@ -1,6 +1,8 @@ CMAKE_ANDROID_ARCH_ABI ---------------------- +.. versionadded:: 3.7 + When :ref:`Cross Compiling for Android`, this variable specifies the target architecture and ABI to be used. Valid values are: diff --git a/Help/variable/CMAKE_ANDROID_ARM_MODE.rst b/Help/variable/CMAKE_ANDROID_ARM_MODE.rst index ad3c37c..973ff7e 100644 --- a/Help/variable/CMAKE_ANDROID_ARM_MODE.rst +++ b/Help/variable/CMAKE_ANDROID_ARM_MODE.rst @@ -1,6 +1,8 @@ CMAKE_ANDROID_ARM_MODE ---------------------- +.. versionadded:: 3.7 + When :ref:`Cross Compiling for Android` and :variable:`CMAKE_ANDROID_ARCH_ABI` is set to one of the ``armeabi`` architectures, set ``CMAKE_ANDROID_ARM_MODE`` to ``ON`` to target 32-bit ARM processors (``-marm``). Otherwise, the diff --git a/Help/variable/CMAKE_ANDROID_ARM_NEON.rst b/Help/variable/CMAKE_ANDROID_ARM_NEON.rst index 4b7ae03..6b9cf08 100644 --- a/Help/variable/CMAKE_ANDROID_ARM_NEON.rst +++ b/Help/variable/CMAKE_ANDROID_ARM_NEON.rst @@ -1,6 +1,8 @@ CMAKE_ANDROID_ARM_NEON ---------------------- +.. versionadded:: 3.7 + When :ref:`Cross Compiling for Android` and :variable:`CMAKE_ANDROID_ARCH_ABI` is set to ``armeabi-v7a`` set ``CMAKE_ANDROID_ARM_NEON`` to ``ON`` to target ARM NEON devices. diff --git a/Help/variable/CMAKE_ANDROID_ASSETS_DIRECTORIES.rst b/Help/variable/CMAKE_ANDROID_ASSETS_DIRECTORIES.rst index c372fe4..3de2be4 100644 --- a/Help/variable/CMAKE_ANDROID_ASSETS_DIRECTORIES.rst +++ b/Help/variable/CMAKE_ANDROID_ASSETS_DIRECTORIES.rst @@ -1,5 +1,7 @@ CMAKE_ANDROID_ASSETS_DIRECTORIES -------------------------------- +.. versionadded:: 3.4 + Default value for the :prop_tgt:`ANDROID_ASSETS_DIRECTORIES` target property. See that target property for additional information. diff --git a/Help/variable/CMAKE_ANDROID_GUI.rst b/Help/variable/CMAKE_ANDROID_GUI.rst index 1755375..821bbee 100644 --- a/Help/variable/CMAKE_ANDROID_GUI.rst +++ b/Help/variable/CMAKE_ANDROID_GUI.rst @@ -1,5 +1,7 @@ CMAKE_ANDROID_GUI ----------------- +.. versionadded:: 3.1 + Default value for the :prop_tgt:`ANDROID_GUI` target property of executables. See that target property for additional information. diff --git a/Help/variable/CMAKE_ANDROID_JAR_DEPENDENCIES.rst b/Help/variable/CMAKE_ANDROID_JAR_DEPENDENCIES.rst index 451a929..80ab842 100644 --- a/Help/variable/CMAKE_ANDROID_JAR_DEPENDENCIES.rst +++ b/Help/variable/CMAKE_ANDROID_JAR_DEPENDENCIES.rst @@ -1,5 +1,7 @@ CMAKE_ANDROID_JAR_DEPENDENCIES ------------------------------ +.. versionadded:: 3.4 + Default value for the :prop_tgt:`ANDROID_JAR_DEPENDENCIES` target property. See that target property for additional information. diff --git a/Help/variable/CMAKE_ANDROID_JAR_DIRECTORIES.rst b/Help/variable/CMAKE_ANDROID_JAR_DIRECTORIES.rst index af83e34..4d148d8 100644 --- a/Help/variable/CMAKE_ANDROID_JAR_DIRECTORIES.rst +++ b/Help/variable/CMAKE_ANDROID_JAR_DIRECTORIES.rst @@ -1,5 +1,7 @@ CMAKE_ANDROID_JAR_DIRECTORIES ----------------------------- +.. versionadded:: 3.4 + Default value for the :prop_tgt:`ANDROID_JAR_DIRECTORIES` target property. See that target property for additional information. diff --git a/Help/variable/CMAKE_ANDROID_JAVA_SOURCE_DIR.rst b/Help/variable/CMAKE_ANDROID_JAVA_SOURCE_DIR.rst index 3dc05e0..021baa0 100644 --- a/Help/variable/CMAKE_ANDROID_JAVA_SOURCE_DIR.rst +++ b/Help/variable/CMAKE_ANDROID_JAVA_SOURCE_DIR.rst @@ -1,5 +1,7 @@ CMAKE_ANDROID_JAVA_SOURCE_DIR ----------------------------- +.. versionadded:: 3.4 + Default value for the :prop_tgt:`ANDROID_JAVA_SOURCE_DIR` target property. See that target property for additional information. diff --git a/Help/variable/CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES.rst b/Help/variable/CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES.rst index 4191907..41d4cc3 100644 --- a/Help/variable/CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES.rst +++ b/Help/variable/CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES.rst @@ -1,5 +1,7 @@ CMAKE_ANDROID_NATIVE_LIB_DEPENDENCIES ------------------------------------- +.. versionadded:: 3.4 + Default value for the :prop_tgt:`ANDROID_NATIVE_LIB_DEPENDENCIES` target property. See that target property for additional information. diff --git a/Help/variable/CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES.rst b/Help/variable/CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES.rst index 7cb9527..e87547d 100644 --- a/Help/variable/CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES.rst +++ b/Help/variable/CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES.rst @@ -1,5 +1,7 @@ CMAKE_ANDROID_NATIVE_LIB_DIRECTORIES ------------------------------------ +.. versionadded:: 3.4 + Default value for the :prop_tgt:`ANDROID_NATIVE_LIB_DIRECTORIES` target property. See that target property for additional information. diff --git a/Help/variable/CMAKE_ANDROID_NDK.rst b/Help/variable/CMAKE_ANDROID_NDK.rst index d241dd0..72ac99e 100644 --- a/Help/variable/CMAKE_ANDROID_NDK.rst +++ b/Help/variable/CMAKE_ANDROID_NDK.rst @@ -1,6 +1,8 @@ CMAKE_ANDROID_NDK ----------------- +.. versionadded:: 3.7 + When :ref:`Cross Compiling for Android with the NDK`, this variable holds the absolute path to the root directory of the NDK. The directory must contain a ``platforms`` subdirectory holding the ``android-<api>`` diff --git a/Help/variable/CMAKE_ANDROID_NDK_DEPRECATED_HEADERS.rst b/Help/variable/CMAKE_ANDROID_NDK_DEPRECATED_HEADERS.rst index 8ea1257..40a5c1a 100644 --- a/Help/variable/CMAKE_ANDROID_NDK_DEPRECATED_HEADERS.rst +++ b/Help/variable/CMAKE_ANDROID_NDK_DEPRECATED_HEADERS.rst @@ -1,6 +1,8 @@ CMAKE_ANDROID_NDK_DEPRECATED_HEADERS ------------------------------------ +.. versionadded:: 3.9 + When :ref:`Cross Compiling for Android with the NDK`, this variable may be set to specify whether to use the deprecated per-api-level headers instead of the unified headers. diff --git a/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG.rst b/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG.rst index 207019a..9d61fa4 100644 --- a/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG.rst +++ b/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG.rst @@ -1,6 +1,8 @@ CMAKE_ANDROID_NDK_TOOLCHAIN_HOST_TAG ------------------------------------ +.. versionadded:: 3.7.1 + When :ref:`Cross Compiling for Android with the NDK`, this variable provides the NDK's "host tag" used to construct the path to prebuilt toolchains that run on the host. diff --git a/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION.rst b/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION.rst index 22808e3..15fe18f 100644 --- a/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION.rst +++ b/Help/variable/CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION.rst @@ -1,6 +1,8 @@ CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION ----------------------------------- +.. versionadded:: 3.7 + When :ref:`Cross Compiling for Android with the NDK`, this variable may be set to specify the version of the toolchain to be used as the compiler. diff --git a/Help/variable/CMAKE_ANDROID_PROCESS_MAX.rst b/Help/variable/CMAKE_ANDROID_PROCESS_MAX.rst index 19fb527..be241c2 100644 --- a/Help/variable/CMAKE_ANDROID_PROCESS_MAX.rst +++ b/Help/variable/CMAKE_ANDROID_PROCESS_MAX.rst @@ -1,5 +1,7 @@ CMAKE_ANDROID_PROCESS_MAX ------------------------- +.. versionadded:: 3.4 + Default value for the :prop_tgt:`ANDROID_PROCESS_MAX` target property. See that target property for additional information. diff --git a/Help/variable/CMAKE_ANDROID_PROGUARD.rst b/Help/variable/CMAKE_ANDROID_PROGUARD.rst index b8fdd46..bb001d3 100644 --- a/Help/variable/CMAKE_ANDROID_PROGUARD.rst +++ b/Help/variable/CMAKE_ANDROID_PROGUARD.rst @@ -1,5 +1,7 @@ CMAKE_ANDROID_PROGUARD ---------------------- +.. versionadded:: 3.4 + Default value for the :prop_tgt:`ANDROID_PROGUARD` target property. See that target property for additional information. diff --git a/Help/variable/CMAKE_ANDROID_PROGUARD_CONFIG_PATH.rst b/Help/variable/CMAKE_ANDROID_PROGUARD_CONFIG_PATH.rst index 8dea009..6fd4067 100644 --- a/Help/variable/CMAKE_ANDROID_PROGUARD_CONFIG_PATH.rst +++ b/Help/variable/CMAKE_ANDROID_PROGUARD_CONFIG_PATH.rst @@ -1,5 +1,7 @@ CMAKE_ANDROID_PROGUARD_CONFIG_PATH ---------------------------------- +.. versionadded:: 3.4 + Default value for the :prop_tgt:`ANDROID_PROGUARD_CONFIG_PATH` target property. See that target property for additional information. diff --git a/Help/variable/CMAKE_ANDROID_SECURE_PROPS_PATH.rst b/Help/variable/CMAKE_ANDROID_SECURE_PROPS_PATH.rst index 69a4d0b..9f5743e 100644 --- a/Help/variable/CMAKE_ANDROID_SECURE_PROPS_PATH.rst +++ b/Help/variable/CMAKE_ANDROID_SECURE_PROPS_PATH.rst @@ -1,5 +1,7 @@ CMAKE_ANDROID_SECURE_PROPS_PATH ------------------------------- +.. versionadded:: 3.4 + Default value for the :prop_tgt:`ANDROID_SECURE_PROPS_PATH` target property. See that target property for additional information. diff --git a/Help/variable/CMAKE_ANDROID_SKIP_ANT_STEP.rst b/Help/variable/CMAKE_ANDROID_SKIP_ANT_STEP.rst index 0a96df9..588769b 100644 --- a/Help/variable/CMAKE_ANDROID_SKIP_ANT_STEP.rst +++ b/Help/variable/CMAKE_ANDROID_SKIP_ANT_STEP.rst @@ -1,5 +1,7 @@ CMAKE_ANDROID_SKIP_ANT_STEP --------------------------- +.. versionadded:: 3.4 + Default value for the :prop_tgt:`ANDROID_SKIP_ANT_STEP` target property. See that target property for additional information. diff --git a/Help/variable/CMAKE_ANDROID_STANDALONE_TOOLCHAIN.rst b/Help/variable/CMAKE_ANDROID_STANDALONE_TOOLCHAIN.rst index ea62cab..3ca89f5 100644 --- a/Help/variable/CMAKE_ANDROID_STANDALONE_TOOLCHAIN.rst +++ b/Help/variable/CMAKE_ANDROID_STANDALONE_TOOLCHAIN.rst @@ -1,6 +1,8 @@ CMAKE_ANDROID_STANDALONE_TOOLCHAIN ---------------------------------- +.. versionadded:: 3.7 + When :ref:`Cross Compiling for Android with a Standalone Toolchain`, this variable holds the absolute path to the root directory of the toolchain. The specified directory must contain a ``sysroot`` subdirectory. diff --git a/Help/variable/CMAKE_ANDROID_STL_TYPE.rst b/Help/variable/CMAKE_ANDROID_STL_TYPE.rst index d174575..3778181 100644 --- a/Help/variable/CMAKE_ANDROID_STL_TYPE.rst +++ b/Help/variable/CMAKE_ANDROID_STL_TYPE.rst @@ -1,6 +1,8 @@ CMAKE_ANDROID_STL_TYPE ---------------------- +.. versionadded:: 3.4 + When :ref:`Cross Compiling for Android with NVIDIA Nsight Tegra Visual Studio Edition`, this variable may be set to specify the default value for the :prop_tgt:`ANDROID_STL_TYPE` target property. See that target property diff --git a/Help/variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY_CONFIG.rst b/Help/variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY_CONFIG.rst index 94c2b6e..d8bd82c 100644 --- a/Help/variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY_CONFIG.rst +++ b/Help/variable/CMAKE_ARCHIVE_OUTPUT_DIRECTORY_CONFIG.rst @@ -1,6 +1,8 @@ CMAKE_ARCHIVE_OUTPUT_DIRECTORY_<CONFIG> --------------------------------------- +.. versionadded:: 3.3 + Where to put all the :ref:`ARCHIVE <Archive Output Artifacts>` target files when built for a specific configuration. diff --git a/Help/variable/CMAKE_AUTOGEN_ORIGIN_DEPENDS.rst b/Help/variable/CMAKE_AUTOGEN_ORIGIN_DEPENDS.rst index 1398e78..c24e462 100644 --- a/Help/variable/CMAKE_AUTOGEN_ORIGIN_DEPENDS.rst +++ b/Help/variable/CMAKE_AUTOGEN_ORIGIN_DEPENDS.rst @@ -1,6 +1,8 @@ CMAKE_AUTOGEN_ORIGIN_DEPENDS ---------------------------- +.. versionadded:: 3.14 + Switch for forwarding origin target dependencies to the corresponding ``_autogen`` targets. diff --git a/Help/variable/CMAKE_AUTOGEN_PARALLEL.rst b/Help/variable/CMAKE_AUTOGEN_PARALLEL.rst index dd9499a..2ada012 100644 --- a/Help/variable/CMAKE_AUTOGEN_PARALLEL.rst +++ b/Help/variable/CMAKE_AUTOGEN_PARALLEL.rst @@ -1,6 +1,8 @@ CMAKE_AUTOGEN_PARALLEL ---------------------- +.. versionadded:: 3.11 + Number of parallel ``moc`` or ``uic`` processes to start when using :prop_tgt:`AUTOMOC` and :prop_tgt:`AUTOUIC`. diff --git a/Help/variable/CMAKE_AUTOGEN_VERBOSE.rst b/Help/variable/CMAKE_AUTOGEN_VERBOSE.rst index bad9cf2..f77ed6a 100644 --- a/Help/variable/CMAKE_AUTOGEN_VERBOSE.rst +++ b/Help/variable/CMAKE_AUTOGEN_VERBOSE.rst @@ -1,6 +1,8 @@ CMAKE_AUTOGEN_VERBOSE --------------------- +.. versionadded:: 3.13 + Sets the verbosity of :prop_tgt:`AUTOMOC`, :prop_tgt:`AUTOUIC` and :prop_tgt:`AUTORCC`. A positive integer value or a true boolean value lets the ``AUTO*`` generators output additional processing information. diff --git a/Help/variable/CMAKE_AUTOMOC_COMPILER_PREDEFINES.rst b/Help/variable/CMAKE_AUTOMOC_COMPILER_PREDEFINES.rst index 7e1c53d..f1b03a0 100644 --- a/Help/variable/CMAKE_AUTOMOC_COMPILER_PREDEFINES.rst +++ b/Help/variable/CMAKE_AUTOMOC_COMPILER_PREDEFINES.rst @@ -1,6 +1,8 @@ CMAKE_AUTOMOC_COMPILER_PREDEFINES --------------------------------- +.. versionadded:: 3.10 + This variable is used to initialize the :prop_tgt:`AUTOMOC_COMPILER_PREDEFINES` property on all the targets. See that target property for additional information. diff --git a/Help/variable/CMAKE_AUTOMOC_DEPEND_FILTERS.rst b/Help/variable/CMAKE_AUTOMOC_DEPEND_FILTERS.rst index 5c3662d..2c1551a 100644 --- a/Help/variable/CMAKE_AUTOMOC_DEPEND_FILTERS.rst +++ b/Help/variable/CMAKE_AUTOMOC_DEPEND_FILTERS.rst @@ -1,6 +1,8 @@ CMAKE_AUTOMOC_DEPEND_FILTERS ---------------------------- +.. versionadded:: 3.9 + Filter definitions used by :variable:`CMAKE_AUTOMOC` to extract file names from source code as additional dependencies for the ``moc`` file. diff --git a/Help/variable/CMAKE_AUTOMOC_MACRO_NAMES.rst b/Help/variable/CMAKE_AUTOMOC_MACRO_NAMES.rst index ba1b9d2..8e34df2 100644 --- a/Help/variable/CMAKE_AUTOMOC_MACRO_NAMES.rst +++ b/Help/variable/CMAKE_AUTOMOC_MACRO_NAMES.rst @@ -1,6 +1,8 @@ CMAKE_AUTOMOC_MACRO_NAMES ---------------------------- +.. versionadded:: 3.10 + :ref:`Semicolon-separated list <CMake Language Lists>` list of macro names used by :variable:`CMAKE_AUTOMOC` to determine if a C++ file needs to be processed by ``moc``. diff --git a/Help/variable/CMAKE_AUTOMOC_PATH_PREFIX.rst b/Help/variable/CMAKE_AUTOMOC_PATH_PREFIX.rst index dca0b06..07a6cc8 100644 --- a/Help/variable/CMAKE_AUTOMOC_PATH_PREFIX.rst +++ b/Help/variable/CMAKE_AUTOMOC_PATH_PREFIX.rst @@ -1,6 +1,8 @@ CMAKE_AUTOMOC_PATH_PREFIX ------------------------- +.. versionadded:: 3.16 + Whether to generate the ``-p`` path prefix option for ``moc`` on :prop_tgt:`AUTOMOC` enabled Qt targets. diff --git a/Help/variable/CMAKE_AUTOUIC_SEARCH_PATHS.rst b/Help/variable/CMAKE_AUTOUIC_SEARCH_PATHS.rst index aa132bf..0262368 100644 --- a/Help/variable/CMAKE_AUTOUIC_SEARCH_PATHS.rst +++ b/Help/variable/CMAKE_AUTOUIC_SEARCH_PATHS.rst @@ -1,6 +1,8 @@ CMAKE_AUTOUIC_SEARCH_PATHS -------------------------- +.. versionadded:: 3.9 + Search path list used by :variable:`CMAKE_AUTOUIC` to find included ``.ui`` files. diff --git a/Help/variable/CMAKE_BUILD_RPATH.rst b/Help/variable/CMAKE_BUILD_RPATH.rst index f5d53b8..7a8ace7 100644 --- a/Help/variable/CMAKE_BUILD_RPATH.rst +++ b/Help/variable/CMAKE_BUILD_RPATH.rst @@ -1,6 +1,8 @@ CMAKE_BUILD_RPATH ----------------- +.. versionadded:: 3.8 + :ref:`Semicolon-separated list <CMake Language Lists>` specifying runtime path (``RPATH``) entries to add to binaries linked in the build tree (for platforms that support it). The entries will *not* be used for binaries in the install diff --git a/Help/variable/CMAKE_BUILD_RPATH_USE_ORIGIN.rst b/Help/variable/CMAKE_BUILD_RPATH_USE_ORIGIN.rst index e34ede6..ecd9278 100644 --- a/Help/variable/CMAKE_BUILD_RPATH_USE_ORIGIN.rst +++ b/Help/variable/CMAKE_BUILD_RPATH_USE_ORIGIN.rst @@ -1,6 +1,8 @@ CMAKE_BUILD_RPATH_USE_ORIGIN ---------------------------- +.. versionadded:: 3.14 + Whether to use relative paths for the build ``RPATH``. This is used to initialize the :prop_tgt:`BUILD_RPATH_USE_ORIGIN` target diff --git a/Help/variable/CMAKE_BUILD_WITH_INSTALL_NAME_DIR.rst b/Help/variable/CMAKE_BUILD_WITH_INSTALL_NAME_DIR.rst index 30d5d3b..5ba775c 100644 --- a/Help/variable/CMAKE_BUILD_WITH_INSTALL_NAME_DIR.rst +++ b/Help/variable/CMAKE_BUILD_WITH_INSTALL_NAME_DIR.rst @@ -1,6 +1,8 @@ CMAKE_BUILD_WITH_INSTALL_NAME_DIR --------------------------------- +.. versionadded:: 3.9 + Whether to use :prop_tgt:`INSTALL_NAME_DIR` on targets in the build tree. This variable is used to initialize the :prop_tgt:`BUILD_WITH_INSTALL_NAME_DIR` diff --git a/Help/variable/CMAKE_CODEBLOCKS_COMPILER_ID.rst b/Help/variable/CMAKE_CODEBLOCKS_COMPILER_ID.rst index ad2709d..0b2b0a0 100644 --- a/Help/variable/CMAKE_CODEBLOCKS_COMPILER_ID.rst +++ b/Help/variable/CMAKE_CODEBLOCKS_COMPILER_ID.rst @@ -1,6 +1,8 @@ CMAKE_CODEBLOCKS_COMPILER_ID ---------------------------- +.. versionadded:: 3.11 + Change the compiler id in the generated CodeBlocks project files. CodeBlocks uses its own compiler id string which differs from diff --git a/Help/variable/CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES.rst b/Help/variable/CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES.rst index 80ffce3..dbb8606 100644 --- a/Help/variable/CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES.rst +++ b/Help/variable/CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES.rst @@ -1,6 +1,8 @@ CMAKE_CODEBLOCKS_EXCLUDE_EXTERNAL_FILES --------------------------------------- +.. versionadded:: 3.10 + Change the way the CodeBlocks generator creates project files. If this variable evaluates to ``ON`` the generator excludes from diff --git a/Help/variable/CMAKE_CODELITE_USE_TARGETS.rst b/Help/variable/CMAKE_CODELITE_USE_TARGETS.rst index 33cdf6c..21af5f7 100644 --- a/Help/variable/CMAKE_CODELITE_USE_TARGETS.rst +++ b/Help/variable/CMAKE_CODELITE_USE_TARGETS.rst @@ -1,6 +1,8 @@ CMAKE_CODELITE_USE_TARGETS -------------------------- +.. versionadded:: 3.7 + Change the way the CodeLite generator creates projectfiles. If this variable evaluates to ``ON`` at the end of the top-level diff --git a/Help/variable/CMAKE_COMPILER_IS_GNUCC.rst b/Help/variable/CMAKE_COMPILER_IS_GNUCC.rst index a40667e..91cf848 100644 --- a/Help/variable/CMAKE_COMPILER_IS_GNUCC.rst +++ b/Help/variable/CMAKE_COMPILER_IS_GNUCC.rst @@ -1,5 +1,7 @@ CMAKE_COMPILER_IS_GNUCC ----------------------- +.. versionadded:: 3.7 + True if the ``C`` compiler is GNU. Use :variable:`CMAKE_C_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` instead. diff --git a/Help/variable/CMAKE_COMPILER_IS_GNUCXX.rst b/Help/variable/CMAKE_COMPILER_IS_GNUCXX.rst index f1f5cf7..e67718a 100644 --- a/Help/variable/CMAKE_COMPILER_IS_GNUCXX.rst +++ b/Help/variable/CMAKE_COMPILER_IS_GNUCXX.rst @@ -1,5 +1,7 @@ CMAKE_COMPILER_IS_GNUCXX ------------------------ +.. versionadded:: 3.7 + True if the C++ (``CXX``) compiler is GNU. Use :variable:`CMAKE_CXX_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` instead. diff --git a/Help/variable/CMAKE_COMPILER_IS_GNUG77.rst b/Help/variable/CMAKE_COMPILER_IS_GNUG77.rst index 3d6dab4..f69c01a 100644 --- a/Help/variable/CMAKE_COMPILER_IS_GNUG77.rst +++ b/Help/variable/CMAKE_COMPILER_IS_GNUG77.rst @@ -1,5 +1,7 @@ CMAKE_COMPILER_IS_GNUG77 ------------------------ +.. versionadded:: 3.7 + True if the ``Fortran`` compiler is GNU. Use :variable:`CMAKE_Fortran_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>` instead. diff --git a/Help/variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY.rst b/Help/variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY.rst index ea33c7d..11f52c7 100644 --- a/Help/variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY.rst +++ b/Help/variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY.rst @@ -1,6 +1,8 @@ CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY ---------------------------------- +.. versionadded:: 3.1 + Output directory for MS debug symbol ``.pdb`` files generated by the compiler while building source files. diff --git a/Help/variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG.rst b/Help/variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG.rst index fdeb9ab..99d0bdc 100644 --- a/Help/variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG.rst +++ b/Help/variable/CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_CONFIG.rst @@ -1,6 +1,8 @@ CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY_<CONFIG> ------------------------------------------- +.. versionadded:: 3.1 + Per-configuration output directory for MS debug symbol ``.pdb`` files generated by the compiler while building source files. diff --git a/Help/variable/CMAKE_CPACK_COMMAND.rst b/Help/variable/CMAKE_CPACK_COMMAND.rst index 559108a..3a81d68 100644 --- a/Help/variable/CMAKE_CPACK_COMMAND.rst +++ b/Help/variable/CMAKE_CPACK_COMMAND.rst @@ -1,6 +1,8 @@ CMAKE_CPACK_COMMAND ------------------- +.. versionadded:: 3.13 + Full path to :manual:`cpack(1)` command installed with CMake. This is the full path to the CPack executable :manual:`cpack(1)` which is diff --git a/Help/variable/CMAKE_CROSSCOMPILING_EMULATOR.rst b/Help/variable/CMAKE_CROSSCOMPILING_EMULATOR.rst index 1d013b7..815da00 100644 --- a/Help/variable/CMAKE_CROSSCOMPILING_EMULATOR.rst +++ b/Help/variable/CMAKE_CROSSCOMPILING_EMULATOR.rst @@ -1,6 +1,8 @@ CMAKE_CROSSCOMPILING_EMULATOR ----------------------------- +.. versionadded:: 3.3 + This variable is only used when :variable:`CMAKE_CROSSCOMPILING` is on. It should point to a command on the host system that can run executable built for the target system. diff --git a/Help/variable/CMAKE_CROSS_CONFIGS.rst b/Help/variable/CMAKE_CROSS_CONFIGS.rst index 94157f3..be921d6 100644 --- a/Help/variable/CMAKE_CROSS_CONFIGS.rst +++ b/Help/variable/CMAKE_CROSS_CONFIGS.rst @@ -1,6 +1,8 @@ CMAKE_CROSS_CONFIGS ------------------- +.. versionadded:: 3.17 + Specifies a :ref:`semicolon-separated list <CMake Language Lists>` of configurations available from all ``build-<Config>.ninja`` files in the :generator:`Ninja Multi-Config` generator. This variable activates diff --git a/Help/variable/CMAKE_CTEST_ARGUMENTS.rst b/Help/variable/CMAKE_CTEST_ARGUMENTS.rst index 0940b46..4dfc8fe 100644 --- a/Help/variable/CMAKE_CTEST_ARGUMENTS.rst +++ b/Help/variable/CMAKE_CTEST_ARGUMENTS.rst @@ -1,6 +1,8 @@ CMAKE_CTEST_ARGUMENTS --------------------- +.. versionadded:: 3.17 + Set this to a :ref:`semicolon-separated list <CMake Language Lists>` of command-line arguments to pass to :manual:`ctest(1)` when running tests through the ``test`` (or ``RUN_TESTS``) target of the generated build system. diff --git a/Help/variable/CMAKE_CUDA_ARCHITECTURES.rst b/Help/variable/CMAKE_CUDA_ARCHITECTURES.rst index 149bffa..985040d 100644 --- a/Help/variable/CMAKE_CUDA_ARCHITECTURES.rst +++ b/Help/variable/CMAKE_CUDA_ARCHITECTURES.rst @@ -1,6 +1,8 @@ CMAKE_CUDA_ARCHITECTURES ------------------------ +.. versionadded:: 3.18 + Default value for :prop_tgt:`CUDA_ARCHITECTURES` property of targets. This is initialized as follows depending on :variable:`CMAKE_CUDA_COMPILER_ID <CMAKE_<LANG>_COMPILER_ID>`: diff --git a/Help/variable/CMAKE_CUDA_COMPILE_FEATURES.rst b/Help/variable/CMAKE_CUDA_COMPILE_FEATURES.rst index 2cd2650..c1c270c 100644 --- a/Help/variable/CMAKE_CUDA_COMPILE_FEATURES.rst +++ b/Help/variable/CMAKE_CUDA_COMPILE_FEATURES.rst @@ -1,6 +1,8 @@ CMAKE_CUDA_COMPILE_FEATURES --------------------------- +.. versionadded:: 3.17 + List of features known to the CUDA compiler These features are known to be available for use with the CUDA compiler. This diff --git a/Help/variable/CMAKE_CUDA_EXTENSIONS.rst b/Help/variable/CMAKE_CUDA_EXTENSIONS.rst index 4fe758e..b86c0ea 100644 --- a/Help/variable/CMAKE_CUDA_EXTENSIONS.rst +++ b/Help/variable/CMAKE_CUDA_EXTENSIONS.rst @@ -1,6 +1,8 @@ CMAKE_CUDA_EXTENSIONS --------------------- +.. versionadded:: 3.8 + Default value for :prop_tgt:`CUDA_EXTENSIONS` property of targets. This variable is used to initialize the :prop_tgt:`CUDA_EXTENSIONS` diff --git a/Help/variable/CMAKE_CUDA_HOST_COMPILER.rst b/Help/variable/CMAKE_CUDA_HOST_COMPILER.rst index 6d34c5c..34512b4 100644 --- a/Help/variable/CMAKE_CUDA_HOST_COMPILER.rst +++ b/Help/variable/CMAKE_CUDA_HOST_COMPILER.rst @@ -1,6 +1,8 @@ CMAKE_CUDA_HOST_COMPILER ------------------------ +.. versionadded:: 3.10 + Executable to use when compiling host code when compiling ``CUDA`` language files. Maps to the ``nvcc -ccbin`` option. Will only be used by CMake on the first configuration to determine a valid host compiler for ``CUDA``. After a valid diff --git a/Help/variable/CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS.rst b/Help/variable/CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS.rst index fc835cd..474baee 100644 --- a/Help/variable/CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS.rst +++ b/Help/variable/CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS.rst @@ -1,6 +1,8 @@ CMAKE_CUDA_RESOLVE_DEVICE_SYMBOLS --------------------------------- +.. versionadded:: 3.16 + Default value for :prop_tgt:`CUDA_RESOLVE_DEVICE_SYMBOLS` target property. This variable is used to initialize the property on each target as it is created. diff --git a/Help/variable/CMAKE_CUDA_RUNTIME_LIBRARY.rst b/Help/variable/CMAKE_CUDA_RUNTIME_LIBRARY.rst index e3205d3..69b9d93 100644 --- a/Help/variable/CMAKE_CUDA_RUNTIME_LIBRARY.rst +++ b/Help/variable/CMAKE_CUDA_RUNTIME_LIBRARY.rst @@ -1,6 +1,8 @@ CMAKE_CUDA_RUNTIME_LIBRARY -------------------------- +.. versionadded:: 3.17 + Select the CUDA runtime library for use when compiling and linking CUDA. This variable is used to initialize the :prop_tgt:`CUDA_RUNTIME_LIBRARY` property on all targets as they are created. diff --git a/Help/variable/CMAKE_CUDA_SEPARABLE_COMPILATION.rst b/Help/variable/CMAKE_CUDA_SEPARABLE_COMPILATION.rst index eef92fb..3dbaef9 100644 --- a/Help/variable/CMAKE_CUDA_SEPARABLE_COMPILATION.rst +++ b/Help/variable/CMAKE_CUDA_SEPARABLE_COMPILATION.rst @@ -1,6 +1,8 @@ CMAKE_CUDA_SEPARABLE_COMPILATION -------------------------------- +.. versionadded:: 3.11 + Default value for :prop_tgt:`CUDA_SEPARABLE_COMPILATION` target property. This variable is used to initialize the property on each target as it is created. diff --git a/Help/variable/CMAKE_CUDA_STANDARD.rst b/Help/variable/CMAKE_CUDA_STANDARD.rst index 6c23031..798ab1e 100644 --- a/Help/variable/CMAKE_CUDA_STANDARD.rst +++ b/Help/variable/CMAKE_CUDA_STANDARD.rst @@ -1,6 +1,8 @@ CMAKE_CUDA_STANDARD ------------------- +.. versionadded:: 3.8 + Default value for :prop_tgt:`CUDA_STANDARD` property of targets. This variable is used to initialize the :prop_tgt:`CUDA_STANDARD` diff --git a/Help/variable/CMAKE_CUDA_STANDARD_REQUIRED.rst b/Help/variable/CMAKE_CUDA_STANDARD_REQUIRED.rst index 935d605..ae2f52f 100644 --- a/Help/variable/CMAKE_CUDA_STANDARD_REQUIRED.rst +++ b/Help/variable/CMAKE_CUDA_STANDARD_REQUIRED.rst @@ -1,6 +1,8 @@ CMAKE_CUDA_STANDARD_REQUIRED ---------------------------- +.. versionadded:: 3.8 + Default value for :prop_tgt:`CUDA_STANDARD_REQUIRED` property of targets. This variable is used to initialize the :prop_tgt:`CUDA_STANDARD_REQUIRED` diff --git a/Help/variable/CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES.rst b/Help/variable/CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES.rst index 7de50a5..e586dab 100644 --- a/Help/variable/CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES.rst +++ b/Help/variable/CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES.rst @@ -1,6 +1,8 @@ CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES -------------------------------------- +.. versionadded:: 3.8 + When the ``CUDA`` language has been enabled, this provides a :ref:`semicolon-separated list <CMake Language Lists>` of include directories provided by the CUDA Toolkit. The value may be useful for C++ source files diff --git a/Help/variable/CMAKE_CURRENT_FUNCTION.rst b/Help/variable/CMAKE_CURRENT_FUNCTION.rst index fb7f610..5d1a4e9 100644 --- a/Help/variable/CMAKE_CURRENT_FUNCTION.rst +++ b/Help/variable/CMAKE_CURRENT_FUNCTION.rst @@ -1,6 +1,8 @@ CMAKE_CURRENT_FUNCTION ---------------------- +.. versionadded:: 3.17 + When executing code inside a :command:`function`, this variable contains the name of the current function. It can be useful for diagnostic or debug messages. diff --git a/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_DIR.rst b/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_DIR.rst index 44ae1e5..f8f553d 100644 --- a/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_DIR.rst +++ b/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_DIR.rst @@ -1,6 +1,8 @@ CMAKE_CURRENT_FUNCTION_LIST_DIR ------------------------------- +.. versionadded:: 3.17 + When executing code inside a :command:`function`, this variable contains the full directory of the listfile that defined the current function. diff --git a/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_FILE.rst b/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_FILE.rst index c737af9..437dfec 100644 --- a/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_FILE.rst +++ b/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_FILE.rst @@ -1,6 +1,8 @@ CMAKE_CURRENT_FUNCTION_LIST_FILE -------------------------------- +.. versionadded:: 3.17 + When executing code inside a :command:`function`, this variable contains the full path to the listfile that defined the current function. diff --git a/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_LINE.rst b/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_LINE.rst index ad6282e..2fc7012 100644 --- a/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_LINE.rst +++ b/Help/variable/CMAKE_CURRENT_FUNCTION_LIST_LINE.rst @@ -1,6 +1,8 @@ CMAKE_CURRENT_FUNCTION_LIST_LINE -------------------------------- +.. versionadded:: 3.17 + When executing code inside a :command:`function`, this variable contains the line number in the listfile where the current function was defined. diff --git a/Help/variable/CMAKE_CXX_COMPILE_FEATURES.rst b/Help/variable/CMAKE_CXX_COMPILE_FEATURES.rst index 5c59f95..8fcfbae 100644 --- a/Help/variable/CMAKE_CXX_COMPILE_FEATURES.rst +++ b/Help/variable/CMAKE_CXX_COMPILE_FEATURES.rst @@ -1,6 +1,8 @@ CMAKE_CXX_COMPILE_FEATURES -------------------------- +.. versionadded:: 3.1 + List of features known to the C++ compiler These features are known to be available for use with the C++ compiler. This diff --git a/Help/variable/CMAKE_CXX_EXTENSIONS.rst b/Help/variable/CMAKE_CXX_EXTENSIONS.rst index 4a92425..ea8c4be 100644 --- a/Help/variable/CMAKE_CXX_EXTENSIONS.rst +++ b/Help/variable/CMAKE_CXX_EXTENSIONS.rst @@ -1,6 +1,8 @@ CMAKE_CXX_EXTENSIONS -------------------- +.. versionadded:: 3.1 + Default value for :prop_tgt:`CXX_EXTENSIONS` property of targets. This variable is used to initialize the :prop_tgt:`CXX_EXTENSIONS` diff --git a/Help/variable/CMAKE_CXX_STANDARD.rst b/Help/variable/CMAKE_CXX_STANDARD.rst index 8a8bdff..8ef8c80 100644 --- a/Help/variable/CMAKE_CXX_STANDARD.rst +++ b/Help/variable/CMAKE_CXX_STANDARD.rst @@ -1,6 +1,8 @@ CMAKE_CXX_STANDARD ------------------ +.. versionadded:: 3.1 + Default value for :prop_tgt:`CXX_STANDARD` property of targets. This variable is used to initialize the :prop_tgt:`CXX_STANDARD` diff --git a/Help/variable/CMAKE_CXX_STANDARD_REQUIRED.rst b/Help/variable/CMAKE_CXX_STANDARD_REQUIRED.rst index 4c71058..f7b2ae9 100644 --- a/Help/variable/CMAKE_CXX_STANDARD_REQUIRED.rst +++ b/Help/variable/CMAKE_CXX_STANDARD_REQUIRED.rst @@ -1,6 +1,8 @@ CMAKE_CXX_STANDARD_REQUIRED --------------------------- +.. versionadded:: 3.1 + Default value for :prop_tgt:`CXX_STANDARD_REQUIRED` property of targets. This variable is used to initialize the :prop_tgt:`CXX_STANDARD_REQUIRED` diff --git a/Help/variable/CMAKE_C_COMPILE_FEATURES.rst b/Help/variable/CMAKE_C_COMPILE_FEATURES.rst index 8d1eca0..2b306a3 100644 --- a/Help/variable/CMAKE_C_COMPILE_FEATURES.rst +++ b/Help/variable/CMAKE_C_COMPILE_FEATURES.rst @@ -1,6 +1,8 @@ CMAKE_C_COMPILE_FEATURES ------------------------ +.. versionadded:: 3.1 + List of features known to the C compiler These features are known to be available for use with the C compiler. This diff --git a/Help/variable/CMAKE_C_EXTENSIONS.rst b/Help/variable/CMAKE_C_EXTENSIONS.rst index fa510d4..fce8fc7 100644 --- a/Help/variable/CMAKE_C_EXTENSIONS.rst +++ b/Help/variable/CMAKE_C_EXTENSIONS.rst @@ -1,6 +1,8 @@ CMAKE_C_EXTENSIONS ------------------ +.. versionadded:: 3.1 + Default value for :prop_tgt:`C_EXTENSIONS` property of targets. This variable is used to initialize the :prop_tgt:`C_EXTENSIONS` diff --git a/Help/variable/CMAKE_C_STANDARD.rst b/Help/variable/CMAKE_C_STANDARD.rst index b55e00c..64ef8ce 100644 --- a/Help/variable/CMAKE_C_STANDARD.rst +++ b/Help/variable/CMAKE_C_STANDARD.rst @@ -1,6 +1,8 @@ CMAKE_C_STANDARD ---------------- +.. versionadded:: 3.1 + Default value for :prop_tgt:`C_STANDARD` property of targets. This variable is used to initialize the :prop_tgt:`C_STANDARD` diff --git a/Help/variable/CMAKE_C_STANDARD_REQUIRED.rst b/Help/variable/CMAKE_C_STANDARD_REQUIRED.rst index 7f70f6e..e70b6bd 100644 --- a/Help/variable/CMAKE_C_STANDARD_REQUIRED.rst +++ b/Help/variable/CMAKE_C_STANDARD_REQUIRED.rst @@ -1,6 +1,8 @@ CMAKE_C_STANDARD_REQUIRED ------------------------- +.. versionadded:: 3.1 + Default value for :prop_tgt:`C_STANDARD_REQUIRED` property of targets. This variable is used to initialize the :prop_tgt:`C_STANDARD_REQUIRED` diff --git a/Help/variable/CMAKE_DEFAULT_BUILD_TYPE.rst b/Help/variable/CMAKE_DEFAULT_BUILD_TYPE.rst index aa4f82d..cadbf3a 100644 --- a/Help/variable/CMAKE_DEFAULT_BUILD_TYPE.rst +++ b/Help/variable/CMAKE_DEFAULT_BUILD_TYPE.rst @@ -1,6 +1,8 @@ CMAKE_DEFAULT_BUILD_TYPE ------------------------ +.. versionadded:: 3.17 + Specifies the configuration to use by default in a ``build.ninja`` file in the :generator:`Ninja Multi-Config` generator. If this variable is specified, ``build.ninja`` uses build rules from ``build-<Config>.ninja`` by default. All diff --git a/Help/variable/CMAKE_DEFAULT_CONFIGS.rst b/Help/variable/CMAKE_DEFAULT_CONFIGS.rst index 84c642a..65a5f0d 100644 --- a/Help/variable/CMAKE_DEFAULT_CONFIGS.rst +++ b/Help/variable/CMAKE_DEFAULT_CONFIGS.rst @@ -1,6 +1,8 @@ CMAKE_DEFAULT_CONFIGS --------------------- +.. versionadded:: 3.17 + Specifies a :ref:`semicolon-separated list <CMake Language Lists>` of configurations to build for a target in ``build.ninja`` if no ``:<Config>`` suffix is specified in the :generator:`Ninja Multi-Config` generator. If it is set to ``all``, all diff --git a/Help/variable/CMAKE_DEPENDS_IN_PROJECT_ONLY.rst b/Help/variable/CMAKE_DEPENDS_IN_PROJECT_ONLY.rst index 7179071..bfe9402 100644 --- a/Help/variable/CMAKE_DEPENDS_IN_PROJECT_ONLY.rst +++ b/Help/variable/CMAKE_DEPENDS_IN_PROJECT_ONLY.rst @@ -1,6 +1,8 @@ CMAKE_DEPENDS_IN_PROJECT_ONLY ----------------------------- +.. versionadded:: 3.6 + When set to ``TRUE`` in a directory, the build system produced by the :ref:`Makefile Generators` is set up to only consider dependencies on source files that appear either in the source or in the binary directories. Changes diff --git a/Help/variable/CMAKE_DIRECTORY_LABELS.rst b/Help/variable/CMAKE_DIRECTORY_LABELS.rst index 2a6c410..81d6dd1 100644 --- a/Help/variable/CMAKE_DIRECTORY_LABELS.rst +++ b/Help/variable/CMAKE_DIRECTORY_LABELS.rst @@ -1,6 +1,8 @@ CMAKE_DIRECTORY_LABELS ----------------------- +.. versionadded:: 3.10 + Specify labels for the current directory. This is used to initialize the :prop_dir:`LABELS` directory property. diff --git a/Help/variable/CMAKE_DISABLE_PRECOMPILE_HEADERS.rst b/Help/variable/CMAKE_DISABLE_PRECOMPILE_HEADERS.rst index 7c30ede..cf52776 100644 --- a/Help/variable/CMAKE_DISABLE_PRECOMPILE_HEADERS.rst +++ b/Help/variable/CMAKE_DISABLE_PRECOMPILE_HEADERS.rst @@ -1,6 +1,8 @@ CMAKE_DISABLE_PRECOMPILE_HEADERS -------------------------------- +.. versionadded:: 3.16 + Default value for :prop_tgt:`DISABLE_PRECOMPILE_HEADERS` of targets. By default ``CMAKE_DISABLE_PRECOMPILE_HEADERS`` is ``OFF``. diff --git a/Help/variable/CMAKE_DOTNET_TARGET_FRAMEWORK.rst b/Help/variable/CMAKE_DOTNET_TARGET_FRAMEWORK.rst index 8edcd1e..29249d6 100644 --- a/Help/variable/CMAKE_DOTNET_TARGET_FRAMEWORK.rst +++ b/Help/variable/CMAKE_DOTNET_TARGET_FRAMEWORK.rst @@ -1,6 +1,8 @@ CMAKE_DOTNET_TARGET_FRAMEWORK ----------------------------- +.. versionadded:: 3.17 + Default value for :prop_tgt:`DOTNET_TARGET_FRAMEWORK` property of targets. diff --git a/Help/variable/CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION.rst b/Help/variable/CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION.rst index c2eef9e..fc3c360 100644 --- a/Help/variable/CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION.rst +++ b/Help/variable/CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION.rst @@ -1,6 +1,8 @@ CMAKE_DOTNET_TARGET_FRAMEWORK_VERSION ------------------------------------- +.. versionadded:: 3.12 + Default value for :prop_tgt:`DOTNET_TARGET_FRAMEWORK_VERSION` property of targets. diff --git a/Help/variable/CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES.rst b/Help/variable/CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES.rst index 331aae8..548c563 100644 --- a/Help/variable/CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES.rst +++ b/Help/variable/CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES.rst @@ -1,6 +1,8 @@ CMAKE_ECLIPSE_GENERATE_LINKED_RESOURCES --------------------------------------- +.. versionadded:: 3.6 + This cache variable is used by the Eclipse project generator. See :manual:`cmake-generators(7)`. diff --git a/Help/variable/CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT.rst b/Help/variable/CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT.rst index 7b4367d..fc28ebb 100644 --- a/Help/variable/CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT.rst +++ b/Help/variable/CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT.rst @@ -1,6 +1,8 @@ CMAKE_ECLIPSE_GENERATE_SOURCE_PROJECT ------------------------------------- +.. versionadded:: 3.6 + This cache variable is used by the Eclipse project generator. See :manual:`cmake-generators(7)`. diff --git a/Help/variable/CMAKE_ECLIPSE_MAKE_ARGUMENTS.rst b/Help/variable/CMAKE_ECLIPSE_MAKE_ARGUMENTS.rst index 6e8a408..90e36f5 100644 --- a/Help/variable/CMAKE_ECLIPSE_MAKE_ARGUMENTS.rst +++ b/Help/variable/CMAKE_ECLIPSE_MAKE_ARGUMENTS.rst @@ -1,6 +1,8 @@ CMAKE_ECLIPSE_MAKE_ARGUMENTS ---------------------------- +.. versionadded:: 3.6 + This cache variable is used by the Eclipse project generator. See :manual:`cmake-generators(7)`. diff --git a/Help/variable/CMAKE_ECLIPSE_RESOURCE_ENCODING.rst b/Help/variable/CMAKE_ECLIPSE_RESOURCE_ENCODING.rst index 314efe5..492acd8 100644 --- a/Help/variable/CMAKE_ECLIPSE_RESOURCE_ENCODING.rst +++ b/Help/variable/CMAKE_ECLIPSE_RESOURCE_ENCODING.rst @@ -1,6 +1,8 @@ CMAKE_ECLIPSE_RESOURCE_ENCODING ------------------------------- +.. versionadded:: 3.16 + This cache variable tells the :generator:`Eclipse CDT4` project generator to set the resource encoding to the given value in generated project files. If no value is given, no encoding will be set. diff --git a/Help/variable/CMAKE_ECLIPSE_VERSION.rst b/Help/variable/CMAKE_ECLIPSE_VERSION.rst index 8cc7882..db65d89 100644 --- a/Help/variable/CMAKE_ECLIPSE_VERSION.rst +++ b/Help/variable/CMAKE_ECLIPSE_VERSION.rst @@ -1,6 +1,8 @@ CMAKE_ECLIPSE_VERSION --------------------- +.. versionadded:: 3.6 + This cache variable is used by the Eclipse project generator. See :manual:`cmake-generators(7)`. diff --git a/Help/variable/CMAKE_ENABLE_EXPORTS.rst b/Help/variable/CMAKE_ENABLE_EXPORTS.rst index 8848da1..9f43de3 100644 --- a/Help/variable/CMAKE_ENABLE_EXPORTS.rst +++ b/Help/variable/CMAKE_ENABLE_EXPORTS.rst @@ -1,6 +1,8 @@ CMAKE_ENABLE_EXPORTS -------------------- +.. versionadded:: 3.4 + Specify whether executables export symbols for loadable modules. This variable is used to initialize the :prop_tgt:`ENABLE_EXPORTS` target diff --git a/Help/variable/CMAKE_EXECUTE_PROCESS_COMMAND_ECHO.rst b/Help/variable/CMAKE_EXECUTE_PROCESS_COMMAND_ECHO.rst index 76561d8..90a16c3 100644 --- a/Help/variable/CMAKE_EXECUTE_PROCESS_COMMAND_ECHO.rst +++ b/Help/variable/CMAKE_EXECUTE_PROCESS_COMMAND_ECHO.rst @@ -1,6 +1,8 @@ CMAKE_EXECUTE_PROCESS_COMMAND_ECHO ---------------------------------- +.. versionadded:: 3.15 + If this variable is set to ``STDERR``, ``STDOUT`` or ``NONE`` then commands in :command:`execute_process` calls will be printed to either stderr or stdout or not at all. diff --git a/Help/variable/CMAKE_EXE_LINKER_FLAGS_CONFIG_INIT.rst b/Help/variable/CMAKE_EXE_LINKER_FLAGS_CONFIG_INIT.rst index 592a369..4d2718a 100644 --- a/Help/variable/CMAKE_EXE_LINKER_FLAGS_CONFIG_INIT.rst +++ b/Help/variable/CMAKE_EXE_LINKER_FLAGS_CONFIG_INIT.rst @@ -1,6 +1,8 @@ CMAKE_EXE_LINKER_FLAGS_<CONFIG>_INIT ------------------------------------ +.. versionadded:: 3.7 + Value used to initialize the :variable:`CMAKE_EXE_LINKER_FLAGS_<CONFIG>` cache entry the first time a build tree is configured. This variable is meant to be set by a :variable:`toolchain file diff --git a/Help/variable/CMAKE_EXE_LINKER_FLAGS_INIT.rst b/Help/variable/CMAKE_EXE_LINKER_FLAGS_INIT.rst index 0b8afe4..6e3927c 100644 --- a/Help/variable/CMAKE_EXE_LINKER_FLAGS_INIT.rst +++ b/Help/variable/CMAKE_EXE_LINKER_FLAGS_INIT.rst @@ -1,6 +1,8 @@ CMAKE_EXE_LINKER_FLAGS_INIT --------------------------- +.. versionadded:: 3.7 + Value used to initialize the :variable:`CMAKE_EXE_LINKER_FLAGS` cache entry the first time a build tree is configured. This variable is meant to be set by a :variable:`toolchain file diff --git a/Help/variable/CMAKE_EXPORT_COMPILE_COMMANDS.rst b/Help/variable/CMAKE_EXPORT_COMPILE_COMMANDS.rst index 6d2450b..724f309 100644 --- a/Help/variable/CMAKE_EXPORT_COMPILE_COMMANDS.rst +++ b/Help/variable/CMAKE_EXPORT_COMPILE_COMMANDS.rst @@ -1,6 +1,8 @@ CMAKE_EXPORT_COMPILE_COMMANDS ----------------------------- +.. versionadded:: 3.5 + Enable/Disable output of compile commands during generation. If enabled, generates a ``compile_commands.json`` file containing the exact diff --git a/Help/variable/CMAKE_EXPORT_NO_PACKAGE_REGISTRY.rst b/Help/variable/CMAKE_EXPORT_NO_PACKAGE_REGISTRY.rst index 768ed64..5772490 100644 --- a/Help/variable/CMAKE_EXPORT_NO_PACKAGE_REGISTRY.rst +++ b/Help/variable/CMAKE_EXPORT_NO_PACKAGE_REGISTRY.rst @@ -1,6 +1,8 @@ CMAKE_EXPORT_NO_PACKAGE_REGISTRY -------------------------------- +.. versionadded:: 3.1 + Disable the :command:`export(PACKAGE)` command when :policy:`CMP0090` is not set to ``NEW``. diff --git a/Help/variable/CMAKE_EXPORT_PACKAGE_REGISTRY.rst b/Help/variable/CMAKE_EXPORT_PACKAGE_REGISTRY.rst index 3476a19..663639b 100644 --- a/Help/variable/CMAKE_EXPORT_PACKAGE_REGISTRY.rst +++ b/Help/variable/CMAKE_EXPORT_PACKAGE_REGISTRY.rst @@ -1,6 +1,8 @@ CMAKE_EXPORT_PACKAGE_REGISTRY ----------------------------- +.. versionadded:: 3.15 + Enables the :command:`export(PACKAGE)` command when :policy:`CMP0090` is set to ``NEW``. diff --git a/Help/variable/CMAKE_FIND_APPBUNDLE.rst b/Help/variable/CMAKE_FIND_APPBUNDLE.rst index 7a05fac..17563f3 100644 --- a/Help/variable/CMAKE_FIND_APPBUNDLE.rst +++ b/Help/variable/CMAKE_FIND_APPBUNDLE.rst @@ -1,6 +1,8 @@ CMAKE_FIND_APPBUNDLE -------------------- +.. versionadded:: 3.4 + This variable affects how ``find_*`` commands choose between macOS Application Bundles and unix-style package components. diff --git a/Help/variable/CMAKE_FIND_DEBUG_MODE.rst b/Help/variable/CMAKE_FIND_DEBUG_MODE.rst index f5fd8ce..8f2a82f 100644 --- a/Help/variable/CMAKE_FIND_DEBUG_MODE.rst +++ b/Help/variable/CMAKE_FIND_DEBUG_MODE.rst @@ -1,6 +1,8 @@ CMAKE_FIND_DEBUG_MODE --------------------- +.. versionadded:: 3.17 + Print extra find call information for the following commands to standard error: diff --git a/Help/variable/CMAKE_FIND_FRAMEWORK.rst b/Help/variable/CMAKE_FIND_FRAMEWORK.rst index 4d5078f..3b62cda 100644 --- a/Help/variable/CMAKE_FIND_FRAMEWORK.rst +++ b/Help/variable/CMAKE_FIND_FRAMEWORK.rst @@ -1,6 +1,8 @@ CMAKE_FIND_FRAMEWORK -------------------- +.. versionadded:: 3.4 + This variable affects how ``find_*`` commands choose between macOS Frameworks and unix-style package components. diff --git a/Help/variable/CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX.rst b/Help/variable/CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX.rst index ada8955..ca2ad7f 100644 --- a/Help/variable/CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX.rst +++ b/Help/variable/CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX.rst @@ -1,6 +1,8 @@ CMAKE_FIND_LIBRARY_CUSTOM_LIB_SUFFIX ------------------------------------ +.. versionadded:: 3.9 + Specify a ``<suffix>`` to tell the :command:`find_library` command to search in a ``lib<suffix>`` directory before each ``lib`` directory that would normally be searched. diff --git a/Help/variable/CMAKE_FIND_PACKAGE_NAME.rst b/Help/variable/CMAKE_FIND_PACKAGE_NAME.rst index bd1a30f..fc1fd43 100644 --- a/Help/variable/CMAKE_FIND_PACKAGE_NAME.rst +++ b/Help/variable/CMAKE_FIND_PACKAGE_NAME.rst @@ -1,6 +1,8 @@ CMAKE_FIND_PACKAGE_NAME ----------------------- +.. versionadded:: 3.1.1 + Defined by the :command:`find_package` command while loading a find module to record the caller-specified package name. See command documentation for details. diff --git a/Help/variable/CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY.rst b/Help/variable/CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY.rst index 4ee9d8b..8d86a94 100644 --- a/Help/variable/CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY.rst +++ b/Help/variable/CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY.rst @@ -1,6 +1,8 @@ CMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY -------------------------------------- +.. versionadded:: 3.1 + .. deprecated:: 3.16 Use the :variable:`CMAKE_FIND_USE_PACKAGE_REGISTRY` variable instead. diff --git a/Help/variable/CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY.rst b/Help/variable/CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY.rst index 107c183..cc67f08 100644 --- a/Help/variable/CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY.rst +++ b/Help/variable/CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY.rst @@ -1,6 +1,8 @@ CMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY --------------------------------------------- +.. versionadded:: 3.1 + .. deprecated:: 3.16 Use the :variable:`CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY` variable instead. diff --git a/Help/variable/CMAKE_FIND_PACKAGE_PREFER_CONFIG.rst b/Help/variable/CMAKE_FIND_PACKAGE_PREFER_CONFIG.rst index db658a1..ba81529 100644 --- a/Help/variable/CMAKE_FIND_PACKAGE_PREFER_CONFIG.rst +++ b/Help/variable/CMAKE_FIND_PACKAGE_PREFER_CONFIG.rst @@ -1,6 +1,8 @@ CMAKE_FIND_PACKAGE_PREFER_CONFIG --------------------------------- +.. versionadded:: 3.15 + Tell :command:`find_package` to try "Config" mode before "Module" mode if no mode was specified. diff --git a/Help/variable/CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS.rst b/Help/variable/CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS.rst index dfbde20..86d75e7 100644 --- a/Help/variable/CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS.rst +++ b/Help/variable/CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS.rst @@ -1,6 +1,8 @@ CMAKE_FIND_PACKAGE_RESOLVE_SYMLINKS ----------------------------------- +.. versionadded:: 3.14 + Set to ``TRUE`` to tell :command:`find_package` calls to resolve symbolic links in the value of ``<PackageName>_DIR``. diff --git a/Help/variable/CMAKE_FIND_PACKAGE_SORT_DIRECTION.rst b/Help/variable/CMAKE_FIND_PACKAGE_SORT_DIRECTION.rst index 99e4ec1..98c2a8f 100644 --- a/Help/variable/CMAKE_FIND_PACKAGE_SORT_DIRECTION.rst +++ b/Help/variable/CMAKE_FIND_PACKAGE_SORT_DIRECTION.rst @@ -1,6 +1,8 @@ CMAKE_FIND_PACKAGE_SORT_DIRECTION --------------------------------- +.. versionadded:: 3.7 + The sorting direction used by :variable:`CMAKE_FIND_PACKAGE_SORT_ORDER`. It can assume one of the following values: diff --git a/Help/variable/CMAKE_FIND_PACKAGE_SORT_ORDER.rst b/Help/variable/CMAKE_FIND_PACKAGE_SORT_ORDER.rst index ba5f3a8..1725ba1 100644 --- a/Help/variable/CMAKE_FIND_PACKAGE_SORT_ORDER.rst +++ b/Help/variable/CMAKE_FIND_PACKAGE_SORT_ORDER.rst @@ -1,6 +1,8 @@ CMAKE_FIND_PACKAGE_SORT_ORDER ----------------------------- +.. versionadded:: 3.7 + The default order for sorting packages found using :command:`find_package`. It can assume one of the following values: diff --git a/Help/variable/CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH.rst b/Help/variable/CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH.rst index 957e956..de1bad7 100644 --- a/Help/variable/CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH.rst +++ b/Help/variable/CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH.rst @@ -1,6 +1,8 @@ CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH ------------------------------------- +.. versionadded:: 3.16 + Controls the default behavior of the following commands for whether or not to search paths provided by cmake-specific environment variables: diff --git a/Help/variable/CMAKE_FIND_USE_CMAKE_PATH.rst b/Help/variable/CMAKE_FIND_USE_CMAKE_PATH.rst index d2bdb09..47ce3a3 100644 --- a/Help/variable/CMAKE_FIND_USE_CMAKE_PATH.rst +++ b/Help/variable/CMAKE_FIND_USE_CMAKE_PATH.rst @@ -1,6 +1,8 @@ CMAKE_FIND_USE_CMAKE_PATH ------------------------- +.. versionadded:: 3.16 + Controls the default behavior of the following commands for whether or not to search paths provided by cmake-specific cache variables: diff --git a/Help/variable/CMAKE_FIND_USE_CMAKE_SYSTEM_PATH.rst b/Help/variable/CMAKE_FIND_USE_CMAKE_SYSTEM_PATH.rst index b99081d..2fd00df 100644 --- a/Help/variable/CMAKE_FIND_USE_CMAKE_SYSTEM_PATH.rst +++ b/Help/variable/CMAKE_FIND_USE_CMAKE_SYSTEM_PATH.rst @@ -1,6 +1,8 @@ CMAKE_FIND_USE_CMAKE_SYSTEM_PATH -------------------------------- +.. versionadded:: 3.16 + Controls the default behavior of the following commands for whether or not to search paths provided by platform-specific cmake variables: diff --git a/Help/variable/CMAKE_FIND_USE_PACKAGE_REGISTRY.rst b/Help/variable/CMAKE_FIND_USE_PACKAGE_REGISTRY.rst index 7c7ca36..3127206 100644 --- a/Help/variable/CMAKE_FIND_USE_PACKAGE_REGISTRY.rst +++ b/Help/variable/CMAKE_FIND_USE_PACKAGE_REGISTRY.rst @@ -1,6 +1,8 @@ CMAKE_FIND_USE_PACKAGE_REGISTRY ------------------------------- +.. versionadded:: 3.16 + Controls the default behavior of the :command:`find_package` command for whether or not to search paths provided by the :ref:`User Package Registry`. diff --git a/Help/variable/CMAKE_FIND_USE_PACKAGE_ROOT_PATH.rst b/Help/variable/CMAKE_FIND_USE_PACKAGE_ROOT_PATH.rst index e7f5b0f..64e5c6d 100644 --- a/Help/variable/CMAKE_FIND_USE_PACKAGE_ROOT_PATH.rst +++ b/Help/variable/CMAKE_FIND_USE_PACKAGE_ROOT_PATH.rst @@ -1,6 +1,8 @@ CMAKE_FIND_USE_PACKAGE_ROOT_PATH -------------------------------- +.. versionadded:: 3.16 + Controls the default behavior of the following commands for whether or not to search paths provided by :variable:`<PackageName>_ROOT` variables: diff --git a/Help/variable/CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH.rst b/Help/variable/CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH.rst index fbaba5a..a0a86e4 100644 --- a/Help/variable/CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH.rst +++ b/Help/variable/CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH.rst @@ -1,6 +1,8 @@ CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH -------------------------------------- +.. versionadded:: 3.16 + Controls the default behavior of the following commands for whether or not to search paths provided by standard system environment variables: diff --git a/Help/variable/CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY.rst b/Help/variable/CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY.rst index cb4eec5..504b7e8 100644 --- a/Help/variable/CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY.rst +++ b/Help/variable/CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY.rst @@ -1,6 +1,8 @@ CMAKE_FIND_USE_SYSTEM_PACKAGE_REGISTRY -------------------------------------- +.. versionadded:: 3.16 + Controls searching the :ref:`System Package Registry` by the :command:`find_package` command. diff --git a/Help/variable/CMAKE_FOLDER.rst b/Help/variable/CMAKE_FOLDER.rst index 50a2b88..37f137c 100644 --- a/Help/variable/CMAKE_FOLDER.rst +++ b/Help/variable/CMAKE_FOLDER.rst @@ -1,6 +1,8 @@ CMAKE_FOLDER ------------ +.. versionadded:: 3.12 + Set the folder name. Use to organize targets in an IDE. This variable is used to initialize the :prop_tgt:`FOLDER` property on all the diff --git a/Help/variable/CMAKE_FRAMEWORK.rst b/Help/variable/CMAKE_FRAMEWORK.rst index 591041c..37385bf 100644 --- a/Help/variable/CMAKE_FRAMEWORK.rst +++ b/Help/variable/CMAKE_FRAMEWORK.rst @@ -1,6 +1,8 @@ CMAKE_FRAMEWORK --------------- +.. versionadded:: 3.15 + Default value for :prop_tgt:`FRAMEWORK` of targets. This variable is used to initialize the :prop_tgt:`FRAMEWORK` property on diff --git a/Help/variable/CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_CONFIG.rst b/Help/variable/CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_CONFIG.rst index 5c7cd23..47fb66e 100644 --- a/Help/variable/CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_CONFIG.rst +++ b/Help/variable/CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_CONFIG.rst @@ -1,6 +1,8 @@ CMAKE_FRAMEWORK_MULTI_CONFIG_POSTFIX_<CONFIG> --------------------------------------------- +.. versionadded:: 3.18 + Default framework filename postfix under configuration ``<CONFIG>`` when using a multi-config generator. diff --git a/Help/variable/CMAKE_Fortran_PREPROCESS.rst b/Help/variable/CMAKE_Fortran_PREPROCESS.rst index 74b2d8b..7d405f3 100644 --- a/Help/variable/CMAKE_Fortran_PREPROCESS.rst +++ b/Help/variable/CMAKE_Fortran_PREPROCESS.rst @@ -1,6 +1,8 @@ CMAKE_Fortran_PREPROCESS ------------------------ +.. versionadded:: 3.18 + Default value for :prop_tgt:`Fortran_PREPROCESS` of targets. This variable is used to initialize the :prop_tgt:`Fortran_PREPROCESS` diff --git a/Help/variable/CMAKE_GENERATOR_INSTANCE.rst b/Help/variable/CMAKE_GENERATOR_INSTANCE.rst index 3657ed4..5858d7a 100644 --- a/Help/variable/CMAKE_GENERATOR_INSTANCE.rst +++ b/Help/variable/CMAKE_GENERATOR_INSTANCE.rst @@ -1,6 +1,8 @@ CMAKE_GENERATOR_INSTANCE ------------------------ +.. versionadded:: 3.11 + Generator-specific instance specification provided by user. Some CMake generators support selection of an instance of the native build diff --git a/Help/variable/CMAKE_GENERATOR_PLATFORM.rst b/Help/variable/CMAKE_GENERATOR_PLATFORM.rst index 2c115a3..b17d83a 100644 --- a/Help/variable/CMAKE_GENERATOR_PLATFORM.rst +++ b/Help/variable/CMAKE_GENERATOR_PLATFORM.rst @@ -1,6 +1,8 @@ CMAKE_GENERATOR_PLATFORM ------------------------ +.. versionadded:: 3.1 + Generator-specific target platform specification provided by user. Some CMake generators support a target platform name to be given diff --git a/Help/variable/CMAKE_GHS_NO_SOURCE_GROUP_FILE.rst b/Help/variable/CMAKE_GHS_NO_SOURCE_GROUP_FILE.rst index b6768a1..0e8ae5e 100644 --- a/Help/variable/CMAKE_GHS_NO_SOURCE_GROUP_FILE.rst +++ b/Help/variable/CMAKE_GHS_NO_SOURCE_GROUP_FILE.rst @@ -1,6 +1,8 @@ CMAKE_GHS_NO_SOURCE_GROUP_FILE ------------------------------ +.. versionadded:: 3.14 + ``ON`` / ``OFF`` boolean to control if the project file for a target should be one single file or multiple files. Refer to :prop_tgt:`GHS_NO_SOURCE_GROUP_FILE` for further details. diff --git a/Help/variable/CMAKE_GLOBAL_AUTOGEN_TARGET.rst b/Help/variable/CMAKE_GLOBAL_AUTOGEN_TARGET.rst index 8587742..96e9907 100644 --- a/Help/variable/CMAKE_GLOBAL_AUTOGEN_TARGET.rst +++ b/Help/variable/CMAKE_GLOBAL_AUTOGEN_TARGET.rst @@ -1,6 +1,8 @@ CMAKE_GLOBAL_AUTOGEN_TARGET --------------------------- +.. versionadded:: 3.14 + Switch to enable generation of a global ``autogen`` target. When :variable:`CMAKE_GLOBAL_AUTOGEN_TARGET` is enabled, a custom target diff --git a/Help/variable/CMAKE_GLOBAL_AUTOGEN_TARGET_NAME.rst b/Help/variable/CMAKE_GLOBAL_AUTOGEN_TARGET_NAME.rst index c86a5d0..4af4bc3 100644 --- a/Help/variable/CMAKE_GLOBAL_AUTOGEN_TARGET_NAME.rst +++ b/Help/variable/CMAKE_GLOBAL_AUTOGEN_TARGET_NAME.rst @@ -1,6 +1,8 @@ CMAKE_GLOBAL_AUTOGEN_TARGET_NAME -------------------------------- +.. versionadded:: 3.14 + Change the name of the global ``autogen`` target. When :variable:`CMAKE_GLOBAL_AUTOGEN_TARGET` is enabled, a global custom target diff --git a/Help/variable/CMAKE_GLOBAL_AUTORCC_TARGET.rst b/Help/variable/CMAKE_GLOBAL_AUTORCC_TARGET.rst index f92128c..efea5be 100644 --- a/Help/variable/CMAKE_GLOBAL_AUTORCC_TARGET.rst +++ b/Help/variable/CMAKE_GLOBAL_AUTORCC_TARGET.rst @@ -1,6 +1,8 @@ CMAKE_GLOBAL_AUTORCC_TARGET --------------------------- +.. versionadded:: 3.14 + Switch to enable generation of a global ``autorcc`` target. When :variable:`CMAKE_GLOBAL_AUTORCC_TARGET` is enabled, a custom target diff --git a/Help/variable/CMAKE_GLOBAL_AUTORCC_TARGET_NAME.rst b/Help/variable/CMAKE_GLOBAL_AUTORCC_TARGET_NAME.rst index c6e05de..4d2e313 100644 --- a/Help/variable/CMAKE_GLOBAL_AUTORCC_TARGET_NAME.rst +++ b/Help/variable/CMAKE_GLOBAL_AUTORCC_TARGET_NAME.rst @@ -1,6 +1,8 @@ CMAKE_GLOBAL_AUTORCC_TARGET_NAME -------------------------------- +.. versionadded:: 3.14 + Change the name of the global ``autorcc`` target. When :variable:`CMAKE_GLOBAL_AUTORCC_TARGET` is enabled, a global custom target diff --git a/Help/variable/CMAKE_HOST_SOLARIS.rst b/Help/variable/CMAKE_HOST_SOLARIS.rst index 82b5d69..7054acd 100644 --- a/Help/variable/CMAKE_HOST_SOLARIS.rst +++ b/Help/variable/CMAKE_HOST_SOLARIS.rst @@ -1,6 +1,8 @@ CMAKE_HOST_SOLARIS ------------------ +.. versionadded:: 3.6 + ``True`` for Oracle Solaris operating systems. Set to ``true`` when the host system is Oracle Solaris. diff --git a/Help/variable/CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.rst b/Help/variable/CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.rst index f994fbe..aad99e4 100644 --- a/Help/variable/CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.rst +++ b/Help/variable/CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.rst @@ -1,6 +1,8 @@ CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS ------------------------------------------- +.. versionadded:: 3.11 + Default permissions for directories created implicitly during installation of files by :command:`install` and :command:`file(INSTALL)`. diff --git a/Help/variable/CMAKE_INSTALL_MESSAGE.rst b/Help/variable/CMAKE_INSTALL_MESSAGE.rst index 304df26..4f39cfe 100644 --- a/Help/variable/CMAKE_INSTALL_MESSAGE.rst +++ b/Help/variable/CMAKE_INSTALL_MESSAGE.rst @@ -1,6 +1,8 @@ CMAKE_INSTALL_MESSAGE --------------------- +.. versionadded:: 3.1 + Specify verbosity of installation script code generated by the :command:`install` command (using the :command:`file(INSTALL)` command). For paths that are newly installed or updated, installation diff --git a/Help/variable/CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT.rst b/Help/variable/CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT.rst index 2a5842d..93cc319 100644 --- a/Help/variable/CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT.rst +++ b/Help/variable/CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT.rst @@ -1,6 +1,8 @@ CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT ------------------------------------------- +.. versionadded:: 3.7.1 + CMake sets this variable to a ``TRUE`` value when the :variable:`CMAKE_INSTALL_PREFIX` has just been initialized to its default value, typically on the first run of CMake within diff --git a/Help/variable/CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH.rst b/Help/variable/CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH.rst index 76ca3da..c86e433 100644 --- a/Help/variable/CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH.rst +++ b/Help/variable/CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH.rst @@ -1,6 +1,8 @@ CMAKE_INSTALL_REMOVE_ENVIRONMENT_RPATH -------------------------------------- +.. versionadded:: 3.16 + Sets the default for whether toolchain-defined rpaths should be removed during installation. diff --git a/Help/variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION.rst b/Help/variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION.rst index b0cbb62..cf7da76 100644 --- a/Help/variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION.rst +++ b/Help/variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION.rst @@ -1,6 +1,8 @@ CMAKE_INTERPROCEDURAL_OPTIMIZATION ---------------------------------- +.. versionadded:: 3.9 + Default value for :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` of targets. This variable is used to initialize the :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` diff --git a/Help/variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION_CONFIG.rst b/Help/variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION_CONFIG.rst index b291102..5b3ee77 100644 --- a/Help/variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION_CONFIG.rst +++ b/Help/variable/CMAKE_INTERPROCEDURAL_OPTIMIZATION_CONFIG.rst @@ -1,6 +1,8 @@ CMAKE_INTERPROCEDURAL_OPTIMIZATION_<CONFIG> ------------------------------------------- +.. versionadded:: 3.9 + Default value for :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION_<CONFIG>` of targets. This variable is used to initialize the :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION_<CONFIG>` diff --git a/Help/variable/CMAKE_IOS_INSTALL_COMBINED.rst b/Help/variable/CMAKE_IOS_INSTALL_COMBINED.rst index c5cb9b6..cd7fd8d 100644 --- a/Help/variable/CMAKE_IOS_INSTALL_COMBINED.rst +++ b/Help/variable/CMAKE_IOS_INSTALL_COMBINED.rst @@ -1,6 +1,8 @@ CMAKE_IOS_INSTALL_COMBINED -------------------------- +.. versionadded:: 3.5 + Default value for :prop_tgt:`IOS_INSTALL_COMBINED` of targets. This variable is used to initialize the :prop_tgt:`IOS_INSTALL_COMBINED` diff --git a/Help/variable/CMAKE_JOB_POOLS.rst b/Help/variable/CMAKE_JOB_POOLS.rst index 72b50b4..43d3c84 100644 --- a/Help/variable/CMAKE_JOB_POOLS.rst +++ b/Help/variable/CMAKE_JOB_POOLS.rst @@ -1,6 +1,8 @@ CMAKE_JOB_POOLS --------------- +.. versionadded:: 3.11 + If the :prop_gbl:`JOB_POOLS` global property is not set, the value of this variable is used in its place. See :prop_gbl:`JOB_POOLS` for additional information. diff --git a/Help/variable/CMAKE_JOB_POOL_PRECOMPILE_HEADER.rst b/Help/variable/CMAKE_JOB_POOL_PRECOMPILE_HEADER.rst index f9467b3..1a6f66a 100644 --- a/Help/variable/CMAKE_JOB_POOL_PRECOMPILE_HEADER.rst +++ b/Help/variable/CMAKE_JOB_POOL_PRECOMPILE_HEADER.rst @@ -1,6 +1,8 @@ CMAKE_JOB_POOL_PRECOMPILE_HEADER -------------------------------- +.. versionadded:: 3.17 + This variable is used to initialize the :prop_tgt:`JOB_POOL_PRECOMPILE_HEADER` property on all the targets. See :prop_tgt:`JOB_POOL_PRECOMPILE_HEADER` for additional information. diff --git a/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_MACHINE.rst b/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_MACHINE.rst index d336364..f539277 100644 --- a/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_MACHINE.rst +++ b/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_MACHINE.rst @@ -1,6 +1,8 @@ CMAKE_<LANG>_ANDROID_TOOLCHAIN_MACHINE -------------------------------------- +.. versionadded:: 3.7.1 + When :ref:`Cross Compiling for Android` this variable contains the toolchain binutils machine name (e.g. ``gcc -dumpmachine``). The binutils typically have a ``<machine>-`` prefix on their name. diff --git a/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_PREFIX.rst b/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_PREFIX.rst index db04af3..ff072ca 100644 --- a/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_PREFIX.rst +++ b/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_PREFIX.rst @@ -1,6 +1,8 @@ CMAKE_<LANG>_ANDROID_TOOLCHAIN_PREFIX ------------------------------------- +.. versionadded:: 3.7 + When :ref:`Cross Compiling for Android` this variable contains the absolute path prefixing the toolchain GNU compiler and its binutils. diff --git a/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_SUFFIX.rst b/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_SUFFIX.rst index 159eb22..d595280 100644 --- a/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_SUFFIX.rst +++ b/Help/variable/CMAKE_LANG_ANDROID_TOOLCHAIN_SUFFIX.rst @@ -1,6 +1,8 @@ CMAKE_<LANG>_ANDROID_TOOLCHAIN_SUFFIX ------------------------------------- +.. versionadded:: 3.7 + When :ref:`Cross Compiling for Android` this variable contains the host platform suffix of the toolchain GNU compiler and its binutils. diff --git a/Help/variable/CMAKE_LANG_CLANG_TIDY.rst b/Help/variable/CMAKE_LANG_CLANG_TIDY.rst index bd49de3..78f0f6a 100644 --- a/Help/variable/CMAKE_LANG_CLANG_TIDY.rst +++ b/Help/variable/CMAKE_LANG_CLANG_TIDY.rst @@ -1,6 +1,8 @@ CMAKE_<LANG>_CLANG_TIDY ----------------------- +.. versionadded:: 3.6 + Default value for :prop_tgt:`<LANG>_CLANG_TIDY` target property when ``<LANG>`` is ``C`` or ``CXX``. diff --git a/Help/variable/CMAKE_LANG_COMPILER_AR.rst b/Help/variable/CMAKE_LANG_COMPILER_AR.rst index b83a1d4..74f2758 100644 --- a/Help/variable/CMAKE_LANG_COMPILER_AR.rst +++ b/Help/variable/CMAKE_LANG_COMPILER_AR.rst @@ -1,6 +1,8 @@ CMAKE_<LANG>_COMPILER_AR ------------------------ +.. versionadded:: 3.9 + A wrapper around ``ar`` adding the appropriate ``--plugin`` option for the compiler. diff --git a/Help/variable/CMAKE_LANG_COMPILER_ARCHITECTURE_ID.rst b/Help/variable/CMAKE_LANG_COMPILER_ARCHITECTURE_ID.rst index 054c648..8057566 100644 --- a/Help/variable/CMAKE_LANG_COMPILER_ARCHITECTURE_ID.rst +++ b/Help/variable/CMAKE_LANG_COMPILER_ARCHITECTURE_ID.rst @@ -1,6 +1,8 @@ CMAKE_<LANG>_COMPILER_ARCHITECTURE_ID ------------------------------------- +.. versionadded:: 3.10 + An internal variable subject to change. This is used to identify the variant of a compiler based on its target diff --git a/Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst b/Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst index c76e2d0..98634c2 100644 --- a/Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst +++ b/Help/variable/CMAKE_LANG_COMPILER_LAUNCHER.rst @@ -1,6 +1,8 @@ CMAKE_<LANG>_COMPILER_LAUNCHER ------------------------------ +.. versionadded:: 3.4 + Default value for :prop_tgt:`<LANG>_COMPILER_LAUNCHER` target property. This variable is used to initialize the property on each target as it is created. This is done only when ``<LANG>`` is ``C``, ``CXX``, ``Fortran``, diff --git a/Help/variable/CMAKE_LANG_COMPILER_PREDEFINES_COMMAND.rst b/Help/variable/CMAKE_LANG_COMPILER_PREDEFINES_COMMAND.rst index e050f43..935329a 100644 --- a/Help/variable/CMAKE_LANG_COMPILER_PREDEFINES_COMMAND.rst +++ b/Help/variable/CMAKE_LANG_COMPILER_PREDEFINES_COMMAND.rst @@ -1,6 +1,8 @@ CMAKE_<LANG>_COMPILER_PREDEFINES_COMMAND ---------------------------------------- +.. versionadded:: 3.10 + Command that outputs the compiler pre definitions. See :prop_tgt:`AUTOMOC` which uses diff --git a/Help/variable/CMAKE_LANG_COMPILER_RANLIB.rst b/Help/variable/CMAKE_LANG_COMPILER_RANLIB.rst index 945160b..1d10b55 100644 --- a/Help/variable/CMAKE_LANG_COMPILER_RANLIB.rst +++ b/Help/variable/CMAKE_LANG_COMPILER_RANLIB.rst @@ -1,6 +1,8 @@ CMAKE_<LANG>_COMPILER_RANLIB ---------------------------- +.. versionadded:: 3.9 + A wrapper around ``ranlib`` adding the appropriate ``--plugin`` option for the compiler. diff --git a/Help/variable/CMAKE_LANG_COMPILER_VERSION_INTERNAL.rst b/Help/variable/CMAKE_LANG_COMPILER_VERSION_INTERNAL.rst index c3cd980..596a989 100644 --- a/Help/variable/CMAKE_LANG_COMPILER_VERSION_INTERNAL.rst +++ b/Help/variable/CMAKE_LANG_COMPILER_VERSION_INTERNAL.rst @@ -1,6 +1,8 @@ CMAKE_<LANG>_COMPILER_VERSION_INTERNAL -------------------------------------- +.. versionadded:: 3.10 + An internal variable subject to change. This is used to identify the variant of a compiler based on an internal diff --git a/Help/variable/CMAKE_LANG_CPPCHECK.rst b/Help/variable/CMAKE_LANG_CPPCHECK.rst index 50b478f..5ae5faf 100644 --- a/Help/variable/CMAKE_LANG_CPPCHECK.rst +++ b/Help/variable/CMAKE_LANG_CPPCHECK.rst @@ -1,6 +1,8 @@ CMAKE_<LANG>_CPPCHECK --------------------- +.. versionadded:: 3.10 + Default value for :prop_tgt:`<LANG>_CPPCHECK` target property. This variable is used to initialize the property on each target as it is created. This is done only when ``<LANG>`` is ``C`` or ``CXX``. diff --git a/Help/variable/CMAKE_LANG_CPPLINT.rst b/Help/variable/CMAKE_LANG_CPPLINT.rst index 3b6f452..ab7b0fc 100644 --- a/Help/variable/CMAKE_LANG_CPPLINT.rst +++ b/Help/variable/CMAKE_LANG_CPPLINT.rst @@ -1,6 +1,8 @@ CMAKE_<LANG>_CPPLINT -------------------- +.. versionadded:: 3.8 + Default value for :prop_tgt:`<LANG>_CPPLINT` target property. This variable is used to initialize the property on each target as it is created. This is done only when ``<LANG>`` is ``C`` or ``CXX``. diff --git a/Help/variable/CMAKE_LANG_FLAGS_CONFIG.rst b/Help/variable/CMAKE_LANG_FLAGS_CONFIG.rst index 1dbd036..628b62b 100644 --- a/Help/variable/CMAKE_LANG_FLAGS_CONFIG.rst +++ b/Help/variable/CMAKE_LANG_FLAGS_CONFIG.rst @@ -1,4 +1,6 @@ CMAKE_<LANG>_FLAGS_<CONFIG> --------------------------- +.. versionadded:: 3.11 + Flags for language ``<LANG>`` when building for the ``<CONFIG>`` configuration. diff --git a/Help/variable/CMAKE_LANG_FLAGS_CONFIG_INIT.rst b/Help/variable/CMAKE_LANG_FLAGS_CONFIG_INIT.rst index 1eb5b3f..17669a2 100644 --- a/Help/variable/CMAKE_LANG_FLAGS_CONFIG_INIT.rst +++ b/Help/variable/CMAKE_LANG_FLAGS_CONFIG_INIT.rst @@ -1,6 +1,8 @@ CMAKE_<LANG>_FLAGS_<CONFIG>_INIT -------------------------------- +.. versionadded:: 3.11 + Value used to initialize the :variable:`CMAKE_<LANG>_FLAGS_<CONFIG>` cache entry the first time a build tree is configured for language ``<LANG>``. This variable is meant to be set by a :variable:`toolchain file diff --git a/Help/variable/CMAKE_LANG_FLAGS_DEBUG_INIT.rst b/Help/variable/CMAKE_LANG_FLAGS_DEBUG_INIT.rst index de7fcfc..49c9e99 100644 --- a/Help/variable/CMAKE_LANG_FLAGS_DEBUG_INIT.rst +++ b/Help/variable/CMAKE_LANG_FLAGS_DEBUG_INIT.rst @@ -1,5 +1,7 @@ CMAKE_<LANG>_FLAGS_DEBUG_INIT ----------------------------- +.. versionadded:: 3.7 + This variable is the ``Debug`` variant of the :variable:`CMAKE_<LANG>_FLAGS_<CONFIG>_INIT` variable. diff --git a/Help/variable/CMAKE_LANG_FLAGS_INIT.rst b/Help/variable/CMAKE_LANG_FLAGS_INIT.rst index 4a034e8..67ff2cb 100644 --- a/Help/variable/CMAKE_LANG_FLAGS_INIT.rst +++ b/Help/variable/CMAKE_LANG_FLAGS_INIT.rst @@ -1,6 +1,8 @@ CMAKE_<LANG>_FLAGS_INIT ----------------------- +.. versionadded:: 3.7 + Value used to initialize the :variable:`CMAKE_<LANG>_FLAGS` cache entry the first time a build tree is configured for language ``<LANG>``. This variable is meant to be set by a :variable:`toolchain file diff --git a/Help/variable/CMAKE_LANG_FLAGS_MINSIZEREL_INIT.rst b/Help/variable/CMAKE_LANG_FLAGS_MINSIZEREL_INIT.rst index 1e7003c..3600909 100644 --- a/Help/variable/CMAKE_LANG_FLAGS_MINSIZEREL_INIT.rst +++ b/Help/variable/CMAKE_LANG_FLAGS_MINSIZEREL_INIT.rst @@ -1,5 +1,7 @@ CMAKE_<LANG>_FLAGS_MINSIZEREL_INIT ---------------------------------- +.. versionadded:: 3.7 + This variable is the ``MinSizeRel`` variant of the :variable:`CMAKE_<LANG>_FLAGS_<CONFIG>_INIT` variable. diff --git a/Help/variable/CMAKE_LANG_FLAGS_RELEASE_INIT.rst b/Help/variable/CMAKE_LANG_FLAGS_RELEASE_INIT.rst index e7c73fe..e889852 100644 --- a/Help/variable/CMAKE_LANG_FLAGS_RELEASE_INIT.rst +++ b/Help/variable/CMAKE_LANG_FLAGS_RELEASE_INIT.rst @@ -1,5 +1,7 @@ CMAKE_<LANG>_FLAGS_RELEASE_INIT ------------------------------- +.. versionadded:: 3.7 + This variable is the ``Release`` variant of the :variable:`CMAKE_<LANG>_FLAGS_<CONFIG>_INIT` variable. diff --git a/Help/variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO_INIT.rst b/Help/variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO_INIT.rst index 3ab3975..b42caee 100644 --- a/Help/variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO_INIT.rst +++ b/Help/variable/CMAKE_LANG_FLAGS_RELWITHDEBINFO_INIT.rst @@ -1,5 +1,7 @@ CMAKE_<LANG>_FLAGS_RELWITHDEBINFO_INIT -------------------------------------- +.. versionadded:: 3.7 + This variable is the ``RelWithDebInfo`` variant of the :variable:`CMAKE_<LANG>_FLAGS_<CONFIG>_INIT` variable. diff --git a/Help/variable/CMAKE_LANG_INCLUDE_WHAT_YOU_USE.rst b/Help/variable/CMAKE_LANG_INCLUDE_WHAT_YOU_USE.rst index 2c8028a..be6c210 100644 --- a/Help/variable/CMAKE_LANG_INCLUDE_WHAT_YOU_USE.rst +++ b/Help/variable/CMAKE_LANG_INCLUDE_WHAT_YOU_USE.rst @@ -1,6 +1,8 @@ CMAKE_<LANG>_INCLUDE_WHAT_YOU_USE --------------------------------- +.. versionadded:: 3.3 + Default value for :prop_tgt:`<LANG>_INCLUDE_WHAT_YOU_USE` target property. This variable is used to initialize the property on each target as it is created. This is done only when ``<LANG>`` is ``C`` or ``CXX``. diff --git a/Help/variable/CMAKE_LANG_LINKER_WRAPPER_FLAG.rst b/Help/variable/CMAKE_LANG_LINKER_WRAPPER_FLAG.rst index df51407..471c351 100644 --- a/Help/variable/CMAKE_LANG_LINKER_WRAPPER_FLAG.rst +++ b/Help/variable/CMAKE_LANG_LINKER_WRAPPER_FLAG.rst @@ -1,6 +1,8 @@ CMAKE_<LANG>_LINKER_WRAPPER_FLAG -------------------------------- +.. versionadded:: 3.13 + Defines the syntax of compiler driver option to pass options to the linker tool. It will be used to translate the ``LINKER:`` prefix in the link options (see :command:`add_link_options` and :command:`target_link_options`). diff --git a/Help/variable/CMAKE_LANG_LINKER_WRAPPER_FLAG_SEP.rst b/Help/variable/CMAKE_LANG_LINKER_WRAPPER_FLAG_SEP.rst index faf1481..a3895af 100644 --- a/Help/variable/CMAKE_LANG_LINKER_WRAPPER_FLAG_SEP.rst +++ b/Help/variable/CMAKE_LANG_LINKER_WRAPPER_FLAG_SEP.rst @@ -1,6 +1,8 @@ CMAKE_<LANG>_LINKER_WRAPPER_FLAG_SEP ------------------------------------ +.. versionadded:: 3.13 + This variable is used with :variable:`CMAKE_<LANG>_LINKER_WRAPPER_FLAG` variable to format ``LINKER:`` prefix in the link options (see :command:`add_link_options` and :command:`target_link_options`). diff --git a/Help/variable/CMAKE_LANG_LINK_LIBRARY_FILE_FLAG.rst b/Help/variable/CMAKE_LANG_LINK_LIBRARY_FILE_FLAG.rst index d54f080..23ece88 100644 --- a/Help/variable/CMAKE_LANG_LINK_LIBRARY_FILE_FLAG.rst +++ b/Help/variable/CMAKE_LANG_LINK_LIBRARY_FILE_FLAG.rst @@ -1,6 +1,8 @@ CMAKE_<LANG>_LINK_LIBRARY_FILE_FLAG ----------------------------------- +.. versionadded:: 3.16 + Language-specific flag to be used to link a library specified by a path to its file. diff --git a/Help/variable/CMAKE_LANG_LINK_LIBRARY_FLAG.rst b/Help/variable/CMAKE_LANG_LINK_LIBRARY_FLAG.rst index d7bb0d8..0f528db 100644 --- a/Help/variable/CMAKE_LANG_LINK_LIBRARY_FLAG.rst +++ b/Help/variable/CMAKE_LANG_LINK_LIBRARY_FLAG.rst @@ -1,6 +1,8 @@ CMAKE_<LANG>_LINK_LIBRARY_FLAG ------------------------------ +.. versionadded:: 3.16 + Flag to be used to link a library into a shared library or executable. This flag will be used to specify a library to link to a shared library or an diff --git a/Help/variable/CMAKE_LANG_LINK_LIBRARY_SUFFIX.rst b/Help/variable/CMAKE_LANG_LINK_LIBRARY_SUFFIX.rst index a378657..359e29f 100644 --- a/Help/variable/CMAKE_LANG_LINK_LIBRARY_SUFFIX.rst +++ b/Help/variable/CMAKE_LANG_LINK_LIBRARY_SUFFIX.rst @@ -1,6 +1,8 @@ CMAKE_<LANG>_LINK_LIBRARY_SUFFIX -------------------------------- +.. versionadded:: 3.16 + Language-specific suffix for libraries that you link to. The suffix to use for the end of a library filename, ``.lib`` on Windows. diff --git a/Help/variable/CMAKE_LANG_STANDARD_INCLUDE_DIRECTORIES.rst b/Help/variable/CMAKE_LANG_STANDARD_INCLUDE_DIRECTORIES.rst index c8e3d57..24aca8b 100644 --- a/Help/variable/CMAKE_LANG_STANDARD_INCLUDE_DIRECTORIES.rst +++ b/Help/variable/CMAKE_LANG_STANDARD_INCLUDE_DIRECTORIES.rst @@ -1,6 +1,8 @@ CMAKE_<LANG>_STANDARD_INCLUDE_DIRECTORIES ----------------------------------------- +.. versionadded:: 3.6 + Include directories to be used for every source file compiled with the ``<LANG>`` compiler. This is meant for specification of system include directories needed by the language for the current platform. diff --git a/Help/variable/CMAKE_LANG_STANDARD_LIBRARIES.rst b/Help/variable/CMAKE_LANG_STANDARD_LIBRARIES.rst index ba6df93..d5f3351 100644 --- a/Help/variable/CMAKE_LANG_STANDARD_LIBRARIES.rst +++ b/Help/variable/CMAKE_LANG_STANDARD_LIBRARIES.rst @@ -1,6 +1,8 @@ CMAKE_<LANG>_STANDARD_LIBRARIES ------------------------------- +.. versionadded:: 3.6 + Libraries linked into every executable and shared library linked for language ``<LANG>``. This is meant for specification of system libraries needed by the language for the current platform. diff --git a/Help/variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY_CONFIG.rst b/Help/variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY_CONFIG.rst index e069cdd..08f95c4 100644 --- a/Help/variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY_CONFIG.rst +++ b/Help/variable/CMAKE_LIBRARY_OUTPUT_DIRECTORY_CONFIG.rst @@ -1,6 +1,8 @@ CMAKE_LIBRARY_OUTPUT_DIRECTORY_<CONFIG> --------------------------------------- +.. versionadded:: 3.3 + Where to put all the :ref:`LIBRARY <Library Output Artifacts>` target files when built for a specific configuration. diff --git a/Help/variable/CMAKE_LINK_DIRECTORIES_BEFORE.rst b/Help/variable/CMAKE_LINK_DIRECTORIES_BEFORE.rst index 026ca35..f120866 100644 --- a/Help/variable/CMAKE_LINK_DIRECTORIES_BEFORE.rst +++ b/Help/variable/CMAKE_LINK_DIRECTORIES_BEFORE.rst @@ -1,6 +1,8 @@ CMAKE_LINK_DIRECTORIES_BEFORE ----------------------------- +.. versionadded:: 3.13 + Whether to append or prepend directories by default in :command:`link_directories`. diff --git a/Help/variable/CMAKE_LINK_SEARCH_END_STATIC.rst b/Help/variable/CMAKE_LINK_SEARCH_END_STATIC.rst index 54cdaaa..f4ccc04 100644 --- a/Help/variable/CMAKE_LINK_SEARCH_END_STATIC.rst +++ b/Help/variable/CMAKE_LINK_SEARCH_END_STATIC.rst @@ -1,6 +1,8 @@ CMAKE_LINK_SEARCH_END_STATIC ---------------------------- +.. versionadded:: 3.4 + End a link line such that static system libraries are used. Some linkers support switches such as ``-Bstatic`` and ``-Bdynamic`` to diff --git a/Help/variable/CMAKE_LINK_SEARCH_START_STATIC.rst b/Help/variable/CMAKE_LINK_SEARCH_START_STATIC.rst index 0d52a31..2025c72 100644 --- a/Help/variable/CMAKE_LINK_SEARCH_START_STATIC.rst +++ b/Help/variable/CMAKE_LINK_SEARCH_START_STATIC.rst @@ -1,6 +1,8 @@ CMAKE_LINK_SEARCH_START_STATIC ------------------------------ +.. versionadded:: 3.4 + Assume the linker looks for static libraries by default. Some linkers support switches such as ``-Bstatic`` and ``-Bdynamic`` to diff --git a/Help/variable/CMAKE_LINK_WHAT_YOU_USE.rst b/Help/variable/CMAKE_LINK_WHAT_YOU_USE.rst index 90c4d3f..06b3aa8 100644 --- a/Help/variable/CMAKE_LINK_WHAT_YOU_USE.rst +++ b/Help/variable/CMAKE_LINK_WHAT_YOU_USE.rst @@ -1,6 +1,8 @@ CMAKE_LINK_WHAT_YOU_USE --------------------------------- +.. versionadded:: 3.7 + Default value for :prop_tgt:`LINK_WHAT_YOU_USE` target property. This variable is used to initialize the property on each target as it is created. diff --git a/Help/variable/CMAKE_MATCH_COUNT.rst b/Help/variable/CMAKE_MATCH_COUNT.rst index 355e834..deeec8b 100644 --- a/Help/variable/CMAKE_MATCH_COUNT.rst +++ b/Help/variable/CMAKE_MATCH_COUNT.rst @@ -1,6 +1,8 @@ CMAKE_MATCH_COUNT ----------------- +.. versionadded:: 3.2 + The number of matches with the last regular expression. When a regular expression match is used, CMake fills in diff --git a/Help/variable/CMAKE_MATCH_n.rst b/Help/variable/CMAKE_MATCH_n.rst index c7dd623..a92788e 100644 --- a/Help/variable/CMAKE_MATCH_n.rst +++ b/Help/variable/CMAKE_MATCH_n.rst @@ -1,6 +1,8 @@ CMAKE_MATCH_<n> --------------- +.. versionadded:: 3.9 + Capture group ``<n>`` matched by the last regular expression, for groups 0 through 9. Group 0 is the entire match. Groups 1 through 9 are the subexpressions captured by ``()`` syntax. diff --git a/Help/variable/CMAKE_MAXIMUM_RECURSION_DEPTH.rst b/Help/variable/CMAKE_MAXIMUM_RECURSION_DEPTH.rst index 7110b16..59c60d3 100644 --- a/Help/variable/CMAKE_MAXIMUM_RECURSION_DEPTH.rst +++ b/Help/variable/CMAKE_MAXIMUM_RECURSION_DEPTH.rst @@ -1,6 +1,8 @@ CMAKE_MAXIMUM_RECURSION_DEPTH ----------------------------- +.. versionadded:: 3.14 + Maximum recursion depth for CMake scripts. It is intended to be set on the command line with ``-DCMAKE_MAXIMUM_RECURSION_DEPTH=<x>``, or within ``CMakeLists.txt`` by projects that require a large recursion depth. Projects diff --git a/Help/variable/CMAKE_MESSAGE_CONTEXT.rst b/Help/variable/CMAKE_MESSAGE_CONTEXT.rst index 6b4ca40..41ace43 100644 --- a/Help/variable/CMAKE_MESSAGE_CONTEXT.rst +++ b/Help/variable/CMAKE_MESSAGE_CONTEXT.rst @@ -1,6 +1,8 @@ CMAKE_MESSAGE_CONTEXT --------------------- +.. versionadded:: 3.17 + When enabled by the :manual:`cmake <cmake(1)>` ``--log-context`` command line option or the :variable:`CMAKE_MESSAGE_CONTEXT_SHOW` variable, the :command:`message` command converts the ``CMAKE_MESSAGE_CONTEXT`` list into a diff --git a/Help/variable/CMAKE_MESSAGE_CONTEXT_SHOW.rst b/Help/variable/CMAKE_MESSAGE_CONTEXT_SHOW.rst index 7ec218e..382e9ff 100644 --- a/Help/variable/CMAKE_MESSAGE_CONTEXT_SHOW.rst +++ b/Help/variable/CMAKE_MESSAGE_CONTEXT_SHOW.rst @@ -1,6 +1,8 @@ CMAKE_MESSAGE_CONTEXT_SHOW -------------------------- +.. versionadded:: 3.17 + Setting this variable to true enables showing a context with each line logged by the :command:`message` command (see :variable:`CMAKE_MESSAGE_CONTEXT` for how the context itself is specified). diff --git a/Help/variable/CMAKE_MESSAGE_INDENT.rst b/Help/variable/CMAKE_MESSAGE_INDENT.rst index 7e44a4c..c6263d2 100644 --- a/Help/variable/CMAKE_MESSAGE_INDENT.rst +++ b/Help/variable/CMAKE_MESSAGE_INDENT.rst @@ -1,6 +1,8 @@ CMAKE_MESSAGE_INDENT -------------------- +.. versionadded:: 3.16 + The :command:`message` command joins the strings from this list and for log levels of ``NOTICE`` and below, it prepends the resultant string to each line of the message. diff --git a/Help/variable/CMAKE_MESSAGE_LOG_LEVEL.rst b/Help/variable/CMAKE_MESSAGE_LOG_LEVEL.rst index 1d4cfe6..3b45d1d 100644 --- a/Help/variable/CMAKE_MESSAGE_LOG_LEVEL.rst +++ b/Help/variable/CMAKE_MESSAGE_LOG_LEVEL.rst @@ -1,6 +1,8 @@ CMAKE_MESSAGE_LOG_LEVEL ----------------------- +.. versionadded:: 3.17 + When set, this variable specifies the logging level used by the :command:`message` command. Valid values are the same as those for the ``--log-level`` command line option of the :manual:`cmake(1)` program. diff --git a/Help/variable/CMAKE_MODULE_LINKER_FLAGS_CONFIG_INIT.rst b/Help/variable/CMAKE_MODULE_LINKER_FLAGS_CONFIG_INIT.rst index 3279014..e8a6401 100644 --- a/Help/variable/CMAKE_MODULE_LINKER_FLAGS_CONFIG_INIT.rst +++ b/Help/variable/CMAKE_MODULE_LINKER_FLAGS_CONFIG_INIT.rst @@ -1,6 +1,8 @@ CMAKE_MODULE_LINKER_FLAGS_<CONFIG>_INIT --------------------------------------- +.. versionadded:: 3.7 + Value used to initialize the :variable:`CMAKE_MODULE_LINKER_FLAGS_<CONFIG>` cache entry the first time a build tree is configured. This variable is meant to be set by a :variable:`toolchain file diff --git a/Help/variable/CMAKE_MODULE_LINKER_FLAGS_INIT.rst b/Help/variable/CMAKE_MODULE_LINKER_FLAGS_INIT.rst index 91b39f6..d59e9bf 100644 --- a/Help/variable/CMAKE_MODULE_LINKER_FLAGS_INIT.rst +++ b/Help/variable/CMAKE_MODULE_LINKER_FLAGS_INIT.rst @@ -1,6 +1,8 @@ CMAKE_MODULE_LINKER_FLAGS_INIT ------------------------------ +.. versionadded:: 3.7 + Value used to initialize the :variable:`CMAKE_MODULE_LINKER_FLAGS` cache entry the first time a build tree is configured. This variable is meant to be set by a :variable:`toolchain file diff --git a/Help/variable/CMAKE_MSVCIDE_RUN_PATH.rst b/Help/variable/CMAKE_MSVCIDE_RUN_PATH.rst index 22e727f..721ceaa 100644 --- a/Help/variable/CMAKE_MSVCIDE_RUN_PATH.rst +++ b/Help/variable/CMAKE_MSVCIDE_RUN_PATH.rst @@ -1,6 +1,8 @@ CMAKE_MSVCIDE_RUN_PATH ---------------------- +.. versionadded:: 3.10 + Extra PATH locations that should be used when executing :command:`add_custom_command` or :command:`add_custom_target` when using the :generator:`Visual Studio 9 2008` (or above) generator. This allows diff --git a/Help/variable/CMAKE_MSVC_RUNTIME_LIBRARY.rst b/Help/variable/CMAKE_MSVC_RUNTIME_LIBRARY.rst index 8b54e7e..14806e6 100644 --- a/Help/variable/CMAKE_MSVC_RUNTIME_LIBRARY.rst +++ b/Help/variable/CMAKE_MSVC_RUNTIME_LIBRARY.rst @@ -1,6 +1,8 @@ CMAKE_MSVC_RUNTIME_LIBRARY -------------------------- +.. versionadded:: 3.15 + Select the MSVC runtime library for use by compilers targeting the MSVC ABI. This variable is used to initialize the :prop_tgt:`MSVC_RUNTIME_LIBRARY` property on all targets as they are created. It is also propagated by diff --git a/Help/variable/CMAKE_NETRC.rst b/Help/variable/CMAKE_NETRC.rst index 903ec31..2c64a81 100644 --- a/Help/variable/CMAKE_NETRC.rst +++ b/Help/variable/CMAKE_NETRC.rst @@ -1,6 +1,8 @@ CMAKE_NETRC ----------- +.. versionadded:: 3.11 + This variable is used to initialize the ``NETRC`` option for :command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands and the module :module:`ExternalProject`. See those commands for additional diff --git a/Help/variable/CMAKE_NETRC_FILE.rst b/Help/variable/CMAKE_NETRC_FILE.rst index 0f09afe..97a645e 100644 --- a/Help/variable/CMAKE_NETRC_FILE.rst +++ b/Help/variable/CMAKE_NETRC_FILE.rst @@ -1,6 +1,8 @@ CMAKE_NETRC_FILE ---------------- +.. versionadded:: 3.11 + This variable is used to initialize the ``NETRC_FILE`` option for :command:`file(DOWNLOAD)` and :command:`file(UPLOAD)` commands and the module :module:`ExternalProject`. See those commands for additional diff --git a/Help/variable/CMAKE_NINJA_OUTPUT_PATH_PREFIX.rst b/Help/variable/CMAKE_NINJA_OUTPUT_PATH_PREFIX.rst index 64091aa..a8c4035 100644 --- a/Help/variable/CMAKE_NINJA_OUTPUT_PATH_PREFIX.rst +++ b/Help/variable/CMAKE_NINJA_OUTPUT_PATH_PREFIX.rst @@ -1,6 +1,8 @@ CMAKE_NINJA_OUTPUT_PATH_PREFIX ------------------------------ +.. versionadded:: 3.6 + Set output files path prefix for the :generator:`Ninja` generator. Every output files listed in the generated ``build.ninja`` will be diff --git a/Help/variable/CMAKE_OBJCXX_EXTENSIONS.rst b/Help/variable/CMAKE_OBJCXX_EXTENSIONS.rst index 8afa6f2..b5225ea 100644 --- a/Help/variable/CMAKE_OBJCXX_EXTENSIONS.rst +++ b/Help/variable/CMAKE_OBJCXX_EXTENSIONS.rst @@ -1,6 +1,8 @@ CMAKE_OBJCXX_EXTENSIONS ----------------------- +.. versionadded:: 3.16 + Default value for :prop_tgt:`OBJCXX_EXTENSIONS` property of targets. This variable is used to initialize the :prop_tgt:`OBJCXX_EXTENSIONS` diff --git a/Help/variable/CMAKE_OBJCXX_STANDARD.rst b/Help/variable/CMAKE_OBJCXX_STANDARD.rst index 4e5016a..98e4624 100644 --- a/Help/variable/CMAKE_OBJCXX_STANDARD.rst +++ b/Help/variable/CMAKE_OBJCXX_STANDARD.rst @@ -1,6 +1,8 @@ CMAKE_OBJCXX_STANDARD --------------------- +.. versionadded:: 3.16 + Default value for :prop_tgt:`OBJCXX_STANDARD` property of targets. This variable is used to initialize the :prop_tgt:`OBJCXX_STANDARD` diff --git a/Help/variable/CMAKE_OBJCXX_STANDARD_REQUIRED.rst b/Help/variable/CMAKE_OBJCXX_STANDARD_REQUIRED.rst index 3a0602a..4b5e77c 100644 --- a/Help/variable/CMAKE_OBJCXX_STANDARD_REQUIRED.rst +++ b/Help/variable/CMAKE_OBJCXX_STANDARD_REQUIRED.rst @@ -1,6 +1,8 @@ CMAKE_OBJCXX_STANDARD_REQUIRED ------------------------------ +.. versionadded:: 3.16 + Default value for :prop_tgt:`OBJCXX_STANDARD_REQUIRED` property of targets. This variable is used to initialize the :prop_tgt:`OBJCXX_STANDARD_REQUIRED` diff --git a/Help/variable/CMAKE_OBJC_EXTENSIONS.rst b/Help/variable/CMAKE_OBJC_EXTENSIONS.rst index d9619d8..d6e3c7d 100644 --- a/Help/variable/CMAKE_OBJC_EXTENSIONS.rst +++ b/Help/variable/CMAKE_OBJC_EXTENSIONS.rst @@ -1,6 +1,8 @@ CMAKE_OBJC_EXTENSIONS --------------------- +.. versionadded:: 3.16 + Default value for :prop_tgt:`OBJC_EXTENSIONS` property of targets. This variable is used to initialize the :prop_tgt:`OBJC_EXTENSIONS` diff --git a/Help/variable/CMAKE_OBJC_STANDARD.rst b/Help/variable/CMAKE_OBJC_STANDARD.rst index 976c441..fde367d 100644 --- a/Help/variable/CMAKE_OBJC_STANDARD.rst +++ b/Help/variable/CMAKE_OBJC_STANDARD.rst @@ -1,6 +1,8 @@ CMAKE_OBJC_STANDARD ------------------- +.. versionadded:: 3.16 + Default value for :prop_tgt:`OBJC_STANDARD` property of targets. This variable is used to initialize the :prop_tgt:`OBJC_STANDARD` diff --git a/Help/variable/CMAKE_OBJC_STANDARD_REQUIRED.rst b/Help/variable/CMAKE_OBJC_STANDARD_REQUIRED.rst index 5c02096..8d26d95 100644 --- a/Help/variable/CMAKE_OBJC_STANDARD_REQUIRED.rst +++ b/Help/variable/CMAKE_OBJC_STANDARD_REQUIRED.rst @@ -1,6 +1,8 @@ CMAKE_OBJC_STANDARD_REQUIRED ---------------------------- +.. versionadded:: 3.16 + Default value for :prop_tgt:`OBJC_STANDARD_REQUIRED` property of targets. This variable is used to initialize the :prop_tgt:`OBJC_STANDARD_REQUIRED` diff --git a/Help/variable/CMAKE_PCH_WARN_INVALID.rst b/Help/variable/CMAKE_PCH_WARN_INVALID.rst index e152abd..457a428 100644 --- a/Help/variable/CMAKE_PCH_WARN_INVALID.rst +++ b/Help/variable/CMAKE_PCH_WARN_INVALID.rst @@ -1,5 +1,7 @@ CMAKE_PCH_WARN_INVALID ---------------------- +.. versionadded:: 3.18 + This variable is used to initialize the :prop_tgt:`PCH_WARN_INVALID` property of targets when they are created. diff --git a/Help/variable/CMAKE_PROJECT_DESCRIPTION.rst b/Help/variable/CMAKE_PROJECT_DESCRIPTION.rst index 51b0592..95cbe40 100644 --- a/Help/variable/CMAKE_PROJECT_DESCRIPTION.rst +++ b/Help/variable/CMAKE_PROJECT_DESCRIPTION.rst @@ -1,6 +1,8 @@ CMAKE_PROJECT_DESCRIPTION ------------------------- +.. versionadded:: 3.9 + The description of the top level project. This variable holds the description of the project as specified in the top diff --git a/Help/variable/CMAKE_PROJECT_HOMEPAGE_URL.rst b/Help/variable/CMAKE_PROJECT_HOMEPAGE_URL.rst index ee0bf7c..4c5debe 100644 --- a/Help/variable/CMAKE_PROJECT_HOMEPAGE_URL.rst +++ b/Help/variable/CMAKE_PROJECT_HOMEPAGE_URL.rst @@ -1,6 +1,8 @@ CMAKE_PROJECT_HOMEPAGE_URL -------------------------- +.. versionadded:: 3.12 + The homepage URL of the top level project. This variable holds the homepage URL of the project as specified in the top diff --git a/Help/variable/CMAKE_PROJECT_INCLUDE.rst b/Help/variable/CMAKE_PROJECT_INCLUDE.rst index 5835264..41d9e5d 100644 --- a/Help/variable/CMAKE_PROJECT_INCLUDE.rst +++ b/Help/variable/CMAKE_PROJECT_INCLUDE.rst @@ -1,6 +1,8 @@ CMAKE_PROJECT_INCLUDE --------------------- +.. versionadded:: 3.15 + A CMake language file or module to be included as the last step of all :command:`project` command calls. This is intended for injecting custom code into project builds without modifying their source. diff --git a/Help/variable/CMAKE_PROJECT_INCLUDE_BEFORE.rst b/Help/variable/CMAKE_PROJECT_INCLUDE_BEFORE.rst index 280c14a..c2fd0f8 100644 --- a/Help/variable/CMAKE_PROJECT_INCLUDE_BEFORE.rst +++ b/Help/variable/CMAKE_PROJECT_INCLUDE_BEFORE.rst @@ -1,6 +1,8 @@ CMAKE_PROJECT_INCLUDE_BEFORE ---------------------------- +.. versionadded:: 3.15 + A CMake language file or module to be included as the first step of all :command:`project` command calls. This is intended for injecting custom code into project builds without modifying their source. diff --git a/Help/variable/CMAKE_PROJECT_PROJECT-NAME_INCLUDE_BEFORE.rst b/Help/variable/CMAKE_PROJECT_PROJECT-NAME_INCLUDE_BEFORE.rst index db1432d..39abb12 100644 --- a/Help/variable/CMAKE_PROJECT_PROJECT-NAME_INCLUDE_BEFORE.rst +++ b/Help/variable/CMAKE_PROJECT_PROJECT-NAME_INCLUDE_BEFORE.rst @@ -1,6 +1,8 @@ CMAKE_PROJECT_<PROJECT-NAME>_INCLUDE_BEFORE ------------------------------------------- +.. versionadded:: 3.17 + A CMake language file or module to be included as the first step of any :command:`project` command calls that specify ``<PROJECT-NAME>`` as the project name. This is intended for injecting custom code into project builds without diff --git a/Help/variable/CMAKE_PROJECT_VERSION.rst b/Help/variable/CMAKE_PROJECT_VERSION.rst index 4f8f556..450c136 100644 --- a/Help/variable/CMAKE_PROJECT_VERSION.rst +++ b/Help/variable/CMAKE_PROJECT_VERSION.rst @@ -1,6 +1,8 @@ CMAKE_PROJECT_VERSION --------------------- +.. versionadded:: 3.12 + The version of the top level project. This variable holds the version of the project as specified in the top diff --git a/Help/variable/CMAKE_PROJECT_VERSION_MAJOR.rst b/Help/variable/CMAKE_PROJECT_VERSION_MAJOR.rst index f1001ac..c7511e7 100644 --- a/Help/variable/CMAKE_PROJECT_VERSION_MAJOR.rst +++ b/Help/variable/CMAKE_PROJECT_VERSION_MAJOR.rst @@ -1,6 +1,8 @@ CMAKE_PROJECT_VERSION_MAJOR --------------------------- +.. versionadded:: 3.12 + The major version of the top level project. This variable holds the major version of the project as specified in the top diff --git a/Help/variable/CMAKE_PROJECT_VERSION_MINOR.rst b/Help/variable/CMAKE_PROJECT_VERSION_MINOR.rst index 13202be..dd91dcf 100644 --- a/Help/variable/CMAKE_PROJECT_VERSION_MINOR.rst +++ b/Help/variable/CMAKE_PROJECT_VERSION_MINOR.rst @@ -1,6 +1,8 @@ CMAKE_PROJECT_VERSION_MINOR --------------------------- +.. versionadded:: 3.12 + The minor version of the top level project. This variable holds the minor version of the project as specified in the top diff --git a/Help/variable/CMAKE_PROJECT_VERSION_PATCH.rst b/Help/variable/CMAKE_PROJECT_VERSION_PATCH.rst index b8570d9..61fd1f3 100644 --- a/Help/variable/CMAKE_PROJECT_VERSION_PATCH.rst +++ b/Help/variable/CMAKE_PROJECT_VERSION_PATCH.rst @@ -1,6 +1,8 @@ CMAKE_PROJECT_VERSION_PATCH --------------------------- +.. versionadded:: 3.12 + The patch version of the top level project. This variable holds the patch version of the project as specified in the top diff --git a/Help/variable/CMAKE_PROJECT_VERSION_TWEAK.rst b/Help/variable/CMAKE_PROJECT_VERSION_TWEAK.rst index e1ad4be..0deae8b 100644 --- a/Help/variable/CMAKE_PROJECT_VERSION_TWEAK.rst +++ b/Help/variable/CMAKE_PROJECT_VERSION_TWEAK.rst @@ -1,6 +1,8 @@ CMAKE_PROJECT_VERSION_TWEAK --------------------------- +.. versionadded:: 3.12 + The tweak version of the top level project. This variable holds the tweak version of the project as specified in the top diff --git a/Help/variable/CMAKE_RULE_MESSAGES.rst b/Help/variable/CMAKE_RULE_MESSAGES.rst index 7460a81..39be2e9 100644 --- a/Help/variable/CMAKE_RULE_MESSAGES.rst +++ b/Help/variable/CMAKE_RULE_MESSAGES.rst @@ -1,6 +1,8 @@ CMAKE_RULE_MESSAGES ------------------- +.. versionadded:: 3.13 + Specify whether to report a message for each make rule. If set in the cache it is used to initialize the value of the :prop_gbl:`RULE_MESSAGES` property. diff --git a/Help/variable/CMAKE_RUNTIME_OUTPUT_DIRECTORY_CONFIG.rst b/Help/variable/CMAKE_RUNTIME_OUTPUT_DIRECTORY_CONFIG.rst index 080dea6..c9c55c5 100644 --- a/Help/variable/CMAKE_RUNTIME_OUTPUT_DIRECTORY_CONFIG.rst +++ b/Help/variable/CMAKE_RUNTIME_OUTPUT_DIRECTORY_CONFIG.rst @@ -1,6 +1,8 @@ CMAKE_RUNTIME_OUTPUT_DIRECTORY_<CONFIG> --------------------------------------- +.. versionadded:: 3.3 + Where to put all the :ref:`RUNTIME <Runtime Output Artifacts>` target files when built for a specific configuration. diff --git a/Help/variable/CMAKE_SHARED_LINKER_FLAGS_CONFIG_INIT.rst b/Help/variable/CMAKE_SHARED_LINKER_FLAGS_CONFIG_INIT.rst index 185df38..7f3dec7 100644 --- a/Help/variable/CMAKE_SHARED_LINKER_FLAGS_CONFIG_INIT.rst +++ b/Help/variable/CMAKE_SHARED_LINKER_FLAGS_CONFIG_INIT.rst @@ -1,6 +1,8 @@ CMAKE_SHARED_LINKER_FLAGS_<CONFIG>_INIT --------------------------------------- +.. versionadded:: 3.7 + Value used to initialize the :variable:`CMAKE_SHARED_LINKER_FLAGS_<CONFIG>` cache entry the first time a build tree is configured. This variable is meant to be set by a :variable:`toolchain file diff --git a/Help/variable/CMAKE_SHARED_LINKER_FLAGS_INIT.rst b/Help/variable/CMAKE_SHARED_LINKER_FLAGS_INIT.rst index cb819a7..6d51afe 100644 --- a/Help/variable/CMAKE_SHARED_LINKER_FLAGS_INIT.rst +++ b/Help/variable/CMAKE_SHARED_LINKER_FLAGS_INIT.rst @@ -1,6 +1,8 @@ CMAKE_SHARED_LINKER_FLAGS_INIT ------------------------------ +.. versionadded:: 3.7 + Value used to initialize the :variable:`CMAKE_SHARED_LINKER_FLAGS` cache entry the first time a build tree is configured. This variable is meant to be set by a :variable:`toolchain file diff --git a/Help/variable/CMAKE_STATIC_LINKER_FLAGS_CONFIG_INIT.rst b/Help/variable/CMAKE_STATIC_LINKER_FLAGS_CONFIG_INIT.rst index a49d1cb..5e65ef2 100644 --- a/Help/variable/CMAKE_STATIC_LINKER_FLAGS_CONFIG_INIT.rst +++ b/Help/variable/CMAKE_STATIC_LINKER_FLAGS_CONFIG_INIT.rst @@ -1,6 +1,8 @@ CMAKE_STATIC_LINKER_FLAGS_<CONFIG>_INIT --------------------------------------- +.. versionadded:: 3.7 + Value used to initialize the :variable:`CMAKE_STATIC_LINKER_FLAGS_<CONFIG>` cache entry the first time a build tree is configured. This variable is meant to be set by a :variable:`toolchain file diff --git a/Help/variable/CMAKE_STATIC_LINKER_FLAGS_INIT.rst b/Help/variable/CMAKE_STATIC_LINKER_FLAGS_INIT.rst index 113ca71..cbf681c 100644 --- a/Help/variable/CMAKE_STATIC_LINKER_FLAGS_INIT.rst +++ b/Help/variable/CMAKE_STATIC_LINKER_FLAGS_INIT.rst @@ -1,6 +1,8 @@ CMAKE_STATIC_LINKER_FLAGS_INIT ------------------------------ +.. versionadded:: 3.7 + Value used to initialize the :variable:`CMAKE_STATIC_LINKER_FLAGS` cache entry the first time a build tree is configured. This variable is meant to be set by a :variable:`toolchain file diff --git a/Help/variable/CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS.rst b/Help/variable/CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS.rst index 02c8663..5c1c8d1 100644 --- a/Help/variable/CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS.rst +++ b/Help/variable/CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS.rst @@ -1,6 +1,8 @@ CMAKE_SUBLIME_TEXT_2_ENV_SETTINGS --------------------------------- +.. versionadded:: 3.8 + This variable contains a list of env vars as a list of tokens with the syntax ``var=value``. diff --git a/Help/variable/CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE.rst b/Help/variable/CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE.rst index d654425..28b0dbd 100644 --- a/Help/variable/CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE.rst +++ b/Help/variable/CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE.rst @@ -1,6 +1,8 @@ CMAKE_SUBLIME_TEXT_2_EXCLUDE_BUILD_TREE --------------------------------------- +.. versionadded:: 3.8 + If this variable evaluates to ``ON`` at the end of the top-level ``CMakeLists.txt`` file, the :generator:`Sublime Text 2` extra generator excludes the build tree from the ``.sublime-project`` if it is inside the diff --git a/Help/variable/CMAKE_SUPPRESS_REGENERATION.rst b/Help/variable/CMAKE_SUPPRESS_REGENERATION.rst index 96184dd..48490ff 100644 --- a/Help/variable/CMAKE_SUPPRESS_REGENERATION.rst +++ b/Help/variable/CMAKE_SUPPRESS_REGENERATION.rst @@ -1,6 +1,8 @@ CMAKE_SUPPRESS_REGENERATION --------------------------- +.. versionadded:: 3.12 + If ``CMAKE_SUPPRESS_REGENERATION`` is ``OFF``, which is default, then CMake adds a special target on which all other targets depend that checks the build system and optionally re-runs CMake to regenerate the build system when diff --git a/Help/variable/CMAKE_SYSROOT_COMPILE.rst b/Help/variable/CMAKE_SYSROOT_COMPILE.rst index e96c62b..4aea48e 100644 --- a/Help/variable/CMAKE_SYSROOT_COMPILE.rst +++ b/Help/variable/CMAKE_SYSROOT_COMPILE.rst @@ -1,6 +1,8 @@ CMAKE_SYSROOT_COMPILE --------------------- +.. versionadded:: 3.9 + Path to pass to the compiler in the ``--sysroot`` flag when compiling source files. This is the same as :variable:`CMAKE_SYSROOT` but is used only for compiling sources and not linking. diff --git a/Help/variable/CMAKE_SYSROOT_LINK.rst b/Help/variable/CMAKE_SYSROOT_LINK.rst index 88b48ef..9749b7b 100644 --- a/Help/variable/CMAKE_SYSROOT_LINK.rst +++ b/Help/variable/CMAKE_SYSROOT_LINK.rst @@ -1,6 +1,8 @@ CMAKE_SYSROOT_LINK ------------------ +.. versionadded:: 3.9 + Path to pass to the compiler in the ``--sysroot`` flag when linking. This is the same as :variable:`CMAKE_SYSROOT` but is used only for linking and not compiling sources. diff --git a/Help/variable/CMAKE_SYSTEM_APPBUNDLE_PATH.rst b/Help/variable/CMAKE_SYSTEM_APPBUNDLE_PATH.rst index 666af46..06a99a8 100644 --- a/Help/variable/CMAKE_SYSTEM_APPBUNDLE_PATH.rst +++ b/Help/variable/CMAKE_SYSTEM_APPBUNDLE_PATH.rst @@ -1,6 +1,8 @@ CMAKE_SYSTEM_APPBUNDLE_PATH --------------------------- +.. versionadded:: 3.4 + Search path for macOS application bundles used by the :command:`find_program`, and :command:`find_package` commands. By default it contains the standard directories for the current system. It is *not* intended to be modified by diff --git a/Help/variable/CMAKE_SYSTEM_FRAMEWORK_PATH.rst b/Help/variable/CMAKE_SYSTEM_FRAMEWORK_PATH.rst index 14ba18e..1a402c1 100644 --- a/Help/variable/CMAKE_SYSTEM_FRAMEWORK_PATH.rst +++ b/Help/variable/CMAKE_SYSTEM_FRAMEWORK_PATH.rst @@ -1,6 +1,8 @@ CMAKE_SYSTEM_FRAMEWORK_PATH --------------------------- +.. versionadded:: 3.4 + Search path for macOS frameworks used by the :command:`find_library`, :command:`find_package`, :command:`find_path`, and :command:`find_file` commands. By default it contains the standard directories for the diff --git a/Help/variable/CMAKE_Swift_LANGUAGE_VERSION.rst b/Help/variable/CMAKE_Swift_LANGUAGE_VERSION.rst index b4a74eb..fce6fa7 100644 --- a/Help/variable/CMAKE_Swift_LANGUAGE_VERSION.rst +++ b/Help/variable/CMAKE_Swift_LANGUAGE_VERSION.rst @@ -1,6 +1,8 @@ CMAKE_Swift_LANGUAGE_VERSION ---------------------------- +.. versionadded:: 3.7 + Set to the Swift language version number. If not set, the oldest legacy version known to be available in the host Xcode version is assumed: diff --git a/Help/variable/CMAKE_Swift_MODULE_DIRECTORY.rst b/Help/variable/CMAKE_Swift_MODULE_DIRECTORY.rst index b11253b..3694973 100644 --- a/Help/variable/CMAKE_Swift_MODULE_DIRECTORY.rst +++ b/Help/variable/CMAKE_Swift_MODULE_DIRECTORY.rst @@ -1,6 +1,8 @@ CMAKE_Swift_MODULE_DIRECTORY ---------------------------- +.. versionadded:: 3.15 + Swift module output directory. This variable is used to initialise the :prop_tgt:`Swift_MODULE_DIRECTORY` diff --git a/Help/variable/CMAKE_Swift_NUM_THREADS.rst b/Help/variable/CMAKE_Swift_NUM_THREADS.rst index cb33678..e1dafb0 100644 --- a/Help/variable/CMAKE_Swift_NUM_THREADS.rst +++ b/Help/variable/CMAKE_Swift_NUM_THREADS.rst @@ -1,6 +1,8 @@ CMAKE_Swift_NUM_THREADS ----------------------- +.. versionadded:: 3.15.1 + Number of threads for parallel compilation for Swift targets. This variable controls the number of parallel jobs that the swift driver creates diff --git a/Help/variable/CMAKE_TRY_COMPILE_PLATFORM_VARIABLES.rst b/Help/variable/CMAKE_TRY_COMPILE_PLATFORM_VARIABLES.rst index 0f96787..d178513 100644 --- a/Help/variable/CMAKE_TRY_COMPILE_PLATFORM_VARIABLES.rst +++ b/Help/variable/CMAKE_TRY_COMPILE_PLATFORM_VARIABLES.rst @@ -1,6 +1,8 @@ CMAKE_TRY_COMPILE_PLATFORM_VARIABLES ------------------------------------ +.. versionadded:: 3.6 + List of variables that the :command:`try_compile` command source file signature must propagate into the test project in order to target the same platform as the host project. diff --git a/Help/variable/CMAKE_TRY_COMPILE_TARGET_TYPE.rst b/Help/variable/CMAKE_TRY_COMPILE_TARGET_TYPE.rst index 5fa8dfc..b60539f 100644 --- a/Help/variable/CMAKE_TRY_COMPILE_TARGET_TYPE.rst +++ b/Help/variable/CMAKE_TRY_COMPILE_TARGET_TYPE.rst @@ -1,6 +1,8 @@ CMAKE_TRY_COMPILE_TARGET_TYPE ----------------------------- +.. versionadded:: 3.6 + Type of target generated for :command:`try_compile` calls using the source file signature. Valid values are: diff --git a/Help/variable/CMAKE_UNITY_BUILD.rst b/Help/variable/CMAKE_UNITY_BUILD.rst index a86cd67..54a781a 100644 --- a/Help/variable/CMAKE_UNITY_BUILD.rst +++ b/Help/variable/CMAKE_UNITY_BUILD.rst @@ -1,6 +1,8 @@ CMAKE_UNITY_BUILD ----------------- +.. versionadded:: 3.16 + This variable is used to initialize the :prop_tgt:`UNITY_BUILD` property of targets when they are created. Setting it to true enables batch compilation of multiple sources within each target. diff --git a/Help/variable/CMAKE_UNITY_BUILD_BATCH_SIZE.rst b/Help/variable/CMAKE_UNITY_BUILD_BATCH_SIZE.rst index 7988d4b..7733fe8 100644 --- a/Help/variable/CMAKE_UNITY_BUILD_BATCH_SIZE.rst +++ b/Help/variable/CMAKE_UNITY_BUILD_BATCH_SIZE.rst @@ -1,6 +1,8 @@ CMAKE_UNITY_BUILD_BATCH_SIZE ---------------------------- +.. versionadded:: 3.16 + This variable is used to initialize the :prop_tgt:`UNITY_BUILD_BATCH_SIZE` property of targets when they are created. It specifies the default upper limit on the number of source files that may be combined in any one unity diff --git a/Help/variable/CMAKE_VS_GLOBALS.rst b/Help/variable/CMAKE_VS_GLOBALS.rst index 83777b6..d4514fe 100644 --- a/Help/variable/CMAKE_VS_GLOBALS.rst +++ b/Help/variable/CMAKE_VS_GLOBALS.rst @@ -1,6 +1,8 @@ CMAKE_VS_GLOBALS ---------------- +.. versionadded:: 3.13 + List of ``Key=Value`` records to be set per target as target properties :prop_tgt:`VS_GLOBAL_<variable>` with ``variable=Key`` and value ``Value``. diff --git a/Help/variable/CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD.rst b/Help/variable/CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD.rst index f54472a..ace94e4 100644 --- a/Help/variable/CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD.rst +++ b/Help/variable/CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD.rst @@ -1,6 +1,8 @@ CMAKE_VS_INCLUDE_INSTALL_TO_DEFAULT_BUILD ----------------------------------------- +.. versionadded:: 3.3 + Include ``INSTALL`` target to default build. In Visual Studio solution, by default the ``INSTALL`` target will not be part diff --git a/Help/variable/CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD.rst b/Help/variable/CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD.rst index 693ba45..ab4d0fa 100644 --- a/Help/variable/CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD.rst +++ b/Help/variable/CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD.rst @@ -1,6 +1,8 @@ CMAKE_VS_INCLUDE_PACKAGE_TO_DEFAULT_BUILD ----------------------------------------- +.. versionadded:: 3.8 + Include ``PACKAGE`` target to default build. In Visual Studio solution, by default the ``PACKAGE`` target will not be part diff --git a/Help/variable/CMAKE_VS_JUST_MY_CODE_DEBUGGING.rst b/Help/variable/CMAKE_VS_JUST_MY_CODE_DEBUGGING.rst index 546cdf4..0a02a32 100644 --- a/Help/variable/CMAKE_VS_JUST_MY_CODE_DEBUGGING.rst +++ b/Help/variable/CMAKE_VS_JUST_MY_CODE_DEBUGGING.rst @@ -1,6 +1,8 @@ CMAKE_VS_JUST_MY_CODE_DEBUGGING ------------------------------- +.. versionadded:: 3.15 + Enable Just My Code with Visual Studio debugger. This variable is used to initialize the :prop_tgt:`VS_JUST_MY_CODE_DEBUGGING` diff --git a/Help/variable/CMAKE_VS_NsightTegra_VERSION.rst b/Help/variable/CMAKE_VS_NsightTegra_VERSION.rst index 386c3a9..2982b39 100644 --- a/Help/variable/CMAKE_VS_NsightTegra_VERSION.rst +++ b/Help/variable/CMAKE_VS_NsightTegra_VERSION.rst @@ -1,6 +1,8 @@ CMAKE_VS_NsightTegra_VERSION ---------------------------- +.. versionadded:: 3.1 + When using a Visual Studio generator with the :variable:`CMAKE_SYSTEM_NAME` variable set to ``Android``, this variable contains the version number of the diff --git a/Help/variable/CMAKE_VS_PLATFORM_NAME.rst b/Help/variable/CMAKE_VS_PLATFORM_NAME.rst index 7a4642a..7d08add 100644 --- a/Help/variable/CMAKE_VS_PLATFORM_NAME.rst +++ b/Help/variable/CMAKE_VS_PLATFORM_NAME.rst @@ -1,6 +1,8 @@ CMAKE_VS_PLATFORM_NAME ---------------------- +.. versionadded:: 3.1 + Visual Studio target platform name used by the current generator. VS 8 and above allow project files to specify a target platform. diff --git a/Help/variable/CMAKE_VS_PLATFORM_NAME_DEFAULT.rst b/Help/variable/CMAKE_VS_PLATFORM_NAME_DEFAULT.rst index c18e6fd..6440174 100644 --- a/Help/variable/CMAKE_VS_PLATFORM_NAME_DEFAULT.rst +++ b/Help/variable/CMAKE_VS_PLATFORM_NAME_DEFAULT.rst @@ -1,6 +1,8 @@ CMAKE_VS_PLATFORM_NAME_DEFAULT ------------------------------ +.. versionadded:: 3.14.3 + Default for the Visual Studio target platform name for the current generator without considering the value of the :variable:`CMAKE_GENERATOR_PLATFORM` variable. For :ref:`Visual Studio Generators` for VS 2017 and below this is diff --git a/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA.rst b/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA.rst index 67b7f74..e66378d 100644 --- a/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA.rst +++ b/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA.rst @@ -1,6 +1,8 @@ CMAKE_VS_PLATFORM_TOOLSET_CUDA ------------------------------ +.. versionadded:: 3.9 + NVIDIA CUDA Toolkit version whose Visual Studio toolset to use. The :ref:`Visual Studio Generators` for VS 2010 and above support using diff --git a/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR.rst b/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR.rst index 060648a..74db6b1 100644 --- a/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR.rst +++ b/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR.rst @@ -1,6 +1,8 @@ CMAKE_VS_PLATFORM_TOOLSET_CUDA_CUSTOM_DIR ----------------------------------------- +.. versionadded:: 3.16 + Path to standalone NVIDIA CUDA Toolkit (eg. extracted from installer). The :ref:`Visual Studio Generators` for VS 2010 and above support using diff --git a/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE.rst b/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE.rst index 99ac90d..84d7212 100644 --- a/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE.rst +++ b/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE.rst @@ -1,6 +1,8 @@ CMAKE_VS_PLATFORM_TOOLSET_HOST_ARCHITECTURE ------------------------------------------- +.. versionadded:: 3.8 + Visual Studio preferred tool architecture. The :ref:`Visual Studio Generators` for VS 2013 and above support using diff --git a/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_VERSION.rst b/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_VERSION.rst index 4d9b978..64f2e39 100644 --- a/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_VERSION.rst +++ b/Help/variable/CMAKE_VS_PLATFORM_TOOLSET_VERSION.rst @@ -1,6 +1,8 @@ CMAKE_VS_PLATFORM_TOOLSET_VERSION --------------------------------- +.. versionadded:: 3.12 + Visual Studio Platform Toolset version. The :ref:`Visual Studio Generators` for VS 2017 and above allow to diff --git a/Help/variable/CMAKE_VS_SDK_EXCLUDE_DIRECTORIES.rst b/Help/variable/CMAKE_VS_SDK_EXCLUDE_DIRECTORIES.rst index 36c4dcc..969f328 100644 --- a/Help/variable/CMAKE_VS_SDK_EXCLUDE_DIRECTORIES.rst +++ b/Help/variable/CMAKE_VS_SDK_EXCLUDE_DIRECTORIES.rst @@ -1,4 +1,6 @@ CMAKE_VS_SDK_EXCLUDE_DIRECTORIES -------------------------------- +.. versionadded:: 3.12 + This variable allows to override Visual Studio default Exclude Directories. diff --git a/Help/variable/CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES.rst b/Help/variable/CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES.rst index 3ec755b..7455e10 100644 --- a/Help/variable/CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES.rst +++ b/Help/variable/CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES.rst @@ -1,4 +1,6 @@ CMAKE_VS_SDK_EXECUTABLE_DIRECTORIES ----------------------------------- +.. versionadded:: 3.12 + This variable allows to override Visual Studio default Executable Directories. diff --git a/Help/variable/CMAKE_VS_SDK_INCLUDE_DIRECTORIES.rst b/Help/variable/CMAKE_VS_SDK_INCLUDE_DIRECTORIES.rst index da10bde..3f27aea 100644 --- a/Help/variable/CMAKE_VS_SDK_INCLUDE_DIRECTORIES.rst +++ b/Help/variable/CMAKE_VS_SDK_INCLUDE_DIRECTORIES.rst @@ -1,4 +1,6 @@ CMAKE_VS_SDK_INCLUDE_DIRECTORIES -------------------------------- +.. versionadded:: 3.12 + This variable allows to override Visual Studio default Include Directories. diff --git a/Help/variable/CMAKE_VS_SDK_LIBRARY_DIRECTORIES.rst b/Help/variable/CMAKE_VS_SDK_LIBRARY_DIRECTORIES.rst index b33754a..35e45a3 100644 --- a/Help/variable/CMAKE_VS_SDK_LIBRARY_DIRECTORIES.rst +++ b/Help/variable/CMAKE_VS_SDK_LIBRARY_DIRECTORIES.rst @@ -1,4 +1,6 @@ CMAKE_VS_SDK_LIBRARY_DIRECTORIES -------------------------------- +.. versionadded:: 3.12 + This variable allows to override Visual Studio default Library Directories. diff --git a/Help/variable/CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES.rst b/Help/variable/CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES.rst index b022215..24b90b6 100644 --- a/Help/variable/CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES.rst +++ b/Help/variable/CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES.rst @@ -1,5 +1,7 @@ CMAKE_VS_SDK_LIBRARY_WINRT_DIRECTORIES -------------------------------------- +.. versionadded:: 3.12 + This variable allows to override Visual Studio default Library WinRT Directories. diff --git a/Help/variable/CMAKE_VS_SDK_REFERENCE_DIRECTORIES.rst b/Help/variable/CMAKE_VS_SDK_REFERENCE_DIRECTORIES.rst index c03f0ae..00382fe 100644 --- a/Help/variable/CMAKE_VS_SDK_REFERENCE_DIRECTORIES.rst +++ b/Help/variable/CMAKE_VS_SDK_REFERENCE_DIRECTORIES.rst @@ -1,4 +1,6 @@ CMAKE_VS_SDK_REFERENCE_DIRECTORIES ---------------------------------- +.. versionadded:: 3.12 + This variable allows to override Visual Studio default Reference Directories. diff --git a/Help/variable/CMAKE_VS_SDK_SOURCE_DIRECTORIES.rst b/Help/variable/CMAKE_VS_SDK_SOURCE_DIRECTORIES.rst index 0c73f06..b98c999 100644 --- a/Help/variable/CMAKE_VS_SDK_SOURCE_DIRECTORIES.rst +++ b/Help/variable/CMAKE_VS_SDK_SOURCE_DIRECTORIES.rst @@ -1,4 +1,6 @@ CMAKE_VS_SDK_SOURCE_DIRECTORIES ------------------------------- +.. versionadded:: 3.12 + This variable allows to override Visual Studio default Source Directories. diff --git a/Help/variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION.rst b/Help/variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION.rst index 83b9bc1..cb55bc2 100644 --- a/Help/variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION.rst +++ b/Help/variable/CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION.rst @@ -1,6 +1,8 @@ CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION ---------------------------------------- +.. versionadded:: 3.4 + Visual Studio Windows Target Platform Version. When targeting Windows 10 and above Visual Studio 2015 and above support diff --git a/Help/variable/CMAKE_VS_WINRT_BY_DEFAULT.rst b/Help/variable/CMAKE_VS_WINRT_BY_DEFAULT.rst index 2eea424..9ded85f 100644 --- a/Help/variable/CMAKE_VS_WINRT_BY_DEFAULT.rst +++ b/Help/variable/CMAKE_VS_WINRT_BY_DEFAULT.rst @@ -1,6 +1,8 @@ CMAKE_VS_WINRT_BY_DEFAULT ------------------------- +.. versionadded:: 3.13 + Inform :ref:`Visual Studio Generators` for VS 2010 and above that the target platform enables WinRT compilation by default and it needs to be explicitly disabled if ``/ZW`` or :prop_tgt:`VS_WINRT_COMPONENT` is diff --git a/Help/variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS.rst b/Help/variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS.rst index 1636842..7b01185 100644 --- a/Help/variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS.rst +++ b/Help/variable/CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS.rst @@ -1,6 +1,8 @@ CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS -------------------------------- +.. versionadded:: 3.4 + Default value for :prop_tgt:`WINDOWS_EXPORT_ALL_SYMBOLS` target property. This variable is used to initialize the property on each target as it is created. diff --git a/Help/variable/CMAKE_XCODE_ATTRIBUTE_an-attribute.rst b/Help/variable/CMAKE_XCODE_ATTRIBUTE_an-attribute.rst index be683d6..90e4c0e 100644 --- a/Help/variable/CMAKE_XCODE_ATTRIBUTE_an-attribute.rst +++ b/Help/variable/CMAKE_XCODE_ATTRIBUTE_an-attribute.rst @@ -1,6 +1,8 @@ CMAKE_XCODE_ATTRIBUTE_<an-attribute> ------------------------------------ +.. versionadded:: 3.1 + Set Xcode target attributes directly. Tell the :generator:`Xcode` generator to set '<an-attribute>' to a given value diff --git a/Help/variable/CMAKE_XCODE_GENERATE_SCHEME.rst b/Help/variable/CMAKE_XCODE_GENERATE_SCHEME.rst index 5b1a003..40070e1 100644 --- a/Help/variable/CMAKE_XCODE_GENERATE_SCHEME.rst +++ b/Help/variable/CMAKE_XCODE_GENERATE_SCHEME.rst @@ -1,6 +1,8 @@ CMAKE_XCODE_GENERATE_SCHEME --------------------------- +.. versionadded:: 3.9 + If enabled, the :generator:`Xcode` generator will generate schema files. These are useful to invoke analyze, archive, build-for-testing and test actions from the command line. diff --git a/Help/variable/CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY.rst b/Help/variable/CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY.rst index ea3e240..38d043c 100644 --- a/Help/variable/CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY.rst +++ b/Help/variable/CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY.rst @@ -1,6 +1,8 @@ CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY ------------------------------------------- +.. versionadded:: 3.11 + If enabled, the :generator:`Xcode` generator will generate only a single Xcode project file for the topmost :command:`project()` command instead of generating one for every ``project()`` command. diff --git a/Help/variable/CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER.rst b/Help/variable/CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER.rst index b972ba5..b3fa93b 100644 --- a/Help/variable/CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER.rst +++ b/Help/variable/CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER.rst @@ -1,6 +1,8 @@ CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER ------------------------------------ +.. versionadded:: 3.13 + Whether to enable ``Address Sanitizer`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/variable/CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN.rst b/Help/variable/CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN.rst index 59eb32d..1a0a17a 100644 --- a/Help/variable/CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN.rst +++ b/Help/variable/CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN.rst @@ -1,6 +1,8 @@ CMAKE_XCODE_SCHEME_ADDRESS_SANITIZER_USE_AFTER_RETURN ----------------------------------------------------- +.. versionadded:: 3.13 + Whether to enable ``Detect use of stack after return`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/variable/CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING.rst b/Help/variable/CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING.rst index a264d36..917fc7f 100644 --- a/Help/variable/CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING.rst +++ b/Help/variable/CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING.rst @@ -1,6 +1,8 @@ CMAKE_XCODE_SCHEME_DEBUG_DOCUMENT_VERSIONING -------------------------------------------- +.. versionadded:: 3.16 + Whether to enable ``Allow debugging when using document Versions Browser`` in the Options section of the generated Xcode scheme. diff --git a/Help/variable/CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER.rst b/Help/variable/CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER.rst index 71bcf42..b604598 100644 --- a/Help/variable/CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER.rst +++ b/Help/variable/CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER.rst @@ -1,6 +1,8 @@ CMAKE_XCODE_SCHEME_DISABLE_MAIN_THREAD_CHECKER ---------------------------------------------- +.. versionadded:: 3.13 + Whether to disable the ``Main Thread Checker`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/variable/CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS.rst b/Help/variable/CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS.rst index 53f55e6..070ddfc 100644 --- a/Help/variable/CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS.rst +++ b/Help/variable/CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS.rst @@ -1,6 +1,8 @@ CMAKE_XCODE_SCHEME_DYNAMIC_LIBRARY_LOADS ---------------------------------------- +.. versionadded:: 3.13 + Whether to enable ``Dynamic Library Loads`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/variable/CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE.rst b/Help/variable/CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE.rst index 784ceb6..4291816 100644 --- a/Help/variable/CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE.rst +++ b/Help/variable/CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE.rst @@ -1,6 +1,8 @@ CMAKE_XCODE_SCHEME_DYNAMIC_LINKER_API_USAGE ------------------------------------------- +.. versionadded:: 3.13 + Whether to enable ``Dynamic Linker API usage`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/variable/CMAKE_XCODE_SCHEME_ENVIRONMENT.rst b/Help/variable/CMAKE_XCODE_SCHEME_ENVIRONMENT.rst index 4832659..62b698d 100644 --- a/Help/variable/CMAKE_XCODE_SCHEME_ENVIRONMENT.rst +++ b/Help/variable/CMAKE_XCODE_SCHEME_ENVIRONMENT.rst @@ -1,6 +1,8 @@ CMAKE_XCODE_SCHEME_ENVIRONMENT ------------------------------ +.. versionadded:: 3.17 + Specify environment variables that should be added to the Arguments section of the generated Xcode scheme. diff --git a/Help/variable/CMAKE_XCODE_SCHEME_GUARD_MALLOC.rst b/Help/variable/CMAKE_XCODE_SCHEME_GUARD_MALLOC.rst index 9350244..48b481e 100644 --- a/Help/variable/CMAKE_XCODE_SCHEME_GUARD_MALLOC.rst +++ b/Help/variable/CMAKE_XCODE_SCHEME_GUARD_MALLOC.rst @@ -1,6 +1,8 @@ CMAKE_XCODE_SCHEME_GUARD_MALLOC ------------------------------- +.. versionadded:: 3.13 + Whether to enable ``Guard Malloc`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/variable/CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP.rst b/Help/variable/CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP.rst index 45a2dad..ef8ed9b 100644 --- a/Help/variable/CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP.rst +++ b/Help/variable/CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP.rst @@ -1,6 +1,8 @@ CMAKE_XCODE_SCHEME_MAIN_THREAD_CHECKER_STOP ------------------------------------------- +.. versionadded:: 3.13 + Whether to enable the ``Main Thread Checker`` option ``Pause on issues`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES.rst b/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES.rst index 94d1c61..d4ae9eb 100644 --- a/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES.rst +++ b/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES.rst @@ -1,6 +1,8 @@ CMAKE_XCODE_SCHEME_MALLOC_GUARD_EDGES ------------------------------------- +.. versionadded:: 3.13 + Whether to enable ``Malloc Guard Edges`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE.rst b/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE.rst index 9bf0eb4..e28f6a1 100644 --- a/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE.rst +++ b/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE.rst @@ -1,6 +1,8 @@ CMAKE_XCODE_SCHEME_MALLOC_SCRIBBLE ---------------------------------- +.. versionadded:: 3.13 + Whether to enable ``Malloc Scribble`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_STACK.rst b/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_STACK.rst index 4cc21ee..59fcfd3 100644 --- a/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_STACK.rst +++ b/Help/variable/CMAKE_XCODE_SCHEME_MALLOC_STACK.rst @@ -1,6 +1,8 @@ CMAKE_XCODE_SCHEME_MALLOC_STACK ------------------------------- +.. versionadded:: 3.13 + Whether to enable ``Malloc Stack`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/variable/CMAKE_XCODE_SCHEME_THREAD_SANITIZER.rst b/Help/variable/CMAKE_XCODE_SCHEME_THREAD_SANITIZER.rst index 6d1b56e..511eb04 100644 --- a/Help/variable/CMAKE_XCODE_SCHEME_THREAD_SANITIZER.rst +++ b/Help/variable/CMAKE_XCODE_SCHEME_THREAD_SANITIZER.rst @@ -1,6 +1,8 @@ CMAKE_XCODE_SCHEME_THREAD_SANITIZER ----------------------------------- +.. versionadded:: 3.13 + Whether to enable ``Thread Sanitizer`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/variable/CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP.rst b/Help/variable/CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP.rst index de40478..6f3b8ce 100644 --- a/Help/variable/CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP.rst +++ b/Help/variable/CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP.rst @@ -1,6 +1,8 @@ CMAKE_XCODE_SCHEME_THREAD_SANITIZER_STOP ---------------------------------------- +.. versionadded:: 3.13 + Whether to enable ``Thread Sanitizer - Pause on issues`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/variable/CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER.rst b/Help/variable/CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER.rst index ec5df66..46d3ccf 100644 --- a/Help/variable/CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER.rst +++ b/Help/variable/CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER.rst @@ -1,6 +1,8 @@ CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER ------------------------------------------------ +.. versionadded:: 3.13 + Whether to enable ``Undefined Behavior Sanitizer`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/variable/CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP.rst b/Help/variable/CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP.rst index dcec9b0..8fa5ece 100644 --- a/Help/variable/CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP.rst +++ b/Help/variable/CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP.rst @@ -1,6 +1,8 @@ CMAKE_XCODE_SCHEME_UNDEFINED_BEHAVIOUR_SANITIZER_STOP ----------------------------------------------------- +.. versionadded:: 3.13 + Whether to enable ``Undefined Behavior Sanitizer`` option ``Pause on issues`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/variable/CMAKE_XCODE_SCHEME_WORKING_DIRECTORY.rst b/Help/variable/CMAKE_XCODE_SCHEME_WORKING_DIRECTORY.rst index 5bb7907..4221e48 100644 --- a/Help/variable/CMAKE_XCODE_SCHEME_WORKING_DIRECTORY.rst +++ b/Help/variable/CMAKE_XCODE_SCHEME_WORKING_DIRECTORY.rst @@ -1,6 +1,8 @@ CMAKE_XCODE_SCHEME_WORKING_DIRECTORY ------------------------------------ +.. versionadded:: 3.17 + Specify the ``Working Directory`` of the *Run* and *Profile* actions in the generated Xcode scheme. diff --git a/Help/variable/CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS.rst b/Help/variable/CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS.rst index 82e9d76..fd9488e 100644 --- a/Help/variable/CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS.rst +++ b/Help/variable/CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS.rst @@ -1,6 +1,8 @@ CMAKE_XCODE_SCHEME_ZOMBIE_OBJECTS --------------------------------- +.. versionadded:: 3.13 + Whether to enable ``Zombie Objects`` in the Diagnostics section of the generated Xcode scheme. diff --git a/Help/variable/CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.rst b/Help/variable/CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.rst index 83d5ce7..01fb189 100644 --- a/Help/variable/CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.rst +++ b/Help/variable/CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS.rst @@ -1,6 +1,8 @@ CPACK_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS ------------------------------------------- +.. versionadded:: 3.11 + Default permissions for implicitly created directories during packaging. This variable serves the same purpose during packaging as the diff --git a/Help/variable/CTEST_BINARY_DIRECTORY.rst b/Help/variable/CTEST_BINARY_DIRECTORY.rst index fd8461f..8413e37 100644 --- a/Help/variable/CTEST_BINARY_DIRECTORY.rst +++ b/Help/variable/CTEST_BINARY_DIRECTORY.rst @@ -1,5 +1,7 @@ CTEST_BINARY_DIRECTORY ---------------------- +.. versionadded:: 3.1 + Specify the CTest ``BuildDirectory`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_BUILD_COMMAND.rst b/Help/variable/CTEST_BUILD_COMMAND.rst index 7b13ba0..31c44e2 100644 --- a/Help/variable/CTEST_BUILD_COMMAND.rst +++ b/Help/variable/CTEST_BUILD_COMMAND.rst @@ -1,5 +1,7 @@ CTEST_BUILD_COMMAND ------------------- +.. versionadded:: 3.1 + Specify the CTest ``MakeCommand`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_BUILD_NAME.rst b/Help/variable/CTEST_BUILD_NAME.rst index d25d84c..3d08397 100644 --- a/Help/variable/CTEST_BUILD_NAME.rst +++ b/Help/variable/CTEST_BUILD_NAME.rst @@ -1,5 +1,7 @@ CTEST_BUILD_NAME ---------------- +.. versionadded:: 3.1 + Specify the CTest ``BuildName`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_BZR_COMMAND.rst b/Help/variable/CTEST_BZR_COMMAND.rst index 474d621..0c05d1a 100644 --- a/Help/variable/CTEST_BZR_COMMAND.rst +++ b/Help/variable/CTEST_BZR_COMMAND.rst @@ -1,5 +1,7 @@ CTEST_BZR_COMMAND ----------------- +.. versionadded:: 3.1 + Specify the CTest ``BZRCommand`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_BZR_UPDATE_OPTIONS.rst b/Help/variable/CTEST_BZR_UPDATE_OPTIONS.rst index d0f9579..4dd5e5b 100644 --- a/Help/variable/CTEST_BZR_UPDATE_OPTIONS.rst +++ b/Help/variable/CTEST_BZR_UPDATE_OPTIONS.rst @@ -1,5 +1,7 @@ CTEST_BZR_UPDATE_OPTIONS ------------------------ +.. versionadded:: 3.1 + Specify the CTest ``BZRUpdateOptions`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_CHANGE_ID.rst b/Help/variable/CTEST_CHANGE_ID.rst index a423f49..a6d15f7 100644 --- a/Help/variable/CTEST_CHANGE_ID.rst +++ b/Help/variable/CTEST_CHANGE_ID.rst @@ -1,6 +1,8 @@ CTEST_CHANGE_ID --------------- +.. versionadded:: 3.4 + Specify the CTest ``ChangeId`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_CHECKOUT_COMMAND.rst b/Help/variable/CTEST_CHECKOUT_COMMAND.rst index da256f2..852c28e 100644 --- a/Help/variable/CTEST_CHECKOUT_COMMAND.rst +++ b/Help/variable/CTEST_CHECKOUT_COMMAND.rst @@ -1,5 +1,7 @@ CTEST_CHECKOUT_COMMAND ---------------------- +.. versionadded:: 3.1 + Tell the :command:`ctest_start` command how to checkout or initialize the source directory in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_CONFIGURATION_TYPE.rst b/Help/variable/CTEST_CONFIGURATION_TYPE.rst index 9e277fa..392845e 100644 --- a/Help/variable/CTEST_CONFIGURATION_TYPE.rst +++ b/Help/variable/CTEST_CONFIGURATION_TYPE.rst @@ -1,6 +1,8 @@ CTEST_CONFIGURATION_TYPE ------------------------ +.. versionadded:: 3.1 + Specify the CTest ``DefaultCTestConfigurationType`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_CONFIGURE_COMMAND.rst b/Help/variable/CTEST_CONFIGURE_COMMAND.rst index 5561b6d..992ef47 100644 --- a/Help/variable/CTEST_CONFIGURE_COMMAND.rst +++ b/Help/variable/CTEST_CONFIGURE_COMMAND.rst @@ -1,5 +1,7 @@ CTEST_CONFIGURE_COMMAND ----------------------- +.. versionadded:: 3.1 + Specify the CTest ``ConfigureCommand`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_COVERAGE_COMMAND.rst b/Help/variable/CTEST_COVERAGE_COMMAND.rst index a78792e..f5425cb 100644 --- a/Help/variable/CTEST_COVERAGE_COMMAND.rst +++ b/Help/variable/CTEST_COVERAGE_COMMAND.rst @@ -1,6 +1,8 @@ CTEST_COVERAGE_COMMAND ---------------------- +.. versionadded:: 3.1 + Specify the CTest ``CoverageCommand`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_COVERAGE_EXTRA_FLAGS.rst b/Help/variable/CTEST_COVERAGE_EXTRA_FLAGS.rst index 2981955..39d9b5d 100644 --- a/Help/variable/CTEST_COVERAGE_EXTRA_FLAGS.rst +++ b/Help/variable/CTEST_COVERAGE_EXTRA_FLAGS.rst @@ -1,5 +1,7 @@ CTEST_COVERAGE_EXTRA_FLAGS -------------------------- +.. versionadded:: 3.1 + Specify the CTest ``CoverageExtraFlags`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_CURL_OPTIONS.rst b/Help/variable/CTEST_CURL_OPTIONS.rst index fc5dfc4..14af4e4 100644 --- a/Help/variable/CTEST_CURL_OPTIONS.rst +++ b/Help/variable/CTEST_CURL_OPTIONS.rst @@ -1,5 +1,7 @@ CTEST_CURL_OPTIONS ------------------ +.. versionadded:: 3.1 + Specify the CTest ``CurlOptions`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_CUSTOM_COVERAGE_EXCLUDE.rst b/Help/variable/CTEST_CUSTOM_COVERAGE_EXCLUDE.rst index d5893c9..84ba12d 100644 --- a/Help/variable/CTEST_CUSTOM_COVERAGE_EXCLUDE.rst +++ b/Help/variable/CTEST_CUSTOM_COVERAGE_EXCLUDE.rst @@ -1,6 +1,8 @@ CTEST_CUSTOM_COVERAGE_EXCLUDE ----------------------------- +.. versionadded:: 3.4 + A list of regular expressions which will be used to exclude files by their path from coverage output by the :command:`ctest_coverage` command. diff --git a/Help/variable/CTEST_CUSTOM_ERROR_EXCEPTION.rst b/Help/variable/CTEST_CUSTOM_ERROR_EXCEPTION.rst index cd65ae3..7191ce4 100644 --- a/Help/variable/CTEST_CUSTOM_ERROR_EXCEPTION.rst +++ b/Help/variable/CTEST_CUSTOM_ERROR_EXCEPTION.rst @@ -1,6 +1,8 @@ CTEST_CUSTOM_ERROR_EXCEPTION ---------------------------- +.. versionadded:: 3.4 + A list of regular expressions which will be used to exclude when detecting error messages in build outputs by the :command:`ctest_test` command. diff --git a/Help/variable/CTEST_CUSTOM_ERROR_MATCH.rst b/Help/variable/CTEST_CUSTOM_ERROR_MATCH.rst index 558f5e5..5d213f2 100644 --- a/Help/variable/CTEST_CUSTOM_ERROR_MATCH.rst +++ b/Help/variable/CTEST_CUSTOM_ERROR_MATCH.rst @@ -1,6 +1,8 @@ CTEST_CUSTOM_ERROR_MATCH ------------------------ +.. versionadded:: 3.4 + A list of regular expressions which will be used to detect error messages in build outputs by the :command:`ctest_test` command. diff --git a/Help/variable/CTEST_CUSTOM_ERROR_POST_CONTEXT.rst b/Help/variable/CTEST_CUSTOM_ERROR_POST_CONTEXT.rst index 614859b..452d060 100644 --- a/Help/variable/CTEST_CUSTOM_ERROR_POST_CONTEXT.rst +++ b/Help/variable/CTEST_CUSTOM_ERROR_POST_CONTEXT.rst @@ -1,6 +1,8 @@ CTEST_CUSTOM_ERROR_POST_CONTEXT ------------------------------- +.. versionadded:: 3.4 + The number of lines to include as context which follow an error message by the :command:`ctest_test` command. The default is 10. diff --git a/Help/variable/CTEST_CUSTOM_ERROR_PRE_CONTEXT.rst b/Help/variable/CTEST_CUSTOM_ERROR_PRE_CONTEXT.rst index 74dc47a..b7717dd 100644 --- a/Help/variable/CTEST_CUSTOM_ERROR_PRE_CONTEXT.rst +++ b/Help/variable/CTEST_CUSTOM_ERROR_PRE_CONTEXT.rst @@ -1,6 +1,8 @@ CTEST_CUSTOM_ERROR_PRE_CONTEXT ------------------------------ +.. versionadded:: 3.4 + The number of lines to include as context which precede an error message by the :command:`ctest_test` command. The default is 10. diff --git a/Help/variable/CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE.rst b/Help/variable/CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE.rst index 5aeae88..31ba099 100644 --- a/Help/variable/CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE.rst +++ b/Help/variable/CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE.rst @@ -1,6 +1,8 @@ CTEST_CUSTOM_MAXIMUM_FAILED_TEST_OUTPUT_SIZE -------------------------------------------- +.. versionadded:: 3.4 + When saving a failing test's output, this is the maximum size, in bytes, that will be collected by the :command:`ctest_test` command. Defaults to 307200 (300 KiB). diff --git a/Help/variable/CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS.rst b/Help/variable/CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS.rst index 920cb04..e5be1ad 100644 --- a/Help/variable/CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS.rst +++ b/Help/variable/CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS.rst @@ -1,6 +1,8 @@ CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS ------------------------------------- +.. versionadded:: 3.4 + The maximum number of errors in a single build step which will be detected. After this, the :command:`ctest_test` command will truncate the output. Defaults to 50. diff --git a/Help/variable/CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS.rst b/Help/variable/CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS.rst index a1f1cc1..b513a5c 100644 --- a/Help/variable/CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS.rst +++ b/Help/variable/CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS.rst @@ -1,6 +1,8 @@ CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS --------------------------------------- +.. versionadded:: 3.4 + The maximum number of warnings in a single build step which will be detected. After this, the :command:`ctest_test` command will truncate the output. Defaults to 50. diff --git a/Help/variable/CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE.rst b/Help/variable/CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE.rst index 1fbb8c5..08762d8 100644 --- a/Help/variable/CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE.rst +++ b/Help/variable/CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE.rst @@ -1,6 +1,8 @@ CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE -------------------------------------------- +.. versionadded:: 3.4 + When saving a passing test's output, this is the maximum size, in bytes, that will be collected by the :command:`ctest_test` command. Defaults to 1024 (1 KiB). diff --git a/Help/variable/CTEST_CUSTOM_MEMCHECK_IGNORE.rst b/Help/variable/CTEST_CUSTOM_MEMCHECK_IGNORE.rst index 578576c..405fc33 100644 --- a/Help/variable/CTEST_CUSTOM_MEMCHECK_IGNORE.rst +++ b/Help/variable/CTEST_CUSTOM_MEMCHECK_IGNORE.rst @@ -1,6 +1,8 @@ CTEST_CUSTOM_MEMCHECK_IGNORE ---------------------------- +.. versionadded:: 3.4 + A list of regular expressions to use to exclude tests during the :command:`ctest_memcheck` command. diff --git a/Help/variable/CTEST_CUSTOM_POST_MEMCHECK.rst b/Help/variable/CTEST_CUSTOM_POST_MEMCHECK.rst index 40291fe..5e488a7 100644 --- a/Help/variable/CTEST_CUSTOM_POST_MEMCHECK.rst +++ b/Help/variable/CTEST_CUSTOM_POST_MEMCHECK.rst @@ -1,6 +1,8 @@ CTEST_CUSTOM_POST_MEMCHECK -------------------------- +.. versionadded:: 3.4 + A list of commands to run at the end of the :command:`ctest_memcheck` command. .. include:: CTEST_CUSTOM_XXX.txt diff --git a/Help/variable/CTEST_CUSTOM_POST_TEST.rst b/Help/variable/CTEST_CUSTOM_POST_TEST.rst index 791292c..7ec42f7 100644 --- a/Help/variable/CTEST_CUSTOM_POST_TEST.rst +++ b/Help/variable/CTEST_CUSTOM_POST_TEST.rst @@ -1,6 +1,8 @@ CTEST_CUSTOM_POST_TEST ---------------------- +.. versionadded:: 3.4 + A list of commands to run at the end of the :command:`ctest_test` command. .. include:: CTEST_CUSTOM_XXX.txt diff --git a/Help/variable/CTEST_CUSTOM_PRE_MEMCHECK.rst b/Help/variable/CTEST_CUSTOM_PRE_MEMCHECK.rst index 00de8aa..99e47bd 100644 --- a/Help/variable/CTEST_CUSTOM_PRE_MEMCHECK.rst +++ b/Help/variable/CTEST_CUSTOM_PRE_MEMCHECK.rst @@ -1,6 +1,8 @@ CTEST_CUSTOM_PRE_MEMCHECK ------------------------- +.. versionadded:: 3.4 + A list of commands to run at the start of the :command:`ctest_memcheck` command. diff --git a/Help/variable/CTEST_CUSTOM_PRE_TEST.rst b/Help/variable/CTEST_CUSTOM_PRE_TEST.rst index 6af7152..95c6314 100644 --- a/Help/variable/CTEST_CUSTOM_PRE_TEST.rst +++ b/Help/variable/CTEST_CUSTOM_PRE_TEST.rst @@ -1,6 +1,8 @@ CTEST_CUSTOM_PRE_TEST ---------------------- +.. versionadded:: 3.4 + A list of commands to run at the start of the :command:`ctest_test` command. .. include:: CTEST_CUSTOM_XXX.txt diff --git a/Help/variable/CTEST_CUSTOM_TESTS_IGNORE.rst b/Help/variable/CTEST_CUSTOM_TESTS_IGNORE.rst index 57222ca..27a75d9 100644 --- a/Help/variable/CTEST_CUSTOM_TESTS_IGNORE.rst +++ b/Help/variable/CTEST_CUSTOM_TESTS_IGNORE.rst @@ -1,6 +1,8 @@ CTEST_CUSTOM_TESTS_IGNORE ------------------------- +.. versionadded:: 3.14 + A list of regular expressions to use to exclude tests during the :command:`ctest_test` command. diff --git a/Help/variable/CTEST_CUSTOM_WARNING_EXCEPTION.rst b/Help/variable/CTEST_CUSTOM_WARNING_EXCEPTION.rst index a03d473..539760b 100644 --- a/Help/variable/CTEST_CUSTOM_WARNING_EXCEPTION.rst +++ b/Help/variable/CTEST_CUSTOM_WARNING_EXCEPTION.rst @@ -1,6 +1,8 @@ CTEST_CUSTOM_WARNING_EXCEPTION ------------------------------ +.. versionadded:: 3.4 + A list of regular expressions which will be used to exclude when detecting warning messages in build outputs by the :command:`ctest_build` command. diff --git a/Help/variable/CTEST_CUSTOM_WARNING_MATCH.rst b/Help/variable/CTEST_CUSTOM_WARNING_MATCH.rst index 18aa6b3..53e7707 100644 --- a/Help/variable/CTEST_CUSTOM_WARNING_MATCH.rst +++ b/Help/variable/CTEST_CUSTOM_WARNING_MATCH.rst @@ -1,6 +1,8 @@ CTEST_CUSTOM_WARNING_MATCH -------------------------- +.. versionadded:: 3.4 + A list of regular expressions which will be used to detect warning messages in build outputs by the :command:`ctest_build` command. diff --git a/Help/variable/CTEST_CVS_CHECKOUT.rst b/Help/variable/CTEST_CVS_CHECKOUT.rst index 6431c02..32cf9eb 100644 --- a/Help/variable/CTEST_CVS_CHECKOUT.rst +++ b/Help/variable/CTEST_CVS_CHECKOUT.rst @@ -1,4 +1,6 @@ CTEST_CVS_CHECKOUT ------------------ +.. versionadded:: 3.1 + Deprecated. Use :variable:`CTEST_CHECKOUT_COMMAND` instead. diff --git a/Help/variable/CTEST_CVS_COMMAND.rst b/Help/variable/CTEST_CVS_COMMAND.rst index 049700b..7932070 100644 --- a/Help/variable/CTEST_CVS_COMMAND.rst +++ b/Help/variable/CTEST_CVS_COMMAND.rst @@ -1,5 +1,7 @@ CTEST_CVS_COMMAND ----------------- +.. versionadded:: 3.1 + Specify the CTest ``CVSCommand`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_CVS_UPDATE_OPTIONS.rst b/Help/variable/CTEST_CVS_UPDATE_OPTIONS.rst index d7f2f7c..359e708 100644 --- a/Help/variable/CTEST_CVS_UPDATE_OPTIONS.rst +++ b/Help/variable/CTEST_CVS_UPDATE_OPTIONS.rst @@ -1,5 +1,7 @@ CTEST_CVS_UPDATE_OPTIONS ------------------------ +.. versionadded:: 3.1 + Specify the CTest ``CVSUpdateOptions`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_DROP_LOCATION.rst b/Help/variable/CTEST_DROP_LOCATION.rst index c0f2215..f66793b 100644 --- a/Help/variable/CTEST_DROP_LOCATION.rst +++ b/Help/variable/CTEST_DROP_LOCATION.rst @@ -1,5 +1,7 @@ CTEST_DROP_LOCATION ------------------- +.. versionadded:: 3.1 + Specify the CTest ``DropLocation`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_DROP_METHOD.rst b/Help/variable/CTEST_DROP_METHOD.rst index 50fbd4d..3a84658 100644 --- a/Help/variable/CTEST_DROP_METHOD.rst +++ b/Help/variable/CTEST_DROP_METHOD.rst @@ -1,5 +1,7 @@ CTEST_DROP_METHOD ----------------- +.. versionadded:: 3.1 + Specify the CTest ``DropMethod`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_DROP_SITE.rst b/Help/variable/CTEST_DROP_SITE.rst index d15d99b..9c871e3 100644 --- a/Help/variable/CTEST_DROP_SITE.rst +++ b/Help/variable/CTEST_DROP_SITE.rst @@ -1,5 +1,7 @@ CTEST_DROP_SITE --------------- +.. versionadded:: 3.1 + Specify the CTest ``DropSite`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_DROP_SITE_CDASH.rst b/Help/variable/CTEST_DROP_SITE_CDASH.rst index 22b9776..dcdb286 100644 --- a/Help/variable/CTEST_DROP_SITE_CDASH.rst +++ b/Help/variable/CTEST_DROP_SITE_CDASH.rst @@ -1,5 +1,7 @@ CTEST_DROP_SITE_CDASH --------------------- +.. versionadded:: 3.1 + Specify the CTest ``IsCDash`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_DROP_SITE_PASSWORD.rst b/Help/variable/CTEST_DROP_SITE_PASSWORD.rst index 904d2c8..8259651 100644 --- a/Help/variable/CTEST_DROP_SITE_PASSWORD.rst +++ b/Help/variable/CTEST_DROP_SITE_PASSWORD.rst @@ -1,5 +1,7 @@ CTEST_DROP_SITE_PASSWORD ------------------------ +.. versionadded:: 3.1 + Specify the CTest ``DropSitePassword`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_DROP_SITE_USER.rst b/Help/variable/CTEST_DROP_SITE_USER.rst index a860a03..8d2e3a3 100644 --- a/Help/variable/CTEST_DROP_SITE_USER.rst +++ b/Help/variable/CTEST_DROP_SITE_USER.rst @@ -1,5 +1,7 @@ CTEST_DROP_SITE_USER -------------------- +.. versionadded:: 3.1 + Specify the CTest ``DropSiteUser`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_EXTRA_COVERAGE_GLOB.rst b/Help/variable/CTEST_EXTRA_COVERAGE_GLOB.rst index 286f7df..1d7e8d4 100644 --- a/Help/variable/CTEST_EXTRA_COVERAGE_GLOB.rst +++ b/Help/variable/CTEST_EXTRA_COVERAGE_GLOB.rst @@ -1,6 +1,8 @@ CTEST_EXTRA_COVERAGE_GLOB ------------------------- +.. versionadded:: 3.4 + A list of regular expressions which will be used to find files which should be covered by the :command:`ctest_coverage` command. diff --git a/Help/variable/CTEST_GIT_COMMAND.rst b/Help/variable/CTEST_GIT_COMMAND.rst index eb83792..eb9b440 100644 --- a/Help/variable/CTEST_GIT_COMMAND.rst +++ b/Help/variable/CTEST_GIT_COMMAND.rst @@ -1,5 +1,7 @@ CTEST_GIT_COMMAND ----------------- +.. versionadded:: 3.1 + Specify the CTest ``GITCommand`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_GIT_INIT_SUBMODULES.rst b/Help/variable/CTEST_GIT_INIT_SUBMODULES.rst index fd27003..529bfc7 100644 --- a/Help/variable/CTEST_GIT_INIT_SUBMODULES.rst +++ b/Help/variable/CTEST_GIT_INIT_SUBMODULES.rst @@ -1,5 +1,7 @@ CTEST_GIT_INIT_SUBMODULES ------------------------- +.. versionadded:: 3.6 + Specify the CTest ``GITInitSubmodules`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_GIT_UPDATE_CUSTOM.rst b/Help/variable/CTEST_GIT_UPDATE_CUSTOM.rst index 0c479e6..82a8a6a 100644 --- a/Help/variable/CTEST_GIT_UPDATE_CUSTOM.rst +++ b/Help/variable/CTEST_GIT_UPDATE_CUSTOM.rst @@ -1,5 +1,7 @@ CTEST_GIT_UPDATE_CUSTOM ----------------------- +.. versionadded:: 3.1 + Specify the CTest ``GITUpdateCustom`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_GIT_UPDATE_OPTIONS.rst b/Help/variable/CTEST_GIT_UPDATE_OPTIONS.rst index 4590a78..1568239 100644 --- a/Help/variable/CTEST_GIT_UPDATE_OPTIONS.rst +++ b/Help/variable/CTEST_GIT_UPDATE_OPTIONS.rst @@ -1,5 +1,7 @@ CTEST_GIT_UPDATE_OPTIONS ------------------------ +.. versionadded:: 3.1 + Specify the CTest ``GITUpdateOptions`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_HG_COMMAND.rst b/Help/variable/CTEST_HG_COMMAND.rst index 3854950..3372fe4 100644 --- a/Help/variable/CTEST_HG_COMMAND.rst +++ b/Help/variable/CTEST_HG_COMMAND.rst @@ -1,5 +1,7 @@ CTEST_HG_COMMAND ---------------- +.. versionadded:: 3.1 + Specify the CTest ``HGCommand`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_HG_UPDATE_OPTIONS.rst b/Help/variable/CTEST_HG_UPDATE_OPTIONS.rst index 9049c1f..85c6b03 100644 --- a/Help/variable/CTEST_HG_UPDATE_OPTIONS.rst +++ b/Help/variable/CTEST_HG_UPDATE_OPTIONS.rst @@ -1,5 +1,7 @@ CTEST_HG_UPDATE_OPTIONS ----------------------- +.. versionadded:: 3.1 + Specify the CTest ``HGUpdateOptions`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_LABELS_FOR_SUBPROJECTS.rst b/Help/variable/CTEST_LABELS_FOR_SUBPROJECTS.rst index 959596b..dd6d125 100644 --- a/Help/variable/CTEST_LABELS_FOR_SUBPROJECTS.rst +++ b/Help/variable/CTEST_LABELS_FOR_SUBPROJECTS.rst @@ -1,5 +1,7 @@ CTEST_LABELS_FOR_SUBPROJECTS ---------------------------- +.. versionadded:: 3.10 + Specify the CTest ``LabelsForSubprojects`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_MEMORYCHECK_COMMAND.rst b/Help/variable/CTEST_MEMORYCHECK_COMMAND.rst index 8c199ba..25f1bd9 100644 --- a/Help/variable/CTEST_MEMORYCHECK_COMMAND.rst +++ b/Help/variable/CTEST_MEMORYCHECK_COMMAND.rst @@ -1,5 +1,7 @@ CTEST_MEMORYCHECK_COMMAND ------------------------- +.. versionadded:: 3.1 + Specify the CTest ``MemoryCheckCommand`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_MEMORYCHECK_COMMAND_OPTIONS.rst b/Help/variable/CTEST_MEMORYCHECK_COMMAND_OPTIONS.rst index 3e26ab5..51830d5 100644 --- a/Help/variable/CTEST_MEMORYCHECK_COMMAND_OPTIONS.rst +++ b/Help/variable/CTEST_MEMORYCHECK_COMMAND_OPTIONS.rst @@ -1,5 +1,7 @@ CTEST_MEMORYCHECK_COMMAND_OPTIONS --------------------------------- +.. versionadded:: 3.1 + Specify the CTest ``MemoryCheckCommandOptions`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_MEMORYCHECK_SANITIZER_OPTIONS.rst b/Help/variable/CTEST_MEMORYCHECK_SANITIZER_OPTIONS.rst index 2de5fb6..6cd51fa 100644 --- a/Help/variable/CTEST_MEMORYCHECK_SANITIZER_OPTIONS.rst +++ b/Help/variable/CTEST_MEMORYCHECK_SANITIZER_OPTIONS.rst @@ -1,5 +1,7 @@ CTEST_MEMORYCHECK_SANITIZER_OPTIONS ----------------------------------- +.. versionadded:: 3.1 + Specify the CTest ``MemoryCheckSanitizerOptions`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_MEMORYCHECK_SUPPRESSIONS_FILE.rst b/Help/variable/CTEST_MEMORYCHECK_SUPPRESSIONS_FILE.rst index 1147ee8..a61a3ef 100644 --- a/Help/variable/CTEST_MEMORYCHECK_SUPPRESSIONS_FILE.rst +++ b/Help/variable/CTEST_MEMORYCHECK_SUPPRESSIONS_FILE.rst @@ -1,5 +1,7 @@ CTEST_MEMORYCHECK_SUPPRESSIONS_FILE ----------------------------------- +.. versionadded:: 3.1 + Specify the CTest ``MemoryCheckSuppressionFile`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_MEMORYCHECK_TYPE.rst b/Help/variable/CTEST_MEMORYCHECK_TYPE.rst index 4e7d5c0..2452228 100644 --- a/Help/variable/CTEST_MEMORYCHECK_TYPE.rst +++ b/Help/variable/CTEST_MEMORYCHECK_TYPE.rst @@ -1,6 +1,8 @@ CTEST_MEMORYCHECK_TYPE ---------------------- +.. versionadded:: 3.1 + Specify the CTest ``MemoryCheckType`` setting in a :manual:`ctest(1)` dashboard client script. Valid values are ``Valgrind``, ``Purify``, ``BoundsChecker``, ``DrMemory`` and diff --git a/Help/variable/CTEST_NIGHTLY_START_TIME.rst b/Help/variable/CTEST_NIGHTLY_START_TIME.rst index 90841f9..2d707d5 100644 --- a/Help/variable/CTEST_NIGHTLY_START_TIME.rst +++ b/Help/variable/CTEST_NIGHTLY_START_TIME.rst @@ -1,6 +1,8 @@ CTEST_NIGHTLY_START_TIME ------------------------ +.. versionadded:: 3.1 + Specify the CTest ``NightlyStartTime`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_P4_CLIENT.rst b/Help/variable/CTEST_P4_CLIENT.rst index 347ea54..0778c5b 100644 --- a/Help/variable/CTEST_P4_CLIENT.rst +++ b/Help/variable/CTEST_P4_CLIENT.rst @@ -1,5 +1,7 @@ CTEST_P4_CLIENT --------------- +.. versionadded:: 3.1 + Specify the CTest ``P4Client`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_P4_COMMAND.rst b/Help/variable/CTEST_P4_COMMAND.rst index defab12..5cc2a81 100644 --- a/Help/variable/CTEST_P4_COMMAND.rst +++ b/Help/variable/CTEST_P4_COMMAND.rst @@ -1,5 +1,7 @@ CTEST_P4_COMMAND ---------------- +.. versionadded:: 3.1 + Specify the CTest ``P4Command`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_P4_OPTIONS.rst b/Help/variable/CTEST_P4_OPTIONS.rst index fee4ce2..01b6534 100644 --- a/Help/variable/CTEST_P4_OPTIONS.rst +++ b/Help/variable/CTEST_P4_OPTIONS.rst @@ -1,5 +1,7 @@ CTEST_P4_OPTIONS ---------------- +.. versionadded:: 3.1 + Specify the CTest ``P4Options`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_P4_UPDATE_OPTIONS.rst b/Help/variable/CTEST_P4_UPDATE_OPTIONS.rst index 0e2790f..365aa3f 100644 --- a/Help/variable/CTEST_P4_UPDATE_OPTIONS.rst +++ b/Help/variable/CTEST_P4_UPDATE_OPTIONS.rst @@ -1,5 +1,7 @@ CTEST_P4_UPDATE_OPTIONS ----------------------- +.. versionadded:: 3.1 + Specify the CTest ``P4UpdateOptions`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_RESOURCE_SPEC_FILE.rst b/Help/variable/CTEST_RESOURCE_SPEC_FILE.rst index 59f365f..8e9bf01 100644 --- a/Help/variable/CTEST_RESOURCE_SPEC_FILE.rst +++ b/Help/variable/CTEST_RESOURCE_SPEC_FILE.rst @@ -1,5 +1,12 @@ CTEST_RESOURCE_SPEC_FILE ------------------------ +.. versionadded:: 3.18 + Specify the CTest ``ResourceSpecFile`` setting in a :manual:`ctest(1)` dashboard client script. + +This can also be used to specify the resource spec file from a CMake build. If +no ``RESOURCE_SPEC_FILE`` is passed to :command:`ctest_test`, and +``CTEST_RESOURCE_SPEC_FILE`` is not specified in the dashboard script, the +value of this variable from the build is used. diff --git a/Help/variable/CTEST_RUN_CURRENT_SCRIPT.rst b/Help/variable/CTEST_RUN_CURRENT_SCRIPT.rst index abc123c..32c85ad 100644 --- a/Help/variable/CTEST_RUN_CURRENT_SCRIPT.rst +++ b/Help/variable/CTEST_RUN_CURRENT_SCRIPT.rst @@ -1,5 +1,7 @@ CTEST_RUN_CURRENT_SCRIPT ------------------------ +.. versionadded:: 3.11 + Setting this to 0 prevents :manual:`ctest(1)` from being run again when it reaches the end of a script run by calling ``ctest -S``. diff --git a/Help/variable/CTEST_SCP_COMMAND.rst b/Help/variable/CTEST_SCP_COMMAND.rst index 19ea8b3..155b058 100644 --- a/Help/variable/CTEST_SCP_COMMAND.rst +++ b/Help/variable/CTEST_SCP_COMMAND.rst @@ -1,4 +1,6 @@ CTEST_SCP_COMMAND ----------------- +.. versionadded:: 3.1 + Legacy option. Not used. diff --git a/Help/variable/CTEST_SITE.rst b/Help/variable/CTEST_SITE.rst index 8a5ec25..526e6ed 100644 --- a/Help/variable/CTEST_SITE.rst +++ b/Help/variable/CTEST_SITE.rst @@ -1,5 +1,7 @@ CTEST_SITE ---------- +.. versionadded:: 3.1 + Specify the CTest ``Site`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_SOURCE_DIRECTORY.rst b/Help/variable/CTEST_SOURCE_DIRECTORY.rst index b6837d1..4c6ac54 100644 --- a/Help/variable/CTEST_SOURCE_DIRECTORY.rst +++ b/Help/variable/CTEST_SOURCE_DIRECTORY.rst @@ -1,5 +1,7 @@ CTEST_SOURCE_DIRECTORY ---------------------- +.. versionadded:: 3.1 + Specify the CTest ``SourceDirectory`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_SUBMIT_URL.rst b/Help/variable/CTEST_SUBMIT_URL.rst index 7d84da4..b6e7f68 100644 --- a/Help/variable/CTEST_SUBMIT_URL.rst +++ b/Help/variable/CTEST_SUBMIT_URL.rst @@ -1,5 +1,7 @@ CTEST_SUBMIT_URL ---------------- +.. versionadded:: 3.14 + Specify the CTest ``SubmitURL`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_SVN_COMMAND.rst b/Help/variable/CTEST_SVN_COMMAND.rst index af90143..e97acd0 100644 --- a/Help/variable/CTEST_SVN_COMMAND.rst +++ b/Help/variable/CTEST_SVN_COMMAND.rst @@ -1,5 +1,7 @@ CTEST_SVN_COMMAND ----------------- +.. versionadded:: 3.1 + Specify the CTest ``SVNCommand`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_SVN_OPTIONS.rst b/Help/variable/CTEST_SVN_OPTIONS.rst index 76551dc..5326e20 100644 --- a/Help/variable/CTEST_SVN_OPTIONS.rst +++ b/Help/variable/CTEST_SVN_OPTIONS.rst @@ -1,5 +1,7 @@ CTEST_SVN_OPTIONS ----------------- +.. versionadded:: 3.1 + Specify the CTest ``SVNOptions`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_SVN_UPDATE_OPTIONS.rst b/Help/variable/CTEST_SVN_UPDATE_OPTIONS.rst index 5f01a19..24e0bbf 100644 --- a/Help/variable/CTEST_SVN_UPDATE_OPTIONS.rst +++ b/Help/variable/CTEST_SVN_UPDATE_OPTIONS.rst @@ -1,5 +1,7 @@ CTEST_SVN_UPDATE_OPTIONS ------------------------ +.. versionadded:: 3.1 + Specify the CTest ``SVNUpdateOptions`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_TEST_LOAD.rst b/Help/variable/CTEST_TEST_LOAD.rst index 80823fe..b6a9d62 100644 --- a/Help/variable/CTEST_TEST_LOAD.rst +++ b/Help/variable/CTEST_TEST_LOAD.rst @@ -1,6 +1,8 @@ CTEST_TEST_LOAD --------------- +.. versionadded:: 3.4 + Specify the ``TestLoad`` setting in the :ref:`CTest Test Step` of a :manual:`ctest(1)` dashboard client script. This sets the default value for the ``TEST_LOAD`` option of the :command:`ctest_test` diff --git a/Help/variable/CTEST_TEST_TIMEOUT.rst b/Help/variable/CTEST_TEST_TIMEOUT.rst index c031437..61d9191 100644 --- a/Help/variable/CTEST_TEST_TIMEOUT.rst +++ b/Help/variable/CTEST_TEST_TIMEOUT.rst @@ -1,5 +1,7 @@ CTEST_TEST_TIMEOUT ------------------ +.. versionadded:: 3.1 + Specify the CTest ``TimeOut`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_TRIGGER_SITE.rst b/Help/variable/CTEST_TRIGGER_SITE.rst index a50e405..6abb852 100644 --- a/Help/variable/CTEST_TRIGGER_SITE.rst +++ b/Help/variable/CTEST_TRIGGER_SITE.rst @@ -1,4 +1,6 @@ CTEST_TRIGGER_SITE ------------------ +.. versionadded:: 3.1 + Legacy option. Not used. diff --git a/Help/variable/CTEST_UPDATE_COMMAND.rst b/Help/variable/CTEST_UPDATE_COMMAND.rst index 90155d0..c4ed645 100644 --- a/Help/variable/CTEST_UPDATE_COMMAND.rst +++ b/Help/variable/CTEST_UPDATE_COMMAND.rst @@ -1,5 +1,7 @@ CTEST_UPDATE_COMMAND -------------------- +.. versionadded:: 3.1 + Specify the CTest ``UpdateCommand`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_UPDATE_OPTIONS.rst b/Help/variable/CTEST_UPDATE_OPTIONS.rst index e43d61d..96c4b6c 100644 --- a/Help/variable/CTEST_UPDATE_OPTIONS.rst +++ b/Help/variable/CTEST_UPDATE_OPTIONS.rst @@ -1,5 +1,7 @@ CTEST_UPDATE_OPTIONS -------------------- +.. versionadded:: 3.1 + Specify the CTest ``UpdateOptions`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_UPDATE_VERSION_ONLY.rst b/Help/variable/CTEST_UPDATE_VERSION_ONLY.rst index a862baa..f7c863c 100644 --- a/Help/variable/CTEST_UPDATE_VERSION_ONLY.rst +++ b/Help/variable/CTEST_UPDATE_VERSION_ONLY.rst @@ -1,5 +1,7 @@ CTEST_UPDATE_VERSION_ONLY ------------------------- +.. versionadded:: 3.1 + Specify the CTest :ref:`UpdateVersionOnly <UpdateVersionOnly>` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_UPDATE_VERSION_OVERRIDE.rst b/Help/variable/CTEST_UPDATE_VERSION_OVERRIDE.rst index 39fbaba..87918cb 100644 --- a/Help/variable/CTEST_UPDATE_VERSION_OVERRIDE.rst +++ b/Help/variable/CTEST_UPDATE_VERSION_OVERRIDE.rst @@ -1,5 +1,7 @@ CTEST_UPDATE_VERSION_OVERRIDE ----------------------------- +.. versionadded:: 3.15 + Specify the CTest :ref:`UpdateVersionOverride <UpdateVersionOverride>` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/CTEST_USE_LAUNCHERS.rst b/Help/variable/CTEST_USE_LAUNCHERS.rst index 9f48a2e..728cdc5 100644 --- a/Help/variable/CTEST_USE_LAUNCHERS.rst +++ b/Help/variable/CTEST_USE_LAUNCHERS.rst @@ -1,5 +1,7 @@ CTEST_USE_LAUNCHERS ------------------- +.. versionadded:: 3.1 + Specify the CTest ``UseLaunchers`` setting in a :manual:`ctest(1)` dashboard client script. diff --git a/Help/variable/GHS-MULTI.rst b/Help/variable/GHS-MULTI.rst index fe3b17e..bb139af 100644 --- a/Help/variable/GHS-MULTI.rst +++ b/Help/variable/GHS-MULTI.rst @@ -1,4 +1,6 @@ GHS-MULTI --------- +.. versionadded:: 3.3 + ``True`` when using :generator:`Green Hills MULTI` generator. diff --git a/Help/variable/IOS.rst b/Help/variable/IOS.rst index e5cc3f6..b27be55 100644 --- a/Help/variable/IOS.rst +++ b/Help/variable/IOS.rst @@ -1,4 +1,6 @@ IOS --- +.. versionadded:: 3.14 + Set to ``1`` when the target system (:variable:`CMAKE_SYSTEM_NAME`) is ``iOS``. diff --git a/Help/variable/MINGW.rst b/Help/variable/MINGW.rst index 6d29be4..27c56ea 100644 --- a/Help/variable/MINGW.rst +++ b/Help/variable/MINGW.rst @@ -1,6 +1,8 @@ MINGW ----- +.. versionadded:: 3.2 + ``True`` when using MinGW Set to ``true`` when the compiler is some version of MinGW. diff --git a/Help/variable/MSVC14.rst b/Help/variable/MSVC14.rst index 79e0c10..1eb5183 100644 --- a/Help/variable/MSVC14.rst +++ b/Help/variable/MSVC14.rst @@ -1,6 +1,8 @@ MSVC14 ------ +.. versionadded:: 3.1 + Discouraged. Use the :variable:`MSVC_VERSION` variable instead. ``True`` when using the Microsoft Visual Studio ``v140`` or ``v141`` diff --git a/Help/variable/MSVC_TOOLSET_VERSION.rst b/Help/variable/MSVC_TOOLSET_VERSION.rst index f4a33e2..c642a9f 100644 --- a/Help/variable/MSVC_TOOLSET_VERSION.rst +++ b/Help/variable/MSVC_TOOLSET_VERSION.rst @@ -1,6 +1,8 @@ MSVC_TOOLSET_VERSION -------------------- +.. versionadded:: 3.12 + The toolset version of Microsoft Visual C/C++ being used if any. If MSVC-like is being used, this variable is set based on the version of the compiler as given by the :variable:`MSVC_VERSION` variable. diff --git a/Help/variable/MSYS.rst b/Help/variable/MSYS.rst index 25ddc7f..6be7681 100644 --- a/Help/variable/MSYS.rst +++ b/Help/variable/MSYS.rst @@ -1,4 +1,6 @@ MSYS ---- +.. versionadded:: 3.14 + ``True`` when using the :generator:`MSYS Makefiles` generator. diff --git a/Help/variable/PROJECT-NAME_DESCRIPTION.rst b/Help/variable/PROJECT-NAME_DESCRIPTION.rst index 2b88b1a..f372f5c 100644 --- a/Help/variable/PROJECT-NAME_DESCRIPTION.rst +++ b/Help/variable/PROJECT-NAME_DESCRIPTION.rst @@ -1,5 +1,7 @@ <PROJECT-NAME>_DESCRIPTION -------------------------- +.. versionadded:: 3.12 + Value given to the ``DESCRIPTION`` option of the most recent call to the :command:`project` command with project name ``<PROJECT-NAME>``, if any. diff --git a/Help/variable/PROJECT-NAME_HOMEPAGE_URL.rst b/Help/variable/PROJECT-NAME_HOMEPAGE_URL.rst index 22cc304..4800b13 100644 --- a/Help/variable/PROJECT-NAME_HOMEPAGE_URL.rst +++ b/Help/variable/PROJECT-NAME_HOMEPAGE_URL.rst @@ -1,5 +1,7 @@ <PROJECT-NAME>_HOMEPAGE_URL --------------------------- +.. versionadded:: 3.12 + Value given to the ``HOMEPAGE_URL`` option of the most recent call to the :command:`project` command with project name ``<PROJECT-NAME>``, if any. diff --git a/Help/variable/PROJECT_DESCRIPTION.rst b/Help/variable/PROJECT_DESCRIPTION.rst index 2833e11..1fefcdc 100644 --- a/Help/variable/PROJECT_DESCRIPTION.rst +++ b/Help/variable/PROJECT_DESCRIPTION.rst @@ -1,6 +1,8 @@ PROJECT_DESCRIPTION ------------------- +.. versionadded:: 3.9 + Short project description given to the project command. This is the description given to the most recently called :command:`project` diff --git a/Help/variable/PROJECT_HOMEPAGE_URL.rst b/Help/variable/PROJECT_HOMEPAGE_URL.rst index 754c9e8..0d2c937 100644 --- a/Help/variable/PROJECT_HOMEPAGE_URL.rst +++ b/Help/variable/PROJECT_HOMEPAGE_URL.rst @@ -1,6 +1,8 @@ PROJECT_HOMEPAGE_URL -------------------- +.. versionadded:: 3.12 + The homepage URL of the project. This is the homepage URL given to the most recently called :command:`project` diff --git a/Help/variable/PackageName_ROOT.rst b/Help/variable/PackageName_ROOT.rst index 1c2fd34..3f7ee4c 100644 --- a/Help/variable/PackageName_ROOT.rst +++ b/Help/variable/PackageName_ROOT.rst @@ -1,6 +1,8 @@ <PackageName>_ROOT ------------------ +.. versionadded:: 3.12.1 + Calls to :command:`find_package(<PackageName>)` will search in prefixes specified by the ``<PackageName>_ROOT`` CMake variable, where ``<PackageName>`` is the name given to the :command:`find_package` call diff --git a/Help/variable/WINCE.rst b/Help/variable/WINCE.rst index 54ff7de..4dca297 100644 --- a/Help/variable/WINCE.rst +++ b/Help/variable/WINCE.rst @@ -1,5 +1,7 @@ WINCE ----- +.. versionadded:: 3.1 + True when the :variable:`CMAKE_SYSTEM_NAME` variable is set to ``WindowsCE``. diff --git a/Help/variable/WINDOWS_PHONE.rst b/Help/variable/WINDOWS_PHONE.rst index 61d91b0..bf7099d 100644 --- a/Help/variable/WINDOWS_PHONE.rst +++ b/Help/variable/WINDOWS_PHONE.rst @@ -1,5 +1,7 @@ WINDOWS_PHONE ------------- +.. versionadded:: 3.1 + True when the :variable:`CMAKE_SYSTEM_NAME` variable is set to ``WindowsPhone``. diff --git a/Help/variable/WINDOWS_STORE.rst b/Help/variable/WINDOWS_STORE.rst index dae3b53..13831c2 100644 --- a/Help/variable/WINDOWS_STORE.rst +++ b/Help/variable/WINDOWS_STORE.rst @@ -1,5 +1,7 @@ WINDOWS_STORE ------------- +.. versionadded:: 3.1 + True when the :variable:`CMAKE_SYSTEM_NAME` variable is set to ``WindowsStore``. diff --git a/Help/variable/XCODE.rst b/Help/variable/XCODE.rst index 99f20fb..167ca86 100644 --- a/Help/variable/XCODE.rst +++ b/Help/variable/XCODE.rst @@ -1,4 +1,6 @@ XCODE ----- +.. versionadded:: 3.7 + ``True`` when using :generator:`Xcode` generator. diff --git a/Modules/AndroidTestUtilities.cmake b/Modules/AndroidTestUtilities.cmake index 95e2ef7..ddccf58 100644 --- a/Modules/AndroidTestUtilities.cmake +++ b/Modules/AndroidTestUtilities.cmake @@ -5,6 +5,8 @@ AndroidTestUtilities ------------------------ +.. versionadded:: 3.7 + Create a test that automatically loads specified data onto an Android device. Introduction diff --git a/Modules/CPack.cmake b/Modules/CPack.cmake index 553b966..532e368 100644 --- a/Modules/CPack.cmake +++ b/Modules/CPack.cmake @@ -22,9 +22,13 @@ section below for details. The generated binary installers will contain all files that have been installed via CMake's :command:`install` command (and the deprecated commands :command:`install_files`, :command:`install_programs`, and -:command:`install_targets`). Certain kinds of binary installers can be -configured such that users can select individual application components to -install. See the :module:`CPackComponent` module for further details. +:command:`install_targets`). Note that the ``DESTINATION`` option of the +:command:`install` command must be a relative path; otherwise installed files +are ignored by CPack. + +Certain kinds of binary installers can be configured such that users can select +individual application components to install. See the :module:`CPackComponent` +module for further details. Source packages (configured through ``CPackSourceConfig.cmake`` and generated by the :cpack_gen:`CPack Archive Generator`) will contain all source files in @@ -79,7 +83,7 @@ one may call ``cmake --build . --target package`` or ``make package`` or If CMake is run with the Makefile or Ninja generator, then ``include(CPack)`` also generates a target ``package_source``. To build a source package, -instead of ``cpack -G TGZ --config CPackConfig.cmake`` one may call +instead of ``cpack -G TGZ --config CPackSourceConfig.cmake`` one may call ``cmake --build . --target package_source``, ``make package_source``, or ``ninja package_source``. diff --git a/Modules/CPackIFW.cmake b/Modules/CPackIFW.cmake index 80a907f..58e6a37 100644 --- a/Modules/CPackIFW.cmake +++ b/Modules/CPackIFW.cmake @@ -5,6 +5,8 @@ CPackIFW -------- +.. versionadded:: 3.1 + This module looks for the location of the command-line utilities supplied with the `Qt Installer Framework <http://doc.qt.io/qtinstallerframework/index.html>`_ (QtIFW). diff --git a/Modules/CPackIFWConfigureFile.cmake b/Modules/CPackIFWConfigureFile.cmake index 0abe0da..296b13f 100644 --- a/Modules/CPackIFWConfigureFile.cmake +++ b/Modules/CPackIFWConfigureFile.cmake @@ -5,6 +5,8 @@ CPackIFWConfigureFile --------------------- +.. versionadded:: 3.8 + The module defines :command:`configure_file` similar command to configure file templates prepared in QtIFW/SDK/Creator style. diff --git a/Modules/CSharpUtilities.cmake b/Modules/CSharpUtilities.cmake index 6a4b5c7..dedb146 100644 --- a/Modules/CSharpUtilities.cmake +++ b/Modules/CSharpUtilities.cmake @@ -5,6 +5,8 @@ CSharpUtilities --------------- +.. versionadded:: 3.8 + Functions to make configuration of CSharp/.NET targets easier. A collection of CMake utility functions useful for dealing with CSharp diff --git a/Modules/CTestCoverageCollectGCOV.cmake b/Modules/CTestCoverageCollectGCOV.cmake index b1268be..a01a2fe 100644 --- a/Modules/CTestCoverageCollectGCOV.cmake +++ b/Modules/CTestCoverageCollectGCOV.cmake @@ -5,6 +5,8 @@ CTestCoverageCollectGCOV ------------------------ +.. versionadded:: 3.2 + This module provides the ``ctest_coverage_collect_gcov`` function. This function runs gcov on all .gcda files found in the binary tree diff --git a/Modules/CheckFortranCompilerFlag.cmake b/Modules/CheckFortranCompilerFlag.cmake index 299cd8c..b8fac97 100644 --- a/Modules/CheckFortranCompilerFlag.cmake +++ b/Modules/CheckFortranCompilerFlag.cmake @@ -5,6 +5,8 @@ CheckFortranCompilerFlag ------------------------ +.. versionadded:: 3.3 + Check whether the Fortran compiler supports a given flag. .. command:: check_fortran_compiler_flag diff --git a/Modules/CheckFortranSourceCompiles.cmake b/Modules/CheckFortranSourceCompiles.cmake index 3354bfb..d776b0c 100644 --- a/Modules/CheckFortranSourceCompiles.cmake +++ b/Modules/CheckFortranSourceCompiles.cmake @@ -5,6 +5,8 @@ CheckFortranSourceCompiles -------------------------- +.. versionadded:: 3.1 + Check if given Fortran source compiles and links into an executable. .. command:: check_fortran_source_compiles diff --git a/Modules/CheckFortranSourceRuns.cmake b/Modules/CheckFortranSourceRuns.cmake index f858b84..a710352 100644 --- a/Modules/CheckFortranSourceRuns.cmake +++ b/Modules/CheckFortranSourceRuns.cmake @@ -5,6 +5,8 @@ CheckFortranSourceRuns ---------------------- +.. versionadded:: 3.14 + Check if given Fortran source compiles and links into an executable and can subsequently be run. diff --git a/Modules/CheckIPOSupported.cmake b/Modules/CheckIPOSupported.cmake index 90a9f61..1dd951d 100644 --- a/Modules/CheckIPOSupported.cmake +++ b/Modules/CheckIPOSupported.cmake @@ -5,6 +5,8 @@ CheckIPOSupported ----------------- +.. versionadded:: 3.9 + Check whether the compiler supports an interprocedural optimization (IPO/LTO). Use this before enabling the :prop_tgt:`INTERPROCEDURAL_OPTIMIZATION` target property. diff --git a/Modules/CheckLinkerFlag.cmake b/Modules/CheckLinkerFlag.cmake index beda5fe..cd7301f 100644 --- a/Modules/CheckLinkerFlag.cmake +++ b/Modules/CheckLinkerFlag.cmake @@ -5,6 +5,8 @@ CheckLinkerFlag --------------- +.. versionadded:: 3.18 + Check whether the compiler supports a given link flag. .. command:: check_linker_flag diff --git a/Modules/CheckOBJCCompilerFlag.cmake b/Modules/CheckOBJCCompilerFlag.cmake index 1d975da..a98f429 100644 --- a/Modules/CheckOBJCCompilerFlag.cmake +++ b/Modules/CheckOBJCCompilerFlag.cmake @@ -5,6 +5,8 @@ CheckOBJCCompilerFlag --------------------- +.. versionadded:: 3.16 + Check whether the Objective-C compiler supports a given flag. .. command:: check_objc_compiler_flag diff --git a/Modules/CheckOBJCSourceCompiles.cmake b/Modules/CheckOBJCSourceCompiles.cmake index 601f1fa..502ed74 100644 --- a/Modules/CheckOBJCSourceCompiles.cmake +++ b/Modules/CheckOBJCSourceCompiles.cmake @@ -5,6 +5,8 @@ CheckOBJCSourceCompiles ----------------------- +.. versionadded:: 3.16 + Check if given Objective-C source compiles and links into an executable. .. command:: check_objc_source_compiles diff --git a/Modules/CheckOBJCSourceRuns.cmake b/Modules/CheckOBJCSourceRuns.cmake index 6684693..9d4fb1b 100644 --- a/Modules/CheckOBJCSourceRuns.cmake +++ b/Modules/CheckOBJCSourceRuns.cmake @@ -5,6 +5,8 @@ CheckOBJCSourceRuns ------------------- +.. versionadded:: 3.16 + Check if given Objective-C source compiles and links into an executable and can subsequently be run. diff --git a/Modules/CheckOBJCXXCompilerFlag.cmake b/Modules/CheckOBJCXXCompilerFlag.cmake index c32741b..7944ab0 100644 --- a/Modules/CheckOBJCXXCompilerFlag.cmake +++ b/Modules/CheckOBJCXXCompilerFlag.cmake @@ -5,6 +5,8 @@ CheckOBJCXXCompilerFlag ----------------------- +.. versionadded:: 3.16 + Check whether the Objective-C++ compiler supports a given flag. .. command:: check_objcxx_compiler_flag diff --git a/Modules/CheckOBJCXXSourceCompiles.cmake b/Modules/CheckOBJCXXSourceCompiles.cmake index 2ee79f4..7b839e4 100644 --- a/Modules/CheckOBJCXXSourceCompiles.cmake +++ b/Modules/CheckOBJCXXSourceCompiles.cmake @@ -5,6 +5,8 @@ CheckOBJCXXSourceCompiles ------------------------- +.. versionadded:: 3.16 + Check if given Objective-C++ source compiles and links into an executable. .. command:: check_objcxx_source_compiles diff --git a/Modules/CheckOBJCXXSourceRuns.cmake b/Modules/CheckOBJCXXSourceRuns.cmake index 7f7e04f..c327598 100644 --- a/Modules/CheckOBJCXXSourceRuns.cmake +++ b/Modules/CheckOBJCXXSourceRuns.cmake @@ -5,6 +5,8 @@ CheckOBJCXXSourceRuns --------------------- +.. versionadded:: 3.16 + Check if given Objective-C++ source compiles and links into an executable and can subsequently be run. diff --git a/Modules/CheckPIESupported.cmake b/Modules/CheckPIESupported.cmake index 6d63f0b..a99d8c4 100644 --- a/Modules/CheckPIESupported.cmake +++ b/Modules/CheckPIESupported.cmake @@ -5,6 +5,8 @@ CheckPIESupported ----------------- +.. versionadded:: 3.14 + Check whether the linker supports Position Independent Code (PIE) or No Position Independent Code (NO_PIE) for executables. Use this to ensure that the :prop_tgt:`POSITION_INDEPENDENT_CODE` target diff --git a/Modules/FetchContent.cmake b/Modules/FetchContent.cmake index e05ca96..c85e2d8 100644 --- a/Modules/FetchContent.cmake +++ b/Modules/FetchContent.cmake @@ -5,6 +5,8 @@ FetchContent ------------------ +.. versionadded:: 3.11 + .. only:: html .. contents:: diff --git a/Modules/FindArmadillo.cmake b/Modules/FindArmadillo.cmake index 243b9e0..c8a31a0 100644 --- a/Modules/FindArmadillo.cmake +++ b/Modules/FindArmadillo.cmake @@ -84,6 +84,7 @@ if(_ARMA_USE_WRAPPER) # Link to the armadillo wrapper library. find_library(ARMADILLO_LIBRARY NAMES armadillo + NAMES_PER_DIR PATHS "$ENV{ProgramFiles}/Armadillo/lib" "$ENV{ProgramFiles}/Armadillo/lib64" diff --git a/Modules/FindBLAS.cmake b/Modules/FindBLAS.cmake index 29871c5..1e3b563 100644 --- a/Modules/FindBLAS.cmake +++ b/Modules/FindBLAS.cmake @@ -208,6 +208,7 @@ macro(CHECK_BLAS_LIBRARIES LIBRARIES _prefix _name _flags _list _threadlibs _add if(_libraries_work) find_library(${_prefix}_${_library}_LIBRARY NAMES ${_library} + NAMES_PER_DIR PATHS ${_extaddlibdir} PATH_SUFFIXES ${_subdirs} ) @@ -477,7 +478,7 @@ if(BLA_VENDOR MATCHES "Intel" OR BLA_VENDOR STREQUAL "All") set(BLAS_mkl_OS_NAME "lin") endif() if(DEFINED ENV{MKLROOT}) - set(BLAS_mkl_MKLROOT "$ENV{MKLROOT}") + file(TO_CMAKE_PATH "$ENV{MKLROOT}" BLAS_mkl_MKLROOT) # If MKLROOT points to the subdirectory 'mkl', use the parent directory instead # so we can better detect other relevant libraries in 'compiler' or 'tbb': get_filename_component(BLAS_mkl_MKLROOT_LAST_DIR "${BLAS_mkl_MKLROOT}" NAME) diff --git a/Modules/FindBZip2.cmake b/Modules/FindBZip2.cmake index 98ab72c..5704d1d 100644 --- a/Modules/FindBZip2.cmake +++ b/Modules/FindBZip2.cmake @@ -45,8 +45,8 @@ set(_BZIP2_PATHS PATHS find_path(BZIP2_INCLUDE_DIR bzlib.h ${_BZIP2_PATHS} PATH_SUFFIXES include) if (NOT BZIP2_LIBRARIES) - find_library(BZIP2_LIBRARY_RELEASE NAMES bz2 bzip2 libbz2 libbzip2 ${_BZIP2_PATHS} PATH_SUFFIXES lib) - find_library(BZIP2_LIBRARY_DEBUG NAMES bz2d bzip2d libbz2d libbzip2d ${_BZIP2_PATHS} PATH_SUFFIXES lib) + find_library(BZIP2_LIBRARY_RELEASE NAMES bz2 bzip2 libbz2 libbzip2 NAMES_PER_DIR ${_BZIP2_PATHS} PATH_SUFFIXES lib) + find_library(BZIP2_LIBRARY_DEBUG NAMES bz2d bzip2d libbz2d libbzip2d NAMES_PER_DIR ${_BZIP2_PATHS} PATH_SUFFIXES lib) include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake) SELECT_LIBRARY_CONFIGURATIONS(BZIP2) diff --git a/Modules/FindCUDA/select_compute_arch.cmake b/Modules/FindCUDA/select_compute_arch.cmake index 7ddb709..c11725d 100644 --- a/Modules/FindCUDA/select_compute_arch.cmake +++ b/Modules/FindCUDA/select_compute_arch.cmake @@ -5,9 +5,9 @@ # - "Auto" detects local machine GPU compute arch at runtime. # - "Common" and "All" cover common and entire subsets of architectures # ARCH_AND_PTX : NAME | NUM.NUM | NUM.NUM(NUM.NUM) | NUM.NUM+PTX -# NAME: Fermi Kepler Maxwell Kepler+Tegra Kepler+Tesla Maxwell+Tegra Pascal Volta Turing +# NAME: Fermi Kepler Maxwell Kepler+Tegra Kepler+Tesla Maxwell+Tegra Pascal Volta Turing Ampere # NUM: Any number. Only those pairs are currently accepted by NVCC though: -# 2.0 2.1 3.0 3.2 3.5 3.7 5.0 5.2 5.3 6.0 6.2 7.0 7.2 7.5 +# 2.0 2.1 3.0 3.2 3.5 3.7 5.0 5.2 5.3 6.0 6.2 7.0 7.2 7.5 8.0 # Returns LIST of flags to be added to CUDA_NVCC_FLAGS in ${out_variable} # Additionally, sets ${out_variable}_readable to the resulting numeric list # Example: @@ -30,7 +30,12 @@ endif() set(CUDA_KNOWN_GPU_ARCHITECTURES "Fermi" "Kepler" "Maxwell") # This list will be used for CUDA_ARCH_NAME = Common option (enabled by default) -set(CUDA_COMMON_GPU_ARCHITECTURES "3.0" "3.5" "5.0") +set(CUDA_COMMON_GPU_ARCHITECTURES "3.5" "5.0") +# 3.0 is removed in CUDA 11, see: +# https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html#deprecated-features +if(CUDA_VERSION VERSION_LESS "11.0") + list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "3.0") +endif() if(CUDA_VERSION VERSION_LESS "7.0") set(CUDA_LIMIT_GPU_ARCHITECTURE "5.2") @@ -55,27 +60,39 @@ if(CUDA_VERSION VERSION_GREATER_EQUAL "8.0") list(APPEND CUDA_ALL_GPU_ARCHITECTURES "6.0" "6.1" "6.2") if(CUDA_VERSION VERSION_LESS "9.0") - list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "6.1+PTX") + list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "6.2+PTX") set(CUDA_LIMIT_GPU_ARCHITECTURE "7.0") endif() endif () if(CUDA_VERSION VERSION_GREATER_EQUAL "9.0") list(APPEND CUDA_KNOWN_GPU_ARCHITECTURES "Volta") - list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "7.0" "7.0+PTX") - list(APPEND CUDA_ALL_GPU_ARCHITECTURES "7.0" "7.0+PTX" "7.2" "7.2+PTX") + list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "7.0") + list(APPEND CUDA_ALL_GPU_ARCHITECTURES "7.0" "7.2") if(CUDA_VERSION VERSION_LESS "10.0") + list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "7.2+PTX") set(CUDA_LIMIT_GPU_ARCHITECTURE "8.0") endif() endif() if(CUDA_VERSION VERSION_GREATER_EQUAL "10.0") list(APPEND CUDA_KNOWN_GPU_ARCHITECTURES "Turing") - list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "7.5" "7.5+PTX") - list(APPEND CUDA_ALL_GPU_ARCHITECTURES "7.5" "7.5+PTX") + list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "7.5") + list(APPEND CUDA_ALL_GPU_ARCHITECTURES "7.5") if(CUDA_VERSION VERSION_LESS "11.0") + set(CUDA_LIMIT_GPU_ARCHITECTURE "8.0") + list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "7.5+PTX") + endif() +endif() + +if(CUDA_VERSION VERSION_GREATER_EQUAL "11.0") + list(APPEND CUDA_KNOWN_GPU_ARCHITECTURES "Ampere") + list(APPEND CUDA_COMMON_GPU_ARCHITECTURES "8.0" "8.0+PTX") + list(APPEND CUDA_ALL_GPU_ARCHITECTURES "8.0") + + if(CUDA_VERSION VERSION_LESS "12.0") set(CUDA_LIMIT_GPU_ARCHITECTURE "9.0") endif() endif() @@ -214,6 +231,9 @@ function(CUDA_SELECT_NVCC_ARCH_FLAGS out_variable) elseif(${arch_name} STREQUAL "Turing") set(arch_bin 7.5) set(arch_ptx 7.5) + elseif(${arch_name} STREQUAL "Ampere") + set(arch_bin 8.0) + set(arch_ptx 8.0) else() message(SEND_ERROR "Unknown CUDA Architecture Name ${arch_name} in CUDA_SELECT_NVCC_ARCH_FLAGS") endif() diff --git a/Modules/FindCUDAToolkit.cmake b/Modules/FindCUDAToolkit.cmake index 47bc546..4e52e03 100644 --- a/Modules/FindCUDAToolkit.cmake +++ b/Modules/FindCUDAToolkit.cmake @@ -5,6 +5,8 @@ FindCUDAToolkit --------------- +.. versionadded:: 3.17 + This script locates the NVIDIA CUDA toolkit and the associated libraries, but does not require the ``CUDA`` language be enabled for a given project. This module does not search for the NVIDIA CUDA Samples. diff --git a/Modules/FindCURL.cmake b/Modules/FindCURL.cmake index 919babc..3acadc2 100644 --- a/Modules/FindCURL.cmake +++ b/Modules/FindCURL.cmake @@ -92,6 +92,7 @@ if(NOT CURL_LIBRARY) curllib_static # Windows older "Win32 - MSVC" prebuilts (libcurl.lib, e.g. libcurl-7.15.5-win32-msvc.zip): libcurl + NAMES_PER_DIR HINTS ${PC_CURL_LIBRARY_DIRS} ) mark_as_advanced(CURL_LIBRARY_RELEASE) @@ -100,6 +101,7 @@ if(NOT CURL_LIBRARY) # Windows MSVC CMake builds in debug configuration on vcpkg: libcurl-d_imp libcurl-d + NAMES_PER_DIR HINTS ${PC_CURL_LIBRARY_DIRS} ) mark_as_advanced(CURL_LIBRARY_DEBUG) diff --git a/Modules/FindEXPAT.cmake b/Modules/FindEXPAT.cmake index 15b419a..b0bb02a 100644 --- a/Modules/FindEXPAT.cmake +++ b/Modules/FindEXPAT.cmake @@ -38,7 +38,7 @@ pkg_check_modules(PC_EXPAT QUIET expat) find_path(EXPAT_INCLUDE_DIR NAMES expat.h HINTS ${PC_EXPAT_INCLUDE_DIRS}) # Look for the library. -find_library(EXPAT_LIBRARY NAMES expat libexpat HINTS ${PC_EXPAT_LIBRARY_DIRS}) +find_library(EXPAT_LIBRARY NAMES expat libexpat NAMES_PER_DIR HINTS ${PC_EXPAT_LIBRARY_DIRS}) if (EXPAT_INCLUDE_DIR AND EXISTS "${EXPAT_INCLUDE_DIR}/expat.h") file(STRINGS "${EXPAT_INCLUDE_DIR}/expat.h" expat_version_str diff --git a/Modules/FindEnvModules.cmake b/Modules/FindEnvModules.cmake index 4dd5116..a4ac0b4 100644 --- a/Modules/FindEnvModules.cmake +++ b/Modules/FindEnvModules.cmake @@ -5,6 +5,8 @@ FindEnvModules -------------- +.. versionadded:: 3.15 + Locate an environment module implementation and make commands available to CMake scripts to use them. This is compatible with both Lua-based Lmod and TCL-based EnvironmentModules. diff --git a/Modules/FindFontconfig.cmake b/Modules/FindFontconfig.cmake index a6f0180..5228831 100644 --- a/Modules/FindFontconfig.cmake +++ b/Modules/FindFontconfig.cmake @@ -5,6 +5,8 @@ FindFontconfig -------------- +.. versionadded:: 3.14 + Find Fontconfig headers and library. Imported Targets diff --git a/Modules/FindGIF.cmake b/Modules/FindGIF.cmake index d5a143e..cea9cd8 100644 --- a/Modules/FindGIF.cmake +++ b/Modules/FindGIF.cmake @@ -60,6 +60,7 @@ set(POTENTIAL_GIF_LIBS gif libgif ungif libungif giflib giflib4) find_library(GIF_LIBRARY NAMES ${POTENTIAL_GIF_LIBS} + NAMES_PER_DIR HINTS ENV GIF_DIR PATH_SUFFIXES lib diff --git a/Modules/FindGLEW.cmake b/Modules/FindGLEW.cmake index 27ffa13..080371a 100644 --- a/Modules/FindGLEW.cmake +++ b/Modules/FindGLEW.cmake @@ -139,11 +139,13 @@ __glew_set_find_library_suffix(SHARED) find_library(GLEW_SHARED_LIBRARY_RELEASE NAMES GLEW glew glew32 + NAMES_PER_DIR PATH_SUFFIXES lib lib64 libx32 lib/Release/${_arch} PATHS ENV GLEW_ROOT) find_library(GLEW_SHARED_LIBRARY_DEBUG NAMES GLEWd glewd glew32d + NAMES_PER_DIR PATH_SUFFIXES lib lib64 PATHS ENV GLEW_ROOT) @@ -152,11 +154,13 @@ __glew_set_find_library_suffix(STATIC) find_library(GLEW_STATIC_LIBRARY_RELEASE NAMES GLEW glew glew32s + NAMES_PER_DIR PATH_SUFFIXES lib lib64 libx32 lib/Release/${_arch} PATHS ENV GLEW_ROOT) find_library(GLEW_STATIC_LIBRARY_DEBUG NAMES GLEWds glewds glew32ds + NAMES_PER_DIR PATH_SUFFIXES lib lib64 PATHS ENV GLEW_ROOT) diff --git a/Modules/FindGSL.cmake b/Modules/FindGSL.cmake index da1b3c4..3d4e7f9 100644 --- a/Modules/FindGSL.cmake +++ b/Modules/FindGSL.cmake @@ -5,6 +5,8 @@ FindGSL -------- +.. versionadded:: 3.2 + Find the native GNU Scientific Library (GSL) includes and libraries. The GNU Scientific Library (GSL) is a numerical library for C and C++ diff --git a/Modules/FindGTest.cmake b/Modules/FindGTest.cmake index 53cab1a..10e31b2 100644 --- a/Modules/FindGTest.cmake +++ b/Modules/FindGTest.cmake @@ -96,6 +96,27 @@ function(__gtest_find_library _name) mark_as_advanced(${_name}) endfunction() +function(__gtest_find_library_configuration _name _lib _cfg_suffix) + set(_libs ${_lib}) + if(MSVC AND GTEST_MSVC_SEARCH STREQUAL "MD") + # The provided /MD project files for Google Test add -md suffixes to the + # library names. + list(INSERT _libs 0 ${_lib}-md) + endif() + list(TRANSFORM _libs APPEND "${_cfg_suffix}") + + __gtest_find_library(${_name} ${_libs}) +endfunction() + +include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake) +function(__gtest_find_and_select_library_configurations _basename _lib) + __gtest_find_library_configuration(${_basename}_LIBRARY_RELEASE ${_lib} "") + __gtest_find_library_configuration(${_basename}_LIBRARY_DEBUG ${_lib} "d") + + select_library_configurations(${_basename}) + set(${_basename}_LIBRARY ${${_basename}_LIBRARY} PARENT_SCOPE) +endfunction() + macro(__gtest_determine_windows_library_type _var) if(EXISTS "${${_var}}") file(TO_NATIVE_PATH "${${_var}}" _lib_path) @@ -187,18 +208,13 @@ find_path(GTEST_INCLUDE_DIR gtest/gtest.h ) mark_as_advanced(GTEST_INCLUDE_DIR) -if(MSVC AND GTEST_MSVC_SEARCH STREQUAL "MD") - # The provided /MD project files for Google Test add -md suffixes to the - # library names. - __gtest_find_library(GTEST_LIBRARY gtest-md gtest) - __gtest_find_library(GTEST_LIBRARY_DEBUG gtest-mdd gtestd) - __gtest_find_library(GTEST_MAIN_LIBRARY gtest_main-md gtest_main) - __gtest_find_library(GTEST_MAIN_LIBRARY_DEBUG gtest_main-mdd gtest_maind) -else() - __gtest_find_library(GTEST_LIBRARY gtest) - __gtest_find_library(GTEST_LIBRARY_DEBUG gtestd) - __gtest_find_library(GTEST_MAIN_LIBRARY gtest_main) - __gtest_find_library(GTEST_MAIN_LIBRARY_DEBUG gtest_maind) +# Allow GTEST_LIBRARY and GTEST_MAIN_LIBRARY to be set manually, as the +# locations of the gtest and gtest_main libraries, respectively. +if(NOT GTEST_LIBRARY) + __gtest_find_and_select_library_configurations(GTEST gtest) +endif() +if(NOT GTEST_MAIN_LIBRARY) + __gtest_find_and_select_library_configurations(GTEST_MAIN gtest_main) endif() include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) diff --git a/Modules/FindICU.cmake b/Modules/FindICU.cmake index 38081f5..c8b3e1f 100644 --- a/Modules/FindICU.cmake +++ b/Modules/FindICU.cmake @@ -5,6 +5,8 @@ FindICU ------- +.. versionadded:: 3.7 + Find the International Components for Unicode (ICU) libraries and programs. diff --git a/Modules/FindIce.cmake b/Modules/FindIce.cmake index 5ce2b42..0f821e8 100644 --- a/Modules/FindIce.cmake +++ b/Modules/FindIce.cmake @@ -5,6 +5,8 @@ FindIce ------- +.. versionadded:: 3.1 + Find the ZeroC Internet Communication Engine (ICE) programs, libraries and datafiles. diff --git a/Modules/FindIconv.cmake b/Modules/FindIconv.cmake index bf20f6f..41b7550 100644 --- a/Modules/FindIconv.cmake +++ b/Modules/FindIconv.cmake @@ -5,6 +5,8 @@ FindIconv --------- +.. versionadded:: 3.11 + This module finds the ``iconv()`` POSIX.1 functions on the system. These functions might be provided in the regular C library or externally in the form of an additional library. @@ -110,6 +112,7 @@ endif() find_library(Iconv_LIBRARY NAMES ${Iconv_LIBRARY_NAMES} + NAMES_PER_DIR DOC "iconv library (potentially the C library)") mark_as_advanced(Iconv_INCLUDE_DIR) diff --git a/Modules/FindIntl.cmake b/Modules/FindIntl.cmake index 3818d45..1a09a60 100644 --- a/Modules/FindIntl.cmake +++ b/Modules/FindIntl.cmake @@ -5,6 +5,8 @@ FindIntl -------- +.. versionadded:: 3.2 + Find the Gettext libintl headers and libraries. This module reports information about the Gettext libintl @@ -40,7 +42,7 @@ find_path(Intl_INCLUDE_DIR mark_as_advanced(Intl_INCLUDE_DIR) # Find all Intl libraries -find_library(Intl_LIBRARY "intl" +find_library(Intl_LIBRARY "intl" NAMES_PER_DIR DOC "libintl libraries (if not in the C library)") mark_as_advanced(Intl_LIBRARY) diff --git a/Modules/FindJPEG.cmake b/Modules/FindJPEG.cmake index 0bb6989..632fc9a 100644 --- a/Modules/FindJPEG.cmake +++ b/Modules/FindJPEG.cmake @@ -58,8 +58,8 @@ foreach(name ${jpeg_names}) endforeach() if(NOT JPEG_LIBRARY) - find_library(JPEG_LIBRARY_RELEASE NAMES ${jpeg_names}) - find_library(JPEG_LIBRARY_DEBUG NAMES ${jpeg_names_debug}) + find_library(JPEG_LIBRARY_RELEASE NAMES ${jpeg_names} NAMES_PER_DIR) + find_library(JPEG_LIBRARY_DEBUG NAMES ${jpeg_names_debug} NAMES_PER_DIR) include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake) select_library_configurations(JPEG) mark_as_advanced(JPEG_LIBRARY_RELEASE JPEG_LIBRARY_DEBUG) diff --git a/Modules/FindJava.cmake b/Modules/FindJava.cmake index 945df3c..9db740b 100644 --- a/Modules/FindJava.cmake +++ b/Modules/FindJava.cmake @@ -160,9 +160,8 @@ if(Java_JAVA_EXECUTABLE) OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_STRIP_TRAILING_WHITESPACE) if( res ) - if(var MATCHES "No Java runtime present, requesting install") - set_property(CACHE Java_JAVA_EXECUTABLE - PROPERTY VALUE "Java_JAVA_EXECUTABLE-NOTFOUND") + if(var MATCHES "Unable to locate a Java Runtime to invoke|No Java runtime present, requesting install") + set(Java_JAVA_EXECUTABLE Java_JAVA_EXECUTABLE-NOTFOUND) elseif(${Java_FIND_REQUIRED}) message( FATAL_ERROR "Error executing java -version" ) else() diff --git a/Modules/FindLAPACK.cmake b/Modules/FindLAPACK.cmake index 01ce074..f996d4c 100644 --- a/Modules/FindLAPACK.cmake +++ b/Modules/FindLAPACK.cmake @@ -162,6 +162,7 @@ macro(CHECK_LAPACK_LIBRARIES LIBRARIES _prefix _name _flags _list _threadlibs _a if(_libraries_work) find_library(${_prefix}_${_library}_LIBRARY NAMES ${_library} + NAMES_PER_DIR PATHS ${_extaddlibdir} PATH_SUFFIXES ${_subdirs} ) @@ -279,7 +280,7 @@ if(BLAS_FOUND) set(LAPACK_mkl_OS_NAME "lin") endif() if(DEFINED ENV{MKLROOT}) - set(LAPACK_mkl_MKLROOT "$ENV{MKLROOT}") + file(TO_CMAKE_PATH "$ENV{MKLROOT}" LAPACK_mkl_MKLROOT) # If MKLROOT points to the subdirectory 'mkl', use the parent directory instead # so we can better detect other relevant libraries in 'compiler' or 'tbb': get_filename_component(LAPACK_mkl_MKLROOT_LAST_DIR "${LAPACK_mkl_MKLROOT}" NAME) diff --git a/Modules/FindLTTngUST.cmake b/Modules/FindLTTngUST.cmake index 9cd17eb..f478e4d 100644 --- a/Modules/FindLTTngUST.cmake +++ b/Modules/FindLTTngUST.cmake @@ -5,6 +5,8 @@ FindLTTngUST ------------ +.. versionadded:: 3.6 + Find `Linux Trace Toolkit Next Generation (LTTng-UST) <http://lttng.org/>`__ library. diff --git a/Modules/FindLibLZMA.cmake b/Modules/FindLibLZMA.cmake index 200d6bf..4a79a10 100644 --- a/Modules/FindLibLZMA.cmake +++ b/Modules/FindLibLZMA.cmake @@ -43,8 +43,8 @@ This module will set the following variables in your project: find_path(LIBLZMA_INCLUDE_DIR lzma.h ) if(NOT LIBLZMA_LIBRARY) - find_library(LIBLZMA_LIBRARY_RELEASE NAMES lzma liblzma PATH_SUFFIXES lib) - find_library(LIBLZMA_LIBRARY_DEBUG NAMES lzmad liblzmad PATH_SUFFIXES lib) + find_library(LIBLZMA_LIBRARY_RELEASE NAMES lzma liblzma NAMES_PER_DIR PATH_SUFFIXES lib) + find_library(LIBLZMA_LIBRARY_DEBUG NAMES lzmad liblzmad NAMES_PER_DIR PATH_SUFFIXES lib) include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake) select_library_configurations(LIBLZMA) else() diff --git a/Modules/FindLibinput.cmake b/Modules/FindLibinput.cmake index c1fe455..88d5b2f 100644 --- a/Modules/FindLibinput.cmake +++ b/Modules/FindLibinput.cmake @@ -5,6 +5,8 @@ FindLibinput ------------ +.. versionadded:: 3.14 + Find libinput headers and library. Imported Targets diff --git a/Modules/FindLua.cmake b/Modules/FindLua.cmake index 0b0c970..c4361b7 100644 --- a/Modules/FindLua.cmake +++ b/Modules/FindLua.cmake @@ -48,7 +48,7 @@ unset(_lua_append_versions) # this is a function only to have all the variables inside go away automatically function(_lua_get_versions) - set(LUA_VERSIONS5 5.3 5.2 5.1 5.0) + set(LUA_VERSIONS5 5.4 5.3 5.2 5.1 5.0) if (Lua_FIND_VERSION_EXACT) if (Lua_FIND_VERSION_COUNT GREATER 1) diff --git a/Modules/FindMPI.cmake b/Modules/FindMPI.cmake index 786bcc8..25de562 100644 --- a/Modules/FindMPI.cmake +++ b/Modules/FindMPI.cmake @@ -1153,15 +1153,19 @@ macro(_MPI_create_imported_target LANG) add_library(MPI::MPI_${LANG} INTERFACE IMPORTED) endif() - # When this is consumed for compiling CUDA, use '-Xcompiler' to wrap '-pthread'. + # When this is consumed for compiling CUDA, use '-Xcompiler' to wrap '-pthread' and '-fexceptions'. string(REPLACE "-pthread" "$<$<COMPILE_LANG_AND_ID:CUDA,NVIDIA>:SHELL:-Xcompiler >-pthread" _MPI_${LANG}_COMPILE_OPTIONS "${MPI_${LANG}_COMPILE_OPTIONS}") + string(REPLACE "-fexceptions" "$<$<COMPILE_LANG_AND_ID:CUDA,NVIDIA>:SHELL:-Xcompiler >-fexceptions" + _MPI_${LANG}_COMPILE_OPTIONS "${MPI_${LANG}_COMPILE_OPTIONS}") set_property(TARGET MPI::MPI_${LANG} PROPERTY INTERFACE_COMPILE_OPTIONS "${_MPI_${LANG}_COMPILE_OPTIONS}") unset(_MPI_${LANG}_COMPILE_OPTIONS) set_property(TARGET MPI::MPI_${LANG} PROPERTY INTERFACE_COMPILE_DEFINITIONS "${MPI_${LANG}_COMPILE_DEFINITIONS}") if(MPI_${LANG}_LINK_FLAGS) + string(REPLACE "-pthread" "$<$<LINK_LANG_AND_ID:CUDA,NVIDIA>:-Xlinker >-pthread" + _MPI_${LANG}_LINK_FLAGS "${MPI_${LANG}_LINK_FLAGS}") set_property(TARGET MPI::MPI_${LANG} PROPERTY INTERFACE_LINK_OPTIONS "SHELL:${MPI_${LANG}_LINK_FLAGS}") endif() # If the compiler links MPI implicitly, no libraries will be found as they're contained within diff --git a/Modules/FindMatlab.cmake b/Modules/FindMatlab.cmake index e42c206..05ec3ae 100644 --- a/Modules/FindMatlab.cmake +++ b/Modules/FindMatlab.cmake @@ -992,7 +992,10 @@ function(matlab_add_mex) endif() endif() - if(NOT Matlab_VERSION_STRING VERSION_LESS "9.4") # For 9.4 (R2018a) and newer, add API macro + # For 9.4 (R2018a) and newer, add API macro. + # Add it for unknown versions too, just in case. + if(NOT Matlab_VERSION_STRING VERSION_LESS "9.4" + OR Matlab_VERSION_STRING STREQUAL "unknown") if(${${prefix}_R2018a}) set(MEX_API_MACRO "MATLAB_DEFAULT_RELEASE=R2018a") else() diff --git a/Modules/FindODBC.cmake b/Modules/FindODBC.cmake index 3f710db..884653c 100644 --- a/Modules/FindODBC.cmake +++ b/Modules/FindODBC.cmake @@ -5,6 +5,8 @@ FindODBC -------- +.. versionadded:: 3.12 + Find an Open Database Connectivity (ODBC) include directory and library. On Windows, when building with Visual Studio, this module assumes the ODBC diff --git a/Modules/FindOpenACC.cmake b/Modules/FindOpenACC.cmake index 398dcf5..ed52e35 100644 --- a/Modules/FindOpenACC.cmake +++ b/Modules/FindOpenACC.cmake @@ -5,6 +5,8 @@ FindOpenACC ----------- +.. versionadded:: 3.10 + Detect OpenACC support by the compiler. This module can be used to detect OpenACC support in a compiler. diff --git a/Modules/FindOpenCL.cmake b/Modules/FindOpenCL.cmake index 34a203e..b3e5a9f 100644 --- a/Modules/FindOpenCL.cmake +++ b/Modules/FindOpenCL.cmake @@ -5,6 +5,8 @@ FindOpenCL ---------- +.. versionadded:: 3.1 + Finds Open Computing Language (OpenCL) IMPORTED Targets diff --git a/Modules/FindOpenMP.cmake b/Modules/FindOpenMP.cmake index a4b1e1e..bb38e28 100644 --- a/Modules/FindOpenMP.cmake +++ b/Modules/FindOpenMP.cmake @@ -509,8 +509,8 @@ foreach(LANG IN LISTS OpenMP_FINDLIST) _OPENMP_GET_SPEC_DATE("${LANG}" OpenMP_${LANG}_SPEC_DATE_INTERNAL) set(OpenMP_${LANG}_SPEC_DATE "${OpenMP_${LANG}_SPEC_DATE_INTERNAL}" CACHE INTERNAL "${LANG} compiler's OpenMP specification date") - _OPENMP_SET_VERSION_BY_SPEC_DATE("${LANG}") endif() + _OPENMP_SET_VERSION_BY_SPEC_DATE("${LANG}") set(OpenMP_${LANG}_FIND_QUIETLY ${OpenMP_FIND_QUIETLY}) set(OpenMP_${LANG}_FIND_REQUIRED ${OpenMP_FIND_REQUIRED}) diff --git a/Modules/FindPNG.cmake b/Modules/FindPNG.cmake index f1fe89a..fd0e4e9 100644 --- a/Modules/FindPNG.cmake +++ b/Modules/FindPNG.cmake @@ -76,8 +76,8 @@ if(ZLIB_FOUND) # For compatibility with versions prior to this multi-config search, honor # any PNG_LIBRARY that is already specified and skip the search. if(NOT PNG_LIBRARY) - find_library(PNG_LIBRARY_RELEASE NAMES ${PNG_NAMES}) - find_library(PNG_LIBRARY_DEBUG NAMES ${PNG_NAMES_DEBUG}) + find_library(PNG_LIBRARY_RELEASE NAMES ${PNG_NAMES} NAMES_PER_DIR) + find_library(PNG_LIBRARY_DEBUG NAMES ${PNG_NAMES_DEBUG} NAMES_PER_DIR) include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake) select_library_configurations(PNG) mark_as_advanced(PNG_LIBRARY_RELEASE PNG_LIBRARY_DEBUG) diff --git a/Modules/FindPatch.cmake b/Modules/FindPatch.cmake index 4998839..4108651 100644 --- a/Modules/FindPatch.cmake +++ b/Modules/FindPatch.cmake @@ -5,6 +5,8 @@ FindPatch --------- +.. versionadded:: 3.10 + The module defines the following variables: ``Patch_EXECUTABLE`` diff --git a/Modules/FindProtobuf.cmake b/Modules/FindProtobuf.cmake index e09717d..f6d8fe3 100644 --- a/Modules/FindProtobuf.cmake +++ b/Modules/FindProtobuf.cmake @@ -376,11 +376,13 @@ function(_protobuf_find_libraries name filename) else() find_library(${name}_LIBRARY_RELEASE NAMES ${filename} + NAMES_PER_DIR PATHS ${Protobuf_SRC_ROOT_FOLDER}/vsprojects/${_PROTOBUF_ARCH_DIR}Release) mark_as_advanced(${name}_LIBRARY_RELEASE) find_library(${name}_LIBRARY_DEBUG NAMES ${filename}d ${filename} + NAMES_PER_DIR PATHS ${Protobuf_SRC_ROOT_FOLDER}/vsprojects/${_PROTOBUF_ARCH_DIR}Debug) mark_as_advanced(${name}_LIBRARY_DEBUG) diff --git a/Modules/FindPython.cmake b/Modules/FindPython.cmake index 01b82c4..f503cca 100644 --- a/Modules/FindPython.cmake +++ b/Modules/FindPython.cmake @@ -5,6 +5,8 @@ FindPython ---------- +.. versionadded:: 3.12 + Find Python interpreter, compiler and development environment (include directories and libraries). diff --git a/Modules/FindPython2.cmake b/Modules/FindPython2.cmake index 84c0c73..42d87c8 100644 --- a/Modules/FindPython2.cmake +++ b/Modules/FindPython2.cmake @@ -5,6 +5,8 @@ FindPython2 ----------- +.. versionadded:: 3.12 + Find Python 2 interpreter, compiler and development environment (include directories and libraries). diff --git a/Modules/FindPython3.cmake b/Modules/FindPython3.cmake index f142c07..b58ee30 100644 --- a/Modules/FindPython3.cmake +++ b/Modules/FindPython3.cmake @@ -5,6 +5,8 @@ FindPython3 ----------- +.. versionadded:: 3.12 + Find Python 3 interpreter, compiler and development environment (include directories and libraries). diff --git a/Modules/FindSQLite3.cmake b/Modules/FindSQLite3.cmake index 374d7af..88c7dd2 100644 --- a/Modules/FindSQLite3.cmake +++ b/Modules/FindSQLite3.cmake @@ -5,6 +5,8 @@ FindSQLite3 ----------- +.. versionadded:: 3.14 + Find the SQLite libraries, v3 IMPORTED targets diff --git a/Modules/FindTIFF.cmake b/Modules/FindTIFF.cmake index 00a3a41..3b74c94 100644 --- a/Modules/FindTIFF.cmake +++ b/Modules/FindTIFF.cmake @@ -5,7 +5,14 @@ FindTIFF -------- -Find the TIFF library (``libtiff``). +Find the TIFF library (``libtiff``, https://libtiff.gitlab.io/libtiff/). + +Optional COMPONENTS +^^^^^^^^^^^^^^^^^^^ + +This module supports the optional component `CXX`, for use with the COMPONENTS +argument of the :command:`find_package` command. This component has an associated +imported target, as described below. Imported targets ^^^^^^^^^^^^^^^^ @@ -15,6 +22,11 @@ This module defines the following :prop_tgt:`IMPORTED` targets: ``TIFF::TIFF`` The TIFF library, if found. +``TIFF::CXX`` + The C++ wrapper libtiffxx, if requested by the `COMPONENTS CXX` option, + if the compiler is not MSVC (which includes the C++ wrapper in libtiff), + and if found. + Result variables ^^^^^^^^^^^^^^^^ @@ -36,10 +48,19 @@ The following cache variables may also be set: ``TIFF_INCLUDE_DIR`` the directory containing the TIFF headers -``TIFF_LIBRARY`` - the path to the TIFF library +``TIFF_LIBRARY_RELEASE`` + the path to the TIFF library for release configurations +``TIFF_LIBRARY_DEBUG`` + the path to the TIFF library for debug configurations +``TIFFXX_LIBRARY_RELEASE`` + the path to the TIFFXX library for release configurations +``TIFFXX_LIBRARY_DEBUG`` + the path to the TIFFXX library for debug configurations #]=======================================================================] +cmake_policy(PUSH) +cmake_policy(SET CMP0057 NEW) + find_path(TIFF_INCLUDE_DIR tiff.h) set(TIFF_NAMES ${TIFF_NAMES} tiff libtiff tiff3 libtiff3) @@ -54,8 +75,6 @@ if(NOT TIFF_LIBRARY) select_library_configurations(TIFF) mark_as_advanced(TIFF_LIBRARY_RELEASE TIFF_LIBRARY_DEBUG) endif() -unset(TIFF_NAMES) -unset(TIFF_NAMES_DEBUG) if(TIFF_INCLUDE_DIR AND EXISTS "${TIFF_INCLUDE_DIR}/tiffvers.h") file(STRINGS "${TIFF_INCLUDE_DIR}/tiffvers.h" tiff_version_str @@ -66,13 +85,46 @@ if(TIFF_INCLUDE_DIR AND EXISTS "${TIFF_INCLUDE_DIR}/tiffvers.h") unset(tiff_version_str) endif() +foreach(_comp IN LISTS TIFF_FIND_COMPONENTS) + if(_comp STREQUAL "CXX") + if(MSVC) + # C++ bindings are built into the main tiff library. + set(TIFF_CXX_FOUND 1) + else() + foreach(name ${TIFF_NAMES}) + list(APPEND TIFFXX_NAMES "${name}xx") + list(APPEND TIFFXX_NAMES_DEBUG "${name}xxd") + endforeach() + find_library(TIFFXX_LIBRARY_RELEASE NAMES ${TIFFXX_NAMES}) + find_library(TIFFXX_LIBRARY_DEBUG NAMES ${TIFFXX_NAMES_DEBUG}) + include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake) + select_library_configurations(TIFFXX) + mark_as_advanced(TIFFXX_LIBRARY_RELEASE TIFFXX_LIBRARY_DEBUG) + unset(TIFFXX_NAMES) + unset(TIFFXX_NAMES_DEBUG) + if(TIFFXX_LIBRARY) + set(TIFF_CXX_FOUND 1) + endif() + endif() + endif() +endforeach() +unset(_comp) + +unset(TIFF_NAMES) +unset(TIFF_NAMES_DEBUG) + include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) FIND_PACKAGE_HANDLE_STANDARD_ARGS(TIFF + HANDLE_COMPONENTS REQUIRED_VARS TIFF_LIBRARY TIFF_INCLUDE_DIR VERSION_VAR TIFF_VERSION_STRING) if(TIFF_FOUND) set(TIFF_LIBRARIES ${TIFF_LIBRARY}) + if("CXX" IN_LIST TIFF_FIND_COMPONENTS AND NOT MSVC) + list(APPEND TIFF_LIBRARIES ${TIFFXX_LIBRARY}) + endif() + set(TIFF_INCLUDE_DIRS "${TIFF_INCLUDE_DIR}") if(NOT TARGET TIFF::TIFF) @@ -101,6 +153,41 @@ if(TIFF_FOUND) IMPORTED_LOCATION_DEBUG "${TIFF_LIBRARY_DEBUG}") endif() endif() + + if(NOT TARGET TIFF::CXX) + if(MSVC) + add_library(TIFF::CXX INTERFACE IMPORTED) + set_property(TARGET TIFF::CXX PROPERTY INTERFACE_LINK_LIBRARIES TIFF::TIFF) + else() + add_library(TIFF::CXX UNKNOWN IMPORTED) + set_property(TARGET TIFF::CXX PROPERTY INTERFACE_LINK_LIBRARIES TIFF::TIFF) + if(TIFF_INCLUDE_DIRS) + set_target_properties(TIFF::CXX PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${TIFF_INCLUDE_DIRS}") + endif() + if(EXISTS "${TIFFXX_LIBRARY}") + set_target_properties(TIFF::CXX PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "CXX" + IMPORTED_LOCATION "${TIFFXX_LIBRARY}") + endif() + if(EXISTS "${TIFFXX_LIBRARY_RELEASE}") + set_property(TARGET TIFF::CXX APPEND PROPERTY + IMPORTED_CONFIGURATIONS RELEASE) + set_target_properties(TIFF::CXX PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX" + IMPORTED_LOCATION_RELEASE "${TIFFXX_LIBRARY_RELEASE}") + endif() + if(EXISTS "${TIFFXX_LIBRARY_DEBUG}") + set_property(TARGET TIFF::CXX APPEND PROPERTY + IMPORTED_CONFIGURATIONS DEBUG) + set_target_properties(TIFF::CXX PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX" + IMPORTED_LOCATION_DEBUG "${TIFFXX_LIBRARY_DEBUG}") + endif() + endif() + endif() + endif() -mark_as_advanced(TIFF_INCLUDE_DIR TIFF_LIBRARY) +mark_as_advanced(TIFF_INCLUDE_DIR) +cmake_policy(POP) diff --git a/Modules/FindVulkan.cmake b/Modules/FindVulkan.cmake index 4b999b6..0ec6013 100644 --- a/Modules/FindVulkan.cmake +++ b/Modules/FindVulkan.cmake @@ -5,6 +5,8 @@ FindVulkan ---------- +.. versionadded:: 3.7 + Find Vulkan, which is a low-overhead, cross-platform 3D graphics and computing API. @@ -14,6 +16,9 @@ IMPORTED Targets This module defines :prop_tgt:`IMPORTED` target ``Vulkan::Vulkan``, if Vulkan has been found. +This module defines :prop_tgt:`IMPORTED` target ``Vulkan::glslc``, if +Vulkan and the GLSLC SPIR-V compiler has been found. + Result Variables ^^^^^^^^^^^^^^^^ @@ -23,10 +28,11 @@ This module defines the following variables:: Vulkan_INCLUDE_DIRS - include directories for Vulkan Vulkan_LIBRARIES - link against this library to use Vulkan -The module will also define two cache variables:: +The module will also define three cache variables:: - Vulkan_INCLUDE_DIR - the Vulkan include directory - Vulkan_LIBRARY - the path to the Vulkan library + Vulkan_INCLUDE_DIR - the Vulkan include directory + Vulkan_LIBRARY - the path to the Vulkan library + Vulkan_GLSLC_EXECUTABLE - the path to the GLSL SPIR-V compiler Hints ^^^^^ @@ -53,6 +59,11 @@ if(WIN32) "$ENV{VULKAN_SDK}/Lib" "$ENV{VULKAN_SDK}/Bin" ) + find_program(Vulkan_GLSLC_EXECUTABLE + NAMES glslc + HINTS + "$ENV{VULKAN_SDK}/Bin" + ) elseif(CMAKE_SIZEOF_VOID_P EQUAL 4) find_library(Vulkan_LIBRARY NAMES vulkan-1 @@ -60,6 +71,11 @@ if(WIN32) "$ENV{VULKAN_SDK}/Lib32" "$ENV{VULKAN_SDK}/Bin32" ) + find_program(Vulkan_GLSLC_EXECUTABLE + NAMES glslc + HINTS + "$ENV{VULKAN_SDK}/Bin32" + ) endif() else() find_path(Vulkan_INCLUDE_DIR @@ -68,6 +84,9 @@ else() find_library(Vulkan_LIBRARY NAMES vulkan HINTS "$ENV{VULKAN_SDK}/lib") + find_program(Vulkan_GLSLC_EXECUTABLE + NAMES glslc + HINTS "$ENV{VULKAN_SDK}/bin") endif() set(Vulkan_LIBRARIES ${Vulkan_LIBRARY}) @@ -78,7 +97,7 @@ find_package_handle_standard_args(Vulkan DEFAULT_MSG Vulkan_LIBRARY Vulkan_INCLUDE_DIR) -mark_as_advanced(Vulkan_INCLUDE_DIR Vulkan_LIBRARY) +mark_as_advanced(Vulkan_INCLUDE_DIR Vulkan_LIBRARY Vulkan_GLSLC_EXECUTABLE) if(Vulkan_FOUND AND NOT TARGET Vulkan::Vulkan) add_library(Vulkan::Vulkan UNKNOWN IMPORTED) @@ -86,3 +105,8 @@ if(Vulkan_FOUND AND NOT TARGET Vulkan::Vulkan) IMPORTED_LOCATION "${Vulkan_LIBRARIES}" INTERFACE_INCLUDE_DIRECTORIES "${Vulkan_INCLUDE_DIRS}") endif() + +if(Vulkan_FOUND AND Vulkan_GLSLC_EXECUTABLE AND NOT TARGET Vulkan::glslc) + add_executable(Vulkan::glslc IMPORTED) + set_property(TARGET Vulkan::glslc PROPERTY IMPORTED_LOCATION "${Vulkan_GLSLC_EXECUTABLE}") +endif() diff --git a/Modules/FindXCTest.cmake b/Modules/FindXCTest.cmake index 15721e1..1f6e825 100644 --- a/Modules/FindXCTest.cmake +++ b/Modules/FindXCTest.cmake @@ -5,6 +5,8 @@ FindXCTest ---------- +.. versionadded:: 3.3 + Functions to help creating and executing XCTest bundles. An XCTest bundle is a CFBundle with a special product-type diff --git a/Modules/FindXalanC.cmake b/Modules/FindXalanC.cmake index 3adaa44..ca9195c 100644 --- a/Modules/FindXalanC.cmake +++ b/Modules/FindXalanC.cmake @@ -5,6 +5,8 @@ FindXalanC ----------- +.. versionadded:: 3.5 + Find the Apache Xalan-C++ XSL transform processor headers and libraries. Imported targets diff --git a/Modules/FindXercesC.cmake b/Modules/FindXercesC.cmake index db78b61..abe18c0 100644 --- a/Modules/FindXercesC.cmake +++ b/Modules/FindXercesC.cmake @@ -5,6 +5,8 @@ FindXercesC ----------- +.. versionadded:: 3.1 + Find the Apache Xerces-C++ validating XML parser headers and libraries. Imported targets diff --git a/Modules/GoogleTest.cmake b/Modules/GoogleTest.cmake index b210a77..2ef7382 100644 --- a/Modules/GoogleTest.cmake +++ b/Modules/GoogleTest.cmake @@ -5,6 +5,8 @@ GoogleTest ---------- +.. versionadded:: 3.9 + This module defines functions to help use the Google Test infrastructure. Two mechanisms for adding tests are provided. :command:`gtest_add_tests` has been around for some time, originally via ``find_package(GTest)``. diff --git a/Modules/InstallRequiredSystemLibraries.cmake b/Modules/InstallRequiredSystemLibraries.cmake index 04687b9..caca697 100644 --- a/Modules/InstallRequiredSystemLibraries.cmake +++ b/Modules/InstallRequiredSystemLibraries.cmake @@ -69,7 +69,7 @@ foreach(LANG IN ITEMS C CXX Fortran) if(CMAKE_SIZEOF_VOID_P EQUAL 8) set(_Intel_archdir intel64) else() - set(_Intel_archdir x86) + set(_Intel_archdir ia32) endif() set(_Intel_compiler_ver ${CMAKE_${LANG}_COMPILER_VERSION}) if(WIN32) diff --git a/Modules/Platform/Darwin-Initialize.cmake b/Modules/Platform/Darwin-Initialize.cmake index 80e9a40..aa0e554 100644 --- a/Modules/Platform/Darwin-Initialize.cmake +++ b/Modules/Platform/Darwin-Initialize.cmake @@ -62,10 +62,10 @@ elseif("${CMAKE_GENERATOR}" MATCHES Xcode # Find installed SDKs in either Xcode-4.3+ or pre-4.3 SDKs directory. set(_CMAKE_OSX_SDKS_DIR "") if(OSX_DEVELOPER_ROOT) - foreach(d Platforms/MacOSX.platform/Developer/SDKs SDKs) - file(GLOB _CMAKE_OSX_SDKS ${OSX_DEVELOPER_ROOT}/${d}/*) + foreach(_d Platforms/MacOSX.platform/Developer/SDKs SDKs) + file(GLOB _CMAKE_OSX_SDKS ${OSX_DEVELOPER_ROOT}/${_d}/*) if(_CMAKE_OSX_SDKS) - set(_CMAKE_OSX_SDKS_DIR ${OSX_DEVELOPER_ROOT}/${d}) + set(_CMAKE_OSX_SDKS_DIR ${OSX_DEVELOPER_ROOT}/${_d}) break() endif() endforeach() @@ -88,10 +88,10 @@ elseif("${CMAKE_GENERATOR}" MATCHES Xcode # pick an SDK that works set(_CMAKE_OSX_SYSROOT_DEFAULT) - foreach(ver ${CMAKE_OSX_DEPLOYMENT_TARGET} - ${_CURRENT_OSX_VERSION} - ${_CMAKE_OSX_LATEST_SDK_VERSION}) - set(_CMAKE_OSX_DEPLOYMENT_TARGET ${ver}) + foreach(_ver ${CMAKE_OSX_DEPLOYMENT_TARGET} + ${_CURRENT_OSX_VERSION} + ${_CMAKE_OSX_LATEST_SDK_VERSION}) + set(_CMAKE_OSX_DEPLOYMENT_TARGET ${_ver}) set(_CMAKE_OSX_SDKS_VER ${_CMAKE_OSX_DEPLOYMENT_TARGET}${_CMAKE_OSX_SDKS_VER_SUFFIX_${_CMAKE_OSX_DEPLOYMENT_TARGET}}) set(_CMAKE_OSX_SYSROOT_CHECK "${_CMAKE_OSX_SDKS_DIR}/MacOSX${_CMAKE_OSX_SDKS_VER}.sdk") if(IS_DIRECTORY "${_CMAKE_OSX_SYSROOT_CHECK}") @@ -113,8 +113,8 @@ endif() # Set cache variable - end user may change this during ccmake or cmake-gui configure. # Choose the type based on the current value. set(_CMAKE_OSX_SYSROOT_TYPE STRING) -foreach(v CMAKE_OSX_SYSROOT _CMAKE_OSX_SYSROOT_DEFAULT) - if("x${${v}}" MATCHES "/") +foreach(_v CMAKE_OSX_SYSROOT _CMAKE_OSX_SYSROOT_DEFAULT) + if("x${${_v}}" MATCHES "/") set(_CMAKE_OSX_SYSROOT_TYPE PATH) break() endif() diff --git a/Modules/WriteCompilerDetectionHeader.cmake b/Modules/WriteCompilerDetectionHeader.cmake index 23d81b5..5100035 100644 --- a/Modules/WriteCompilerDetectionHeader.cmake +++ b/Modules/WriteCompilerDetectionHeader.cmake @@ -5,6 +5,8 @@ WriteCompilerDetectionHeader ---------------------------- +.. versionadded:: 3.1 + This module provides the function ``write_compiler_detection_header()``. This function can be used to generate a file suitable for preprocessor diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index 1b6bb00..ee8767f 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -412,6 +412,8 @@ set(SRCS cmSourceFileLocationKind.h cmSourceGroup.cxx cmSourceGroup.h + cmStandardLevelResolver.cxx + cmStandardLevelResolver.h cmState.cxx cmState.h cmStateDirectory.cxx diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index e4bd907..c78852e 100644 --- a/Source/CMakeVersion.cmake +++ b/Source/CMakeVersion.cmake @@ -1,7 +1,7 @@ # CMake version number components. set(CMake_VERSION_MAJOR 3) set(CMake_VERSION_MINOR 18) -set(CMake_VERSION_PATCH 20200629) +set(CMake_VERSION_PATCH 20200713) #set(CMake_VERSION_RC 0) set(CMake_VERSION_IS_DIRTY 0) diff --git a/Source/CPack/cmCPackDragNDropGenerator.cxx b/Source/CPack/cmCPackDragNDropGenerator.cxx index fe7abf4..cefb906 100644 --- a/Source/CPack/cmCPackDragNDropGenerator.cxx +++ b/Source/CPack/cmCPackDragNDropGenerator.cxx @@ -8,7 +8,9 @@ #include <map> #include <CoreFoundation/CoreFoundation.h> +#include <cm3p/kwiml/abi.h> +#include "cmsys/Base64.h" #include "cmsys/FStream.hxx" #include "cmsys/RegularExpression.hxx" @@ -18,6 +20,7 @@ #include "cmGeneratedFileStream.h" #include "cmStringAlgorithms.h" #include "cmSystemTools.h" +#include "cmXMLWriter.h" #ifdef HAVE_CoreServices // For the old LocaleStringToLangAndRegionCodes() function, to convert @@ -26,36 +29,28 @@ # include <CoreServices/CoreServices.h> #endif -static const char* SLAHeader = - "data 'LPic' (5000) {\n" - " $\"0002 0011 0003 0001 0000 0000 0002 0000\"\n" - " $\"0008 0003 0000 0001 0004 0000 0004 0005\"\n" - " $\"0000 000E 0006 0001 0005 0007 0000 0007\"\n" - " $\"0008 0000 0047 0009 0000 0034 000A 0001\"\n" - " $\"0035 000B 0001 0020 000C 0000 0011 000D\"\n" - " $\"0000 005B 0004 0000 0033 000F 0001 000C\"\n" - " $\"0010 0000 000B 000E 0000\"\n" - "};\n" - "\n"; - -static const char* SLASTREnglish = - "resource 'STR#' (5002, \"English\") {\n" - " {\n" - " \"English\",\n" - " \"Agree\",\n" - " \"Disagree\",\n" - " \"Print\",\n" - " \"Save...\",\n" - " \"You agree to the License Agreement terms when you click \"\n" - " \"the \\\"Agree\\\" button.\",\n" - " \"Software License Agreement\",\n" - " \"This text cannot be saved. This disk may be full or locked, " - "or the \"\n" - " \"file may be locked.\",\n" - " \"Unable to print. Make sure you have selected a printer.\"\n" - " }\n" - "};\n" - "\n"; +static const uint16_t DefaultLpic[] = { + /* clang-format off */ + 0x0002, 0x0011, 0x0003, 0x0001, 0x0000, 0x0000, 0x0002, 0x0000, + 0x0008, 0x0003, 0x0000, 0x0001, 0x0004, 0x0000, 0x0004, 0x0005, + 0x0000, 0x000E, 0x0006, 0x0001, 0x0005, 0x0007, 0x0000, 0x0007, + 0x0008, 0x0000, 0x0047, 0x0009, 0x0000, 0x0034, 0x000A, 0x0001, + 0x0035, 0x000B, 0x0001, 0x0020, 0x000C, 0x0000, 0x0011, 0x000D, + 0x0000, 0x005B, 0x0004, 0x0000, 0x0033, 0x000F, 0x0001, 0x000C, + 0x0010, 0x0000, 0x000B, 0x000E, 0x0000 + /* clang-format on */ +}; + +static const std::vector<std::string> DefaultMenu = { + { "English", "Agree", "Disagree", "Print", "Save...", + // NOLINTNEXTLINE(bugprone-suspicious-missing-comma) + "You agree to the License Agreement terms when " + "you click the \"Agree\" button.", + "Software License Agreement", + "This text cannot be saved. " + "This disk may be full or locked, or the file may be locked.", + "Unable to print. Make sure you have selected a printer." } +}; cmCPackDragNDropGenerator::cmCPackDragNDropGenerator() : singleLicense(false) @@ -523,22 +518,43 @@ int cmCPackDragNDropGenerator::CreateDMG(const std::string& src_dir, } } + // Create the final compressed read-only disk image ... + std::ostringstream final_image_command; + final_image_command << this->GetOption("CPACK_COMMAND_HDIUTIL"); + final_image_command << " convert \"" << temp_image << "\""; + final_image_command << " -format "; + final_image_command << cpack_dmg_format; + final_image_command << " -imagekey"; + final_image_command << " zlib-level=9"; + final_image_command << " -o \"" << output_file << "\""; + + std::string convert_error; + + if (!this->RunCommand(final_image_command, &convert_error)) { + cmCPackLogger(cmCPackLog::LOG_ERROR, + "Error compressing disk image." << std::endl + << convert_error + << std::endl); + + return 0; + } + if (!cpack_license_file.empty() || !slaDirectory.empty()) { // Use old hardcoded style if sla_dir is not set bool oldStyle = slaDirectory.empty(); - std::string sla_r = - cmStrCat(this->GetOption("CPACK_TOPLEVEL_DIRECTORY"), "/sla.r"); + std::string sla_xml = + cmStrCat(this->GetOption("CPACK_TOPLEVEL_DIRECTORY"), "/sla.xml"); std::vector<std::string> languages; if (!oldStyle) { cmExpandList(cpack_dmg_languages, languages); } - cmGeneratedFileStream ofs(sla_r); - ofs << "#include <CoreServices/CoreServices.r>\n\n"; + std::vector<uint16_t> header_data; if (oldStyle) { - ofs << SLAHeader; - ofs << "\n"; + header_data = std::vector<uint16_t>( + DefaultLpic, + DefaultLpic + (sizeof(DefaultLpic) / sizeof(*DefaultLpic))); } else { /* * LPic Layout @@ -558,8 +574,6 @@ int cmCPackDragNDropGenerator::CreateDMG(const std::string& src_dir, * } */ - // Create vector first for readability, then iterate to write to ofs - std::vector<uint16_t> header_data; header_data.push_back(0); header_data.push_back(languages.size()); for (size_t i = 0; i < languages.size(); ++i) { @@ -596,52 +610,50 @@ int cmCPackDragNDropGenerator::CreateDMG(const std::string& src_dir, header_data.push_back(0); #endif } - ofs << "data 'LPic' (5000) {\n"; - ofs << std::hex << std::uppercase << std::setfill('0'); - - for (size_t i = 0; i < header_data.size(); ++i) { - if (i % 8 == 0) { - ofs << " $\""; - } - - ofs << std::setw(4) << header_data[i]; + } - if (i % 8 == 7 || i == header_data.size() - 1) { - ofs << "\"\n"; - } else { - ofs << " "; - } + RezDoc rez; + + { + RezDict lpic = { {}, 5000, {} }; + lpic.Data.reserve(header_data.size() * sizeof(header_data[0])); + for (uint16_t x : header_data) { + // LPic header is big-endian. + char* d = reinterpret_cast<char*>(&x); +#if KWIML_ABI_ENDIAN_ID == KWIML_ABI_ENDIAN_ID_LITTLE + lpic.Data.push_back(d[1]); + lpic.Data.push_back(d[0]); +#else + lpic.Data.push_back(d[0]); + lpic.Data.push_back(d[1]); +#endif } - ofs << "};\n\n"; - // Reset ofs options - ofs << std::dec << std::nouppercase << std::setfill(' '); + rez.LPic.Entries.emplace_back(std::move(lpic)); } bool have_write_license_error = false; std::string error; if (oldStyle) { - if (!this->WriteLicense(ofs, 0, "", cpack_license_file, &error)) { + if (!this->WriteLicense(rez, 0, "", cpack_license_file, &error)) { have_write_license_error = true; } } else { for (size_t i = 0; i < languages.size() && !have_write_license_error; ++i) { if (singleLicense) { - if (!this->WriteLicense(ofs, i + 5000, languages[i], + if (!this->WriteLicense(rez, i + 5000, languages[i], cpack_license_file, &error)) { have_write_license_error = true; } } else { - if (!this->WriteLicense(ofs, i + 5000, languages[i], "", &error)) { + if (!this->WriteLicense(rez, i + 5000, languages[i], "", &error)) { have_write_license_error = true; } } } } - ofs.Close(); - if (have_write_license_error) { cmCPackLogger(cmCPackLog::LOG_ERROR, "Error writing license file to SLA." << std::endl @@ -650,96 +662,27 @@ int cmCPackDragNDropGenerator::CreateDMG(const std::string& src_dir, return 0; } - if (temp_image_format != "UDZO") { - temp_image_format = "UDZO"; - // convert to UDZO to enable unflatten/flatten - std::string temp_udzo = cmStrCat( - this->GetOption("CPACK_TOPLEVEL_DIRECTORY"), "/temp-udzo.dmg"); + this->WriteRezXML(sla_xml, rez); - std::ostringstream udco_image_command; - udco_image_command << this->GetOption("CPACK_COMMAND_HDIUTIL"); - udco_image_command << " convert \"" << temp_image << "\""; - udco_image_command << " -format UDZO"; - udco_image_command << " -ov -o \"" << temp_udzo << "\""; - - if (!this->RunCommand(udco_image_command, &error)) { - cmCPackLogger(cmCPackLog::LOG_ERROR, - "Error converting to UDCO dmg for adding SLA." - << std::endl - << error << std::endl); - return 0; - } - temp_image = temp_udzo; - } - - // unflatten dmg - std::ostringstream unflatten_command; - unflatten_command << this->GetOption("CPACK_COMMAND_HDIUTIL"); - unflatten_command << " unflatten "; - unflatten_command << "\"" << temp_image << "\""; - - if (!this->RunCommand(unflatten_command, &error)) { - cmCPackLogger(cmCPackLog::LOG_ERROR, - "Error unflattening dmg for adding SLA." << std::endl - << error - << std::endl); - return 0; - } - - // Rez the SLA + // Create the final compressed read-only disk image ... std::ostringstream embed_sla_command; - embed_sla_command << this->GetOption("CPACK_COMMAND_REZ"); - const char* sysroot = this->GetOption("CPACK_OSX_SYSROOT"); - if (sysroot && sysroot[0] != '\0') { - embed_sla_command << " -isysroot \"" << sysroot << "\""; - } - embed_sla_command << " \"" << sla_r << "\""; - embed_sla_command << " -a -o "; - embed_sla_command << "\"" << temp_image << "\""; - - if (!this->RunCommand(embed_sla_command, &error)) { + embed_sla_command << this->GetOption("CPACK_COMMAND_HDIUTIL"); + embed_sla_command << " udifrez"; + embed_sla_command << " -xml"; + embed_sla_command << " \"" << sla_xml << "\""; + embed_sla_command << " FIXME_WHY_IS_THIS_ARGUMENT_NEEDED"; + embed_sla_command << " \"" << output_file << "\""; + std::string embed_error; + if (!this->RunCommand(embed_sla_command, &embed_error)) { cmCPackLogger(cmCPackLog::LOG_ERROR, - "Error adding SLA." << std::endl - << error << std::endl); - return 0; - } - - // flatten dmg - std::ostringstream flatten_command; - flatten_command << this->GetOption("CPACK_COMMAND_HDIUTIL"); - flatten_command << " flatten "; - flatten_command << "\"" << temp_image << "\""; + "Error compressing disk image." << std::endl + << embed_error + << std::endl); - if (!this->RunCommand(flatten_command, &error)) { - cmCPackLogger(cmCPackLog::LOG_ERROR, - "Error flattening dmg for adding SLA." << std::endl - << error - << std::endl); return 0; } } - // Create the final compressed read-only disk image ... - std::ostringstream final_image_command; - final_image_command << this->GetOption("CPACK_COMMAND_HDIUTIL"); - final_image_command << " convert \"" << temp_image << "\""; - final_image_command << " -format "; - final_image_command << cpack_dmg_format; - final_image_command << " -imagekey"; - final_image_command << " zlib-level=9"; - final_image_command << " -o \"" << output_file << "\""; - - std::string convert_error; - - if (!this->RunCommand(final_image_command, &convert_error)) { - cmCPackLogger(cmCPackLog::LOG_ERROR, - "Error compressing disk image." << std::endl - << convert_error - << std::endl); - - return 0; - } - return 1; } @@ -788,10 +731,67 @@ std::string cmCPackDragNDropGenerator::GetComponentInstallDirNameSuffix( return GetComponentPackageFileName(package_file_name, componentName, false); } -bool cmCPackDragNDropGenerator::WriteLicense( - cmGeneratedFileStream& outputStream, int licenseNumber, - std::string licenseLanguage, const std::string& licenseFile, - std::string* error) +void cmCPackDragNDropGenerator::WriteRezXML(std::string const& file, + RezDoc const& rez) +{ + cmGeneratedFileStream fxml(file); + cmXMLWriter xml(fxml); + xml.StartDocument(); + xml.StartElement("plist"); + xml.Attribute("version", "1.0"); + xml.StartElement("dict"); + this->WriteRezArray(xml, rez.LPic); + this->WriteRezArray(xml, rez.Menu); + this->WriteRezArray(xml, rez.Text); + this->WriteRezArray(xml, rez.RTF); + xml.EndElement(); // dict + xml.EndElement(); // plist + xml.EndDocument(); + fxml.Close(); +} + +void cmCPackDragNDropGenerator::WriteRezArray(cmXMLWriter& xml, + RezArray const& array) +{ + if (array.Entries.empty()) { + return; + } + xml.StartElement("key"); + xml.Content(array.Key); + xml.EndElement(); // key + xml.StartElement("array"); + for (RezDict const& dict : array.Entries) { + this->WriteRezDict(xml, dict); + } + xml.EndElement(); // array +} + +void cmCPackDragNDropGenerator::WriteRezDict(cmXMLWriter& xml, + RezDict const& dict) +{ + std::vector<char> base64buf(dict.Data.size() * 3 / 2 + 5); + size_t base64len = + cmsysBase64_Encode(dict.Data.data(), dict.Data.size(), + reinterpret_cast<unsigned char*>(base64buf.data()), 0); + std::string base64data(base64buf.data(), base64len); + /* clang-format off */ + xml.StartElement("dict"); + xml.StartElement("key"); xml.Content("Attributes"); xml.EndElement(); + xml.StartElement("string"); xml.Content("0x0000"); xml.EndElement(); + xml.StartElement("key"); xml.Content("Data"); xml.EndElement(); + xml.StartElement("data"); xml.Content(base64data); xml.EndElement(); + xml.StartElement("key"); xml.Content("ID"); xml.EndElement(); + xml.StartElement("string"); xml.Content(dict.ID); xml.EndElement(); + xml.StartElement("key"); xml.Content("Name"); xml.EndElement(); + xml.StartElement("string"); xml.Content(dict.Name); xml.EndElement(); + xml.EndElement(); // dict + /* clang-format on */ +} + +bool cmCPackDragNDropGenerator::WriteLicense(RezDoc& rez, size_t licenseNumber, + std::string licenseLanguage, + const std::string& licenseFile, + std::string* error) { if (!licenseFile.empty() && !singleLicense) { licenseNumber = 5002; @@ -799,11 +799,11 @@ bool cmCPackDragNDropGenerator::WriteLicense( } // License file - std::string license_format = "TEXT"; + RezArray* licenseArray = &rez.Text; std::string actual_license; if (!licenseFile.empty()) { if (cmHasLiteralSuffix(licenseFile, ".rtf")) { - license_format = "RTF "; + licenseArray = &rez.RTF; } actual_license = licenseFile; } else { @@ -812,85 +812,86 @@ bool cmCPackDragNDropGenerator::WriteLicense( if (cmSystemTools::FileExists(license_wo_ext + ".txt")) { actual_license = license_wo_ext + ".txt"; } else { - license_format = "RTF "; + licenseArray = &rez.RTF; actual_license = license_wo_ext + ".rtf"; } } - // License header - outputStream << "data '" << license_format << "' (" << licenseNumber - << ", \"" << licenseLanguage << "\") {\n"; // License body - cmsys::ifstream license_ifs; - license_ifs.open(actual_license.c_str()); - if (license_ifs.is_open()) { - while (license_ifs.good()) { - std::string line; - std::getline(license_ifs, line); - if (!line.empty()) { - EscapeQuotesAndBackslashes(line); - std::vector<std::string> lines; - if (!this->BreakLongLine(line, lines, error)) { - return false; - } - for (auto const& l : lines) { - outputStream << " \"" << l << "\"\n"; - } - } - outputStream << " \"\\n\"\n"; + { + RezDict license = { licenseLanguage, licenseNumber, {} }; + std::vector<std::string> lines; + if (!this->ReadFile(actual_license, lines, error)) { + return false; } - license_ifs.close(); + this->EncodeLicense(license, lines); + licenseArray->Entries.emplace_back(std::move(license)); } - // End of License - outputStream << "};\n\n"; - if (!licenseFile.empty() && !singleLicense) { - outputStream << SLASTREnglish; - } else { - // Menu header - outputStream << "resource 'STR#' (" << licenseNumber << ", \"" - << licenseLanguage << "\") {\n"; - outputStream << " {\n"; - - // Menu body - cmsys::ifstream menu_ifs; - menu_ifs.open( - (slaDirectory + "/" + licenseLanguage + ".menu.txt").c_str()); - if (menu_ifs.is_open()) { - size_t lines_written = 0; - while (menu_ifs.good()) { - // Lines written from original file, not from broken up lines - std::string line; - std::getline(menu_ifs, line); - if (!line.empty()) { - EscapeQuotesAndBackslashes(line); - std::vector<std::string> lines; - if (!this->BreakLongLine(line, lines, error)) { - return false; - } - for (size_t i = 0; i < lines.size(); ++i) { - std::string comma; - // We need a comma after every complete string, - // but not on the very last line - if (lines_written != 8 && i == lines.size() - 1) { - comma = ","; - } else { - comma = ""; - } - outputStream << " \"" << lines[i] << "\"" << comma << "\n"; - } - ++lines_written; - } + // Menu body + { + RezDict menu = { licenseLanguage, licenseNumber, {} }; + if (!licenseFile.empty() && !singleLicense) { + this->EncodeMenu(menu, DefaultMenu); + } else { + std::vector<std::string> lines; + std::string actual_menu = + slaDirectory + "/" + licenseLanguage + ".menu.txt"; + if (!this->ReadFile(actual_menu, lines, error)) { + return false; } - menu_ifs.close(); + this->EncodeMenu(menu, lines); } + rez.Menu.Entries.emplace_back(std::move(menu)); + } + + return true; +} + +void cmCPackDragNDropGenerator::EncodeLicense( + RezDict& dict, std::vector<std::string> const& lines) +{ + // License text uses CR newlines. + for (std::string const& l : lines) { + dict.Data.insert(dict.Data.end(), l.begin(), l.end()); + dict.Data.push_back('\r'); + } + dict.Data.push_back('\r'); +} - // End of menu - outputStream << " }\n"; - outputStream << "};\n"; - outputStream << "\n"; +void cmCPackDragNDropGenerator::EncodeMenu( + RezDict& dict, std::vector<std::string> const& lines) +{ + // Menu resources start with a big-endian uint16_t for number of lines: + { + uint16_t numLines = static_cast<uint16_t>(lines.size()); + char* d = reinterpret_cast<char*>(&numLines); +#if KWIML_ABI_ENDIAN_ID == KWIML_ABI_ENDIAN_ID_LITTLE + dict.Data.push_back(d[1]); + dict.Data.push_back(d[0]); +#else + dict.Data.push_back(d[0]); + dict.Data.push_back(d[1]); +#endif } + // Each line starts with a uint8_t length, plus the bytes themselves: + for (std::string const& l : lines) { + dict.Data.push_back(static_cast<unsigned char>(l.length())); + dict.Data.insert(dict.Data.end(), l.begin(), l.end()); + } +} +bool cmCPackDragNDropGenerator::ReadFile(std::string const& file, + std::vector<std::string>& lines, + std::string* error) +{ + cmsys::ifstream ifs(file); + std::string line; + while (std::getline(ifs, line)) { + if (!this->BreakLongLine(line, lines, error)) { + return false; + } + } return true; } @@ -898,7 +899,7 @@ bool cmCPackDragNDropGenerator::BreakLongLine(const std::string& line, std::vector<std::string>& lines, std::string* error) { - const size_t max_line_length = 512; + const size_t max_line_length = 255; size_t line_length = max_line_length; for (size_t i = 0; i < line.size(); i += line_length) { line_length = max_line_length; @@ -913,25 +914,10 @@ bool cmCPackDragNDropGenerator::BreakLongLine(const std::string& line, if (line_length == 0) { *error = "Please make sure there are no words " "(or character sequences not broken up by spaces or newlines) " - "in your license file which are more than 512 characters long."; + "in your license file which are more than 255 characters long."; return false; } lines.push_back(line.substr(i, line_length)); } return true; } - -void cmCPackDragNDropGenerator::EscapeQuotesAndBackslashes(std::string& line) -{ - std::string::size_type backslash_pos = line.find('\\'); - while (backslash_pos != std::string::npos) { - line.replace(backslash_pos, 1, "\\\\"); - backslash_pos = line.find('\\', backslash_pos + 2); - } - - std::string::size_type quote_pos = line.find('\"'); - while (quote_pos != std::string::npos) { - line.replace(quote_pos, 1, "\\\""); - quote_pos = line.find('\"', quote_pos + 2); - } -} diff --git a/Source/CPack/cmCPackDragNDropGenerator.h b/Source/CPack/cmCPackDragNDropGenerator.h index f8c86c0..dbd190c 100644 --- a/Source/CPack/cmCPackDragNDropGenerator.h +++ b/Source/CPack/cmCPackDragNDropGenerator.h @@ -14,6 +14,7 @@ #include "cmCPackGenerator.h" class cmGeneratedFileStream; +class cmXMLWriter; /** \class cmCPackDragNDropGenerator * \brief A generator for OSX drag-n-drop installs @@ -45,12 +46,40 @@ private: std::string slaDirectory; bool singleLicense; - bool WriteLicense(cmGeneratedFileStream& outputStream, int licenseNumber, + struct RezDict + { + std::string Name; + size_t ID; + std::vector<unsigned char> Data; + }; + + struct RezArray + { + std::string Key; + std::vector<RezDict> Entries; + }; + + struct RezDoc + { + RezArray LPic = { "LPic", {} }; + RezArray Menu = { "STR#", {} }; + RezArray Text = { "TEXT", {} }; + RezArray RTF = { "RTF ", {} }; + }; + + void WriteRezXML(std::string const& file, RezDoc const& rez); + void WriteRezArray(cmXMLWriter& xml, RezArray const& array); + void WriteRezDict(cmXMLWriter& xml, RezDict const& dict); + + bool WriteLicense(RezDoc& rez, size_t licenseNumber, std::string licenseLanguage, const std::string& licenseFile, std::string* error); + void EncodeLicense(RezDict& dict, std::vector<std::string> const& lines); + void EncodeMenu(RezDict& dict, std::vector<std::string> const& lines); + bool ReadFile(std::string const& file, std::vector<std::string>& lines, + std::string* error); bool BreakLongLine(const std::string& line, std::vector<std::string>& lines, std::string* error); - void EscapeQuotesAndBackslashes(std::string& line); }; #endif diff --git a/Source/CPack/cmCPackGenerator.cxx b/Source/CPack/cmCPackGenerator.cxx index 7990504..c641175 100644 --- a/Source/CPack/cmCPackGenerator.cxx +++ b/Source/CPack/cmCPackGenerator.cxx @@ -829,7 +829,7 @@ int cmCPackGenerator::InstallCMakeProject( * - Because it was already used for component install * in order to put things in subdirs... */ - cmSystemTools::PutEnv(std::string("DESTDIR=") + tempInstallDirectory); + cmSystemTools::PutEnv("DESTDIR=" + tempInstallDirectory); cmCPackLogger(cmCPackLog::LOG_DEBUG, "- Creating directory: '" << dir << "'" << std::endl); @@ -1326,7 +1326,7 @@ bool cmCPackGenerator::ConfigureFile(const std::string& inName, bool copyOnly /* = false */) { return this->MakefileMap->ConfigureFile(inName, outName, copyOnly, true, - false) == 1; + false, true) == 1; } int cmCPackGenerator::CleanTemporaryDirectory() diff --git a/Source/CPack/cpack.cxx b/Source/CPack/cpack.cxx index 2e5bde2..3a400b7 100644 --- a/Source/CPack/cpack.cxx +++ b/Source/CPack/cpack.cxx @@ -312,7 +312,7 @@ int main(int argc, char const* const* argv) // The value has not been set on the command line else { // get a default value (current working directory) - cpackProjectDirectory = cmsys::SystemTools::GetCurrentWorkingDirectory(); + cpackProjectDirectory = cmSystemTools::GetCurrentWorkingDirectory(); // use default value if no value has been provided by the config file if (!globalMF.IsSet("CPACK_PACKAGE_DIRECTORY")) { globalMF.AddDefinition("CPACK_PACKAGE_DIRECTORY", diff --git a/Source/QtDialog/CMakeSetupDialog.cxx b/Source/QtDialog/CMakeSetupDialog.cxx index 6dbfe11..fcc8408 100644 --- a/Source/QtDialog/CMakeSetupDialog.cxx +++ b/Source/QtDialog/CMakeSetupDialog.cxx @@ -152,9 +152,6 @@ CMakeSetupDialog::CMakeSetupDialog() this->WarnUninitializedAction = OptionsMenu->addAction(tr("&Warn Uninitialized (--warn-uninitialized)")); this->WarnUninitializedAction->setCheckable(true); - this->WarnUnusedAction = - OptionsMenu->addAction(tr("&Warn Unused (--warn-unused-vars)")); - this->WarnUnusedAction->setCheckable(true); QAction* debugAction = OptionsMenu->addAction(tr("&Debug Output")); debugAction->setCheckable(true); @@ -290,9 +287,6 @@ void CMakeSetupDialog::initialize() QObject::connect(this->WarnUninitializedAction, SIGNAL(triggered(bool)), this->CMakeThread->cmakeInstance(), SLOT(setWarnUninitializedMode(bool))); - QObject::connect(this->WarnUnusedAction, SIGNAL(triggered(bool)), - this->CMakeThread->cmakeInstance(), - SLOT(setWarnUnusedMode(bool))); if (!this->SourceDirectory->text().isEmpty() || !this->BinaryDirectory->lineEdit()->text().isEmpty()) { diff --git a/Source/QtDialog/CMakeSetupDialog.h b/Source/QtDialog/CMakeSetupDialog.h index d1e2035..914be12 100644 --- a/Source/QtDialog/CMakeSetupDialog.h +++ b/Source/QtDialog/CMakeSetupDialog.h @@ -111,7 +111,6 @@ protected: QAction* ConfigureAction; QAction* GenerateAction; QAction* WarnUninitializedAction; - QAction* WarnUnusedAction; QAction* InstallForCommandLineAction; State CurrentState; diff --git a/Source/QtDialog/QCMake.cxx b/Source/QtDialog/QCMake.cxx index f0b967b..6090256 100644 --- a/Source/QtDialog/QCMake.cxx +++ b/Source/QtDialog/QCMake.cxx @@ -21,7 +21,6 @@ QCMake::QCMake(QObject* p) : QObject(p) { this->WarnUninitializedMode = false; - this->WarnUnusedMode = false; qRegisterMetaType<QCMakeProperty>(); qRegisterMetaType<QCMakePropertyList>(); @@ -170,7 +169,6 @@ void QCMake::configure() this->CMakeInstance->SetGeneratorToolset(this->Toolset.toLocal8Bit().data()); this->CMakeInstance->LoadCache(); this->CMakeInstance->SetWarnUninitialized(this->WarnUninitializedMode); - this->CMakeInstance->SetWarnUnused(this->WarnUnusedMode); this->CMakeInstance->PreLoadCMakeFiles(); InterruptFlag = 0; @@ -478,11 +476,6 @@ void QCMake::setWarnUninitializedMode(bool value) this->WarnUninitializedMode = value; } -void QCMake::setWarnUnusedMode(bool value) -{ - this->WarnUnusedMode = value; -} - void QCMake::checkOpenPossible() { std::string data = this->BinaryDirectory.toLocal8Bit().data(); diff --git a/Source/QtDialog/QCMake.h b/Source/QtDialog/QCMake.h index 110a971..39555d6 100644 --- a/Source/QtDialog/QCMake.h +++ b/Source/QtDialog/QCMake.h @@ -114,8 +114,6 @@ public slots: void setDeprecatedWarningsAsErrors(bool value); /// set whether to run cmake with warnings about uninitialized variables void setWarnUninitializedMode(bool value); - /// set whether to run cmake with warnings about unused variables - void setWarnUnusedMode(bool value); /// check if project IDE open is possible and emit openPossible signal void checkOpenPossible(); @@ -175,8 +173,6 @@ protected: void stderrCallback(std::string const& msg); bool WarnUninitializedMode; - bool WarnUnusedMode; - bool WarnUnusedAllMode; QString SourceDirectory; QString BinaryDirectory; QString Generator; diff --git a/Source/QtDialog/QCMakeCacheView.cxx b/Source/QtDialog/QCMakeCacheView.cxx index 928494b..659a512 100644 --- a/Source/QtDialog/QCMakeCacheView.cxx +++ b/Source/QtDialog/QCMakeCacheView.cxx @@ -214,14 +214,14 @@ void QCMakeCacheModel::setProperties(const QCMakePropertyList& props) #if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) newProps = props.toSet(); #else - newProps = QSet(props.begin(), props.end()); + newProps = QSet<QCMakeProperty>(props.begin(), props.end()); #endif newProps2 = newProps; #if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) QSet<QCMakeProperty> oldProps = this->properties().toSet(); #else - QSet<QCMakeProperty> oldProps = - QSet(this->properties().begin(), this->properties().end()); + QSet<QCMakeProperty> oldProps = QSet<QCMakeProperty>( + this->properties().begin(), this->properties().end()); #endif oldProps.intersect(newProps); newProps.subtract(oldProps); @@ -230,7 +230,7 @@ void QCMakeCacheModel::setProperties(const QCMakePropertyList& props) #if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) newProps2 = props.toSet(); #else - newProps2 = QSet(props.begin(), props.end()); + newProps2 = QSet<QCMakeProperty>(props.begin(), props.end()); #endif } diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx index bca7540..4254e2e 100644 --- a/Source/cmCTest.cxx +++ b/Source/cmCTest.cxx @@ -841,6 +841,7 @@ bool cmCTest::OpenOutputFile(const std::string& path, const std::string& name, } } std::string filename = testingDir + "/" + name; + stream.SetTempExt("tmp"); stream.Open(filename); if (!stream) { cmCTestLog(this, ERROR_MESSAGE, diff --git a/Source/cmComputeTargetDepends.cxx b/Source/cmComputeTargetDepends.cxx index 41f5346..6b4d110 100644 --- a/Source/cmComputeTargetDepends.cxx +++ b/Source/cmComputeTargetDepends.cxx @@ -196,7 +196,7 @@ void cmComputeTargetDepends::CollectTargetDepends(int depender_index) std::set<cmLinkItem> emitted; std::vector<std::string> const& configs = - depender->Makefile->GetGeneratorConfigs(); + depender->Makefile->GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig); for (std::string const& it : configs) { cmLinkImplementation const* impl = depender->GetLinkImplementation(it); diff --git a/Source/cmConfigureFileCommand.cxx b/Source/cmConfigureFileCommand.cxx index 5b3045d..68322cc 100644 --- a/Source/cmConfigureFileCommand.cxx +++ b/Source/cmConfigureFileCommand.cxx @@ -60,6 +60,7 @@ bool cmConfigureFileCommand(std::vector<std::string> const& args, } bool copyOnly = false; bool escapeQuotes = false; + bool use_source_permissions = true; static std::set<cm::string_view> noopOptions = { /* Legacy. */ @@ -87,6 +88,8 @@ bool cmConfigureFileCommand(std::vector<std::string> const& args, escapeQuotes = true; } else if (args[i] == "@ONLY") { atOnly = true; + } else if (args[i] == "NO_SOURCE_PERMISSIONS") { + use_source_permissions = false; } else if (noopOptions.find(args[i]) != noopOptions.end()) { /* Ignore no-op options. */ } else { @@ -102,7 +105,8 @@ bool cmConfigureFileCommand(std::vector<std::string> const& args, } if (!status.GetMakefile().ConfigureFile( - inputFile, outputFile, copyOnly, atOnly, escapeQuotes, newLineStyle)) { + inputFile, outputFile, copyOnly, atOnly, escapeQuotes, + use_source_permissions, newLineStyle)) { status.SetError("Problem configuring file"); return false; } diff --git a/Source/cmCreateTestSourceList.cxx b/Source/cmCreateTestSourceList.cxx index 9d492ba..9c4deea 100644 --- a/Source/cmCreateTestSourceList.cxx +++ b/Source/cmCreateTestSourceList.cxx @@ -127,7 +127,7 @@ bool cmCreateTestSourceList(std::vector<std::string> const& args, mf.AddDefinition("CMAKE_FORWARD_DECLARE_TESTS", forwardDeclareCode); mf.AddDefinition("CMAKE_FUNCTION_TABLE_ENTIRES", functionMapCode); bool res = true; - if (!mf.ConfigureFile(configFile, driver, false, true, false)) { + if (!mf.ConfigureFile(configFile, driver, false, true, false, true)) { res = false; } diff --git a/Source/cmDefinitions.cxx b/Source/cmDefinitions.cxx index 69a6427..4a4f87d 100644 --- a/Source/cmDefinitions.cxx +++ b/Source/cmDefinitions.cxx @@ -19,7 +19,6 @@ cmDefinitions::Def const& cmDefinitions::GetInternal(const std::string& key, { auto it = begin->Map.find(cm::String::borrow(key)); if (it != begin->Map.end()) { - it->second.Used = true; return it->second; } } @@ -108,16 +107,3 @@ void cmDefinitions::Unset(const std::string& key) { this->Map[key] = Def(); } - -std::vector<std::string> cmDefinitions::UnusedKeys() const -{ - std::vector<std::string> keys; - keys.reserve(this->Map.size()); - // Consider local definitions. - for (auto const& mi : this->Map) { - if (!mi.second.Used) { - keys.push_back(*mi.first.str_if_stable()); - } - } - return keys; -} diff --git a/Source/cmDefinitions.h b/Source/cmDefinitions.h index 0e38fb1..d57750a 100644 --- a/Source/cmDefinitions.h +++ b/Source/cmDefinitions.h @@ -48,9 +48,6 @@ public: /** Unset a definition. */ void Unset(const std::string& key); - /** List of unused keys. */ - std::vector<std::string> UnusedKeys() const; - private: /** String with existence boolean. */ struct Def @@ -62,7 +59,6 @@ private: { } cm::String Value; - bool Used = false; }; static Def NoDef; diff --git a/Source/cmExportCommand.cxx b/Source/cmExportCommand.cxx index 9f8a821..352eaf2 100644 --- a/Source/cmExportCommand.cxx +++ b/Source/cmExportCommand.cxx @@ -223,11 +223,9 @@ bool cmExportCommand(std::vector<std::string> const& args, ebfg->SetExportOld(arguments.ExportOld); // Compute the set of configurations exported. - std::vector<std::string> configurationTypes; - mf.GetConfigurations(configurationTypes); - if (configurationTypes.empty()) { - configurationTypes.emplace_back(); - } + std::vector<std::string> configurationTypes = + mf.GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig); + for (std::string const& ct : configurationTypes) { ebfg->AddConfiguration(ct); } diff --git a/Source/cmExportFileGenerator.cxx b/Source/cmExportFileGenerator.cxx index 4d0e099..58aa391 100644 --- a/Source/cmExportFileGenerator.cxx +++ b/Source/cmExportFileGenerator.cxx @@ -567,8 +567,9 @@ void cmExportFileGenerator::PopulateCompatibleInterfaceProperties( if (gtarget->GetType() != cmStateEnums::INTERFACE_LIBRARY) { getCompatibleInterfaceProperties(gtarget, ifaceProperties, ""); - std::vector<std::string> configNames; - gtarget->Target->GetMakefile()->GetConfigurations(configNames); + std::vector<std::string> configNames = + gtarget->Target->GetMakefile()->GetGeneratorConfigs( + cmMakefile::ExcludeEmptyConfig); for (std::string const& cn : configNames) { getCompatibleInterfaceProperties(gtarget, ifaceProperties, cn); diff --git a/Source/cmFileAPICodemodel.cxx b/Source/cmFileAPICodemodel.cxx index 21d9abb..e9af208 100644 --- a/Source/cmFileAPICodemodel.cxx +++ b/Source/cmFileAPICodemodel.cxx @@ -175,6 +175,38 @@ public: } }; +template <typename T> +class JBTs +{ +public: + JBTs(T v = T(), std::vector<JBTIndex> ids = std::vector<JBTIndex>()) + : Value(std::move(v)) + , Backtraces(std::move(ids)) + { + } + T Value; + std::vector<JBTIndex> Backtraces; + friend bool operator==(JBTs<T> const& l, JBTs<T> const& r) + { + if ((l.Value == r.Value) && (l.Backtraces.size() == r.Backtraces.size())) { + for (size_t i = 0; i < l.Backtraces.size(); i++) { + if (l.Backtraces[i].Index != r.Backtraces[i].Index) { + return false; + } + } + } + return true; + } + static bool ValueEq(JBTs<T> const& l, JBTs<T> const& r) + { + return l.Value == r.Value; + } + static bool ValueLess(JBTs<T> const& l, JBTs<T> const& r) + { + return l.Value < r.Value; + } +}; + class BacktraceData { std::string TopSource; @@ -277,7 +309,7 @@ struct CompileData std::string Language; std::string Sysroot; - JBT<std::string> LanguageStandard; + JBTs<std::string> LanguageStandard; std::vector<JBT<std::string>> Flags; std::vector<JBT<std::string>> Defines; std::vector<JBT<std::string>> PrecompileHeaders; @@ -323,8 +355,10 @@ struct hash<CompileData> hash<Json::ArrayIndex>()(i.Backtrace.Index); } if (!in.LanguageStandard.Value.empty()) { - result = result ^ hash<std::string>()(in.LanguageStandard.Value) ^ - hash<Json::ArrayIndex>()(in.LanguageStandard.Backtrace.Index); + result = result ^ hash<std::string>()(in.LanguageStandard.Value); + for (JBTIndex backtrace : in.LanguageStandard.Backtraces) { + result = result ^ hash<Json::ArrayIndex>()(backtrace.Index); + } } return result; } @@ -369,6 +403,16 @@ class Target return JBT<T>(bt.Value, this->Backtraces.Add(bt.Backtrace)); } + template <typename T> + JBTs<T> ToJBTs(BTs<T> const& bts) + { + std::vector<JBTIndex> ids; + for (cmListFileBacktrace const& backtrace : bts.Backtraces) { + ids.emplace_back(this->Backtraces.Add(backtrace)); + } + return JBTs<T>(bts.Value, ids); + } + void ProcessLanguages(); void ProcessLanguage(std::string const& lang); @@ -383,7 +427,7 @@ class Target Json::Value DumpCompileData(CompileData const& cd); Json::Value DumpInclude(CompileData::IncludeEntry const& inc); Json::Value DumpPrecompileHeader(JBT<std::string> const& header); - Json::Value DumpLanguageStandard(JBT<std::string> const& standard); + Json::Value DumpLanguageStandard(JBTs<std::string> const& standard); Json::Value DumpDefine(JBT<std::string> const& def); Json::Value DumpSources(); Json::Value DumpSource(cmGeneratorTarget::SourceAndKind const& sk, @@ -445,7 +489,7 @@ Json::Value Codemodel::DumpConfigurations() const auto& makefiles = gg->GetMakefiles(); if (!makefiles.empty()) { std::vector<std::string> const& configs = - makefiles[0]->GetGeneratorConfigs(); + makefiles[0]->GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig); for (std::string const& config : configs) { configurations.append(this->DumpConfiguration(config)); } @@ -845,10 +889,10 @@ void Target::ProcessLanguage(std::string const& lang) for (BT<std::string> const& pch : precompileHeaders) { cd.PrecompileHeaders.emplace_back(this->ToJBT(pch)); } - BT<std::string> const* languageStandard = + BTs<std::string> const* languageStandard = this->GT->GetLanguageStandardProperty(lang, this->Config); if (languageStandard) { - cd.LanguageStandard = this->ToJBT(*languageStandard); + cd.LanguageStandard = this->ToJBTs(*languageStandard); } } @@ -1195,18 +1239,15 @@ Json::Value Target::DumpPrecompileHeader(JBT<std::string> const& header) return precompileHeader; } -Json::Value Target::DumpLanguageStandard(JBT<std::string> const& standard) +Json::Value Target::DumpLanguageStandard(JBTs<std::string> const& standard) { Json::Value languageStandard = Json::objectValue; languageStandard["standard"] = standard.Value; - if (standard.Backtrace) { - // Only one backtrace is currently stored for a given language standard, - // but we represent this as an array because it's possible for multiple - // compile features to set the same language standard value. Representing - // this as an array will allow things to just work once we support storing - // multiple backtraces for a language standard value. + if (!standard.Backtraces.empty()) { Json::Value backtraces = Json::arrayValue; - backtraces.append(standard.Backtrace.Index); + for (JBTIndex backtrace : standard.Backtraces) { + backtraces.append(backtrace.Index); + } languageStandard["backtraces"] = backtraces; } return languageStandard; diff --git a/Source/cmFileCommand.cxx b/Source/cmFileCommand.cxx index 3eea6f3..7101e22 100644 --- a/Source/cmFileCommand.cxx +++ b/Source/cmFileCommand.cxx @@ -8,7 +8,6 @@ #include <cmath> #include <cstdio> #include <cstdlib> -#include <iterator> #include <map> #include <set> #include <sstream> @@ -2862,7 +2861,8 @@ bool HandleConfigureCommand(std::vector<std::string> const& args, // Check for generator expressions const std::string input = args[4]; - std::string outputFile = args[2]; + std::string outputFile = cmSystemTools::CollapseFullPath( + args[2], status.GetMakefile().GetCurrentBinaryDirectory()); std::string::size_type pos = input.find_first_of("<>"); if (pos != std::string::npos) { @@ -2944,8 +2944,7 @@ bool HandleArchiveCreateCommand(std::vector<std::string> const& args, std::string Compression; std::string MTime; bool Verbose = false; - std::vector<std::string> Files; - std::vector<std::string> Directories; + std::vector<std::string> Paths; }; static auto const parser = cmArgumentParser<Arguments>{} @@ -2954,8 +2953,7 @@ bool HandleArchiveCreateCommand(std::vector<std::string> const& args, .Bind("COMPRESSION"_s, &Arguments::Compression) .Bind("MTIME"_s, &Arguments::MTime) .Bind("VERBOSE"_s, &Arguments::Verbose) - .Bind("FILES"_s, &Arguments::Files) - .Bind("DIRECTORY"_s, &Arguments::Directories); + .Bind("PATHS"_s, &Arguments::Paths); std::vector<std::string> unrecognizedArguments; std::vector<std::string> keywordsMissingValues; @@ -2969,9 +2967,9 @@ bool HandleArchiveCreateCommand(std::vector<std::string> const& args, return false; } - const std::vector<std::string> LIST_ARGS = { - "OUTPUT", "FORMAT", "COMPRESSION", "MTIME", "FILES", "DIRECTORY", - }; + const std::vector<std::string> LIST_ARGS = { "OUTPUT", "FORMAT", + "COMPRESSION", "MTIME", + "PATHS" }; auto kwbegin = keywordsMissingValues.cbegin(); auto kwend = cmRemoveMatching(keywordsMissingValues, LIST_ARGS); if (kwend != kwbegin) { @@ -3009,11 +3007,6 @@ bool HandleArchiveCreateCommand(std::vector<std::string> const& args, { "XZ", cmSystemTools::TarCompressXZ }, { "Zstd", cmSystemTools::TarCompressZstd } }; - std::string const& outFile = parsedArgs.Output; - std::vector<std::string> files = parsedArgs.Files; - std::copy(parsedArgs.Directories.begin(), parsedArgs.Directories.end(), - std::back_inserter(files)); - cmSystemTools::cmTarCompression compress = cmSystemTools::TarCompressNone; auto typeIt = compressionTypeMap.find(parsedArgs.Compression); if (typeIt != compressionTypeMap.end()) { @@ -3025,14 +3018,16 @@ bool HandleArchiveCreateCommand(std::vector<std::string> const& args, return false; } - if (files.empty()) { - status.GetMakefile().IssueMessage(MessageType::AUTHOR_WARNING, - "No files or directories specified"); + if (parsedArgs.Paths.empty()) { + status.SetError("ARCHIVE_CREATE requires a non-empty list of PATHS"); + cmSystemTools::SetFatalErrorOccured(); + return false; } - if (!cmSystemTools::CreateTar(outFile, files, compress, parsedArgs.Verbose, - parsedArgs.MTime, parsedArgs.Format)) { - status.SetError(cmStrCat("failed to compress: ", outFile)); + if (!cmSystemTools::CreateTar(parsedArgs.Output, parsedArgs.Paths, compress, + parsedArgs.Verbose, parsedArgs.MTime, + parsedArgs.Format)) { + status.SetError(cmStrCat("failed to compress: ", parsedArgs.Output)); cmSystemTools::SetFatalErrorOccured(); return false; } @@ -3049,8 +3044,7 @@ bool HandleArchiveExtractCommand(std::vector<std::string> const& args, bool Verbose = false; bool ListOnly = false; std::string Destination; - std::vector<std::string> Files; - std::vector<std::string> Directories; + std::vector<std::string> Patterns; }; static auto const parser = cmArgumentParser<Arguments>{} @@ -3058,8 +3052,7 @@ bool HandleArchiveExtractCommand(std::vector<std::string> const& args, .Bind("VERBOSE"_s, &Arguments::Verbose) .Bind("LIST_ONLY"_s, &Arguments::ListOnly) .Bind("DESTINATION"_s, &Arguments::Destination) - .Bind("FILES"_s, &Arguments::Files) - .Bind("DIRECTORY"_s, &Arguments::Directories); + .Bind("PATTERNS"_s, &Arguments::Patterns); std::vector<std::string> unrecognizedArguments; std::vector<std::string> keywordsMissingValues; @@ -3073,12 +3066,8 @@ bool HandleArchiveExtractCommand(std::vector<std::string> const& args, return false; } - const std::vector<std::string> LIST_ARGS = { - "INPUT", - "DESTINATION", - "FILES", - "DIRECTORY", - }; + const std::vector<std::string> LIST_ARGS = { "INPUT", "DESTINATION", + "PATTERNS" }; auto kwbegin = keywordsMissingValues.cbegin(); auto kwend = cmRemoveMatching(keywordsMissingValues, LIST_ARGS); if (kwend != kwbegin) { @@ -3089,18 +3078,16 @@ bool HandleArchiveExtractCommand(std::vector<std::string> const& args, } std::string inFile = parsedArgs.Input; - std::vector<std::string> files = parsedArgs.Files; - std::copy(parsedArgs.Directories.begin(), parsedArgs.Directories.end(), - std::back_inserter(files)); if (parsedArgs.ListOnly) { - if (!cmSystemTools::ListTar(inFile, files, parsedArgs.Verbose)) { + if (!cmSystemTools::ListTar(inFile, parsedArgs.Patterns, + parsedArgs.Verbose)) { status.SetError(cmStrCat("failed to list: ", inFile)); cmSystemTools::SetFatalErrorOccured(); return false; } } else { - std::string destDir = cmSystemTools::GetCurrentWorkingDirectory(); + std::string destDir = status.GetMakefile().GetCurrentBinaryDirectory(); if (!parsedArgs.Destination.empty()) { if (cmSystemTools::FileIsFullPath(parsedArgs.Destination)) { destDir = parsedArgs.Destination; @@ -3128,7 +3115,8 @@ bool HandleArchiveExtractCommand(std::vector<std::string> const& args, return false; } - if (!cmSystemTools::ExtractTar(inFile, files, parsedArgs.Verbose)) { + if (!cmSystemTools::ExtractTar(inFile, parsedArgs.Patterns, + parsedArgs.Verbose)) { status.SetError(cmStrCat("failed to extract: ", inFile)); cmSystemTools::SetFatalErrorOccured(); return false; diff --git a/Source/cmFindLibraryCommand.cxx b/Source/cmFindLibraryCommand.cxx index 31f1201..3242b6d 100644 --- a/Source/cmFindLibraryCommand.cxx +++ b/Source/cmFindLibraryCommand.cxx @@ -433,7 +433,8 @@ bool cmFindLibraryHelper::CheckDirectoryForName(std::string const& path, #endif if (name.Regex.find(testName)) { this->TestPath = cmStrCat(path, origName); - if (!cmSystemTools::FileIsDirectory(this->TestPath)) { + // Make sure the path is readable and is not a directory. + if (cmSystemTools::FileExists(this->TestPath, true)) { this->DebugLibraryFound(name.Raw, dir); // This is a matching file. Check if it is better than the diff --git a/Source/cmGeneratedFileStream.cxx b/Source/cmGeneratedFileStream.cxx index 9cee0e6..345f0ba 100644 --- a/Source/cmGeneratedFileStream.cxx +++ b/Source/cmGeneratedFileStream.cxx @@ -122,10 +122,17 @@ void cmGeneratedFileStreamBase::Open(std::string const& name) // Create the name of the temporary file. this->TempName = name; #if defined(__VMS) - this->TempName += "_tmp"; + this->TempName += "_"; #else - this->TempName += ".tmp"; + this->TempName += "."; #endif + if (!this->TempExt.empty()) { + this->TempName += this->TempExt; + } else { + char buf[64]; + sprintf(buf, "tmp%05x", cmSystemTools::RandomSeed() & 0xFFFFF); + this->TempName += buf; + } // Make sure the temporary file that will be used is not present. cmSystemTools::RemoveFile(this->TempName); @@ -216,3 +223,8 @@ void cmGeneratedFileStream::SetName(const std::string& fname) { this->Name = fname; } + +void cmGeneratedFileStream::SetTempExt(std::string const& ext) +{ + this->TempExt = ext; +} diff --git a/Source/cmGeneratedFileStream.h b/Source/cmGeneratedFileStream.h index a9088ac..3dee142 100644 --- a/Source/cmGeneratedFileStream.h +++ b/Source/cmGeneratedFileStream.h @@ -43,6 +43,9 @@ protected: // The name of the final destination file for the output. std::string Name; + // The extension of the temporary file. + std::string TempExt; + // The name of the temporary file. std::string TempName; @@ -138,6 +141,12 @@ public: * the output file to be changed during the use of cmGeneratedFileStream. */ void SetName(const std::string& fname); + + /** + * Set set a custom temporary file extension used with 'Open'. + * This does not work if the file was opened by the constructor. + */ + void SetTempExt(std::string const& ext); }; #endif diff --git a/Source/cmGeneratorExpressionEvaluationFile.cxx b/Source/cmGeneratorExpressionEvaluationFile.cxx index 9e8707d..1107adb 100644 --- a/Source/cmGeneratorExpressionEvaluationFile.cxx +++ b/Source/cmGeneratorExpressionEvaluationFile.cxx @@ -157,12 +157,8 @@ void cmGeneratorExpressionEvaluationFile::Generate(cmLocalGenerator* lg) std::map<std::string, std::string> outputFiles; - std::vector<std::string> allConfigs; - lg->GetMakefile()->GetConfigurations(allConfigs); - - if (allConfigs.empty()) { - allConfigs.emplace_back(); - } + std::vector<std::string> allConfigs = + lg->GetMakefile()->GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig); std::vector<std::string> enabledLanguages; cmGlobalGenerator* gg = lg->GetGlobalGenerator(); diff --git a/Source/cmGeneratorExpressionNode.cxx b/Source/cmGeneratorExpressionNode.cxx index b712b71..4adc6a2 100644 --- a/Source/cmGeneratorExpressionNode.cxx +++ b/Source/cmGeneratorExpressionNode.cxx @@ -37,6 +37,7 @@ #include "cmPolicies.h" #include "cmProperty.h" #include "cmRange.h" +#include "cmStandardLevelResolver.h" #include "cmState.h" #include "cmStateSnapshot.h" #include "cmStateTypes.h" @@ -1707,11 +1708,11 @@ static const struct CompileFeaturesNode : public cmGeneratorExpressionNode static LangMap availableFeatures; LangMap testedFeatures; - + cmStandardLevelResolver standardResolver(context->LG->GetMakefile()); for (std::string const& p : parameters) { std::string error; std::string lang; - if (!context->LG->GetMakefile()->CompileFeatureKnown( + if (!standardResolver.CompileFeatureKnown( context->HeadTarget->Target->GetName(), p, lang, &error)) { reportError(context, content->GetOriginalExpression(), error); return std::string(); @@ -1720,7 +1721,7 @@ static const struct CompileFeaturesNode : public cmGeneratorExpressionNode if (availableFeatures.find(lang) == availableFeatures.end()) { const char* featuresKnown = - context->LG->GetMakefile()->CompileFeaturesAvailable(lang, &error); + standardResolver.CompileFeaturesAvailable(lang, &error); if (!featuresKnown) { reportError(context, content->GetOriginalExpression(), error); return std::string(); @@ -1745,8 +1746,8 @@ static const struct CompileFeaturesNode : public cmGeneratorExpressionNode // All features known for the language are always available. continue; } - if (!context->LG->GetMakefile()->HaveStandardAvailable( - target, lit.first, context->Config, it)) { + if (!standardResolver.HaveStandardAvailable(target, lit.first, + context->Config, it)) { if (evalLL) { cmProp l = target->GetLanguageStandard(lit.first, context->Config); if (!l) { diff --git a/Source/cmGeneratorTarget.cxx b/Source/cmGeneratorTarget.cxx index 992682f..ccd8e7e 100644 --- a/Source/cmGeneratorTarget.cxx +++ b/Source/cmGeneratorTarget.cxx @@ -43,6 +43,7 @@ #include "cmSourceFile.h" #include "cmSourceFileLocation.h" #include "cmSourceFileLocationKind.h" +#include "cmStandardLevelResolver.h" #include "cmState.h" #include "cmStringAlgorithms.h" #include "cmSystemTools.h" @@ -801,7 +802,8 @@ void cmGeneratorTarget::GetObjectSources( void cmGeneratorTarget::ComputeObjectMapping() { - auto const& configs = this->Makefile->GetGeneratorConfigs(); + auto const& configs = + this->Makefile->GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig); std::set<std::string> configSet(configs.begin(), configs.end()); if (configSet == this->VisitedConfigsForObjects) { return; @@ -947,7 +949,7 @@ bool cmGeneratorTarget::HasExplicitObjectName(cmSourceFile const* file) const return it != this->ExplicitObjectName.end(); } -BT<std::string> const* cmGeneratorTarget::GetLanguageStandardProperty( +BTs<std::string> const* cmGeneratorTarget::GetLanguageStandardProperty( std::string const& lang, std::string const& config) const { std::string key = cmStrCat(cmSystemTools::UpperCase(config), '-', lang); @@ -963,7 +965,7 @@ BT<std::string> const* cmGeneratorTarget::GetLanguageStandardProperty( cmProp cmGeneratorTarget::GetLanguageStandard(std::string const& lang, std::string const& config) const { - BT<std::string> const* languageStandard = + BTs<std::string> const* languageStandard = this->GetLanguageStandardProperty(lang, config); if (languageStandard) { @@ -1778,8 +1780,8 @@ cmGeneratorTarget::GetAllConfigSources() const void cmGeneratorTarget::ComputeAllConfigSources() const { - std::vector<std::string> configs; - this->Makefile->GetConfigurations(configs); + std::vector<std::string> configs = + this->Makefile->GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig); std::map<cmSourceFile const*, size_t> index; @@ -2812,7 +2814,7 @@ cmTargetTraceDependencies::cmTargetTraceDependencies(cmGeneratorTarget* target) if (target->GetType() != cmStateEnums::INTERFACE_LIBRARY) { std::set<cmSourceFile*> emitted; std::vector<std::string> const& configs = - this->Makefile->GetGeneratorConfigs(); + this->Makefile->GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig); for (std::string const& c : configs) { std::vector<cmSourceFile*> sources; this->GeneratorTarget->GetSourceFiles(sources, c); @@ -3023,7 +3025,7 @@ void cmTargetTraceDependencies::CheckCustomCommand(cmCustomCommand const& cc) // Queue the custom command dependencies. std::set<std::string> emitted; std::vector<std::string> const& configs = - this->Makefile->GetGeneratorConfigs(); + this->Makefile->GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig); for (std::string const& conf : configs) { this->FollowCommandDepends(cc, conf, emitted); } @@ -4464,11 +4466,12 @@ void cmGeneratorTarget::ComputeTargetManifest(const std::string& config) const bool cmGeneratorTarget::ComputeCompileFeatures(std::string const& config) const { // Compute the language standard based on the compile features. + cmStandardLevelResolver standardResolver(this->Makefile); std::vector<BT<std::string>> features = this->GetCompileFeatures(config); for (BT<std::string> const& f : features) { std::string lang; - if (!this->Makefile->CompileFeatureKnown(this->Target->GetName(), f.Value, - lang, nullptr)) { + if (!standardResolver.CompileFeatureKnown(this->Target->GetName(), f.Value, + lang, nullptr)) { return false; } @@ -4476,15 +4479,20 @@ bool cmGeneratorTarget::ComputeCompileFeatures(std::string const& config) const cmProp currentLanguageStandard = this->GetLanguageStandard(lang, config); std::string newRequiredStandard; - if (!this->Makefile->GetNewRequiredStandard( + if (!standardResolver.GetNewRequiredStandard( this->Target->GetName(), f.Value, currentLanguageStandard, newRequiredStandard)) { return false; } if (!newRequiredStandard.empty()) { - this->LanguageStandardMap[key] = - BT<std::string>(newRequiredStandard, f.Backtrace); + BTs<std::string>& languageStandardProperty = + this->LanguageStandardMap[key]; + if (languageStandardProperty.Value != newRequiredStandard) { + languageStandardProperty.Value = newRequiredStandard; + languageStandardProperty.Backtraces.clear(); + } + languageStandardProperty.Backtraces.emplace_back(f.Backtrace); } } @@ -4495,14 +4503,14 @@ bool cmGeneratorTarget::ComputeCompileFeatures( std::string const& config, std::set<LanguagePair> const& languagePairs) const { for (const auto& language : languagePairs) { - BT<std::string> const* generatorTargetLanguageStandard = + BTs<std::string> const* generatorTargetLanguageStandard = this->GetLanguageStandardProperty(language.first, config); if (!generatorTargetLanguageStandard) { // If the standard isn't explicitly set we copy it over from the // specified paired language. std::string key = cmStrCat(cmSystemTools::UpperCase(config), '-', language.first); - BT<std::string> const* standardToCopy = + BTs<std::string> const* standardToCopy = this->GetLanguageStandardProperty(language.second, config); if (standardToCopy != nullptr) { this->LanguageStandardMap[key] = *standardToCopy; @@ -4511,7 +4519,7 @@ bool cmGeneratorTarget::ComputeCompileFeatures( cmProp defaultStandard = this->Makefile->GetDef( cmStrCat("CMAKE_", language.second, "_STANDARD_DEFAULT")); if (defaultStandard != nullptr) { - this->LanguageStandardMap[key] = BT<std::string>(*defaultStandard); + this->LanguageStandardMap[key] = BTs<std::string>(*defaultStandard); generatorTargetLanguageStandard = &this->LanguageStandardMap[key]; } } @@ -6843,7 +6851,7 @@ bool cmGeneratorTarget::GetConfigCommonSourceFiles( std::vector<cmSourceFile*>& files) const { std::vector<std::string> const& configs = - this->Makefile->GetGeneratorConfigs(); + this->Makefile->GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig); auto it = configs.begin(); const std::string& firstConfig = *it; diff --git a/Source/cmGeneratorTarget.h b/Source/cmGeneratorTarget.h index 20f3a07..07f071b 100644 --- a/Source/cmGeneratorTarget.h +++ b/Source/cmGeneratorTarget.h @@ -148,7 +148,7 @@ public: bool HasExplicitObjectName(cmSourceFile const* file) const; void AddExplicitObjectName(cmSourceFile const* sf); - BT<std::string> const* GetLanguageStandardProperty( + BTs<std::string> const* GetLanguageStandardProperty( std::string const& lang, std::string const& config) const; cmProp GetLanguageStandard(std::string const& lang, @@ -1053,7 +1053,7 @@ private: bool GetRPATH(const std::string& config, const std::string& prop, std::string& rpath) const; - mutable std::map<std::string, BT<std::string>> LanguageStandardMap; + mutable std::map<std::string, BTs<std::string>> LanguageStandardMap; cmProp GetPropertyWithPairedLanguageSupport(std::string const& lang, const char* suffix) const; diff --git a/Source/cmGlobalGenerator.cxx b/Source/cmGlobalGenerator.cxx index 6001999..a0cee0e 100644 --- a/Source/cmGlobalGenerator.cxx +++ b/Source/cmGlobalGenerator.cxx @@ -313,19 +313,16 @@ bool cmGlobalGenerator::CheckTargetsForMissingSources() const } } - std::vector<std::string> configs; - target->Makefile->GetConfigurations(configs); + std::vector<std::string> configs = + target->Makefile->GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig); std::vector<cmSourceFile*> srcs; - if (configs.empty()) { - target->GetSourceFiles(srcs, ""); - } else { - for (std::string const& config : configs) { - target->GetSourceFiles(srcs, config); - if (!srcs.empty()) { - break; - } + for (std::string const& config : configs) { + target->GetSourceFiles(srcs, config); + if (!srcs.empty()) { + break; } } + if (srcs.empty()) { std::ostringstream e; e << "No SOURCES given to target: " << target->GetName(); @@ -349,7 +346,8 @@ bool cmGlobalGenerator::CheckTargetsForType() const if (target->GetType() == cmStateEnums::EXECUTABLE && target->GetPropertyAsBool("WIN32_EXECUTABLE")) { std::vector<std::string> const& configs = - target->Makefile->GetGeneratorConfigs(); + target->Makefile->GetGeneratorConfigs( + cmMakefile::IncludeEmptyConfig); for (std::string const& config : configs) { if (target->GetLinkerLanguage(config) == "Swift") { this->GetCMakeInstance()->IssueMessage( @@ -1701,8 +1699,8 @@ void cmGlobalGenerator::FinalizeTargetCompileInfo() cmPolicies::PolicyStatus polSt = mf->GetPolicyStatus(cmPolicies::CMP0043); if (polSt == cmPolicies::WARN || polSt == cmPolicies::OLD) { - std::vector<std::string> configs; - mf->GetConfigurations(configs); + std::vector<std::string> configs = + mf->GetGeneratorConfigs(cmMakefile::ExcludeEmptyConfig); for (std::string const& c : configs) { std::string defPropName = @@ -3127,7 +3125,8 @@ void cmGlobalGenerator::WriteSummary(cmGeneratorTarget* target) fout << "# Source files and their labels\n"; std::vector<cmSourceFile*> sources; std::vector<std::string> const& configs = - target->Target->GetMakefile()->GetGeneratorConfigs(); + target->Target->GetMakefile()->GetGeneratorConfigs( + cmMakefile::IncludeEmptyConfig); for (std::string const& c : configs) { target->GetSourceFiles(sources, c); } @@ -3226,8 +3225,9 @@ bool cmGlobalGenerator::GenerateCPackPropertiesFile() const auto& lg = this->LocalGenerators[0]; cmMakefile* mf = lg->GetMakefile(); - std::vector<std::string> configs; - std::string config = mf->GetConfigurations(configs, false); + std::vector<std::string> configs = + mf->GetGeneratorConfigs(cmMakefile::OnlyMultiConfig); + std::string config = mf->GetDefaultConfiguration(); std::string path = cmStrCat(this->CMakeInstance->GetHomeOutputDirectory(), "/CPackProperties.cmake"); diff --git a/Source/cmGlobalNinjaGenerator.cxx b/Source/cmGlobalNinjaGenerator.cxx index 843b0f4..48eb405 100644 --- a/Source/cmGlobalNinjaGenerator.cxx +++ b/Source/cmGlobalNinjaGenerator.cxx @@ -5,9 +5,9 @@ #include <algorithm> #include <cctype> #include <cstdio> -#include <iterator> #include <sstream> +#include <cm/iterator> #include <cm/memory> #include <cmext/algorithm> #include <cmext/memory> @@ -518,7 +518,8 @@ void cmGlobalNinjaGenerator::Generate() if (cmSystemTools::GetErrorOccuredFlag()) { this->RulesFileStream->setstate(std::ios::failbit); - for (auto const& config : this->Makefiles[0]->GetGeneratorConfigs()) { + for (auto const& config : this->Makefiles[0]->GetGeneratorConfigs( + cmMakefile::IncludeEmptyConfig)) { this->GetImplFileStream(config)->setstate(std::ios::failbit); this->GetConfigFileStream(config)->setstate(std::ios::failbit); } @@ -1207,7 +1208,8 @@ void cmGlobalNinjaGenerator::AddTargetAlias(const std::string& alias, this->TargetAliases[output].GeneratorTarget = nullptr; this->DefaultTargetAliases[output].GeneratorTarget = nullptr; for (const std::string& config2 : - this->Makefiles.front()->GetGeneratorConfigs()) { + this->Makefiles.front()->GetGeneratorConfigs( + cmMakefile::IncludeEmptyConfig)) { this->Configs[config2].TargetAliases[output].GeneratorTarget = nullptr; } } @@ -1280,7 +1282,8 @@ void cmGlobalNinjaGenerator::WriteTargetAliases(std::ostream& os) } if (this->IsMultiConfig()) { - for (auto const& config : this->Makefiles.front()->GetGeneratorConfigs()) { + for (auto const& config : this->Makefiles.front()->GetGeneratorConfigs( + cmMakefile::IncludeEmptyConfig)) { for (auto const& ta : this->Configs[config].TargetAliases) { // Don't write ambiguous aliases. if (!ta.second.GeneratorTarget) { @@ -1339,11 +1342,9 @@ void cmGlobalNinjaGenerator::WriteFolderTargets(std::ostream& os) cmGlobalNinjaGenerator::WriteDivider(os); std::string const& currentBinaryDir = it.first; DirectoryTarget const& dt = it.second; - std::vector<std::string> configs; - dt.LG->GetMakefile()->GetConfigurations(configs, true); - if (configs.empty()) { - configs.emplace_back(); - } + std::vector<std::string> configs = + dt.LG->GetMakefile()->GetGeneratorConfigs( + cmMakefile::IncludeEmptyConfig); // Setup target cmNinjaDeps configDeps; @@ -1538,7 +1539,8 @@ void cmGlobalNinjaGenerator::WriteBuiltinTargets(std::ostream& os) this->WriteTargetClean(os); this->WriteTargetHelp(os); - for (auto const& config : this->Makefiles[0]->GetGeneratorConfigs()) { + for (auto const& config : this->Makefiles[0]->GetGeneratorConfigs( + cmMakefile::IncludeEmptyConfig)) { this->WriteTargetDefault(*this->GetConfigFileStream(config)); } @@ -1712,11 +1714,8 @@ bool cmGlobalNinjaGenerator::WriteTargetCleanAdditional(std::ostream& os) std::string cleanScriptRel = "CMakeFiles/clean_additional.cmake"; std::string cleanScriptAbs = cmStrCat(lgr->GetBinaryDirectory(), '/', cleanScriptRel); - std::vector<std::string> configs; - this->Makefiles[0]->GetConfigurations(configs, true); - if (configs.empty()) { - configs.emplace_back(); - } + std::vector<std::string> configs = + this->Makefiles[0]->GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig); // Check if there are additional files to clean bool empty = true; @@ -1810,7 +1809,8 @@ void cmGlobalNinjaGenerator::WriteTargetClean(std::ostream& os) WriteRule(*this->RulesFileStream, rule); } - auto const configs = this->Makefiles.front()->GetGeneratorConfigs(); + auto const configs = this->Makefiles.front()->GetGeneratorConfigs( + cmMakefile::IncludeEmptyConfig); // Write build { @@ -2489,7 +2489,8 @@ bool cmGlobalNinjaMultiGenerator::OpenBuildFileStreams() << "# This file contains build statements common to all " "configurations.\n\n"; - for (auto const& config : this->Makefiles[0]->GetGeneratorConfigs()) { + for (auto const& config : this->Makefiles[0]->GetGeneratorConfigs( + cmMakefile::IncludeEmptyConfig)) { // Open impl file. if (!this->OpenFileStream(this->ImplFileStreams[config], GetNinjaImplFilename(config))) { @@ -2529,7 +2530,8 @@ void cmGlobalNinjaMultiGenerator::CloseBuildFileStreams() this->DefaultFileStream.reset(); } // No error if it wasn't open - for (auto const& config : this->Makefiles[0]->GetGeneratorConfigs()) { + for (auto const& config : this->Makefiles[0]->GetGeneratorConfigs( + cmMakefile::IncludeEmptyConfig)) { if (this->ImplFileStreams[config]) { this->ImplFileStreams[config].reset(); } else { @@ -2571,7 +2573,8 @@ std::string cmGlobalNinjaMultiGenerator::GetNinjaConfigFilename( void cmGlobalNinjaMultiGenerator::AddRebuildManifestOutputs( cmNinjaDeps& outputs) const { - for (auto const& config : this->Makefiles.front()->GetGeneratorConfigs()) { + for (auto const& config : this->Makefiles.front()->GetGeneratorConfigs( + cmMakefile::IncludeEmptyConfig)) { outputs.push_back(this->NinjaOutputPath(GetNinjaImplFilename(config))); outputs.push_back(this->NinjaOutputPath(GetNinjaConfigFilename(config))); } @@ -2583,11 +2586,9 @@ void cmGlobalNinjaMultiGenerator::AddRebuildManifestOutputs( void cmGlobalNinjaMultiGenerator::GetQtAutoGenConfigs( std::vector<std::string>& configs) const { - auto const oldSize = configs.size(); - this->Makefiles.front()->GetConfigurations(configs); - if (configs.size() == oldSize) { - configs.emplace_back(); - } + auto allConfigs = + this->Makefiles[0]->GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig); + configs.insert(configs.end(), cm::cbegin(allConfigs), cm::cend(allConfigs)); } bool cmGlobalNinjaMultiGenerator::InspectConfigTypeVariables() diff --git a/Source/cmGlobalVisualStudio71Generator.cxx b/Source/cmGlobalVisualStudio71Generator.cxx index 7ada325..0083c40 100644 --- a/Source/cmGlobalVisualStudio71Generator.cxx +++ b/Source/cmGlobalVisualStudio71Generator.cxx @@ -19,8 +19,8 @@ void cmGlobalVisualStudio71Generator::WriteSLNFile( std::ostream& fout, cmLocalGenerator* root, std::vector<cmLocalGenerator*>& generators) { - std::vector<std::string> configs; - root->GetMakefile()->GetConfigurations(configs); + std::vector<std::string> configs = + root->GetMakefile()->GetGeneratorConfigs(cmMakefile::ExcludeEmptyConfig); // Write out the header for a SLN file this->WriteSLNHeader(fout); diff --git a/Source/cmGlobalVisualStudio7Generator.cxx b/Source/cmGlobalVisualStudio7Generator.cxx index 428c748..9f798e6 100644 --- a/Source/cmGlobalVisualStudio7Generator.cxx +++ b/Source/cmGlobalVisualStudio7Generator.cxx @@ -568,8 +568,9 @@ void cmGlobalVisualStudio7Generator::WriteSLNFooter(std::ostream& fout) std::string cmGlobalVisualStudio7Generator::WriteUtilityDepend( cmGeneratorTarget const* target) { - std::vector<std::string> configs; - target->Target->GetMakefile()->GetConfigurations(configs); + std::vector<std::string> configs = + target->Target->GetMakefile()->GetGeneratorConfigs( + cmMakefile::ExcludeEmptyConfig); std::string pname = cmStrCat(target->GetName(), "_UTILITY"); std::string fname = cmStrCat(target->GetLocalGenerator()->GetCurrentBinaryDirectory(), '/', diff --git a/Source/cmGlobalXCodeGenerator.cxx b/Source/cmGlobalXCodeGenerator.cxx index bb422eb..656a346 100644 --- a/Source/cmGlobalXCodeGenerator.cxx +++ b/Source/cmGlobalXCodeGenerator.cxx @@ -468,6 +468,9 @@ void cmGlobalXCodeGenerator::Generate() } } + // cache the enabled languages for source file type queries + this->GetEnabledLanguages(this->EnabledLangs); + this->SetGenerationRoot(root); // now create the project this->OutputXCodeProject(root, keyVal.second); @@ -922,9 +925,9 @@ void cmGlobalXCodeGenerator::AddXCodeProjBuildRule( } } -std::string GetSourcecodeValueFromFileExtension(const std::string& _ext, - const std::string& lang, - bool& keepLastKnownFileType) +std::string GetSourcecodeValueFromFileExtension( + const std::string& _ext, const std::string& lang, + bool& keepLastKnownFileType, const std::vector<std::string>& enabled_langs) { std::string ext = cmSystemTools::LowerCase(_ext); std::string sourcecode = "sourcecode"; @@ -939,9 +942,9 @@ std::string GetSourcecodeValueFromFileExtension(const std::string& _ext, } else if (ext == "storyboard") { keepLastKnownFileType = true; sourcecode = "file.storyboard"; - } else if (ext == "mm") { + } else if (ext == "mm" && !cm::contains(enabled_langs, "OBJCXX")) { sourcecode += ".cpp.objcpp"; - } else if (ext == "m") { + } else if (ext == "m" && !cm::contains(enabled_langs, "OBJC")) { sourcecode += ".c.objc"; } else if (ext == "swift") { sourcecode += ".swift"; @@ -1028,8 +1031,8 @@ cmXCodeObject* cmGlobalXCodeGenerator::CreateXCodeFileReferenceFromPath( fileType = (ext == "xcassets" ? "folder.assetcatalog" : "folder"); useLastKnownFileType = true; } else { - fileType = - GetSourcecodeValueFromFileExtension(ext, lang, useLastKnownFileType); + fileType = GetSourcecodeValueFromFileExtension( + ext, lang, useLastKnownFileType, this->EnabledLangs); } } @@ -1077,11 +1080,8 @@ void cmGlobalXCodeGenerator::SetCurrentLocalGenerator(cmLocalGenerator* gen) this->CurrentMakefile = gen->GetMakefile(); // Select the current set of configuration types. - this->CurrentConfigurationTypes.clear(); - this->CurrentMakefile->GetConfigurations(this->CurrentConfigurationTypes); - if (this->CurrentConfigurationTypes.empty()) { - this->CurrentConfigurationTypes.emplace_back(); - } + this->CurrentConfigurationTypes = + this->CurrentMakefile->GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig); } struct cmSourceFilePathCompare diff --git a/Source/cmGlobalXCodeGenerator.h b/Source/cmGlobalXCodeGenerator.h index 0fc6558..11b9312 100644 --- a/Source/cmGlobalXCodeGenerator.h +++ b/Source/cmGlobalXCodeGenerator.h @@ -301,6 +301,7 @@ private: std::string ObjectDirArch; std::string GeneratorToolset; std::map<cmGeneratorTarget const*, size_t> TargetOrderIndex; + std::vector<std::string> EnabledLangs; }; #endif diff --git a/Source/cmJsonObjects.cxx b/Source/cmJsonObjects.cxx index 9f17f15..3a2e3be 100644 --- a/Source/cmJsonObjects.cxx +++ b/Source/cmJsonObjects.cxx @@ -51,11 +51,7 @@ std::vector<std::string> getConfigurations(const cmake* cm) return configurations; } - makefiles[0]->GetConfigurations(configurations); - if (configurations.empty()) { - configurations.emplace_back(); - } - return configurations; + return makefiles[0]->GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig); } bool hasString(const Json::Value& v, const std::string& s) diff --git a/Source/cmLinkItemGraphVisitor.cxx b/Source/cmLinkItemGraphVisitor.cxx index b13def8..dfdd3ff 100644 --- a/Source/cmLinkItemGraphVisitor.cxx +++ b/Source/cmLinkItemGraphVisitor.cxx @@ -28,7 +28,8 @@ void cmLinkItemGraphVisitor::VisitLinks(cmLinkItem const& item, return; } - for (auto const& config : item.Target->Makefile->GetGeneratorConfigs()) { + for (auto const& config : item.Target->Makefile->GetGeneratorConfigs( + cmMakefile::IncludeEmptyConfig)) { this->VisitLinks(item, rootItem, config); } } diff --git a/Source/cmListFileCache.h b/Source/cmListFileCache.h index 89902ff..0b4414d 100644 --- a/Source/cmListFileCache.h +++ b/Source/cmListFileCache.h @@ -175,6 +175,32 @@ public: std::ostream& operator<<(std::ostream& os, BT<std::string> const& s); +// Wrap type T as a value with potentially multiple backtraces. For purposes +// of ordering and equality comparison, only the original value is used. The +// backtrace is considered incidental. +template <typename T> +class BTs +{ +public: + BTs(T v = T(), cmListFileBacktrace bt = cmListFileBacktrace()) + : Value(std::move(v)) + { + Backtraces.emplace_back(std::move(bt)); + } + T Value; + std::vector<cmListFileBacktrace> Backtraces; + friend bool operator==(BTs<T> const& l, BTs<T> const& r) + { + return l.Value == r.Value; + } + friend bool operator<(BTs<T> const& l, BTs<T> const& r) + { + return l.Value < r.Value; + } + friend bool operator==(BTs<T> const& l, T const& r) { return l.Value == r; } + friend bool operator==(T const& l, BTs<T> const& r) { return l == r.Value; } +}; + std::vector<BT<std::string>> ExpandListWithBacktrace( std::string const& list, cmListFileBacktrace const& bt = cmListFileBacktrace()); diff --git a/Source/cmLocalCommonGenerator.cxx b/Source/cmLocalCommonGenerator.cxx index 278ec8b..44db842 100644 --- a/Source/cmLocalCommonGenerator.cxx +++ b/Source/cmLocalCommonGenerator.cxx @@ -17,10 +17,8 @@ cmLocalCommonGenerator::cmLocalCommonGenerator(cmGlobalGenerator* gg, : cmLocalGenerator(gg, mf) , WorkingDirectory(std::move(wd)) { - this->Makefile->GetConfigurations(this->ConfigNames); - if (this->ConfigNames.empty()) { - this->ConfigNames.emplace_back(); - } + this->ConfigNames = + this->Makefile->GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig); } cmLocalCommonGenerator::~cmLocalCommonGenerator() = default; diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx index 95caa30..489065b 100644 --- a/Source/cmLocalGenerator.cxx +++ b/Source/cmLocalGenerator.cxx @@ -39,6 +39,7 @@ #include "cmSourceFile.h" #include "cmSourceFileLocation.h" #include "cmSourceFileLocationKind.h" +#include "cmStandardLevelResolver.h" #include "cmState.h" #include "cmStateDirectory.h" #include "cmStateTypes.h" @@ -297,9 +298,9 @@ void cmLocalGenerator::GenerateTestFiles() } // Compute the set of configurations. - std::vector<std::string> configurationTypes; - const std::string& config = - this->Makefile->GetConfigurations(configurationTypes, false); + std::vector<std::string> configurationTypes = + this->Makefile->GetGeneratorConfigs(cmMakefile::OnlyMultiConfig); + std::string config = this->Makefile->GetDefaultConfiguration(); std::string file = cmStrCat(this->StateSnapshot.GetDirectory().GetCurrentBinary(), @@ -379,7 +380,7 @@ void cmLocalGenerator::GenerateTestFiles() void cmLocalGenerator::CreateEvaluationFileOutputs() { std::vector<std::string> const& configs = - this->Makefile->GetGeneratorConfigs(); + this->Makefile->GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig); for (std::string const& c : configs) { this->CreateEvaluationFileOutputs(c); } @@ -462,9 +463,9 @@ void cmLocalGenerator::GenerateInstallRules() } // Compute the set of configurations. - std::vector<std::string> configurationTypes; - const std::string& config = - this->Makefile->GetConfigurations(configurationTypes, false); + std::vector<std::string> configurationTypes = + this->Makefile->GetGeneratorConfigs(cmMakefile::OnlyMultiConfig); + std::string config = this->Makefile->GetDefaultConfiguration(); // Choose a default install configuration. std::string default_config = config; @@ -753,11 +754,8 @@ cmGeneratorTarget* cmLocalGenerator::FindLocalNonAliasGeneratorTarget( void cmLocalGenerator::ComputeTargetManifest() { // Collect the set of configuration types. - std::vector<std::string> configNames; - this->Makefile->GetConfigurations(configNames); - if (configNames.empty()) { - configNames.emplace_back(); - } + std::vector<std::string> configNames = + this->Makefile->GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig); // Add our targets to the manifest for each configuration. const auto& targets = this->GetGeneratorTargets(); @@ -774,11 +772,8 @@ void cmLocalGenerator::ComputeTargetManifest() bool cmLocalGenerator::ComputeTargetCompileFeatures() { // Collect the set of configuration types. - std::vector<std::string> configNames; - this->Makefile->GetConfigurations(configNames); - if (configNames.empty()) { - configNames.emplace_back(); - } + std::vector<std::string> configNames = + this->Makefile->GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig); using LanguagePair = std::pair<std::string, std::string>; std::vector<LanguagePair> pairedLanguages{ { "OBJC", "C" }, @@ -994,12 +989,13 @@ void cmLocalGenerator::AddCompileOptions(std::vector<BT<std::string>>& flags, this->AppendCompileOptions(flags, targetCompileOpts); } + cmStandardLevelResolver standardResolver(this->Makefile); for (auto const& it : target->GetMaxLanguageStandards()) { cmProp standard = target->GetLanguageStandard(it.first, config); if (!standard) { continue; } - if (this->Makefile->IsLaterStandard(it.first, *standard, it.second)) { + if (standardResolver.IsLaterStandard(it.first, *standard, it.second)) { std::ostringstream e; e << "The COMPILE_FEATURES property of target \"" << target->GetName() << "\" was evaluated when computing the link " @@ -2551,11 +2547,8 @@ void cmLocalGenerator::AppendFlagEscape(std::string& flags, void cmLocalGenerator::AddPchDependencies(cmGeneratorTarget* target) { - std::vector<std::string> configsList; - std::string configDefault = this->Makefile->GetConfigurations(configsList); - if (configsList.empty()) { - configsList.push_back(configDefault); - } + std::vector<std::string> configsList = + this->Makefile->GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig); for (std::string const& config : configsList) { // FIXME: Refactor collection of sources to not evaluate object @@ -3845,7 +3838,7 @@ void cmLocalGenerator::GenerateAppleInfoPList(cmGeneratorTarget* target, cmLGInfoProp(mf, target, "MACOSX_BUNDLE_SHORT_VERSION_STRING"); cmLGInfoProp(mf, target, "MACOSX_BUNDLE_BUNDLE_VERSION"); cmLGInfoProp(mf, target, "MACOSX_BUNDLE_COPYRIGHT"); - mf->ConfigureFile(inFile, fname, false, false, false); + mf->ConfigureFile(inFile, fname, false, false, false, true); } void cmLocalGenerator::GenerateFrameworkInfoPList( @@ -3881,7 +3874,7 @@ void cmLocalGenerator::GenerateFrameworkInfoPList( cmLGInfoProp(mf, target, "MACOSX_FRAMEWORK_IDENTIFIER"); cmLGInfoProp(mf, target, "MACOSX_FRAMEWORK_SHORT_VERSION_STRING"); cmLGInfoProp(mf, target, "MACOSX_FRAMEWORK_BUNDLE_VERSION"); - mf->ConfigureFile(inFile, fname, false, false, false); + mf->ConfigureFile(inFile, fname, false, false, false, true); } namespace { diff --git a/Source/cmLocalVisualStudio7Generator.cxx b/Source/cmLocalVisualStudio7Generator.cxx index 5d50e2d..ad61ad3 100644 --- a/Source/cmLocalVisualStudio7Generator.cxx +++ b/Source/cmLocalVisualStudio7Generator.cxx @@ -1331,8 +1331,8 @@ void cmLocalVisualStudio7Generator::WriteVCProjFile(std::ostream& fout, const std::string& libName, cmGeneratorTarget* target) { - std::vector<std::string> configs; - this->Makefile->GetConfigurations(configs); + std::vector<std::string> configs = + this->Makefile->GetGeneratorConfigs(cmMakefile::ExcludeEmptyConfig); // We may be modifying the source groups temporarily, so make a copy. std::vector<cmSourceGroup> sourceGroups = this->Makefile->GetSourceGroups(); @@ -1580,8 +1580,9 @@ cmLocalVisualStudio7GeneratorFCInfo::cmLocalVisualStudio7GeneratorFCInfo( std::string cmLocalVisualStudio7Generator::ComputeLongestObjectDirectory( cmGeneratorTarget const* target) const { - std::vector<std::string> configs; - target->Target->GetMakefile()->GetConfigurations(configs); + std::vector<std::string> configs = + target->Target->GetMakefile()->GetGeneratorConfigs( + cmMakefile::ExcludeEmptyConfig); // Compute the maximum length configuration name. std::string config_max; diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx index d34259f..75c8934 100644 --- a/Source/cmMakefile.cxx +++ b/Source/cmMakefile.cxx @@ -34,12 +34,12 @@ #include "cmExecutionStatus.h" #include "cmExpandedCommandArgument.h" // IWYU pragma: keep #include "cmExportBuildFileGenerator.h" +#include "cmFSPermissions.h" #include "cmFileLockPool.h" #include "cmFunctionBlocker.h" #include "cmGeneratedFileStream.h" #include "cmGeneratorExpression.h" #include "cmGeneratorExpressionEvaluationFile.h" -#include "cmGeneratorTarget.h" #include "cmGlobalGenerator.h" #include "cmInstallGenerator.h" // IWYU pragma: keep #include "cmInstallSubdirectoryGenerator.h" @@ -69,6 +69,8 @@ class cmMessenger; +using namespace cmFSPermissions; + cmDirectoryId::cmDirectoryId(std::string s) : String(std::move(s)) { @@ -83,7 +85,6 @@ cmMakefile::cmMakefile(cmGlobalGenerator* globalGenerator, { this->IsSourceFileTryCompile = false; - this->WarnUnused = this->GetCMakeInstance()->GetWarnUnused(); this->CheckSystemVars = this->GetCMakeInstance()->GetCheckSystemVars(); this->SuppressSideEffects = false; @@ -751,7 +752,6 @@ void cmMakefile::ReadListFile(cmListFile const& listFile, break; } } - this->CheckForUnusedVariables(); this->AddDefinition("CMAKE_PARENT_LIST_FILE", currentParentFile); this->AddDefinition("CMAKE_CURRENT_LIST_FILE", currentFile); @@ -1435,8 +1435,8 @@ void cmMakefile::InitializeFromParent(cmMakefile* parent) if (polSt == cmPolicies::WARN || polSt == cmPolicies::OLD) { cmProp p = parent->GetProperty("COMPILE_DEFINITIONS"); this->SetProperty("COMPILE_DEFINITIONS", p ? p->c_str() : nullptr); - std::vector<std::string> configs; - this->GetConfigurations(configs); + std::vector<std::string> configs = + this->GetGeneratorConfigs(cmMakefile::ExcludeEmptyConfig); for (std::string const& config : configs) { std::string defPropName = cmStrCat("COMPILE_DEFINITIONS_", cmSystemTools::UpperCase(config)); @@ -1462,6 +1462,9 @@ void cmMakefile::InitializeFromParent(cmMakefile* parent) // Imported targets. this->ImportedTargets = parent->ImportedTargets; + // Non-global Alias targets. + this->AliasTargets = parent->AliasTargets; + // Recursion depth. this->RecursionDepth = parent->RecursionDepth; } @@ -1511,8 +1514,6 @@ void cmMakefile::PopFunctionScope(bool reportError) #endif this->PopLoopBlockBarrier(); - - this->CheckForUnusedVariables(); } void cmMakefile::PushMacroScope(std::string const& fileName, @@ -1859,9 +1860,6 @@ void cmMakefile::AddSystemIncludeDirectories(const std::set<std::string>& incs) void cmMakefile::AddDefinition(const std::string& name, cm::string_view value) { - if (this->VariableInitialized(name)) { - this->LogUnused("changing definition", name); - } this->StateSnapshot.SetDefinition(name, value); #ifndef CMAKE_BOOTSTRAP @@ -1922,16 +1920,6 @@ void cmMakefile::AddCacheDefinition(const std::string& name, const char* value, this->StateSnapshot.RemoveDefinition(name); } -void cmMakefile::CheckForUnusedVariables() const -{ - if (!this->WarnUnused) { - return; - } - for (const std::string& key : this->StateSnapshot.UnusedKeys()) { - this->LogUnused("out of scope", key); - } -} - void cmMakefile::MarkVariableAsUsed(const std::string& var) { this->StateSnapshot.GetDefinition(var); @@ -1959,29 +1947,8 @@ void cmMakefile::MaybeWarnUninitialized(std::string const& variable, } } -void cmMakefile::LogUnused(const char* reason, const std::string& name) const -{ - if (this->WarnUnused) { - std::string path; - if (!this->ExecutionStatusStack.empty()) { - path = this->GetExecutionContext().FilePath; - } else { - path = cmStrCat(this->GetCurrentSourceDirectory(), "/CMakeLists.txt"); - } - - if (this->CheckSystemVars || this->IsProjectFile(path.c_str())) { - std::ostringstream msg; - msg << "unused variable (" << reason << ") \'" << name << "\'"; - this->IssueMessage(MessageType::AUTHOR_WARNING, msg.str()); - } - } -} - void cmMakefile::RemoveDefinition(const std::string& name) { - if (this->VariableInitialized(name)) { - this->LogUnused("unsetting", name); - } this->StateSnapshot.RemoveDefinition(name); #ifndef CMAKE_BOOTSTRAP cmVariableWatch* vv = this->GetVariableWatch(); @@ -3286,25 +3253,28 @@ void cmMakefile::RemoveVariablesInString(std::string& source, } } -std::string cmMakefile::GetConfigurations(std::vector<std::string>& configs, - bool singleConfig) const +std::string cmMakefile::GetDefaultConfiguration() const { if (this->GetGlobalGenerator()->IsMultiConfig()) { - this->GetDefExpandList("CMAKE_CONFIGURATION_TYPES", configs); - return ""; + return std::string{}; } - const std::string& buildType = this->GetSafeDefinition("CMAKE_BUILD_TYPE"); - if (singleConfig && !buildType.empty()) { - configs.push_back(buildType); - } - return buildType; + return this->GetSafeDefinition("CMAKE_BUILD_TYPE"); } -std::vector<std::string> cmMakefile::GetGeneratorConfigs() const +std::vector<std::string> cmMakefile::GetGeneratorConfigs( + GeneratorConfigQuery mode) const { std::vector<std::string> configs; - GetConfigurations(configs); - if (configs.empty()) { + if (this->GetGlobalGenerator()->IsMultiConfig() || + mode == cmMakefile::OnlyMultiConfig) { + this->GetDefExpandList("CMAKE_CONFIGURATION_TYPES", configs); + } else { + const std::string& buildType = this->GetSafeDefinition("CMAKE_BUILD_TYPE"); + if (!buildType.empty()) { + configs.emplace_back(buildType); + } + } + if (mode == cmMakefile::IncludeEmptyConfig && configs.empty()) { configs.emplace_back(); } return configs; @@ -3724,7 +3694,7 @@ int cmMakefile::TryCompile(const std::string& srcdir, if (cmakeArgs) { // FIXME: Workaround to ignore unused CLI variables in try-compile. // - // Ideally we should use SetArgs to honor options like --warn-unused-vars. + // Ideally we should use SetArgs for options like --no-warn-unused-cli. // However, there is a subtle problem when certain arguments are passed to // a macro wrapping around try_compile or try_run that does not escape // semicolons in its parameters but just passes ${ARGV} or ${ARGN}. In @@ -3743,7 +3713,7 @@ int cmMakefile::TryCompile(const std::string& srcdir, // the value VAR=a is sufficient for the try_compile or try_run to get the // correct result. Calling SetArgs here would break such projects that // previously built. Instead we work around the issue by never reporting - // unused arguments and ignoring options such as --warn-unused-vars. + // unused arguments and ignoring options such as --no-warn-unused-cli. cm.SetWarnUnusedCli(false); // cm.SetArgs(*cmakeArgs, true); @@ -3997,6 +3967,7 @@ void cmMakefile::ConfigureString(const std::string& input, std::string& output, int cmMakefile::ConfigureFile(const std::string& infile, const std::string& outfile, bool copyonly, bool atOnly, bool escapeQuotes, + bool use_source_permissions, cmNewLineStyle newLine) { int res = 1; @@ -4020,7 +3991,13 @@ int cmMakefile::ConfigureFile(const std::string& infile, this->AddCMakeOutputFile(soutfile); mode_t perm = 0; - cmSystemTools::GetPermissions(sinfile, perm); + if (!use_source_permissions) { + perm = perm | mode_owner_read | mode_owner_write | mode_group_read | + mode_world_read; + } else { + cmSystemTools::GetPermissions(sinfile, perm); + } + std::string::size_type pos = soutfile.rfind('/'); if (pos != std::string::npos) { std::string path = soutfile.substr(0, pos); @@ -4033,6 +4010,11 @@ int cmMakefile::ConfigureFile(const std::string& infile, cmSystemTools::GetLastSystemError()); return 0; } + if (!cmSystemTools::SetPermissions(soutfile, perm)) { + this->IssueMessage(MessageType::FATAL_ERROR, + cmSystemTools::GetLastSystemError()); + return 0; + } } else { std::string newLineCharacters; std::ios::openmode omode = std::ios::out | std::ios::trunc; @@ -4247,8 +4229,6 @@ void cmMakefile::PopScope() this->PopLoopBlockBarrier(); - this->CheckForUnusedVariables(); - this->PopSnapshot(); } @@ -4659,786 +4639,6 @@ bool cmMakefile::IgnoreErrorsCMP0061() const return ignoreErrors; } -#define FEATURE_STRING(F) , #F -static const char* const C_FEATURES[] = { nullptr FOR_EACH_C_FEATURE( - FEATURE_STRING) }; - -static const char* const CXX_FEATURES[] = { nullptr FOR_EACH_CXX_FEATURE( - FEATURE_STRING) }; - -static const char* const CUDA_FEATURES[] = { nullptr FOR_EACH_CUDA_FEATURE( - FEATURE_STRING) }; -#undef FEATURE_STRING - -static const char* const C_STANDARDS[] = { "90", "99", "11" }; -static const char* const CXX_STANDARDS[] = { "98", "11", "14", "17", "20" }; -static const char* const CUDA_STANDARDS[] = { "03", "11", "14", "17", "20" }; - -bool cmMakefile::AddRequiredTargetFeature(cmTarget* target, - const std::string& feature, - std::string* error) const -{ - if (cmGeneratorExpression::Find(feature) != std::string::npos) { - target->AppendProperty("COMPILE_FEATURES", feature); - return true; - } - - std::string lang; - if (!this->CheckCompileFeaturesAvailable(target->GetName(), feature, lang, - error)) { - return false; - } - - target->AppendProperty("COMPILE_FEATURES", feature); - - // FIXME: Add a policy to avoid updating the <LANG>_STANDARD target - // property due to COMPILE_FEATURES. The language standard selection - // should be done purely at generate time based on whatever the project - // code put in these properties explicitly. That is mostly true now, - // but for compatibility we need to continue updating the property here. - if (lang == "C" || lang == "OBJC") { - return this->AddRequiredTargetCFeature(target, feature, lang, error); - } - if (lang == "CUDA") { - return this->AddRequiredTargetCudaFeature(target, feature, lang, error); - } - return this->AddRequiredTargetCxxFeature(target, feature, lang, error); -} - -bool cmMakefile::CheckCompileFeaturesAvailable(const std::string& targetName, - const std::string& feature, - std::string& lang, - std::string* error) const -{ - if (!this->CompileFeatureKnown(targetName, feature, lang, error)) { - return false; - } - - const char* features = this->CompileFeaturesAvailable(lang, error); - if (!features) { - return false; - } - - std::vector<std::string> availableFeatures = cmExpandedList(features); - if (!cm::contains(availableFeatures, feature)) { - std::ostringstream e; - e << "The compiler feature \"" << feature << "\" is not known to " << lang - << " compiler\n\"" - << this->GetDefinition("CMAKE_" + lang + "_COMPILER_ID") - << "\"\nversion " - << this->GetDefinition("CMAKE_" + lang + "_COMPILER_VERSION") << "."; - if (error) { - *error = e.str(); - } else { - this->GetCMakeInstance()->IssueMessage(MessageType::FATAL_ERROR, e.str(), - this->Backtrace); - } - return false; - } - - return true; -} - -bool cmMakefile::CompileFeatureKnown(const std::string& targetName, - const std::string& feature, - std::string& lang, - std::string* error) const -{ - assert(cmGeneratorExpression::Find(feature) == std::string::npos); - - bool isCFeature = - std::find_if(cm::cbegin(C_FEATURES) + 1, cm::cend(C_FEATURES), - cmStrCmp(feature)) != cm::cend(C_FEATURES); - if (isCFeature) { - lang = "C"; - return true; - } - bool isCxxFeature = - std::find_if(cm::cbegin(CXX_FEATURES) + 1, cm::cend(CXX_FEATURES), - cmStrCmp(feature)) != cm::cend(CXX_FEATURES); - if (isCxxFeature) { - lang = "CXX"; - return true; - } - bool isCudaFeature = - std::find_if(cm::cbegin(CUDA_FEATURES) + 1, cm::cend(CUDA_FEATURES), - cmStrCmp(feature)) != cm::cend(CUDA_FEATURES); - if (isCudaFeature) { - lang = "CUDA"; - return true; - } - std::ostringstream e; - if (error) { - e << "specified"; - } else { - e << "Specified"; - } - e << " unknown feature \"" << feature - << "\" for " - "target \"" - << targetName << "\"."; - if (error) { - *error = e.str(); - } else { - this->GetCMakeInstance()->IssueMessage(MessageType::FATAL_ERROR, e.str(), - this->Backtrace); - } - return false; -} - -const char* cmMakefile::CompileFeaturesAvailable(const std::string& lang, - std::string* error) const -{ - if (!this->GlobalGenerator->GetLanguageEnabled(lang)) { - std::ostringstream e; - if (error) { - e << "cannot"; - } else { - e << "Cannot"; - } - e << " use features from non-enabled language " << lang; - if (error) { - *error = e.str(); - } else { - this->GetCMakeInstance()->IssueMessage(MessageType::FATAL_ERROR, e.str(), - this->Backtrace); - } - return nullptr; - } - - const char* featuresKnown = - this->GetDefinition("CMAKE_" + lang + "_COMPILE_FEATURES"); - - if (!featuresKnown || !*featuresKnown) { - std::ostringstream e; - if (error) { - e << "no"; - } else { - e << "No"; - } - e << " known features for " << lang << " compiler\n\"" - << this->GetSafeDefinition("CMAKE_" + lang + "_COMPILER_ID") - << "\"\nversion " - << this->GetSafeDefinition("CMAKE_" + lang + "_COMPILER_VERSION") << "."; - if (error) { - *error = e.str(); - } else { - this->GetCMakeInstance()->IssueMessage(MessageType::FATAL_ERROR, e.str(), - this->Backtrace); - } - return nullptr; - } - return featuresKnown; -} - -bool cmMakefile::GetNewRequiredStandard(const std::string& targetName, - const std::string& feature, - cmProp currentLangStandardValue, - std::string& newRequiredStandard, - std::string* error) const -{ - std::string lang; - if (!this->CheckCompileFeaturesAvailable(targetName, feature, lang, error)) { - return false; - } - - if (lang == "C" || lang == "OBJC") { - return this->GetNewRequiredCStandard(targetName, feature, lang, - currentLangStandardValue, - newRequiredStandard, error); - } - if (lang == "CUDA") { - return this->GetNewRequiredCudaStandard(targetName, feature, lang, - currentLangStandardValue, - newRequiredStandard, error); - } - return this->GetNewRequiredCxxStandard(targetName, feature, lang, - currentLangStandardValue, - newRequiredStandard, error); -} - -bool cmMakefile::HaveStandardAvailable(cmGeneratorTarget const* target, - std::string const& lang, - std::string const& config, - const std::string& feature) const -{ - if (lang == "C" || lang == "OBJC") { - return this->HaveCStandardAvailable(target, lang, config, feature); - } - if (lang == "CUDA") { - return this->HaveCudaStandardAvailable(target, lang, config, feature); - } - return this->HaveCxxStandardAvailable(target, lang, config, feature); -} - -bool cmMakefile::HaveCStandardAvailable(cmGeneratorTarget const* target, - std::string const& lang, - std::string const& config, - const std::string& feature) const -{ - cmProp defaultCStandard = - this->GetDef(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT")); - if (!defaultCStandard) { - this->IssueMessage( - MessageType::INTERNAL_ERROR, - cmStrCat("CMAKE_", lang, - "_STANDARD_DEFAULT is not set. COMPILE_FEATURES support " - "not fully configured for this compiler.")); - // Return true so the caller does not try to lookup the default standard. - return true; - } - if (std::find_if(cm::cbegin(C_STANDARDS), cm::cend(C_STANDARDS), - cmStrCmp(*defaultCStandard)) == cm::cend(C_STANDARDS)) { - const std::string e = cmStrCat("The CMAKE_", lang, - "_STANDARD_DEFAULT variable contains an " - "invalid value: \"", - *defaultCStandard, "\"."); - this->IssueMessage(MessageType::INTERNAL_ERROR, e); - return false; - } - - bool needC90 = false; - bool needC99 = false; - bool needC11 = false; - - this->CheckNeededCLanguage(feature, lang, needC90, needC99, needC11); - - cmProp existingCStandard = target->GetLanguageStandard(lang, config); - if (!existingCStandard) { - existingCStandard = defaultCStandard; - } - - if (std::find_if(cm::cbegin(C_STANDARDS), cm::cend(C_STANDARDS), - cmStrCmp(*existingCStandard)) == cm::cend(C_STANDARDS)) { - const std::string e = cmStrCat( - "The ", lang, "_STANDARD property on target \"", target->GetName(), - "\" contained an invalid value: \"", *existingCStandard, "\"."); - this->IssueMessage(MessageType::FATAL_ERROR, e); - return false; - } - - const char* const* existingCIt = existingCStandard - ? std::find_if(cm::cbegin(C_STANDARDS), cm::cend(C_STANDARDS), - cmStrCmp(*existingCStandard)) - : cm::cend(C_STANDARDS); - - if (needC11 && existingCStandard && - existingCIt < std::find_if(cm::cbegin(C_STANDARDS), - cm::cend(C_STANDARDS), cmStrCmp("11"))) { - return false; - } - if (needC99 && existingCStandard && - existingCIt < std::find_if(cm::cbegin(C_STANDARDS), - cm::cend(C_STANDARDS), cmStrCmp("99"))) { - return false; - } - if (needC90 && existingCStandard && - existingCIt < std::find_if(cm::cbegin(C_STANDARDS), - cm::cend(C_STANDARDS), cmStrCmp("90"))) { - return false; - } - return true; -} - -bool cmMakefile::IsLaterStandard(std::string const& lang, - std::string const& lhs, - std::string const& rhs) -{ - if (lang == "C" || lang == "OBJC") { - const char* const* rhsIt = std::find_if( - cm::cbegin(C_STANDARDS), cm::cend(C_STANDARDS), cmStrCmp(rhs)); - - return std::find_if(rhsIt, cm::cend(C_STANDARDS), cmStrCmp(lhs)) != - cm::cend(C_STANDARDS); - } - if (lang == "CUDA") { - const char* const* rhsIt = std::find_if( - cm::cbegin(CUDA_STANDARDS), cm::cend(CUDA_STANDARDS), cmStrCmp(rhs)); - - return std::find_if(rhsIt, cm::cend(CUDA_STANDARDS), cmStrCmp(lhs)) != - cm::cend(CUDA_STANDARDS); - } - - const char* const* rhsIt = std::find_if( - cm::cbegin(CXX_STANDARDS), cm::cend(CXX_STANDARDS), cmStrCmp(rhs)); - - return std::find_if(rhsIt, cm::cend(CXX_STANDARDS), cmStrCmp(lhs)) != - cm::cend(CXX_STANDARDS); -} - -bool cmMakefile::HaveCxxStandardAvailable(cmGeneratorTarget const* target, - std::string const& lang, - std::string const& config, - const std::string& feature) const -{ - cmProp defaultCxxStandard = - this->GetDef(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT")); - if (!defaultCxxStandard) { - this->IssueMessage( - MessageType::INTERNAL_ERROR, - cmStrCat("CMAKE_", lang, - "_STANDARD_DEFAULT is not set. COMPILE_FEATURES support " - "not fully configured for this compiler.")); - // Return true so the caller does not try to lookup the default standard. - return true; - } - if (std::find_if(cm::cbegin(CXX_STANDARDS), cm::cend(CXX_STANDARDS), - cmStrCmp(*defaultCxxStandard)) == cm::cend(CXX_STANDARDS)) { - const std::string e = - cmStrCat("The CMAKE_", lang, "_STANDARD_DEFAULT variable contains an ", - "invalid value: \"", *defaultCxxStandard, "\"."); - this->IssueMessage(MessageType::INTERNAL_ERROR, e); - return false; - } - - bool needCxx98 = false; - bool needCxx11 = false; - bool needCxx14 = false; - bool needCxx17 = false; - bool needCxx20 = false; - this->CheckNeededCxxLanguage(feature, lang, needCxx98, needCxx11, needCxx14, - needCxx17, needCxx20); - - cmProp existingCxxStandard = target->GetLanguageStandard(lang, config); - if (!existingCxxStandard) { - existingCxxStandard = defaultCxxStandard; - } - - const char* const* existingCxxLevel = - std::find_if(cm::cbegin(CXX_STANDARDS), cm::cend(CXX_STANDARDS), - cmStrCmp(*existingCxxStandard)); - if (existingCxxLevel == cm::cend(CXX_STANDARDS)) { - const std::string e = cmStrCat( - "The ", lang, "_STANDARD property on target \"", target->GetName(), - "\" contained an invalid value: \"", *existingCxxStandard, "\"."); - this->IssueMessage(MessageType::FATAL_ERROR, e); - return false; - } - - /* clang-format off */ - const char* const* needCxxLevel = - needCxx20 ? &CXX_STANDARDS[4] - : needCxx17 ? &CXX_STANDARDS[3] - : needCxx14 ? &CXX_STANDARDS[2] - : needCxx11 ? &CXX_STANDARDS[1] - : needCxx98 ? &CXX_STANDARDS[0] - : nullptr; - /* clang-format on */ - - return !needCxxLevel || needCxxLevel <= existingCxxLevel; -} - -void cmMakefile::CheckNeededCxxLanguage(const std::string& feature, - std::string const& lang, - bool& needCxx98, bool& needCxx11, - bool& needCxx14, bool& needCxx17, - bool& needCxx20) const -{ - if (const char* propCxx98 = - this->GetDefinition(cmStrCat("CMAKE_", lang, "98_COMPILE_FEATURES"))) { - std::vector<std::string> props = cmExpandedList(propCxx98); - needCxx98 = cm::contains(props, feature); - } - if (const char* propCxx11 = - this->GetDefinition(cmStrCat("CMAKE_", lang, "11_COMPILE_FEATURES"))) { - std::vector<std::string> props = cmExpandedList(propCxx11); - needCxx11 = cm::contains(props, feature); - } - if (const char* propCxx14 = - this->GetDefinition(cmStrCat("CMAKE_", lang, "14_COMPILE_FEATURES"))) { - std::vector<std::string> props = cmExpandedList(propCxx14); - needCxx14 = cm::contains(props, feature); - } - if (const char* propCxx17 = - this->GetDefinition(cmStrCat("CMAKE_", lang, "17_COMPILE_FEATURES"))) { - std::vector<std::string> props = cmExpandedList(propCxx17); - needCxx17 = cm::contains(props, feature); - } - if (const char* propCxx20 = - this->GetDefinition(cmStrCat("CMAKE_", lang, "20_COMPILE_FEATURES"))) { - std::vector<std::string> props = cmExpandedList(propCxx20); - needCxx20 = cm::contains(props, feature); - } -} - -bool cmMakefile::AddRequiredTargetCxxFeature(cmTarget* target, - const std::string& feature, - std::string const& lang, - std::string* error) const -{ - std::string newRequiredStandard; - if (this->GetNewRequiredCxxStandard( - target->GetName(), feature, lang, - target->GetProperty(cmStrCat(lang, "_STANDARD")), newRequiredStandard, - error)) { - if (!newRequiredStandard.empty()) { - target->SetLanguageStandardProperty(lang, newRequiredStandard, feature); - } - return true; - } - - return false; -} - -bool cmMakefile::GetNewRequiredCxxStandard(const std::string& targetName, - const std::string& feature, - std::string const& lang, - cmProp currentLangStandardValue, - std::string& newRequiredStandard, - std::string* error) const -{ - newRequiredStandard.clear(); - - bool needCxx98 = false; - bool needCxx11 = false; - bool needCxx14 = false; - bool needCxx17 = false; - bool needCxx20 = false; - - this->CheckNeededCxxLanguage(feature, lang, needCxx98, needCxx11, needCxx14, - needCxx17, needCxx20); - - cmProp existingCxxStandard = currentLangStandardValue; - if (existingCxxStandard == nullptr) { - cmProp defaultCxxStandard = - this->GetDef(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT")); - if (defaultCxxStandard && !defaultCxxStandard->empty()) { - existingCxxStandard = defaultCxxStandard; - } - } - const char* const* existingCxxLevel = nullptr; - if (existingCxxStandard) { - existingCxxLevel = - std::find_if(cm::cbegin(CXX_STANDARDS), cm::cend(CXX_STANDARDS), - cmStrCmp(*existingCxxStandard)); - if (existingCxxLevel == cm::cend(CXX_STANDARDS)) { - const std::string e = cmStrCat( - "The ", lang, "_STANDARD property on target \"", targetName, - "\" contained an invalid value: \"", *existingCxxStandard, "\"."); - if (error) { - *error = e; - } else { - this->GetCMakeInstance()->IssueMessage(MessageType::FATAL_ERROR, e, - this->Backtrace); - } - return false; - } - } - - /* clang-format off */ - const char* const* needCxxLevel = - needCxx20 ? &CXX_STANDARDS[4] - : needCxx17 ? &CXX_STANDARDS[3] - : needCxx14 ? &CXX_STANDARDS[2] - : needCxx11 ? &CXX_STANDARDS[1] - : needCxx98 ? &CXX_STANDARDS[0] - : nullptr; - /* clang-format on */ - - if (needCxxLevel) { - // Ensure the C++ language level is high enough to support - // the needed C++ features. - if (!existingCxxLevel || existingCxxLevel < needCxxLevel) { - newRequiredStandard = *needCxxLevel; - } - } - - return true; -} - -bool cmMakefile::HaveCudaStandardAvailable(cmGeneratorTarget const* target, - std::string const& lang, - std::string const& config, - const std::string& feature) const -{ - cmProp defaultCudaStandard = - this->GetDef(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT")); - if (!defaultCudaStandard) { - this->IssueMessage( - MessageType::INTERNAL_ERROR, - cmStrCat("CMAKE_", lang, - "_STANDARD_DEFAULT is not set. COMPILE_FEATURES support " - "not fully configured for this compiler.")); - // Return true so the caller does not try to lookup the default standard. - return true; - } - if (std::find_if(cm::cbegin(CUDA_STANDARDS), cm::cend(CUDA_STANDARDS), - cmStrCmp(*defaultCudaStandard)) == - cm::cend(CUDA_STANDARDS)) { - const std::string e = - cmStrCat("The CMAKE_", lang, "_STANDARD_DEFAULT variable contains an ", - "invalid value: \"", *defaultCudaStandard, "\"."); - this->IssueMessage(MessageType::INTERNAL_ERROR, e); - return false; - } - - bool needCuda03 = false; - bool needCuda11 = false; - bool needCuda14 = false; - bool needCuda17 = false; - bool needCuda20 = false; - this->CheckNeededCudaLanguage(feature, lang, needCuda03, needCuda11, - needCuda14, needCuda17, needCuda20); - - cmProp existingCudaStandard = target->GetLanguageStandard(lang, config); - if (!existingCudaStandard) { - existingCudaStandard = defaultCudaStandard; - } - - const char* const* existingCudaLevel = - std::find_if(cm::cbegin(CUDA_STANDARDS), cm::cend(CUDA_STANDARDS), - cmStrCmp(*existingCudaStandard)); - if (existingCudaLevel == cm::cend(CUDA_STANDARDS)) { - const std::string e = cmStrCat( - "The ", lang, "_STANDARD property on target \"", target->GetName(), - "\" contained an invalid value: \"", *existingCudaStandard, "\"."); - this->IssueMessage(MessageType::FATAL_ERROR, e); - return false; - } - - /* clang-format off */ - const char* const* needCudaLevel = - needCuda20 ? &CUDA_STANDARDS[4] - : needCuda17 ? &CUDA_STANDARDS[3] - : needCuda14 ? &CUDA_STANDARDS[2] - : needCuda11 ? &CUDA_STANDARDS[1] - : needCuda03 ? &CUDA_STANDARDS[0] - : nullptr; - /* clang-format on */ - - return !needCudaLevel || needCudaLevel <= existingCudaLevel; -} - -void cmMakefile::CheckNeededCudaLanguage(const std::string& feature, - std::string const& lang, - bool& needCuda03, bool& needCuda11, - bool& needCuda14, bool& needCuda17, - bool& needCuda20) const -{ - if (const char* propCuda03 = - this->GetDefinition(cmStrCat("CMAKE_", lang, "03_COMPILE_FEATURES"))) { - std::vector<std::string> props = cmExpandedList(propCuda03); - needCuda03 = cm::contains(props, feature); - } - if (const char* propCuda11 = - this->GetDefinition(cmStrCat("CMAKE_", lang, "11_COMPILE_FEATURES"))) { - std::vector<std::string> props = cmExpandedList(propCuda11); - needCuda11 = cm::contains(props, feature); - } - if (const char* propCuda14 = - this->GetDefinition(cmStrCat("CMAKE_", lang, "14_COMPILE_FEATURES"))) { - std::vector<std::string> props = cmExpandedList(propCuda14); - needCuda14 = cm::contains(props, feature); - } - if (const char* propCuda17 = - this->GetDefinition(cmStrCat("CMAKE_", lang, "17_COMPILE_FEATURES"))) { - std::vector<std::string> props = cmExpandedList(propCuda17); - needCuda17 = cm::contains(props, feature); - } - if (const char* propCuda20 = - this->GetDefinition(cmStrCat("CMAKE_", lang, "20_COMPILE_FEATURES"))) { - std::vector<std::string> props = cmExpandedList(propCuda20); - needCuda20 = cm::contains(props, feature); - } -} - -bool cmMakefile::AddRequiredTargetCudaFeature(cmTarget* target, - const std::string& feature, - std::string const& lang, - std::string* error) const -{ - std::string newRequiredStandard; - if (this->GetNewRequiredCudaStandard( - target->GetName(), feature, lang, - target->GetProperty(cmStrCat(lang, "_STANDARD")), newRequiredStandard, - error)) { - if (!newRequiredStandard.empty()) { - target->SetLanguageStandardProperty(lang, newRequiredStandard, feature); - } - return true; - } - return false; -} - -bool cmMakefile::GetNewRequiredCudaStandard(const std::string& targetName, - const std::string& feature, - std::string const& lang, - cmProp currentLangStandardValue, - std::string& newRequiredStandard, - std::string* error) const -{ - newRequiredStandard.clear(); - - bool needCuda03 = false; - bool needCuda11 = false; - bool needCuda14 = false; - bool needCuda17 = false; - bool needCuda20 = false; - - this->CheckNeededCudaLanguage(feature, lang, needCuda03, needCuda11, - needCuda14, needCuda17, needCuda20); - - cmProp existingCudaStandard = currentLangStandardValue; - if (existingCudaStandard == nullptr) { - cmProp defaultCudaStandard = - this->GetDef(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT")); - if (defaultCudaStandard && !defaultCudaStandard->empty()) { - existingCudaStandard = defaultCudaStandard; - } - } - const char* const* existingCudaLevel = nullptr; - if (existingCudaStandard) { - existingCudaLevel = - std::find_if(cm::cbegin(CUDA_STANDARDS), cm::cend(CUDA_STANDARDS), - cmStrCmp(*existingCudaStandard)); - if (existingCudaLevel == cm::cend(CUDA_STANDARDS)) { - const std::string e = cmStrCat( - "The ", lang, "_STANDARD property on target \"", targetName, - "\" contained an invalid value: \"", *existingCudaStandard, "\"."); - if (error) { - *error = e; - } else { - this->GetCMakeInstance()->IssueMessage(MessageType::FATAL_ERROR, e, - this->Backtrace); - } - return false; - } - } - - /* clang-format off */ - const char* const* needCudaLevel = - needCuda20 ? &CUDA_STANDARDS[4] - : needCuda17 ? &CUDA_STANDARDS[3] - : needCuda14 ? &CUDA_STANDARDS[2] - : needCuda11 ? &CUDA_STANDARDS[1] - : needCuda03 ? &CUDA_STANDARDS[0] - : nullptr; - /* clang-format on */ - - if (needCudaLevel) { - // Ensure the CUDA language level is high enough to support - // the needed CUDA features. - if (!existingCudaLevel || existingCudaLevel < needCudaLevel) { - newRequiredStandard = *needCudaLevel; - } - } - - return true; -} - -void cmMakefile::CheckNeededCLanguage(const std::string& feature, - std::string const& lang, bool& needC90, - bool& needC99, bool& needC11) const -{ - if (const char* propC90 = - this->GetDefinition(cmStrCat("CMAKE_", lang, "90_COMPILE_FEATURES"))) { - std::vector<std::string> props = cmExpandedList(propC90); - needC90 = cm::contains(props, feature); - } - if (const char* propC99 = - this->GetDefinition(cmStrCat("CMAKE_", lang, "99_COMPILE_FEATURES"))) { - std::vector<std::string> props = cmExpandedList(propC99); - needC99 = cm::contains(props, feature); - } - if (const char* propC11 = - this->GetDefinition(cmStrCat("CMAKE_", lang, "11_COMPILE_FEATURES"))) { - std::vector<std::string> props = cmExpandedList(propC11); - needC11 = cm::contains(props, feature); - } -} - -bool cmMakefile::AddRequiredTargetCFeature(cmTarget* target, - const std::string& feature, - std::string const& lang, - std::string* error) const -{ - std::string newRequiredStandard; - if (this->GetNewRequiredCStandard( - target->GetName(), feature, lang, - target->GetProperty(cmStrCat(lang, "_STANDARD")), newRequiredStandard, - error)) { - if (!newRequiredStandard.empty()) { - target->SetLanguageStandardProperty(lang, newRequiredStandard, feature); - } - return true; - } - - return false; -} - -bool cmMakefile::GetNewRequiredCStandard(const std::string& targetName, - const std::string& feature, - std::string const& lang, - cmProp currentLangStandardValue, - std::string& newRequiredStandard, - std::string* error) const -{ - newRequiredStandard.clear(); - - bool needC90 = false; - bool needC99 = false; - bool needC11 = false; - - this->CheckNeededCLanguage(feature, lang, needC90, needC99, needC11); - - cmProp existingCStandard = currentLangStandardValue; - if (existingCStandard == nullptr) { - cmProp defaultCStandard = - this->GetDef(cmStrCat("CMAKE_", lang, "_STANDARD_DEFAULT")); - if (defaultCStandard && !defaultCStandard->empty()) { - existingCStandard = defaultCStandard; - } - } - if (existingCStandard) { - if (std::find_if(cm::cbegin(C_STANDARDS), cm::cend(C_STANDARDS), - cmStrCmp(*existingCStandard)) == cm::cend(C_STANDARDS)) { - const std::string e = cmStrCat( - "The ", lang, "_STANDARD property on target \"", targetName, - "\" contained an invalid value: \"", *existingCStandard, "\"."); - if (error) { - *error = e; - } else { - this->GetCMakeInstance()->IssueMessage(MessageType::FATAL_ERROR, e, - this->Backtrace); - } - return false; - } - } - const char* const* existingCIt = existingCStandard - ? std::find_if(cm::cbegin(C_STANDARDS), cm::cend(C_STANDARDS), - cmStrCmp(*existingCStandard)) - : cm::cend(C_STANDARDS); - - bool setC90 = needC90 && !existingCStandard; - bool setC99 = needC99 && !existingCStandard; - bool setC11 = needC11 && !existingCStandard; - - if (needC11 && existingCStandard && - existingCIt < std::find_if(cm::cbegin(C_STANDARDS), - cm::cend(C_STANDARDS), cmStrCmp("11"))) { - setC11 = true; - } else if (needC99 && existingCStandard && - existingCIt < std::find_if(cm::cbegin(C_STANDARDS), - cm::cend(C_STANDARDS), - cmStrCmp("99"))) { - setC99 = true; - } else if (needC90 && existingCStandard && - existingCIt < std::find_if(cm::cbegin(C_STANDARDS), - cm::cend(C_STANDARDS), - cmStrCmp("90"))) { - setC90 = true; - } - - if (setC11) { - newRequiredStandard = "11"; - } else if (setC99) { - newRequiredStandard = "99"; - } else if (setC90) { - newRequiredStandard = "90"; - } - return true; -} - cmMakefile::FunctionPushPop::FunctionPushPop(cmMakefile* mf, const std::string& fileName, cmPolicies::PolicyMap const& pm) diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h index 332554e..80d80d3 100644 --- a/Source/cmMakefile.h +++ b/Source/cmMakefile.h @@ -47,7 +47,6 @@ class cmExpandedCommandArgument; class cmExportBuildFileGenerator; class cmFunctionBlocker; class cmGeneratorExpressionEvaluationFile; -class cmGeneratorTarget; class cmGlobalGenerator; class cmImplicitDependsList; class cmInstallGenerator; @@ -343,12 +342,19 @@ public: */ void SetProjectName(std::string const& name); - /** Get the configurations to be generated. */ - std::string GetConfigurations(std::vector<std::string>& configs, - bool single = true) const; + /* Get the default configuration */ + std::string GetDefaultConfiguration() const; + + enum GeneratorConfigQuery + { + IncludeEmptyConfig, // Include "" aka noconfig + ExcludeEmptyConfig, // Exclude "" aka noconfig + OnlyMultiConfig, + }; /** Get the configurations for dependency checking. */ - std::vector<std::string> GetGeneratorConfigs() const; + std::vector<std::string> GetGeneratorConfigs( + GeneratorConfigQuery mode) const; /** * Set the name of the library. @@ -687,6 +693,7 @@ public: */ int ConfigureFile(const std::string& infile, const std::string& outfile, bool copyonly, bool atOnly, bool escapeQuotes, + bool use_source_permissions, cmNewLineStyle = cmNewLineStyle()); /** @@ -926,30 +933,6 @@ public: bool PolicyOptionalWarningEnabled(std::string const& var); - bool AddRequiredTargetFeature(cmTarget* target, const std::string& feature, - std::string* error = nullptr) const; - - bool CompileFeatureKnown(const std::string& targetName, - const std::string& feature, std::string& lang, - std::string* error) const; - - const char* CompileFeaturesAvailable(const std::string& lang, - std::string* error) const; - - bool GetNewRequiredStandard(const std::string& targetName, - const std::string& feature, - cmProp currentLangStandardValue, - std::string& newRequiredStandard, - std::string* error = nullptr) const; - - bool HaveStandardAvailable(cmGeneratorTarget const* target, - std::string const& lang, - std::string const& config, - const std::string& feature) const; - - bool IsLaterStandard(std::string const& lang, std::string const& lhs, - std::string const& rhs); - void PushLoopBlock(); void PopLoopBlock(); bool IsLoopBlock() const; @@ -995,9 +978,6 @@ protected: // add link libraries and directories to the target void AddGlobalLinkInformation(cmTarget& target); - // Check for a an unused variable - void LogUnused(const char* reason, const std::string& name) const; - mutable std::set<cmListFileContext> CMP0054ReportedIds; // libraries, classes, and executables @@ -1172,71 +1152,6 @@ private: */ bool MightHaveCustomCommand(const std::string& name) const; - bool AddRequiredTargetCFeature(cmTarget* target, const std::string& feature, - std::string const& lang, - std::string* error = nullptr) const; - bool AddRequiredTargetCxxFeature(cmTarget* target, - const std::string& feature, - std::string const& lang, - std::string* error = nullptr) const; - bool AddRequiredTargetCudaFeature(cmTarget* target, - const std::string& feature, - std::string const& lang, - std::string* error = nullptr) const; - - bool CheckCompileFeaturesAvailable(const std::string& targetName, - const std::string& feature, - std::string& lang, - std::string* error) const; - - void CheckNeededCLanguage(const std::string& feature, - std::string const& lang, bool& needC90, - bool& needC99, bool& needC11) const; - void CheckNeededCxxLanguage(const std::string& feature, - std::string const& lang, bool& needCxx98, - bool& needCxx11, bool& needCxx14, - bool& needCxx17, bool& needCxx20) const; - void CheckNeededCudaLanguage(const std::string& feature, - std::string const& lang, bool& needCuda03, - bool& needCuda11, bool& needCuda14, - bool& needCuda17, bool& needCuda20) const; - - bool GetNewRequiredCStandard(const std::string& targetName, - const std::string& feature, - std::string const& lang, - cmProp currentLangStandardValue, - std::string& newRequiredStandard, - std::string* error = nullptr) const; - bool GetNewRequiredCxxStandard(const std::string& targetName, - const std::string& feature, - std::string const& lang, - cmProp currentLangStandardValue, - std::string& newRequiredStandard, - std::string* error = nullptr) const; - bool GetNewRequiredCudaStandard(const std::string& targetName, - const std::string& feature, - std::string const& lang, - cmProp currentLangStandardValue, - std::string& newRequiredStandard, - std::string* error = nullptr) const; - - bool HaveCStandardAvailable(cmGeneratorTarget const* target, - std::string const& lang, - std::string const& config, - const std::string& feature) const; - bool HaveCxxStandardAvailable(cmGeneratorTarget const* target, - std::string const& lang, - std::string const& config, - const std::string& feature) const; - bool HaveCudaStandardAvailable(cmGeneratorTarget const* target, - std::string const& lang, - std::string const& config, - const std::string& feature) const; - - void CheckForUnusedVariables() const; - - // Unused variable flags - bool WarnUnused; bool CheckSystemVars; bool CheckCMP0000; std::set<std::string> WarnedCMP0074; diff --git a/Source/cmNinjaTargetGenerator.cxx b/Source/cmNinjaTargetGenerator.cxx index 0c7591a..53a0cb7 100644 --- a/Source/cmNinjaTargetGenerator.cxx +++ b/Source/cmNinjaTargetGenerator.cxx @@ -65,7 +65,8 @@ cmNinjaTargetGenerator::cmNinjaTargetGenerator(cmGeneratorTarget* target) , LocalGenerator( static_cast<cmLocalNinjaGenerator*>(target->GetLocalGenerator())) { - for (auto const& fileConfig : target->Makefile->GetGeneratorConfigs()) { + for (auto const& fileConfig : + target->Makefile->GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig)) { this->Configs[fileConfig].MacOSXContentGenerator = cm::make_unique<MacOSXContentGeneratorType>(this, fileConfig); } diff --git a/Source/cmQtAutoGenInitializer.cxx b/Source/cmQtAutoGenInitializer.cxx index e733a3e..7e0bf96 100644 --- a/Source/cmQtAutoGenInitializer.cxx +++ b/Source/cmQtAutoGenInitializer.cxx @@ -315,10 +315,9 @@ bool cmQtAutoGenInitializer::InitCustomTargets() { // Configurations this->MultiConfig = this->GlobalGen->IsMultiConfig(); - this->ConfigDefault = this->Makefile->GetConfigurations(this->ConfigsList); - if (this->ConfigsList.empty()) { - this->ConfigsList.push_back(this->ConfigDefault); - } + this->ConfigDefault = this->Makefile->GetDefaultConfiguration(); + this->ConfigsList = + this->Makefile->GetGeneratorConfigs(cmMakefile::IncludeEmptyConfig); // Verbosity { diff --git a/Source/cmServerProtocol.cxx b/Source/cmServerProtocol.cxx index 4f7131f..e586fd9 100644 --- a/Source/cmServerProtocol.cxx +++ b/Source/cmServerProtocol.cxx @@ -136,6 +136,7 @@ bool cmServerProtocol::Activate(cmServer* server, this->m_Server = server; this->m_CMakeInstance = cm::make_unique<cmake>(cmake::RoleProject, cmState::Project); + this->m_WarnUnused = false; const bool result = this->DoActivate(request, errorMessage); if (!result) { this->m_CMakeInstance = nullptr; @@ -636,7 +637,7 @@ cmServerResponse cmServerProtocol1::ProcessGlobalSettings( obj[kTRACE_KEY] = cm->GetTrace(); obj[kTRACE_EXPAND_KEY] = cm->GetTraceExpand(); obj[kWARN_UNINITIALIZED_KEY] = cm->GetWarnUninitialized(); - obj[kWARN_UNUSED_KEY] = cm->GetWarnUnused(); + obj[kWARN_UNUSED_KEY] = m_WarnUnused; obj[kWARN_UNUSED_CLI_KEY] = cm->GetWarnUnusedCli(); obj[kCHECK_SYSTEM_VARS_KEY] = cm->GetCheckSystemVars(); @@ -682,7 +683,7 @@ cmServerResponse cmServerProtocol1::ProcessSetGlobalSettings( setBool(request, kTRACE_EXPAND_KEY, [cm](bool e) { cm->SetTraceExpand(e); }); setBool(request, kWARN_UNINITIALIZED_KEY, [cm](bool e) { cm->SetWarnUninitialized(e); }); - setBool(request, kWARN_UNUSED_KEY, [cm](bool e) { cm->SetWarnUnused(e); }); + setBool(request, kWARN_UNUSED_KEY, [this](bool e) { m_WarnUnused = e; }); setBool(request, kWARN_UNUSED_CLI_KEY, [cm](bool e) { cm->SetWarnUnusedCli(e); }); setBool(request, kCHECK_SYSTEM_VARS_KEY, diff --git a/Source/cmServerProtocol.h b/Source/cmServerProtocol.h index c71b7bf..6009e23 100644 --- a/Source/cmServerProtocol.h +++ b/Source/cmServerProtocol.h @@ -94,6 +94,7 @@ protected: // Implement protocol specific activation tasks here. Called from Activate(). virtual bool DoActivate(const cmServerRequest& request, std::string* errorMessage); + bool m_WarnUnused = false; // storage for legacy option private: std::unique_ptr<cmake> m_CMakeInstance; diff --git a/Source/cmSetPropertyCommand.cxx b/Source/cmSetPropertyCommand.cxx index 07cb7c9..51509fd 100644 --- a/Source/cmSetPropertyCommand.cxx +++ b/Source/cmSetPropertyCommand.cxx @@ -96,12 +96,14 @@ bool HandleSourceFileDirectoryScopes( } directory_makefiles.push_back(dir_mf); } - } else if (!source_file_target_directories.empty()) { + } + + if (!source_file_target_directories.empty()) { for (const std::string& target_name : source_file_target_directories) { cmTarget* target = current_dir_mf->FindTargetToUse(target_name); if (!target) { status.SetError(cmStrCat( - "given non-existent target for DIRECTORY_TARGET ", target_name)); + "given non-existent target for TARGET_DIRECTORY ", target_name)); return false; } cmProp target_source_dir = target->GetProperty("SOURCE_DIR"); @@ -110,7 +112,10 @@ bool HandleSourceFileDirectoryScopes( *target_source_dir); directory_makefiles.push_back(target_dir_mf); } - } else { + } + + if (source_file_directories.empty() && + source_file_target_directories.empty()) { directory_makefiles.push_back(current_dir_mf); } return true; @@ -271,12 +276,12 @@ bool cmSetPropertyCommand(std::vector<std::string> const& args, appendMode = true; remove = false; appendAsString = true; - } else if (doing == DoingNames && scope == cmProperty::SOURCE_FILE && - arg == "DIRECTORY") { + } else if (doing != DoingProperty && doing != DoingValues && + scope == cmProperty::SOURCE_FILE && arg == "DIRECTORY") { doing = DoingSourceDirectory; source_file_directory_option_enabled = true; - } else if (doing == DoingNames && scope == cmProperty::SOURCE_FILE && - arg == "TARGET_DIRECTORY") { + } else if (doing != DoingProperty && doing != DoingValues && + scope == cmProperty::SOURCE_FILE && arg == "TARGET_DIRECTORY") { doing = DoingSourceTargetDirectory; source_file_target_option_enabled = true; } else if (doing == DoingNames) { diff --git a/Source/cmSetSourceFilesPropertiesCommand.cxx b/Source/cmSetSourceFilesPropertiesCommand.cxx index 3135a06..c1b0c28 100644 --- a/Source/cmSetSourceFilesPropertiesCommand.cxx +++ b/Source/cmSetSourceFilesPropertiesCommand.cxx @@ -35,11 +35,11 @@ bool cmSetSourceFilesPropertiesCommand(std::vector<std::string> const& args, "OBJECT_DEPENDS", "PROPERTIES", "DIRECTORY", "TARGET_DIRECTORY" }; - auto isNotAPropertyKeyword = + auto isAPropertyKeyword = [](const std::vector<std::string>::const_iterator& arg_it) { - return std::all_of( + return std::any_of( std::begin(prop_names), std::end(prop_names), - [&arg_it](cm::string_view prop_name) { return *arg_it != prop_name; }); + [&arg_it](cm::string_view prop_name) { return *arg_it == prop_name; }); }; auto options_begin = std::find_first_of( @@ -53,21 +53,32 @@ bool cmSetSourceFilesPropertiesCommand(std::vector<std::string> const& args, bool source_file_target_option_enabled = false; std::vector<cmMakefile*> source_file_directory_makefiles; - if (options_it != args.end() && *options_it == "DIRECTORY") { - source_file_directory_option_enabled = true; - ++options_it; - while (options_it != args.end() && isNotAPropertyKeyword(options_it)) { + enum Doing + { + DoingNone, + DoingSourceDirectory, + DoingSourceTargetDirectory + }; + Doing doing = DoingNone; + for (; options_it != args.end(); ++options_it) { + if (*options_it == "DIRECTORY") { + doing = DoingSourceDirectory; + source_file_directory_option_enabled = true; + } else if (*options_it == "TARGET_DIRECTORY") { + doing = DoingSourceTargetDirectory; + source_file_target_option_enabled = true; + } else if (isAPropertyKeyword(options_it)) { + break; + } else if (doing == DoingSourceDirectory) { source_file_directories.push_back(*options_it); - ++options_it; - } - } else if (options_it != args.end() && *options_it == "TARGET_DIRECTORY") { - source_file_target_option_enabled = true; - ++options_it; - while (options_it != args.end() && isNotAPropertyKeyword(options_it)) { + } else if (doing == DoingSourceTargetDirectory) { source_file_target_directories.push_back(*options_it); - ++options_it; + } else { + status.SetError( + cmStrCat("given invalid argument \"", *options_it, "\".")); } } + const auto props_begin = options_it; bool file_scopes_handled = diff --git a/Source/cmStandardLevelResolver.cxx b/Source/cmStandardLevelResolver.cxx new file mode 100644 index 0000000..5e30680 --- /dev/null +++ b/Source/cmStandardLevelResolver.cxx @@ -0,0 +1,399 @@ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ + +#include "cmStandardLevelResolver.h" + +#include <algorithm> +#include <cassert> +#include <cstddef> +#include <sstream> +#include <unordered_map> +#include <utility> +#include <vector> + +#include <cm/iterator> +#include <cmext/algorithm> + +#include "cmGeneratorExpression.h" +#include "cmGeneratorTarget.h" +#include "cmGlobalGenerator.h" +#include "cmMakefile.h" +#include "cmMessageType.h" +#include "cmProperty.h" +#include "cmStringAlgorithms.h" +#include "cmTarget.h" +#include "cmake.h" + +namespace { + +#define FEATURE_STRING(F) , #F +const char* const C_FEATURES[] = { nullptr FOR_EACH_C_FEATURE( + FEATURE_STRING) }; + +const char* const CXX_FEATURES[] = { nullptr FOR_EACH_CXX_FEATURE( + FEATURE_STRING) }; + +const char* const CUDA_FEATURES[] = { nullptr FOR_EACH_CUDA_FEATURE( + FEATURE_STRING) }; +#undef FEATURE_STRING + +struct StandardNeeded +{ + int index; + int value; +}; + +struct StanardLevelComputer +{ + explicit StanardLevelComputer(std::string lang, std::vector<int> levels) + : Language(std::move(lang)) + , Levels(std::move(levels)) + { + } + + bool GetNewRequiredStandard(cmMakefile* makefile, + std::string const& targetName, + const std::string& feature, + cmProp currentLangStandardValue, + std::string& newRequiredStandard, + std::string* error) const + { + if (currentLangStandardValue) { + newRequiredStandard = *currentLangStandardValue; + } else { + newRequiredStandard.clear(); + } + + auto needed = this->HighestStandardNeeded(makefile, feature); + + cmProp existingStandard = currentLangStandardValue; + if (existingStandard == nullptr) { + cmProp defaultStandard = makefile->GetDef( + cmStrCat("CMAKE_", this->Language, "_STANDARD_DEFAULT")); + if (defaultStandard && !defaultStandard->empty()) { + existingStandard = defaultStandard; + } + } + + auto existingLevelIter = cm::cend(this->Levels); + if (existingStandard) { + existingLevelIter = + std::find(cm::cbegin(this->Levels), cm::cend(this->Levels), + std::stoi(*existingStandard)); + if (existingLevelIter == cm::cend(this->Levels)) { + const std::string e = + cmStrCat("The ", this->Language, "_STANDARD property on target \"", + targetName, "\" contained an invalid value: \"", + *existingStandard, "\"."); + if (error) { + *error = e; + } else { + makefile->IssueMessage(MessageType::FATAL_ERROR, e); + } + return false; + } + } + + if (needed.index != -1) { + // Ensure the C++ language level is high enough to support + // the needed C++ features. + if (existingLevelIter == cm::cend(this->Levels) || + existingLevelIter < this->Levels.begin() + needed.index) { + newRequiredStandard = std::to_string(this->Levels[needed.index]); + } + } + + return true; + } + + bool HaveStandardAvailable(cmMakefile* makefile, + cmGeneratorTarget const* target, + std::string const& config, + std::string const& feature) const + { + cmProp defaultStandard = makefile->GetDef( + cmStrCat("CMAKE_", this->Language, "_STANDARD_DEFAULT")); + if (!defaultStandard) { + makefile->IssueMessage( + MessageType::INTERNAL_ERROR, + cmStrCat("CMAKE_", this->Language, + "_STANDARD_DEFAULT is not set. COMPILE_FEATURES support " + "not fully configured for this compiler.")); + // Return true so the caller does not try to lookup the default standard. + return true; + } + // convert defaultStandard to an integer + if (std::find(cm::cbegin(this->Levels), cm::cend(this->Levels), + std::stoi(*defaultStandard)) == cm::cend(this->Levels)) { + const std::string e = cmStrCat("The CMAKE_", this->Language, + "_STANDARD_DEFAULT variable contains an " + "invalid value: \"", + *defaultStandard, "\"."); + makefile->IssueMessage(MessageType::INTERNAL_ERROR, e); + return false; + } + + cmProp existingStandard = + target->GetLanguageStandard(this->Language, config); + if (!existingStandard) { + existingStandard = defaultStandard; + } + + auto existingLevelIter = + std::find(cm::cbegin(this->Levels), cm::cend(this->Levels), + std::stoi(*existingStandard)); + if (existingLevelIter == cm::cend(this->Levels)) { + const std::string e = + cmStrCat("The ", this->Language, "_STANDARD property on target \"", + target->GetName(), "\" contained an invalid value: \"", + *existingStandard, "\"."); + makefile->IssueMessage(MessageType::FATAL_ERROR, e); + return false; + } + + auto needed = this->HighestStandardNeeded(makefile, feature); + + return (needed.index == -1) || + (this->Levels.begin() + needed.index) <= existingLevelIter; + } + + StandardNeeded HighestStandardNeeded(cmMakefile* makefile, + std::string const& feature) const + { + std::string prefix = cmStrCat("CMAKE_", this->Language); + StandardNeeded maxLevel = { -1, -1 }; + for (size_t i = 0; i < this->Levels.size(); ++i) { + if (const char* prop = makefile->GetDefinition(cmStrCat( + prefix, std::to_string(this->Levels[i]), "_COMPILE_FEATURES"))) { + std::vector<std::string> props = cmExpandedList(prop); + if (cm::contains(props, feature)) { + maxLevel = { static_cast<int>(i), this->Levels[i] }; + } + } + } + return maxLevel; + } + + bool IsLaterStandard(int lhs, int rhs) const + { + auto rhsIt = + std::find(cm::cbegin(this->Levels), cm::cend(this->Levels), rhs); + + return std::find(rhsIt, cm::cend(this->Levels), lhs) != + cm::cend(this->Levels); + } + + std::string Language; + std::vector<int> Levels; +}; + +std::unordered_map<std::string, StanardLevelComputer> StandardComputerMapping = + { + { "C", StanardLevelComputer{ "C", std::vector<int>{ 90, 99, 11 } } }, + { "CXX", + StanardLevelComputer{ "CXX", std::vector<int>{ 98, 11, 14, 17, 20 } } }, + { "CUDA", + StanardLevelComputer{ "CUDA", std::vector<int>{ 03, 11, 14, 17, 20 } } }, + { "OBJC", StanardLevelComputer{ "OBJC", std::vector<int>{ 90, 99, 11 } } }, + { "OBJCXX", + StanardLevelComputer{ "OBJCXX", + std::vector<int>{ 98, 11, 14, 17, 20 } } }, + }; +} + +bool cmStandardLevelResolver::AddRequiredTargetFeature( + cmTarget* target, const std::string& feature, std::string* error) const +{ + if (cmGeneratorExpression::Find(feature) != std::string::npos) { + target->AppendProperty("COMPILE_FEATURES", feature); + return true; + } + + std::string lang; + if (!this->CheckCompileFeaturesAvailable(target->GetName(), feature, lang, + error)) { + return false; + } + + target->AppendProperty("COMPILE_FEATURES", feature); + + // FIXME: Add a policy to avoid updating the <LANG>_STANDARD target + // property due to COMPILE_FEATURES. The language standard selection + // should be done purely at generate time based on whatever the project + // code put in these properties explicitly. That is mostly true now, + // but for compatibility we need to continue updating the property here. + std::string newRequiredStandard; + bool newRequired = this->GetNewRequiredStandard( + target->GetName(), feature, + target->GetProperty(cmStrCat(lang, "_STANDARD")), newRequiredStandard, + error); + if (!newRequiredStandard.empty()) { + target->SetProperty(cmStrCat(lang, "_STANDARD"), newRequiredStandard); + } + return newRequired; +} + +bool cmStandardLevelResolver::CheckCompileFeaturesAvailable( + const std::string& targetName, const std::string& feature, std::string& lang, + std::string* error) const +{ + if (!this->CompileFeatureKnown(targetName, feature, lang, error)) { + return false; + } + + const char* features = this->CompileFeaturesAvailable(lang, error); + if (!features) { + return false; + } + + std::vector<std::string> availableFeatures = cmExpandedList(features); + if (!cm::contains(availableFeatures, feature)) { + std::ostringstream e; + e << "The compiler feature \"" << feature << "\" is not known to " << lang + << " compiler\n\"" + << this->Makefile->GetDefinition("CMAKE_" + lang + "_COMPILER_ID") + << "\"\nversion " + << this->Makefile->GetDefinition("CMAKE_" + lang + "_COMPILER_VERSION") + << "."; + if (error) { + *error = e.str(); + } else { + this->Makefile->IssueMessage(MessageType::FATAL_ERROR, e.str()); + } + return false; + } + + return true; +} + +bool cmStandardLevelResolver::CompileFeatureKnown( + const std::string& targetName, const std::string& feature, std::string& lang, + std::string* error) const +{ + assert(cmGeneratorExpression::Find(feature) == std::string::npos); + + bool isCFeature = + std::find_if(cm::cbegin(C_FEATURES) + 1, cm::cend(C_FEATURES), + cmStrCmp(feature)) != cm::cend(C_FEATURES); + if (isCFeature) { + lang = "C"; + return true; + } + bool isCxxFeature = + std::find_if(cm::cbegin(CXX_FEATURES) + 1, cm::cend(CXX_FEATURES), + cmStrCmp(feature)) != cm::cend(CXX_FEATURES); + if (isCxxFeature) { + lang = "CXX"; + return true; + } + bool isCudaFeature = + std::find_if(cm::cbegin(CUDA_FEATURES) + 1, cm::cend(CUDA_FEATURES), + cmStrCmp(feature)) != cm::cend(CUDA_FEATURES); + if (isCudaFeature) { + lang = "CUDA"; + return true; + } + std::ostringstream e; + if (error) { + e << "specified"; + } else { + e << "Specified"; + } + e << " unknown feature \"" << feature + << "\" for " + "target \"" + << targetName << "\"."; + if (error) { + *error = e.str(); + } else { + this->Makefile->IssueMessage(MessageType::FATAL_ERROR, e.str()); + } + return false; +} + +const char* cmStandardLevelResolver::CompileFeaturesAvailable( + const std::string& lang, std::string* error) const +{ + if (!this->Makefile->GetGlobalGenerator()->GetLanguageEnabled(lang)) { + std::ostringstream e; + if (error) { + e << "cannot"; + } else { + e << "Cannot"; + } + e << " use features from non-enabled language " << lang; + if (error) { + *error = e.str(); + } else { + this->Makefile->IssueMessage(MessageType::FATAL_ERROR, e.str()); + } + return nullptr; + } + + const char* featuresKnown = + this->Makefile->GetDefinition("CMAKE_" + lang + "_COMPILE_FEATURES"); + + if (!featuresKnown || !*featuresKnown) { + std::ostringstream e; + if (error) { + e << "no"; + } else { + e << "No"; + } + e << " known features for " << lang << " compiler\n\"" + << this->Makefile->GetSafeDefinition("CMAKE_" + lang + "_COMPILER_ID") + << "\"\nversion " + << this->Makefile->GetSafeDefinition("CMAKE_" + lang + + "_COMPILER_VERSION") + << "."; + if (error) { + *error = e.str(); + } else { + this->Makefile->IssueMessage(MessageType::FATAL_ERROR, e.str()); + } + return nullptr; + } + return featuresKnown; +} + +bool cmStandardLevelResolver::GetNewRequiredStandard( + const std::string& targetName, const std::string& feature, + cmProp currentLangStandardValue, std::string& newRequiredStandard, + std::string* error) const +{ + std::string lang; + if (!this->CheckCompileFeaturesAvailable(targetName, feature, lang, error)) { + return false; + } + + auto mapping = StandardComputerMapping.find(lang); + if (mapping != cm::cend(StandardComputerMapping)) { + return mapping->second.GetNewRequiredStandard( + this->Makefile, targetName, feature, currentLangStandardValue, + newRequiredStandard, error); + } + return false; +} + +bool cmStandardLevelResolver::HaveStandardAvailable( + cmGeneratorTarget const* target, std::string const& lang, + std::string const& config, const std::string& feature) const +{ + auto mapping = StandardComputerMapping.find(lang); + if (mapping != cm::cend(StandardComputerMapping)) { + return mapping->second.HaveStandardAvailable(this->Makefile, target, + config, feature); + } + return false; +} + +bool cmStandardLevelResolver::IsLaterStandard(std::string const& lang, + std::string const& lhs, + std::string const& rhs) const +{ + auto mapping = StandardComputerMapping.find(lang); + if (mapping != cm::cend(StandardComputerMapping)) { + return mapping->second.IsLaterStandard(std::stoi(lhs), std::stoi(rhs)); + } + return false; +} diff --git a/Source/cmStandardLevelResolver.h b/Source/cmStandardLevelResolver.h new file mode 100644 index 0000000..193c053 --- /dev/null +++ b/Source/cmStandardLevelResolver.h @@ -0,0 +1,55 @@ +/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying + file Copyright.txt or https://cmake.org/licensing for details. */ +#ifndef cmStandardLevelResolver_h +#define cmStandardLevelResolver_h + +#include <string> + +#include "cmProperty.h" + +class cmMakefile; +class cmGeneratorTarget; +class cmTarget; + +class cmStandardLevelResolver +{ + +public: + explicit cmStandardLevelResolver(cmMakefile* makefile) + : Makefile(makefile) + { + } + + bool AddRequiredTargetFeature(cmTarget* target, const std::string& feature, + std::string* error = nullptr) const; + + bool CompileFeatureKnown(const std::string& targetName, + const std::string& feature, std::string& lang, + std::string* error) const; + + const char* CompileFeaturesAvailable(const std::string& lang, + std::string* error) const; + + bool GetNewRequiredStandard(const std::string& targetName, + const std::string& feature, + cmProp currentLangStandardValue, + std::string& newRequiredStandard, + std::string* error = nullptr) const; + + bool HaveStandardAvailable(cmGeneratorTarget const* target, + std::string const& lang, + std::string const& config, + const std::string& feature) const; + + bool IsLaterStandard(std::string const& lang, std::string const& lhs, + std::string const& rhs) const; + +private: + bool CheckCompileFeaturesAvailable(const std::string& targetName, + const std::string& feature, + std::string& lang, + std::string* error) const; + + cmMakefile* Makefile; +}; +#endif diff --git a/Source/cmStateSnapshot.cxx b/Source/cmStateSnapshot.cxx index 15a98af..cfabc3f 100644 --- a/Source/cmStateSnapshot.cxx +++ b/Source/cmStateSnapshot.cxx @@ -232,11 +232,6 @@ void cmStateSnapshot::RemoveDefinition(std::string const& name) this->Position->Vars->Unset(name); } -std::vector<std::string> cmStateSnapshot::UnusedKeys() const -{ - return this->Position->Vars->UnusedKeys(); -} - std::vector<std::string> cmStateSnapshot::ClosureKeys() const { return cmDefinitions::ClosureKeys(this->Position->Vars, diff --git a/Source/cmStateSnapshot.h b/Source/cmStateSnapshot.h index 021fd53..c19f174 100644 --- a/Source/cmStateSnapshot.h +++ b/Source/cmStateSnapshot.h @@ -28,7 +28,6 @@ public: bool IsInitialized(std::string const& name) const; void SetDefinition(std::string const& name, cm::string_view value); void RemoveDefinition(std::string const& name); - std::vector<std::string> UnusedKeys() const; std::vector<std::string> ClosureKeys() const; bool RaiseScope(std::string const& var, const char* varDef); diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx index be799b0..798c29a 100644 --- a/Source/cmSystemTools.cxx +++ b/Source/cmSystemTools.cxx @@ -823,7 +823,9 @@ void cmSystemTools::InitializeLibUV() // Perform libuv one-time initialization now, and then un-do its // global _fmode setting so that using libuv does not change the // default file text/binary mode. See libuv issue 840. - uv_loop_close(uv_default_loop()); + if (uv_loop_t* loop = uv_default_loop()) { + uv_loop_close(loop); + } # ifdef _MSC_VER _set_fmode(_O_TEXT); # else @@ -1211,7 +1213,7 @@ bool cmSystemTools::UnsetEnv(const char* value) { # if !defined(HAVE_UNSETENV) std::string var = cmStrCat(value, '='); - return cmSystemTools::PutEnv(var.c_str()); + return cmSystemTools::PutEnv(var); # else unsetenv(value); return true; @@ -2080,6 +2082,12 @@ std::string const& cmSystemTools::GetCMakeRoot() return cmSystemToolsCMakeRoot; } +std::string cmSystemTools::GetCurrentWorkingDirectory() +{ + return cmSystemTools::CollapseFullPath( + cmsys::SystemTools::GetCurrentWorkingDirectory()); +} + void cmSystemTools::MakefileColorEcho(int color, const char* message, bool newline, bool enabled) { diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h index ee149a0..b886c58 100644 --- a/Source/cmSystemTools.h +++ b/Source/cmSystemTools.h @@ -390,6 +390,9 @@ public: static std::string const& GetCMClDepsCommand(); static std::string const& GetCMakeRoot(); + /** Get the CWD mapped through the KWSys translation map. */ + static std::string GetCurrentWorkingDirectory(); + /** Echo a message in color using KWSys's Terminal cprintf. */ static void MakefileColorEcho(int color, const char* message, bool newLine, bool enabled); diff --git a/Source/cmTarget.cxx b/Source/cmTarget.cxx index 9f9b6f9..a4f9083 100644 --- a/Source/cmTarget.cxx +++ b/Source/cmTarget.cxx @@ -186,7 +186,7 @@ public: std::vector<cmInstallTargetGenerator*> InstallGenerators; std::set<std::string> SystemIncludeDirectories; cmTarget::LinkLibraryVectorType OriginalLinkLibraries; - std::map<std::string, BT<std::string>> LanguageStandardProperties; + std::map<std::string, BTs<std::string>> LanguageStandardProperties; std::vector<std::string> IncludeDirectoriesEntries; std::vector<cmListFileBacktrace> IncludeDirectoriesBacktraces; std::vector<std::string> CompileOptionsEntries; @@ -419,8 +419,8 @@ cmTarget::cmTarget(std::string const& name, cmStateEnums::TargetType type, "INTERPROCEDURAL_OPTIMIZATION_" }; // Collect the set of configuration types. - std::vector<std::string> configNames; - mf->GetConfigurations(configNames); + std::vector<std::string> configNames = + mf->GetGeneratorConfigs(cmMakefile::ExcludeEmptyConfig); for (std::string const& configName : configNames) { std::string configUpper = cmSystemTools::UpperCase(configName); for (auto const& prop : configProps) { @@ -600,7 +600,7 @@ cmGlobalGenerator* cmTarget::GetGlobalGenerator() const return impl->Makefile->GetGlobalGenerator(); } -BT<std::string> const* cmTarget::GetLanguageStandardProperty( +BTs<std::string> const* cmTarget::GetLanguageStandardProperty( const std::string& propertyName) const { auto entry = impl->LanguageStandardProperties.find(propertyName); @@ -625,8 +625,13 @@ void cmTarget::SetLanguageStandardProperty(std::string const& lang, } } - impl->LanguageStandardProperties[cmStrCat(lang, "_STANDARD")] = - BT<std::string>(value, featureBacktrace); + BTs<std::string>& languageStandardProperty = + impl->LanguageStandardProperties[cmStrCat(lang, "_STANDARD")]; + if (languageStandardProperty.Value != value) { + languageStandardProperty.Value = value; + languageStandardProperty.Backtraces.clear(); + } + languageStandardProperty.Backtraces.emplace_back(featureBacktrace); } void cmTarget::AddUtility(std::string const& name, bool cross, cmMakefile* mf) @@ -1357,7 +1362,7 @@ void cmTarget::SetProperty(const std::string& prop, const char* value) prop == propOBJCXX_STANDARD) { if (value) { impl->LanguageStandardProperties[prop] = - BT<std::string>(value, impl->Makefile->GetBacktrace()); + BTs<std::string>(value, impl->Makefile->GetBacktrace()); } else { impl->LanguageStandardProperties.erase(prop); } diff --git a/Source/cmTarget.h b/Source/cmTarget.h index b3d6fe0..7a16de8 100644 --- a/Source/cmTarget.h +++ b/Source/cmTarget.h @@ -236,7 +236,7 @@ public: void AddSystemIncludeDirectories(std::set<std::string> const& incs); std::set<std::string> const& GetSystemIncludeDirectories() const; - BT<std::string> const* GetLanguageStandardProperty( + BTs<std::string> const* GetLanguageStandardProperty( const std::string& propertyName) const; void SetLanguageStandardProperty(std::string const& lang, diff --git a/Source/cmTargetCompileFeaturesCommand.cxx b/Source/cmTargetCompileFeaturesCommand.cxx index 06be4f0..aa1abdd 100644 --- a/Source/cmTargetCompileFeaturesCommand.cxx +++ b/Source/cmTargetCompileFeaturesCommand.cxx @@ -4,6 +4,7 @@ #include "cmMakefile.h" #include "cmMessageType.h" +#include "cmStandardLevelResolver.h" #include "cmStringAlgorithms.h" #include "cmTargetPropCommandBase.h" @@ -29,9 +30,10 @@ private: const std::vector<std::string>& content, bool /*prepend*/, bool /*system*/) override { + cmStandardLevelResolver standardResolver(this->Makefile); for (std::string const& it : content) { std::string error; - if (!this->Makefile->AddRequiredTargetFeature(tgt, it, &error)) { + if (!standardResolver.AddRequiredTargetFeature(tgt, it, &error)) { this->SetError(error); return false; // Not (successfully) handled. } diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx index 10a4a0c..5f6b41d 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -232,7 +232,8 @@ cmVisualStudio10TargetGenerator::cmVisualStudio10TargetGenerator( , LocalGenerator( (cmLocalVisualStudio10Generator*)target->GetLocalGenerator()) { - this->Makefile->GetConfigurations(this->Configurations); + this->Configurations = + this->Makefile->GetGeneratorConfigs(cmMakefile::ExcludeEmptyConfig); this->NsightTegra = gg->IsNsightTegra(); this->Android = gg->TargetsAndroid(); for (int i = 0; i < 4; ++i) { @@ -670,7 +671,7 @@ void cmVisualStudio10TargetGenerator::Generate() cmStrCat(this->DefaultArtifactDir, "\\nasm.props"); ConvertToWindowsSlash(propsLocal); this->Makefile->ConfigureFile(propsTemplate, propsLocal, false, true, - true); + true, true); Elem(e1, "Import").Attribute("Project", propsLocal); } } diff --git a/Source/cmXCodeScheme.cxx b/Source/cmXCodeScheme.cxx index f4c2f2d..0e3cf08 100644 --- a/Source/cmXCodeScheme.cxx +++ b/Source/cmXCodeScheme.cxx @@ -33,7 +33,7 @@ void cmXCodeScheme::WriteXCodeSharedScheme(const std::string& xcProjDir, // Create shared scheme sub-directory tree // std::string xcodeSchemeDir = cmStrCat(xcProjDir, "/xcshareddata/xcschemes"); - cmSystemTools::MakeDirectory(xcodeSchemeDir.c_str()); + cmSystemTools::MakeDirectory(xcodeSchemeDir); std::string xcodeSchemeFile = cmStrCat(xcodeSchemeDir, '/', this->TargetName, ".xcscheme"); diff --git a/Source/cmake.cxx b/Source/cmake.cxx index 27ecb4d..2656849 100644 --- a/Source/cmake.cxx +++ b/Source/cmake.cxx @@ -773,8 +773,7 @@ void cmake::SetArgs(const std::vector<std::string>& args) std::cout << "Warn about uninitialized values.\n"; this->SetWarnUninitialized(true); } else if (cmHasLiteralPrefix(arg, "--warn-unused-vars")) { - std::cout << "Finding unused variables.\n"; - this->SetWarnUnused(true); + // Option was removed. } else if (cmHasLiteralPrefix(arg, "--no-warn-unused-cli")) { std::cout << "Not searching for unused variables given on the " << "command line.\n"; @@ -1372,7 +1371,7 @@ struct SaveCacheEntry int cmake::HandleDeleteCacheVariables(const std::string& var) { - std::vector<std::string> argsSplit = cmExpandedList(std::string(var), true); + std::vector<std::string> argsSplit = cmExpandedList(var, true); // erase the property to avoid infinite recursion this->State->SetGlobalProperty("__CMAKE_DELETE_CACHE_CHANGE_VARS_", ""); if (this->State->GetIsInTryCompile()) { diff --git a/Source/cmake.h b/Source/cmake.h index c5d608f..0c4f429 100644 --- a/Source/cmake.h +++ b/Source/cmake.h @@ -450,8 +450,6 @@ public: bool GetWarnUninitialized() { return this->WarnUninitialized; } void SetWarnUninitialized(bool b) { this->WarnUninitialized = b; } - bool GetWarnUnused() { return this->WarnUnused; } - void SetWarnUnused(bool b) { this->WarnUnused = b; } bool GetWarnUnusedCli() { return this->WarnUnusedCli; } void SetWarnUnusedCli(bool b) { this->WarnUnusedCli = b; } bool GetCheckSystemVars() { return this->CheckSystemVars; } @@ -605,7 +603,6 @@ private: TraceFormat TraceFormatVar = TRACE_HUMAN; cmGeneratedFileStream TraceFile; bool WarnUninitialized = false; - bool WarnUnused = false; bool WarnUnusedCli = true; bool CheckSystemVars = false; std::map<std::string, bool> UsedCliVariables; diff --git a/Source/cmakemain.cxx b/Source/cmakemain.cxx index 9fa6705..7c66c5c 100644 --- a/Source/cmakemain.cxx +++ b/Source/cmakemain.cxx @@ -93,13 +93,14 @@ const char* cmDocumentationOptions[][2] = { { "--trace-redirect=<file>", "Redirect trace output to a file instead of stderr." }, { "--warn-uninitialized", "Warn about uninitialized values." }, - { "--warn-unused-vars", "Warn about unused variables." }, { "--no-warn-unused-cli", "Don't warn about command line options." }, { "--check-system-vars", "Find problems with variable usage in system " "files." }, # if !defined(CMAKE_BOOTSTRAP) - { "--profiling-format=<fmt>", "Output data for profiling CMake scripts." }, + { "--profiling-format=<fmt>", + "Output data for profiling CMake scripts. Supported formats: " + "google-trace" }, { "--profiling-output=<file>", "Select an output path for the profiling data enabled through " "--profiling-format." }, @@ -856,6 +857,8 @@ int main(int ac, char const* const* av) #ifndef CMAKE_BOOTSTRAP cmDynamicLoader::FlushCache(); #endif - uv_loop_close(uv_default_loop()); + if (uv_loop_t* loop = uv_default_loop()) { + uv_loop_close(loop); + } return ret; } diff --git a/Source/cmcmd.cxx b/Source/cmcmd.cxx index 6882fdd..49e8a4f 100644 --- a/Source/cmcmd.cxx +++ b/Source/cmcmd.cxx @@ -600,8 +600,7 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string> const& args) } cmsys::ifstream fin(args[3].c_str(), std::ios::in | std::ios::binary); if (!fin) { - std::cerr << "could not open object list file: " << args[3].c_str() - << "\n"; + std::cerr << "could not open object list file: " << args[3] << "\n"; return 1; } std::vector<std::string> files; @@ -624,13 +623,12 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string> const& args) } FILE* fout = cmsys::SystemTools::Fopen(args[2], "w+"); if (!fout) { - std::cerr << "could not open output .def file: " << args[2].c_str() - << "\n"; + std::cerr << "could not open output .def file: " << args[2] << "\n"; return 1; } bindexplib deffile; if (args.size() >= 5) { - auto a = args[4]; + std::string const& a = args[4]; if (cmHasLiteralPrefix(a, "--nm=")) { deffile.SetNmPath(a.substr(5)); std::cerr << a.substr(5) << "\n"; @@ -638,7 +636,7 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string> const& args) std::cerr << "unknown argument: " << a << "\n"; } } - for (auto const& file : files) { + for (std::string const& file : files) { std::string const& ext = cmSystemTools::GetFilenameLastExtension(file); if (cmSystemTools::LowerCase(ext) == ".def") { if (!deffile.AddDefinitionFile(file.c_str())) { @@ -1020,7 +1018,7 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string> const& args) // Command to create a symbolic link. Fails on platforms not // supporting them. if (args[1] == "create_symlink" && args.size() == 4) { - const char* destinationFileName = args[3].c_str(); + std::string const& destinationFileName = args[3]; if ((cmSystemTools::FileExists(destinationFileName) || cmSystemTools::FileIsSymlink(destinationFileName)) && !cmSystemTools::RemoveFile(destinationFileName)) { @@ -1377,15 +1375,12 @@ int cmcmd::ExecuteCMakeCommand(std::vector<std::string> const& args) #if defined(_WIN32) && !defined(__CYGWIN__) // Write registry value if (args[1] == "write_regv" && args.size() > 3) { - return cmSystemTools::WriteRegistryValue(args[2].c_str(), - args[3].c_str()) - ? 0 - : 1; + return cmSystemTools::WriteRegistryValue(args[2], args[3]) ? 0 : 1; } // Delete registry value if (args[1] == "delete_regv" && args.size() > 2) { - return cmSystemTools::DeleteRegistryValue(args[2].c_str()) ? 0 : 1; + return cmSystemTools::DeleteRegistryValue(args[2]) ? 0 : 1; } // Remove file diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt index 067ffdb..19aa4c4 100644 --- a/Tests/CMakeLists.txt +++ b/Tests/CMakeLists.txt @@ -2417,36 +2417,6 @@ ${CMake_SOURCE_DIR}/Utilities/Release/push.bash --dir dev -- '${CMake_BUILD_NIGH list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/BundleGeneratorTest") endif() - add_test(WarnUnusedUnusedViaSet ${CMAKE_CTEST_COMMAND} - --build-and-test - "${CMake_SOURCE_DIR}/Tests/VariableUnusedViaSet" - "${CMake_BINARY_DIR}/Tests/WarnUnusedUnusedViaSet" - ${build_generator_args} - --build-noclean - --build-project WarnUnusedUnusedViaSet - --build-options - "--warn-unused-vars") - set_tests_properties(WarnUnusedUnusedViaSet PROPERTIES - PASS_REGULAR_EXPRESSION "unused variable \\(changing definition\\) 'UNUSED_VARIABLE'") - set_tests_properties(WarnUnusedUnusedViaSet PROPERTIES - FAIL_REGULAR_EXPRESSION "unused variable \\(unsetting\\) 'UNUSED_VARIABLE'") - list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/WarnUnusedUnusedViaSet") - - add_test(WarnUnusedUnusedViaUnset ${CMAKE_CTEST_COMMAND} - --build-and-test - "${CMake_SOURCE_DIR}/Tests/VariableUnusedViaUnset" - "${CMake_BINARY_DIR}/Tests/WarnUnusedUnusedViaUnset" - ${build_generator_args} - --build-noclean - --build-project WarnUnusedUnusedViaUnset - --build-options - "--warn-unused-vars") - set_tests_properties(WarnUnusedUnusedViaUnset PROPERTIES - PASS_REGULAR_EXPRESSION "CMake Warning \\(dev\\) at CMakeLists.txt:7 \\(set\\):") - set_tests_properties(WarnUnusedUnusedViaUnset PROPERTIES - FAIL_REGULAR_EXPRESSION "CMakeLists.txt:5 \\(set\\):") - list(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/WarnUnusedUnusedViaUnset") - add_test(WarnUnusedCliUnused ${CMAKE_CTEST_COMMAND} --build-and-test "${CMake_SOURCE_DIR}/Tests/WarnUnusedCliUnused" diff --git a/Tests/CPackComponentsForAll/RunCPackVerifyResult.cmake b/Tests/CPackComponentsForAll/RunCPackVerifyResult.cmake index 253d128..f3d3ad0 100644 --- a/Tests/CPackComponentsForAll/RunCPackVerifyResult.cmake +++ b/Tests/CPackComponentsForAll/RunCPackVerifyResult.cmake @@ -88,12 +88,14 @@ if(CPackGen MATCHES "DragNDrop") set(expected_file_mask "${CPackComponentsForAll_BINARY_DIR}/MyLib-*.dmg") if(${CPackComponentWay} STREQUAL "default") set(expected_count 1) + set(expect_dmg_sla 1) elseif(${CPackComponentWay} STREQUAL "OnePackPerGroup") set(expected_count 3) elseif(${CPackComponentWay} STREQUAL "IgnoreGroup") set(expected_count 4) elseif(${CPackComponentWay} STREQUAL "AllInOne") set(expected_count 1) + set(expect_dmg_sla 1) endif() endif() @@ -138,6 +140,36 @@ if(expected_file_mask) if(NOT actual_count EQUAL expected_count) message(FATAL_ERROR "error: expected_count=${expected_count} does not match actual_count=${actual_count}: CPackComponents test fails. (CPack_output=${CPack_output}, CPack_error=${CPack_error})") endif() + + if(expect_dmg_sla) + execute_process(COMMAND hdiutil udifderez -xml "${expected_file}" OUTPUT_VARIABLE out ERROR_VARIABLE err RESULT_VARIABLE res) + if(NOT res EQUAL 0) + string(REPLACE "\n" "\n " err " ${err}") + message(FATAL_ERROR "error: running 'hdiutil udifderez -xml' on\n ${expected_file}\nfailed with:\n${err}") + endif() + foreach(key "LPic" "STR#" "TEXT") + if(NOT out MATCHES "<key>${key}</key>") + string(REPLACE "\n" "\n " out " ${out}") + message(FATAL_ERROR "error: running 'hdiutil udifderez -xml' on\n ${expected_file}\ndid not show '${key}' key:\n${out}") + endif() + endforeach() + foreach(line + # LPic first and last base64 lines + "\tAAIAEQADAAEAAAAAAAIAAAAIAAMAAAABAAQAAAAEAAUAAAAOAAYA\n" + "\tAA0AAABbAAQAAAAzAA8AAQAMABAAAAALAA4AAA==\n" + # STR# first and last base64 lines + "\tAAkHRW5nbGlzaAVBZ3JlZQhEaXNhZ3JlZQVQcmludAdTYXZlLi4u\n" + "\tdGVkIGEgcHJpbnRlci4=\n" + # TEXT first and last base64 lines + "\tTElDRU5TRQ0tLS0tLS0tDVRoaXMgaXMgYW4gaW5zdGFsbGVyIGNy\n" + "\tTm8gbGljZW5zZSBwcm92aWRlZC4NDQ==\n" + ) + if(NOT out MATCHES "${line}") + string(REPLACE "\n" "\n " out " ${out}") + message(FATAL_ERROR "error: running 'hdiutil udifderez -xml' on\n ${expected_file}\ndid not show '${line}':\n${out}") + endif() + endforeach() + endif() endif() # Validate content diff --git a/Tests/FindTIFF/Test/CMakeLists.txt b/Tests/FindTIFF/Test/CMakeLists.txt index 85453ed..e235db3 100644 --- a/Tests/FindTIFF/Test/CMakeLists.txt +++ b/Tests/FindTIFF/Test/CMakeLists.txt @@ -1,14 +1,23 @@ cmake_minimum_required(VERSION 3.1) -project(TestFindTIFF C) +project(TestFindTIFF) include(CTest) -find_package(TIFF REQUIRED) +find_package(TIFF REQUIRED COMPONENTS CXX) add_executable(test_tiff_tgt main.c) target_link_libraries(test_tiff_tgt TIFF::TIFF) add_test(NAME test_tiff_tgt COMMAND test_tiff_tgt) +add_executable(test_tiffxx_tgt main.cxx) +target_link_libraries(test_tiffxx_tgt TIFF::CXX) +add_test(NAME test_tiffxx_tgt COMMAND test_tiffxx_tgt) + add_executable(test_tiff_var main.c) target_include_directories(test_tiff_var PRIVATE ${TIFF_INCLUDE_DIRS}) target_link_libraries(test_tiff_var PRIVATE ${TIFF_LIBRARIES}) add_test(NAME test_tiff_var COMMAND test_tiff_var) + +add_executable(test_tiffxx_var main.cxx) +target_include_directories(test_tiffxx_var PRIVATE ${TIFF_INCLUDE_DIRS}) +target_link_libraries(test_tiffxx_var PRIVATE ${TIFF_LIBRARIES}) +add_test(NAME test_tiffxx_var COMMAND test_tiffxx_var) diff --git a/Tests/FindTIFF/Test/main.cxx b/Tests/FindTIFF/Test/main.cxx new file mode 100644 index 0000000..f80a31f --- /dev/null +++ b/Tests/FindTIFF/Test/main.cxx @@ -0,0 +1,16 @@ +#include <fstream> + +#include <assert.h> +#include <tiffio.hxx> + +int main() +{ + /* Without any TIFF file to open, test that the call fails as + expected. This tests that linking worked. */ + TIFF* tiff = TIFFOpen("invalid.tiff", "r"); + assert(!tiff); + + std::ifstream s; + TIFF* tiffxx = TIFFStreamOpen("invalid.tiff", &s); + return 0; +} diff --git a/Tests/FindVulkan/Test/CMakeLists.txt b/Tests/FindVulkan/Test/CMakeLists.txt index 0b13d53..9d36a0d 100644 --- a/Tests/FindVulkan/Test/CMakeLists.txt +++ b/Tests/FindVulkan/Test/CMakeLists.txt @@ -13,3 +13,12 @@ add_executable(test_var main.c) target_include_directories(test_var PRIVATE ${Vulkan_INCLUDE_DIRS}) target_link_libraries(test_var PRIVATE ${Vulkan_LIBRARIES}) add_test(NAME test_var COMMAND test_var) + +if(Vulkan_GLSLC_EXECUTABLE) + add_test(NAME test_glslc + COMMAND ${CMAKE_COMMAND} + "-DVULKAN_GLSLC_EXECUTABLE=${Vulkan_GLSLC_EXECUTABLE}" + "-DVULKAN_GLSLC_EXECUTABLE_TARGET=$<TARGET_FILE:Vulkan::glslc>" + -P "${CMAKE_CURRENT_LIST_DIR}/Run-glslc.cmake" + ) +endif() diff --git a/Tests/FindVulkan/Test/Run-glslc.cmake b/Tests/FindVulkan/Test/Run-glslc.cmake new file mode 100644 index 0000000..086eb9d --- /dev/null +++ b/Tests/FindVulkan/Test/Run-glslc.cmake @@ -0,0 +1,20 @@ +cmake_minimum_required(VERSION 3.12) + +function(run_glslc exe exe_display) + execute_process(COMMAND ${exe} --help + OUTPUT_VARIABLE output + OUTPUT_STRIP_TRAILING_WHITESPACE + RESULT_VARIABLE result + ) + + if(NOT result EQUAL 0) + message(SEND_ERROR "Result of ${exe_display} --help is ${result}, should be 0") + endif() + + if(NOT output MATCHES "^glslc - Compile shaders into SPIR-V") + message(SEND_ERROR "Output of ${exe_display} --help is \"${output}\", should begin with \"glslc - Compile shaders into SPIR-V\"") + endif() +endfunction() + +run_glslc("${VULKAN_GLSLC_EXECUTABLE}" "\${VULKAN_GLSLC_EXECUTABLE}") +run_glslc("${VULKAN_GLSLC_EXECUTABLE_TARGET}" "Vulkan::glslc") diff --git a/Tests/FindVulkan/Test/main.c b/Tests/FindVulkan/Test/main.c index b29c9ec..1bff651 100644 --- a/Tests/FindVulkan/Test/main.c +++ b/Tests/FindVulkan/Test/main.c @@ -2,10 +2,10 @@ int main() { - VkInstanceCreateInfo instanceCreateInfo = {}; + VkInstanceCreateInfo instanceCreateInfo = { 0 }; instanceCreateInfo.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO; - VkApplicationInfo applicationInfo = {}; + VkApplicationInfo applicationInfo = { 0 }; applicationInfo.sType = VK_STRUCTURE_TYPE_APPLICATION_INFO; applicationInfo.apiVersion = VK_API_VERSION_1_0; applicationInfo.applicationVersion = VK_MAKE_VERSION(1, 0, 0); diff --git a/Tests/Properties/CMakeLists.txt b/Tests/Properties/CMakeLists.txt index f93f553..74d99fa 100644 --- a/Tests/Properties/CMakeLists.txt +++ b/Tests/Properties/CMakeLists.txt @@ -146,18 +146,25 @@ check_cache_props() function(generate_file_for_set_property_test i target_name) set(src_path "${CMAKE_CURRENT_BINARY_DIR}/src${i}.cpp") - file(GENERATE OUTPUT "${src_path}" CONTENT + file(CONFIGURE OUTPUT "${src_path}" CONTENT "#ifndef def${i}\n\ #error Expected def${i}\n\ #endif\n\ #ifdef _WIN32\n\ __declspec(dllexport)\n\ #endif\n\ - void dummy_symbol${i}() {}\n") + void dummy_symbol${i}() {}\n" + NEWLINE_STYLE UNIX) target_sources(${target_name} PRIVATE "${src_path}") endfunction() add_library(maindirtest SHARED) + +# Generate file to be used with both DIRECTORY and TARGET_DIRECTORY options in +# set_source_files_properties and set_property(). +generate_file_for_set_property_test(32 maindirtest) +generate_file_for_set_property_test(33 maindirtest) + add_subdirectory(SubDir2) set(src_prefix "${CMAKE_CURRENT_BINARY_DIR}/SubDir2/") @@ -233,6 +240,19 @@ set_source_files_properties("${CMAKE_CURRENT_BINARY_DIR}/src30.cpp" set_source_files_properties("${CMAKE_CURRENT_BINARY_DIR}/src30.cpp" "${CMAKE_CURRENT_BINARY_DIR}/SubDir2/src31.cpp") + +# Check that specifying both DIRECTORY and TARGET_DIRECTORY works. +set_source_files_properties("${CMAKE_CURRENT_BINARY_DIR}/src32.cpp" + DIRECTORY . + TARGET_DIRECTORY set_prop_lib_3 + PROPERTIES COMPILE_DEFINITIONS "def32") + +set_property(SOURCE "${CMAKE_CURRENT_BINARY_DIR}/src33.cpp" + DIRECTORY SubDir2 + TARGET_DIRECTORY maindirtest + PROPERTY COMPILE_DEFINITIONS "def33") + + function(check_get_property_value expected) if(NOT actual STREQUAL expected) message(SEND_ERROR "Error: get_property returned unexpected value\n" diff --git a/Tests/Properties/SubDir2/CMakeLists.txt b/Tests/Properties/SubDir2/CMakeLists.txt index 9b2c79e..88e5531 100644 --- a/Tests/Properties/SubDir2/CMakeLists.txt +++ b/Tests/Properties/SubDir2/CMakeLists.txt @@ -28,3 +28,7 @@ generate_file_for_set_property_test(23 set_prop_lib_3) # For set_source_files_properties + multiple files in multiple directories generate_file_for_set_property_test(31 set_prop_lib_3) + +# For specifying both DIRECTORY and TARGET_DIRECTORY +target_sources(set_prop_lib_3 PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/../src32.cpp") +target_sources(set_prop_lib_3 PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/../src33.cpp") diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt index 3f05b7d..b037a6d 100644 --- a/Tests/RunCMake/CMakeLists.txt +++ b/Tests/RunCMake/CMakeLists.txt @@ -318,7 +318,7 @@ add_RunCMake_test(ctest_upload) add_RunCMake_test(ctest_fixtures) add_RunCMake_test(file) add_RunCMake_test(find_file) -add_RunCMake_test(find_library) +add_RunCMake_test(find_library -DCYGWIN=${CYGWIN}) add_RunCMake_test(find_package) add_RunCMake_test(find_path) add_RunCMake_test(find_program -DCMAKE_SYSTEM_NAME=${CMAKE_SYSTEM_NAME}) @@ -437,6 +437,10 @@ else() message(STATUS "Could not find ctresalloc") endif() +if(NOT WIN32) + add_RunCMake_test(SymlinkTrees) +endif () + find_package(Qt4 QUIET) find_package(Qt5Core QUIET) if (QT4_FOUND AND Qt5Core_FOUND AND NOT Qt5Core_VERSION VERSION_LESS 5.1.0) diff --git a/Tests/RunCMake/CPack/DragNDrop/Accept.txt b/Tests/RunCMake/CPack/DragNDrop/Accept.txt new file mode 100644 index 0000000..975fbec --- /dev/null +++ b/Tests/RunCMake/CPack/DragNDrop/Accept.txt @@ -0,0 +1 @@ +y diff --git a/Tests/RunCMake/CPack/DragNDrop/Helpers.cmake b/Tests/RunCMake/CPack/DragNDrop/Helpers.cmake index 023e597..896fba7 100644 --- a/Tests/RunCMake/CPack/DragNDrop/Helpers.cmake +++ b/Tests/RunCMake/CPack/DragNDrop/Helpers.cmake @@ -5,6 +5,7 @@ function(getPackageContent FILE RESULT_VAR) file(REMOVE_RECURSE "${path_}/content") file(MAKE_DIRECTORY "${path_}/content") execute_process(COMMAND ${HDIUTIL_EXECUTABLE} attach -mountroot ${path_}/content -nobrowse ${FILE} + INPUT_FILE "${src_dir}/DragNDrop/Accept.txt" RESULT_VARIABLE attach_result_ ERROR_VARIABLE attach_error_ OUTPUT_STRIP_TRAILING_WHITESPACE) diff --git a/Tests/RunCMake/CPack/DragNDrop/packaging_MONOLITHIC_default.cmake b/Tests/RunCMake/CPack/DragNDrop/packaging_MONOLITHIC_default.cmake new file mode 100644 index 0000000..ca27890 --- /dev/null +++ b/Tests/RunCMake/CPack/DragNDrop/packaging_MONOLITHIC_default.cmake @@ -0,0 +1,2 @@ +set(CPACK_DMG_DISABLE_APPLICATIONS_SYMLINK ON) +set(CPACK_DMG_VOLUME_NAME "volume-name") diff --git a/Tests/RunCMake/CPack/RunCMakeTest.cmake b/Tests/RunCMake/CPack/RunCMakeTest.cmake index 831f430..530bcdf 100644 --- a/Tests/RunCMake/CPack/RunCMakeTest.cmake +++ b/Tests/RunCMake/CPack/RunCMakeTest.cmake @@ -10,6 +10,7 @@ run_cpack_test(DEBUGINFO "RPM.DEBUGINFO;DEB.DEBUGINFO" true "COMPONENT") run_cpack_test_subtests(DEFAULT_PERMISSIONS "CMAKE_var_set;CPACK_var_set;both_set;invalid_CMAKE_var;invalid_CPACK_var" "RPM.DEFAULT_PERMISSIONS;DEB.DEFAULT_PERMISSIONS" false "MONOLITHIC;COMPONENT") run_cpack_test(DEPENDENCIES "RPM.DEPENDENCIES;DEB.DEPENDENCIES" true "COMPONENT") run_cpack_test(DIST "RPM.DIST" false "MONOLITHIC") +run_cpack_test(DMG_SLA "DragNDrop" false "MONOLITHIC") run_cpack_test(EMPTY_DIR "RPM.EMPTY_DIR;DEB.EMPTY_DIR;TGZ" true "MONOLITHIC;COMPONENT") run_cpack_test(VERSION "RPM.VERSION;DEB.VERSION" false "MONOLITHIC;COMPONENT") run_cpack_test(EXTRA "DEB.EXTRA" false "COMPONENT") diff --git a/Tests/RunCMake/CPack/tests/DMG_SLA/English.license.rtf b/Tests/RunCMake/CPack/tests/DMG_SLA/English.license.rtf new file mode 100644 index 0000000..c1da711 --- /dev/null +++ b/Tests/RunCMake/CPack/tests/DMG_SLA/English.license.rtf @@ -0,0 +1,7 @@ +{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033{\fonttbl{\f0\fnil\fcharset0 Calibri;}} +{\colortbl ;\red0\green0\blue255;} +{\*\generator Riched20 10.0.18362}\viewkind4\uc1 +\pard\sa200\sl276\slmult1\b\f0\fs22\lang9 LICENSE\b0\par +This is an installer created using CPack ({{\field{\*\fldinst{HYPERLINK https://cmake.org }}{\fldrslt{https://cmake.org\ul0\cf0}}}}\f0\fs22 ). No license provided.\par +\par +} diff --git a/Tests/RunCMake/CPack/tests/DMG_SLA/English.menu.txt b/Tests/RunCMake/CPack/tests/DMG_SLA/English.menu.txt new file mode 100644 index 0000000..b2cbc25 --- /dev/null +++ b/Tests/RunCMake/CPack/tests/DMG_SLA/English.menu.txt @@ -0,0 +1,9 @@ +English +Agree +Disagree +Print +Save... +You agree to the License Agreement terms when you click the "Agree" button. +Software License Agreement +This text cannot be saved. This disk may be full or locked or the file may be locked. +Unable to print. Make sure you have selected a printer. diff --git a/Tests/RunCMake/CPack/tests/DMG_SLA/ExpectedFiles.cmake b/Tests/RunCMake/CPack/tests/DMG_SLA/ExpectedFiles.cmake new file mode 100644 index 0000000..d1a3a5f --- /dev/null +++ b/Tests/RunCMake/CPack/tests/DMG_SLA/ExpectedFiles.cmake @@ -0,0 +1,2 @@ +set(EXPECTED_FILES_COUNT "1") +set(EXPECTED_FILE_CONTENT_1_LIST "/foo;/foo/CMakeLists.txt") diff --git a/Tests/RunCMake/CPack/tests/DMG_SLA/German.license.txt b/Tests/RunCMake/CPack/tests/DMG_SLA/German.license.txt new file mode 100644 index 0000000..0edd1f2 --- /dev/null +++ b/Tests/RunCMake/CPack/tests/DMG_SLA/German.license.txt @@ -0,0 +1,3 @@ +LIZENZ +------ +Dies ist ein Installationsprogramm, das mit erstellt wurde CPack (https://cmake.org). Keine Lizenz angegeben. diff --git a/Tests/RunCMake/CPack/tests/DMG_SLA/German.menu.txt b/Tests/RunCMake/CPack/tests/DMG_SLA/German.menu.txt new file mode 100644 index 0000000..7724818 --- /dev/null +++ b/Tests/RunCMake/CPack/tests/DMG_SLA/German.menu.txt @@ -0,0 +1,9 @@ +German +Akzeptieren +Ablehnen +Drucken +Speichern... +Klicken Sie auf "Akzeptieren", wenn Sie mit den Bestimmungen des Software-Lizenzvertrages einverstanden sind. +Software-Lizenzvertrag +Dieser Text kann nicht gesichert werden. Diese Festplatte ist mšglicherweise voll oder geschŸtzt oder der Ordner ist geschŸtzt. +Es kann nicht gedruckt werden. Bitte stellen Sie sicher, dass ein Drucker ausgewŠhlt ist. diff --git a/Tests/RunCMake/CPack/tests/DMG_SLA/VerifyResult.cmake b/Tests/RunCMake/CPack/tests/DMG_SLA/VerifyResult.cmake new file mode 100644 index 0000000..010e14c --- /dev/null +++ b/Tests/RunCMake/CPack/tests/DMG_SLA/VerifyResult.cmake @@ -0,0 +1,33 @@ +set(dmg "${bin_dir}/${FOUND_FILE_1}") +execute_process(COMMAND hdiutil udifderez -xml "${dmg}" OUTPUT_VARIABLE out ERROR_VARIABLE err RESULT_VARIABLE res) +if(NOT res EQUAL 0) + string(REPLACE "\n" "\n " err " ${err}") + message(FATAL_ERROR "Running 'hdiutil udifderez -xml' on\n ${dmg}\nfailed with:\n${err}") +endif() +foreach(key "LPic" "STR#" "TEXT" "RTF ") + if(NOT out MATCHES "<key>${key}</key>") + string(REPLACE "\n" "\n " out " ${out}") + message(FATAL_ERROR "error: running 'hdiutil udifderez -xml' on\n ${dmg}\ndid not show '${key}' key:\n${out}") + endif() +endforeach() +foreach(line + # LPic + "\tAAAAAgAAAAAAAAADAAEAAA==\n" + # STR# English first and last base64 lines + "\tAAkHRW5nbGlzaAVBZ3JlZQhEaXNhZ3JlZQVQcmludAdTYXZlLi4u\n" + "\tZCBhIHByaW50ZXIu\n" + # STR# German first and last base64 lines + "\tAAkGR2VybWFuC0FremVwdGllcmVuCEFibGVobmVuB0RydWNrZW4M\n" + "\tYXVzZ2V3wopobHQgaXN0Lg==\n" + # RTF English first and last base64 lines + "\te1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcZGVmZjBcbm91aWNvbXBh\n" + "\tdmlkZWQuXHBhcg1ccGFyDX0NDQ==\n" + # TEXT German first and last base64 lines + "\tTElaRU5aDS0tLS0tLQ1EaWVzIGlzdCBlaW4gSW5zdGFsbGF0aW9u\n" + "\tZ2ViZW4uDQ0=\n" + ) + if(NOT out MATCHES "${line}") + string(REPLACE "\n" "\n " out " ${out}") + message(FATAL_ERROR "error: running 'hdiutil udifderez -xml' on\n ${dmg}\ndid not show '${line}':\n${out}") + endif() +endforeach() diff --git a/Tests/RunCMake/CPack/tests/DMG_SLA/test.cmake b/Tests/RunCMake/CPack/tests/DMG_SLA/test.cmake new file mode 100644 index 0000000..2804b0b --- /dev/null +++ b/Tests/RunCMake/CPack/tests/DMG_SLA/test.cmake @@ -0,0 +1,3 @@ +install(FILES CMakeLists.txt DESTINATION foo) +set(CPACK_DMG_SLA_DIR "${CMAKE_CURRENT_LIST_DIR}") +set(CPACK_DMG_SLA_LANGUAGES English German) diff --git a/Tests/RunCMake/CTestResourceAllocation/RunCMakeTest.cmake b/Tests/RunCMake/CTestResourceAllocation/RunCMakeTest.cmake index e9aa3a4..f5f0699 100644 --- a/Tests/RunCMake/CTestResourceAllocation/RunCMakeTest.cmake +++ b/Tests/RunCMake/CTestResourceAllocation/RunCMakeTest.cmake @@ -153,6 +153,7 @@ function(run_ctest_resource name parallel random extra) if(extra) run_ctest("${name}-ctest-s-res-variable" "-DCTEST_RESOURCE_ALLOC_ENABLED=1" "-DCTEST_RESOURCE_SPEC_SOURCE=VARIABLE" "-DCTRESALLOC_COMMAND=${CTRESALLOC_COMMAND}" "-DCTEST_PARALLEL=${parallel}" "-DCTEST_RANDOM=${random}") run_ctest("${name}-ctest-s-res-cache" "-DCTEST_RESOURCE_ALLOC_ENABLED=1" "-DCTEST_RESOURCE_SPEC_SOURCE=CACHE" "-DCTRESALLOC_COMMAND=${CTRESALLOC_COMMAND}" "-DCTEST_PARALLEL=${parallel}" "-DCTEST_RANDOM=${random}") + run_ctest("${name}-ctest-s-res-cmdline" "-DCTEST_RESOURCE_ALLOC_ENABLED=1" "-DCTEST_RESOURCE_SPEC_SOURCE=CMDLINE" "-DCTRESALLOC_COMMAND=${CTRESALLOC_COMMAND}" "-DCTEST_PARALLEL=${parallel}" "-DCTEST_RANDOM=${random}" --resource-spec-file "${RunCMake_SOURCE_DIR}/resspec.json") endif() endfunction() diff --git a/Tests/RunCMake/CTestResourceAllocation/checkfree1-ctest-s-res-cmdline-check.cmake b/Tests/RunCMake/CTestResourceAllocation/checkfree1-ctest-s-res-cmdline-check.cmake new file mode 100644 index 0000000..ceda72e --- /dev/null +++ b/Tests/RunCMake/CTestResourceAllocation/checkfree1-ctest-s-res-cmdline-check.cmake @@ -0,0 +1 @@ +verify_ctest_resources() diff --git a/Tests/RunCMake/CTestResourceAllocation/notenough1-ctest-s-res-cmdline-check.cmake b/Tests/RunCMake/CTestResourceAllocation/notenough1-ctest-s-res-cmdline-check.cmake new file mode 100644 index 0000000..321e9a2 --- /dev/null +++ b/Tests/RunCMake/CTestResourceAllocation/notenough1-ctest-s-res-cmdline-check.cmake @@ -0,0 +1,3 @@ +if(EXISTS "${RunCMake_TEST_BINARY_DIR}/ctresalloc.log") + set(RunCMake_TEST_FAILED "ctresalloc.log should not exist") +endif() diff --git a/Tests/RunCMake/CTestResourceAllocation/notenough1-ctest-s-res-cmdline-result.txt b/Tests/RunCMake/CTestResourceAllocation/notenough1-ctest-s-res-cmdline-result.txt new file mode 100644 index 0000000..b57e2de --- /dev/null +++ b/Tests/RunCMake/CTestResourceAllocation/notenough1-ctest-s-res-cmdline-result.txt @@ -0,0 +1 @@ +(-1|255) diff --git a/Tests/RunCMake/CTestResourceAllocation/notenough1-ctest-s-res-cmdline-stderr.txt b/Tests/RunCMake/CTestResourceAllocation/notenough1-ctest-s-res-cmdline-stderr.txt new file mode 100644 index 0000000..c6f9cfc --- /dev/null +++ b/Tests/RunCMake/CTestResourceAllocation/notenough1-ctest-s-res-cmdline-stderr.txt @@ -0,0 +1,14 @@ +^Insufficient resources for test Test1: + + Test requested resources of type 'fluxcapacitors' in the following amounts: + 200 slots + but only the following units were available: + 'outatime': 121 slots + +Resource spec file: + + [^ +]*/Tests/RunCMake/CTestResourceAllocation/resspec.json +CMake Error at [^ +]*/Tests/RunCMake/CTestResourceAllocation/notenough1-ctest-s-res-cmdline/test\.cmake:[0-9]+ \(message\): + Tests did not pass$ diff --git a/Tests/RunCMake/CTestResourceAllocation/test.cmake.in b/Tests/RunCMake/CTestResourceAllocation/test.cmake.in index 54eb4e9..9ad9ac8 100644 --- a/Tests/RunCMake/CTestResourceAllocation/test.cmake.in +++ b/Tests/RunCMake/CTestResourceAllocation/test.cmake.in @@ -12,10 +12,15 @@ set(config_options "-DCTEST_RESOURCE_ALLOC_ENABLED=${CTEST_RESOURCE_ALLOC_ENABLED};-DCTRESALLOC_COMMAND=${CTRESALLOC_COMMAND}" ) -if(CTEST_RESOURCE_SPEC_SOURCE STREQUAL "ARG") +if(CTEST_RESOURCE_SPEC_SOURCE STREQUAL "CMDLINE") + list(APPEND config_options "-DCTEST_RESOURCE_SPEC_FILE=@RunCMake_SOURCE_DIR@/noexist.json") +elseif(CTEST_RESOURCE_SPEC_SOURCE STREQUAL "ARG") set(resspec RESOURCE_SPEC_FILE "@RunCMake_SOURCE_DIR@/resspec.json") + set(CTEST_RESOURCE_SPEC_FILE "@RunCMake_SOURCE_DIR@/noexist.json") + list(APPEND config_options "-DCTEST_RESOURCE_SPEC_FILE=@RunCMake_SOURCE_DIR@/noexist.json") elseif(CTEST_RESOURCE_SPEC_SOURCE STREQUAL "VARIABLE") set(CTEST_RESOURCE_SPEC_FILE "@RunCMake_SOURCE_DIR@/resspec.json") + list(APPEND config_options "-DCTEST_RESOURCE_SPEC_FILE=@RunCMake_SOURCE_DIR@/noexist.json") elseif(CTEST_RESOURCE_SPEC_SOURCE STREQUAL "CACHE") list(APPEND config_options "-DCTEST_RESOURCE_SPEC_FILE=@RunCMake_SOURCE_DIR@/resspec.json") endif() diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_standard_compile_feature_exe_languagestandard.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_standard_compile_feature_exe_languagestandard.json index 57b4161..0c4eabb 100644 --- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_standard_compile_feature_exe_languagestandard.json +++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_standard_compile_feature_exe_languagestandard.json @@ -15,8 +15,22 @@ "command": null, "hasParent": false } + ], + [ + { + "file": "^cxx/CMakeLists\\.txt$", + "line": 30, + "command": "target_compile_features", + "hasParent": true + }, + { + "file": "^cxx/CMakeLists\\.txt$", + "line": null, + "command": null, + "hasParent": false + } ] - ], - "standard" : "11" + ], + "standard" : "11" } } diff --git a/Tests/RunCMake/FileAPI/cxx/CMakeLists.txt b/Tests/RunCMake/FileAPI/cxx/CMakeLists.txt index 5758cc4..76235f5 100644 --- a/Tests/RunCMake/FileAPI/cxx/CMakeLists.txt +++ b/Tests/RunCMake/FileAPI/cxx/CMakeLists.txt @@ -27,5 +27,6 @@ add_executable(cxx_standard_compile_feature_exe ../empty.cxx) set_property(TARGET cxx_standard_compile_feature_exe PROPERTY CXX_STANDARD 98) if(CMAKE_CXX_STANDARD_DEFAULT AND DEFINED CMAKE_CXX11_STANDARD_COMPILE_OPTION) target_compile_features(cxx_standard_compile_feature_exe PRIVATE cxx_std_11) + target_compile_features(cxx_standard_compile_feature_exe PRIVATE cxx_decltype) file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/cxx_std_11.txt" "") endif() diff --git a/Tests/RunCMake/File_Archive/roundtrip.cmake b/Tests/RunCMake/File_Archive/roundtrip.cmake index f1b0de5..0638367 100644 --- a/Tests/RunCMake/File_Archive/roundtrip.cmake +++ b/Tests/RunCMake/File_Archive/roundtrip.cmake @@ -36,17 +36,17 @@ file(REMOVE_RECURSE ${FULL_DECOMPRESS_DIR}) file(MAKE_DIRECTORY ${FULL_DECOMPRESS_DIR}) file(ARCHIVE_CREATE - OUTPUT ${FULL_OUTPUT_NAME} - FORMAT "${ARCHIVE_FORMAT}" - COMPRESSION "${COMPRESSION_TYPE}" - VERBOSE - DIRECTORY ${COMPRESS_DIR}) + OUTPUT ${FULL_OUTPUT_NAME} + FORMAT "${ARCHIVE_FORMAT}" + COMPRESSION "${COMPRESSION_TYPE}" + VERBOSE + PATHS ${COMPRESS_DIR}) file(ARCHIVE_EXTRACT - INPUT ${FULL_OUTPUT_NAME} - ${DECOMPRESSION_OPTIONS} - DESTINATION ${FULL_DECOMPRESS_DIR} - VERBOSE) + INPUT ${FULL_OUTPUT_NAME} + ${DECOMPRESSION_OPTIONS} + DESTINATION ${FULL_DECOMPRESS_DIR} + VERBOSE) if(CUSTOM_CHECK_FILES) set(CHECK_FILES ${CUSTOM_CHECK_FILES}) @@ -57,11 +57,11 @@ foreach(file ${CHECK_FILES}) set(output ${FULL_DECOMPRESS_DIR}/${COMPRESS_DIR}/${file}) if(NOT EXISTS ${input}) - message(SEND_ERROR "Cannot find input file ${output}") + message(SEND_ERROR "Cannot find input file ${output}") endif() if(NOT EXISTS ${output}) - message(SEND_ERROR "Cannot find output file ${output}") + message(SEND_ERROR "Cannot find output file ${output}") endif() file(MD5 ${input} input_md5) @@ -76,7 +76,7 @@ foreach(file ${NOT_EXISTING_FILES_CHECK}) set(output ${FULL_DECOMPRESS_DIR}/${COMPRESS_DIR}/${file}) if(EXISTS ${output}) - message(SEND_ERROR "File ${output} exists but it shouldn't") + message(SEND_ERROR "File ${output} exists but it shouldn't") endif() endforeach() diff --git a/Tests/RunCMake/File_Archive/zip-filtered.cmake b/Tests/RunCMake/File_Archive/zip-filtered.cmake index e6bdcce..a4aab8b 100644 --- a/Tests/RunCMake/File_Archive/zip-filtered.cmake +++ b/Tests/RunCMake/File_Archive/zip-filtered.cmake @@ -3,9 +3,9 @@ set(OUTPUT_NAME "test.zip") set(ARCHIVE_FORMAT zip) set(DECOMPRESSION_OPTIONS - FILES + PATTERNS compress_dir/f1.txt # Decompress only file - compress_dir/d1 # and whole directory + compress_*/d? # and whole directory (has only one match) ) set(CUSTOM_CHECK_FILES diff --git a/Tests/RunCMake/File_Configure/RunCMakeTest.cmake b/Tests/RunCMake/File_Configure/RunCMakeTest.cmake index d09d648..0337014 100644 --- a/Tests/RunCMake/File_Configure/RunCMakeTest.cmake +++ b/Tests/RunCMake/File_Configure/RunCMakeTest.cmake @@ -7,3 +7,4 @@ run_cmake(DirOutput) run_cmake(NewLineStyle-NoArg) run_cmake(NewLineStyle-ValidArg) run_cmake(NewLineStyle-WrongArg) +run_cmake(SubDir) diff --git a/Tests/RunCMake/File_Configure/SubDir-check.cmake b/Tests/RunCMake/File_Configure/SubDir-check.cmake new file mode 100644 index 0000000..1e82587 --- /dev/null +++ b/Tests/RunCMake/File_Configure/SubDir-check.cmake @@ -0,0 +1,4 @@ +set(expected "${RunCMake_TEST_BINARY_DIR}/SubDir/out.txt") +if(NOT EXISTS "${expected}") + set(RunCMake_TEST_FAILED "Expected file not created:\n ${expected}") +endif() diff --git a/Tests/RunCMake/File_Configure/SubDir.cmake b/Tests/RunCMake/File_Configure/SubDir.cmake new file mode 100644 index 0000000..fae60fa --- /dev/null +++ b/Tests/RunCMake/File_Configure/SubDir.cmake @@ -0,0 +1 @@ +add_subdirectory(SubDir) diff --git a/Tests/RunCMake/File_Configure/SubDir/CMakeLists.txt b/Tests/RunCMake/File_Configure/SubDir/CMakeLists.txt new file mode 100644 index 0000000..6bd962e --- /dev/null +++ b/Tests/RunCMake/File_Configure/SubDir/CMakeLists.txt @@ -0,0 +1 @@ +file(CONFIGURE OUTPUT out.txt CONTENT "") diff --git a/Tests/RunCMake/File_Generate/AdjacentInOut.cmake b/Tests/RunCMake/File_Generate/AdjacentInOut.cmake new file mode 100644 index 0000000..828c2ee --- /dev/null +++ b/Tests/RunCMake/File_Generate/AdjacentInOut.cmake @@ -0,0 +1,6 @@ +cmake_policy(SET CMP0070 NEW) +if(EXISTS "${CMAKE_CURRENT_BINARY_DIR}/AdjacentInOut.txt") + message(FATAL_ERROR "CMake should not re-run during the build!") +endif() +configure_file(AdjacentInOut.in ${CMAKE_CURRENT_BINARY_DIR}/AdjacentInOut.txt.tmp) +file(GENERATE OUTPUT AdjacentInOut.txt INPUT ${CMAKE_CURRENT_BINARY_DIR}/AdjacentInOut.txt.tmp) diff --git a/Tests/RunCMake/File_Generate/AdjacentInOut.in b/Tests/RunCMake/File_Generate/AdjacentInOut.in new file mode 100644 index 0000000..bfbbda7 --- /dev/null +++ b/Tests/RunCMake/File_Generate/AdjacentInOut.in @@ -0,0 +1 @@ +Sample Text File diff --git a/Tests/RunCMake/File_Generate/RunCMakeTest.cmake b/Tests/RunCMake/File_Generate/RunCMakeTest.cmake index 94aaca8..5987417 100644 --- a/Tests/RunCMake/File_Generate/RunCMakeTest.cmake +++ b/Tests/RunCMake/File_Generate/RunCMakeTest.cmake @@ -72,6 +72,7 @@ if (UNIX AND EXISTS /bin/sh) if (NOT script_output STREQUAL SUCCESS) message(SEND_ERROR "Generated script did not execute correctly:\n${script_output}\n====\n${script_error}") endif() + unset(RunCMake_TEST_NO_CLEAN) endif() if (RunCMake_GENERATOR MATCHES Makefiles) @@ -104,3 +105,10 @@ if (RunCMake_GENERATOR MATCHES Makefiles) message(SEND_ERROR "File did not re-generate: \"${RunCMake_BINARY_DIR}/ReRunCMake-build/output_file.txt\"") endif() endif() + +set(RunCMake_TEST_BINARY_DIR ${RunCMake_BINARY_DIR}/AdjacentInOut-build) +run_cmake(AdjacentInOut) +set(RunCMake_TEST_NO_CLEAN 1) +run_cmake_command(AdjacentInOut-nowork ${CMAKE_COMMAND} --build .) +unset(RunCMake_TEST_BINARY_DIR) +unset(RunCMake_TEST_NO_CLEAN) diff --git a/Tests/RunCMake/GoogleTest/GoogleTestXML-special-result-check.cmake b/Tests/RunCMake/GoogleTest/GoogleTestXML-special-result-check.cmake new file mode 100644 index 0000000..fea0a6b --- /dev/null +++ b/Tests/RunCMake/GoogleTest/GoogleTestXML-special-result-check.cmake @@ -0,0 +1,28 @@ +set(RESULT_FILES + "${RunCMake_TEST_BINARY_DIR}/GoogleTestXMLSpecial/cases.case/0.xml" + "${RunCMake_TEST_BINARY_DIR}/GoogleTestXMLSpecial/cases.case/1.xml" + "${RunCMake_TEST_BINARY_DIR}/GoogleTestXMLSpecial/cases.case/2.xml" +) + +# Check result files exist +foreach(file ${RESULT_FILES}) + if(NOT EXISTS ${file}) + if(NOT ${RunCMake_TEST_FAILED} STREQUAL "") + set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}\n") + endif() + set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}Result XML file ${file} was not created") + endif() +endforeach() + +# and no other xml files are created +file(GLOB_RECURSE file_list "${RunCMake_TEST_BINARY_DIR}/GoogleTestXMLSpecial/*/*.xml" LIST_DIRECTORIES false) + +foreach(file ${file_list}) + list(FIND RESULT_FILES "${file}" idx) + if(-1 EQUAL ${idx}) + if(NOT ${RunCMake_TEST_FAILED} STREQUAL "") + set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}\n") + endif() + set(RunCMake_TEST_FAILED "${RunCMake_TEST_FAILED}Invalid file ${file} was created") + endif() +endforeach() diff --git a/Tests/RunCMake/GoogleTest/GoogleTestXML.cmake b/Tests/RunCMake/GoogleTest/GoogleTestXML.cmake index 29bd05e..fb91c0e 100644 --- a/Tests/RunCMake/GoogleTest/GoogleTestXML.cmake +++ b/Tests/RunCMake/GoogleTest/GoogleTestXML.cmake @@ -3,6 +3,17 @@ include(GoogleTest) enable_testing() +# This creates the folder structure for the paramterized tests +# to avoid handling missing folders in C++ +# +# This must match the match the name defined in xml_output.cpp +# for every instance of tests with GetParam. +# +# The folder name is created fom the test name (output of the line +# without leading spaces: "GoogleTestXMLSpecial/cases.") and +# the parts until the last slash ("case/"). These parts are concatenated. +file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/GoogleTestXMLSpecial/cases.case") + add_executable(xml_output xml_output.cpp) gtest_discover_tests( xml_output diff --git a/Tests/RunCMake/GoogleTest/RunCMakeTest.cmake b/Tests/RunCMake/GoogleTest/RunCMakeTest.cmake index efd22be..530c8ab 100644 --- a/Tests/RunCMake/GoogleTest/RunCMakeTest.cmake +++ b/Tests/RunCMake/GoogleTest/RunCMakeTest.cmake @@ -101,6 +101,13 @@ function(run_GoogleTestXML DISCOVERY_MODE) -R GoogleTestXML --no-label-summary ) + + run_cmake_command(GoogleTestXML-special-result + ${CMAKE_CTEST_COMMAND} + -C Debug + -R GoogleTestXMLSpecial + --no-label-summary + ) endfunction() function(run_GoogleTest_discovery_timeout DISCOVERY_MODE) diff --git a/Tests/RunCMake/GoogleTest/xml_output.cpp b/Tests/RunCMake/GoogleTest/xml_output.cpp index e130231..82f0d02 100644 --- a/Tests/RunCMake/GoogleTest/xml_output.cpp +++ b/Tests/RunCMake/GoogleTest/xml_output.cpp @@ -13,11 +13,22 @@ int main(int argc, char** argv) // This actually defines the name of the file passed in the 2nd run std::cout << "GoogleTestXML." << std::endl; std::cout << " Foo" << std::endl; + // When changing these names, make sure to adapt the folder creation + // in GoogleTestXML.cmake + std::cout << "GoogleTestXMLSpecial/cases." << std::endl; + std::cout << " case/0 # GetParam() = 42" << std::endl; + std::cout << " case/1 # GetParam() = \"string\"" << std::endl; + std::cout << " case/2 # GetParam() = \"path/like\"" << std::endl; } else if (param.find("--gtest_output=xml:") != std::string::npos) { std::string::size_type split = param.find(":"); std::string filepath = param.substr(split + 1); // The full file path is passed std::ofstream ostrm(filepath.c_str(), std::ios::binary); + if (!ostrm) { + std::cerr << "Failed to create file: " << filepath.c_str() + << std::endl; + return 1; + } ostrm << "--gtest_output=xml: mockup file\n"; } } diff --git a/Tests/RunCMake/SymlinkTrees/CMakeLists.txt b/Tests/RunCMake/SymlinkTrees/CMakeLists.txt new file mode 100644 index 0000000..d6fea2c --- /dev/null +++ b/Tests/RunCMake/SymlinkTrees/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 2.8.12) +project(${RunCMake_TEST} NONE) +include("${include_dir}/${RunCMake_TEST}.cmake") diff --git a/Tests/RunCMake/SymlinkTrees/PrintTrees.cmake b/Tests/RunCMake/SymlinkTrees/PrintTrees.cmake new file mode 100644 index 0000000..aa99127 --- /dev/null +++ b/Tests/RunCMake/SymlinkTrees/PrintTrees.cmake @@ -0,0 +1,6 @@ +message(STATUS "source: '${CMAKE_SOURCE_DIR}'") +message(STATUS "binary: '${CMAKE_BINARY_DIR}'") +get_filename_component(real_source "${CMAKE_SOURCE_DIR}" REALPATH) +get_filename_component(real_binary "${CMAKE_BINARY_DIR}" REALPATH) +message(STATUS "real source: '${real_source}'") +message(STATUS "real binary: '${real_binary}'") diff --git a/Tests/RunCMake/SymlinkTrees/RunCMakeTest.cmake b/Tests/RunCMake/SymlinkTrees/RunCMakeTest.cmake new file mode 100644 index 0000000..e5f1f7f --- /dev/null +++ b/Tests/RunCMake/SymlinkTrees/RunCMakeTest.cmake @@ -0,0 +1,34 @@ +include(RunCMake) + +# This function assumes that ``${RunCMake_BINARY_DIR}/${name}/source`` and +# ``${RunCMake_BINARY_DIR}/${name}/binary`` are set up properly prior to +# calling it. +function (run_symlink_test name) + set(RunCMake_TEST_NO_CLEAN TRUE) + configure_file( + "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt" + "${RunCMake_BINARY_DIR}/${name}/source/CMakeLists.txt" + COPYONLY) + set(RunCMake_TEST_SOURCE_DIR "${RunCMake_BINARY_DIR}/${name}/source") + set(RunCMake_TEST_BINARY_DIR "${RunCMake_BINARY_DIR}/${name}/binary") + # Emulate a shell using this directory. + set(ENV{PWD} "${RunCMake_TEST_BINARY_DIR}") + set(RunCMake_TEST_OPTIONS + "-Dinclude_dir:PATH=${CMAKE_CURRENT_LIST_DIR}") + run_cmake("${name}_symlinks") +endfunction () + +# Create the following structure: +# +# .../common_real/source +# .../common_real/binary +# .../common -> common_real +# +# In this case, CMake should act as if .../common *is* .../common_real for all +# computations except ``REALPATH``. This supports the case where a system has +# a stable *symlink*, but not a stable target for that symlink. +file(REMOVE_RECURSE "${RunCMake_BINARY_DIR}/common_real") +file(REMOVE "${RunCMake_BINARY_DIR}/common") +file(MAKE_DIRECTORY "${RunCMake_BINARY_DIR}/common_real/source") +file(CREATE_LINK "common_real" "${RunCMake_BINARY_DIR}/common" SYMBOLIC) +run_symlink_test(common) diff --git a/Tests/RunCMake/SymlinkTrees/common_symlinks-stdout.txt b/Tests/RunCMake/SymlinkTrees/common_symlinks-stdout.txt new file mode 100644 index 0000000..bb04450 --- /dev/null +++ b/Tests/RunCMake/SymlinkTrees/common_symlinks-stdout.txt @@ -0,0 +1,4 @@ +-- source: '[^']*/Tests/RunCMake/SymlinkTrees/common/source' +-- binary: '[^']*/Tests/RunCMake/SymlinkTrees/common/binary' +-- real source: '[^']*/Tests/RunCMake/SymlinkTrees/common_real/source' +-- real binary: '[^']*/Tests/RunCMake/SymlinkTrees/common_real/binary' diff --git a/Tests/RunCMake/SymlinkTrees/common_symlinks.cmake b/Tests/RunCMake/SymlinkTrees/common_symlinks.cmake new file mode 100644 index 0000000..5eafe26 --- /dev/null +++ b/Tests/RunCMake/SymlinkTrees/common_symlinks.cmake @@ -0,0 +1 @@ +include("${CMAKE_CURRENT_LIST_DIR}/PrintTrees.cmake") diff --git a/Tests/RunCMake/alias_targets/get_property-subdir/CMakeLists.txt b/Tests/RunCMake/alias_targets/get_property-subdir/CMakeLists.txt index bfd9840..b114b75 100644 --- a/Tests/RunCMake/alias_targets/get_property-subdir/CMakeLists.txt +++ b/Tests/RunCMake/alias_targets/get_property-subdir/CMakeLists.txt @@ -6,3 +6,10 @@ check_property (alias::import-local-subdir ALIASED_TARGET "import-local") check_property (alias::import-local-subdir IMPORTED "TRUE") check_property (alias::import-local-subdir ALIAS_GLOBAL "FALSE") check_property (alias::import-local-subdir IMPORT_LOCAL_PROPERTY "IMPORT_LOCAL") + + +# non-global alias defined in parent directory must be visible in sub-directory +check_property (alias::import-local ALIASED_TARGET "import-local") +check_property (alias::import-local IMPORTED "TRUE") +check_property (alias::import-local ALIAS_GLOBAL "FALSE") +check_property (alias::import-local IMPORT_LOCAL_PROPERTY "IMPORT_LOCAL") diff --git a/Tests/RunCMake/configure_file/NoSourcePermissions.cmake b/Tests/RunCMake/configure_file/NoSourcePermissions.cmake new file mode 100644 index 0000000..c6ad131 --- /dev/null +++ b/Tests/RunCMake/configure_file/NoSourcePermissions.cmake @@ -0,0 +1,10 @@ +configure_file(NoSourcePermissions.sh NoSourcePermissions.sh.out + NO_SOURCE_PERMISSIONS) + +if (UNIX) + execute_process(COMMAND ${CMAKE_CURRENT_BINARY_DIR}/NoSourcePermissions.sh.out + RESULT_VARIABLE result) + if (result EQUAL "0") + message(FATAL_ERROR "Copied file has executable permissions") + endif() +endif() diff --git a/Tests/RunCMake/configure_file/NoSourcePermissions.sh b/Tests/RunCMake/configure_file/NoSourcePermissions.sh new file mode 100755 index 0000000..0aa8f41 --- /dev/null +++ b/Tests/RunCMake/configure_file/NoSourcePermissions.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +#Testing NO_SOURCE_PERMISSIONS option of configure_file. diff --git a/Tests/RunCMake/configure_file/RunCMakeTest.cmake b/Tests/RunCMake/configure_file/RunCMakeTest.cmake index 32a0770..71694fb 100644 --- a/Tests/RunCMake/configure_file/RunCMakeTest.cmake +++ b/Tests/RunCMake/configure_file/RunCMakeTest.cmake @@ -15,6 +15,7 @@ run_cmake(NewLineStyle-NoArg) run_cmake(NewLineStyle-WrongArg) run_cmake(NewLineStyle-ValidArg) run_cmake(NewLineStyle-COPYONLY) +run_cmake(NoSourcePermissions) if(RunCMake_GENERATOR MATCHES "Make") # Use a single build tree for a few tests without cleaning. diff --git a/Tests/RunCMake/find_library/LibSymLink-stderr.txt b/Tests/RunCMake/find_library/LibSymLink-stderr.txt new file mode 100644 index 0000000..8a2f088 --- /dev/null +++ b/Tests/RunCMake/find_library/LibSymLink-stderr.txt @@ -0,0 +1,2 @@ +^SYMLINK_LIBRARY='SYMLINK_LIBRARY-NOTFOUND' +SYMLINK_LIBRARY='[^']*/Tests/RunCMake/find_library/LibSymLink-build/lib/libsymlink.a'$ diff --git a/Tests/RunCMake/find_library/LibSymLink.cmake b/Tests/RunCMake/find_library/LibSymLink.cmake new file mode 100644 index 0000000..8ee4b75 --- /dev/null +++ b/Tests/RunCMake/find_library/LibSymLink.cmake @@ -0,0 +1,17 @@ +list(APPEND CMAKE_FIND_LIBRARY_PREFIXES lib) +list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES .a) +file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib) +file(CREATE_LINK "libsymlinked.a" "${CMAKE_CURRENT_BINARY_DIR}/lib/libsymlink.a" SYMBOLIC) +find_library(SYMLINK_LIBRARY + NAMES symlink + PATHS ${CMAKE_CURRENT_BINARY_DIR}/lib + NO_DEFAULT_PATH + ) +message("SYMLINK_LIBRARY='${SYMLINK_LIBRARY}'") +file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/lib/libsymlinked.a" "symlinked") +find_library(SYMLINK_LIBRARY + NAMES symlink + PATHS ${CMAKE_CURRENT_BINARY_DIR}/lib + NO_DEFAULT_PATH + ) +message("SYMLINK_LIBRARY='${SYMLINK_LIBRARY}'") diff --git a/Tests/RunCMake/find_library/RunCMakeTest.cmake b/Tests/RunCMake/find_library/RunCMakeTest.cmake index b6aadce..c7d69e4 100644 --- a/Tests/RunCMake/find_library/RunCMakeTest.cmake +++ b/Tests/RunCMake/find_library/RunCMakeTest.cmake @@ -3,8 +3,9 @@ include(RunCMake) run_cmake(Created) run_cmake(FromPrefixPath) run_cmake(FromPATHEnv) -if(CMAKE_HOST_UNIX) +if(UNIX AND NOT CYGWIN) run_cmake(LibArchLink) + run_cmake(LibSymLink) endif() run_cmake(PrefixInPATH) run_cmake(Required) diff --git a/Tests/RunCMake/get_property/source_properties_failures-stderr.txt b/Tests/RunCMake/get_property/source_properties_failures-stderr.txt index a500e2e..0accb8f 100644 --- a/Tests/RunCMake/get_property/source_properties_failures-stderr.txt +++ b/Tests/RunCMake/get_property/source_properties_failures-stderr.txt @@ -16,7 +16,7 @@ Call Stack \(most recent call first\): CMakeLists\.txt:[0-9]+ \(include\) + CMake Error at source_properties_failures.cmake:4 \(set_source_files_properties\): - set_source_files_properties given non-existent target for DIRECTORY_TARGET + set_source_files_properties given non-existent target for TARGET_DIRECTORY non_existing_target Call Stack \(most recent call first\): CMakeLists\.txt:[0-9]+ \(include\) @@ -39,7 +39,7 @@ Call Stack \(most recent call first\): CMakeLists\.txt:[0-9]+ \(include\) + CMake Error at source_properties_failures.cmake:9 \(get_property\): - get_property given non-existent target for DIRECTORY_TARGET + get_property given non-existent target for TARGET_DIRECTORY non_existing_dir Call Stack \(most recent call first\): CMakeLists\.txt:[0-9]+ \(include\) @@ -55,7 +55,7 @@ Call Stack \(most recent call first\): CMakeLists\.txt:[0-9]+ \(include\) + CMake Error at source_properties_failures.cmake:13 \(get_source_file_property\): - get_source_file_property given non-existent target for DIRECTORY_TARGET + get_source_file_property given non-existent target for TARGET_DIRECTORY PROPERTY Call Stack \(most recent call first\): CMakeLists\.txt:[0-9]+ \(include\) diff --git a/Tests/RunCMake/set_property/SOURCE_FILE-stderr.txt b/Tests/RunCMake/set_property/SOURCE_FILE-stderr.txt index 2e0b238..a2b6cf4 100644 --- a/Tests/RunCMake/set_property/SOURCE_FILE-stderr.txt +++ b/Tests/RunCMake/set_property/SOURCE_FILE-stderr.txt @@ -16,7 +16,7 @@ Call Stack \(most recent call first\): CMakeLists\.txt:[0-9]+ \(include\) + CMake Error at SOURCE_FILE.cmake:4 \(set_property\): - set_property given non-existent target for DIRECTORY_TARGET + set_property given non-existent target for TARGET_DIRECTORY non_existing_target Call Stack \(most recent call first\): CMakeLists\.txt:[0-9]+ \(include\)$ diff --git a/Tests/RunCMake/target_link_libraries-ALIAS/AliasTargets.cmake b/Tests/RunCMake/target_link_libraries-ALIAS/AliasTargets.cmake index 73f8a7d..316b74b 100644 --- a/Tests/RunCMake/target_link_libraries-ALIAS/AliasTargets.cmake +++ b/Tests/RunCMake/target_link_libraries-ALIAS/AliasTargets.cmake @@ -15,22 +15,25 @@ endif() add_library(import-local SHARED IMPORTED) set_property(TARGET import-local PROPERTY IMPORTED_LOCATION "${binary_dir}/${CMAKE_STATIC_LIBRARY_PREFIX}func${CMAKE_SHARED_LIBRARY_SUFFIX}") set_property(TARGET import-local PROPERTY IMPORTED_IMPLIB "${binary_dir}/${CMAKE_STATIC_LIBRARY_PREFIX}func${CMAKE_IMPORT_LIBRARY_SUFFIX}") -add_library(alias-local ALIAS import-local) +add_library(alias::local ALIAS import-local) add_library (lib-local SHARED lib.c) -target_link_libraries (lib-local PRIVATE import-local) +target_link_libraries (lib-local PRIVATE alias::local) add_executable (main-local main.c) -target_link_libraries (main-local PRIVATE import-local) +target_link_libraries (main-local PRIVATE alias::local) add_library(import-global SHARED IMPORTED GLOBAL) set_property(TARGET import-global PROPERTY IMPORTED_LOCATION "${binary_dir}/${CMAKE_STATIC_LIBRARY_PREFIX}func${CMAKE_SHARED_LIBRARY_SUFFIX}") set_property(TARGET import-global PROPERTY IMPORTED_IMPLIB "${binary_dir}/${CMAKE_STATIC_LIBRARY_PREFIX}func${CMAKE_IMPORT_LIBRARY_SUFFIX}") -add_library(alias-global ALIAS import-global) +add_library(alias::global ALIAS import-global) add_library (lib-global SHARED lib.c) -target_link_libraries (lib-global PRIVATE import-global) +target_link_libraries (lib-global PRIVATE alias::global) add_executable (main-global main.c) -target_link_libraries (main-global PRIVATE import-global) +target_link_libraries (main-global PRIVATE alias::global) + + +add_subdirectory(sub_dir) diff --git a/Tests/RunCMake/target_link_libraries-ALIAS/RunCMakeTest.cmake b/Tests/RunCMake/target_link_libraries-ALIAS/RunCMakeTest.cmake index 4d24a6e..42ec47e 100644 --- a/Tests/RunCMake/target_link_libraries-ALIAS/RunCMakeTest.cmake +++ b/Tests/RunCMake/target_link_libraries-ALIAS/RunCMakeTest.cmake @@ -19,5 +19,7 @@ run_cmake_target(AliasTargets lib-local lib-local --config Release) run_cmake_target(AliasTargets main-local main-local --config Release) run_cmake_target(AliasTargets lib-global lib-global --config Release) run_cmake_target(AliasTargets main-global main-global --config Release) +run_cmake_target(AliasTargets lib-sub lib-sub --config Release) +run_cmake_target(AliasTargets main-sub main-sub --config Release) unset(RunCMake_TEST_OPTIONS) unset(RunCMake_TEST_OUTPUT_MERGE) diff --git a/Tests/RunCMake/target_link_libraries-ALIAS/sub_dir/CMakeLists.txt b/Tests/RunCMake/target_link_libraries-ALIAS/sub_dir/CMakeLists.txt new file mode 100644 index 0000000..326e964 --- /dev/null +++ b/Tests/RunCMake/target_link_libraries-ALIAS/sub_dir/CMakeLists.txt @@ -0,0 +1,7 @@ + + +add_library (lib-sub SHARED ../lib.c) +target_link_libraries (lib-sub PRIVATE alias::local) + +add_executable (main-sub ../main.c) +target_link_libraries (main-sub PRIVATE alias::local) diff --git a/Tests/VariableUnusedViaSet/CMakeLists.txt b/Tests/VariableUnusedViaSet/CMakeLists.txt deleted file mode 100644 index 0123ab2..0000000 --- a/Tests/VariableUnusedViaSet/CMakeLists.txt +++ /dev/null @@ -1,4 +0,0 @@ -set(UNUSED_VARIABLE) -# Warning should occur here -set(UNUSED_VARIABLE "Usage") -message(STATUS "${UNUSED_VARIABLE}") diff --git a/Tests/VariableUnusedViaUnset/CMakeLists.txt b/Tests/VariableUnusedViaUnset/CMakeLists.txt deleted file mode 100644 index 4b4031d..0000000 --- a/Tests/VariableUnusedViaUnset/CMakeLists.txt +++ /dev/null @@ -1,8 +0,0 @@ -# NOTE: Changing lines in here changes the test results since the first -# instance shouldn't warn, but the second should and they have the same message - -# A warning should NOT be issued for this line: -set(UNUSED_VARIABLE) -# Warning should occur here: -set(UNUSED_VARIABLE) -message(STATUS "${UNUSED_VARIABLE}") diff --git a/Tests/XCTest/StaticLibExample/StaticLibExample.c b/Tests/XCTest/StaticLibExample/StaticLibExample.c index b198f80..8d16eb5 100644 --- a/Tests/XCTest/StaticLibExample/StaticLibExample.c +++ b/Tests/XCTest/StaticLibExample/StaticLibExample.c @@ -1,6 +1,6 @@ #include "StaticLibExample.h" -int FourtyFour() +int FourtyFour(void) { return 44; } diff --git a/Tests/XCTest/StaticLibExample/StaticLibExample.h b/Tests/XCTest/StaticLibExample/StaticLibExample.h index 147a909..88695b1 100644 --- a/Tests/XCTest/StaticLibExample/StaticLibExample.h +++ b/Tests/XCTest/StaticLibExample/StaticLibExample.h @@ -1 +1 @@ -int FourtyFour(); +int FourtyFour(void); diff --git a/Utilities/Scripts/update-curl.bash b/Utilities/Scripts/update-curl.bash index 8a07819..67e2728 100755 --- a/Utilities/Scripts/update-curl.bash +++ b/Utilities/Scripts/update-curl.bash @@ -8,7 +8,7 @@ readonly name="curl" readonly ownership="Curl Upstream <curl-library@cool.haxx.se>" readonly subtree="Utilities/cmcurl" readonly repo="https://github.com/curl/curl.git" -readonly tag="curl-7_71_0" +readonly tag="curl-7_71_1" readonly shortlog=false readonly paths=" CMake/* diff --git a/Utilities/Sphinx/update_versions.py b/Utilities/Sphinx/update_versions.py new file mode 100755 index 0000000..893e7a7 --- /dev/null +++ b/Utilities/Sphinx/update_versions.py @@ -0,0 +1,115 @@ +#!/usr/bin/env python3 +""" +This script inserts "versionadded" directive into every .rst document +and every .cmake module with .rst documentation comment. +""" +import re +import pathlib +import subprocess +import argparse + +tag_re = re.compile(r'^v3\.(\d+)\.(\d+)(?:-rc(\d+))?$') +path_re = re.compile(r'Help/(?!dev|guide|manual|cpack_|release).*\.rst|Modules/[^/]*\.cmake$') + +def git_root(): + result = subprocess.run( + ['git', 'rev-parse', '--show-toplevel'], check=True, universal_newlines=True, capture_output=True) + return pathlib.Path(result.stdout.strip()) + +def git_tags(): + result = subprocess.run(['git', 'tag'], check=True, universal_newlines=True, capture_output=True) + return [tag for tag in result.stdout.splitlines() if tag_re.match(tag)] + +def git_list_tree(ref): + result = subprocess.run( + ['git', 'ls-tree', '-r', '--full-name', '--name-only', ref, ':/'], + check=True, universal_newlines=True, capture_output=True) + return [path for path in result.stdout.splitlines() if path_re.match(path)] + +def tag_version(tag): + return re.sub(r'^v|\.0(-rc\d+)?$', '', tag) + +def tag_sortkey(tag): + return tuple(int(part or '1000') for part in tag_re.match(tag).groups()) + +def make_version_map(baseline, since, next_version): + versions = {} + if next_version: + for path in git_list_tree('HEAD'): + versions[path] = next_version + for tag in sorted(git_tags(), key=tag_sortkey, reverse=True): + version = tag_version(tag) + for path in git_list_tree(tag): + versions[path] = version + if baseline: + for path in git_list_tree(baseline): + versions[path] = None + if since: + for path in git_list_tree(since): + versions.pop(path, None) + return versions + +cmake_version_re = re.compile( + rb'set\(CMake_VERSION_MAJOR\s+(\d+)\)\s+set\(CMake_VERSION_MINOR\s+(\d+)\)\s+set\(CMake_VERSION_PATCH\s+(\d+)\)', re.S) + +def cmake_version(path): + match = cmake_version_re.search(path.read_bytes()) + major, minor, patch = map(int, match.groups()) + minor += patch > 20000000 + return f'{major}.{minor}' + +stamp_re = re.compile( + rb'(?P<PREFIX>(^|\[\.rst:\r?\n)[^\r\n]+\r?\n[*^\-=#]+(?P<NL>\r?\n))(?P<STAMP>\s*\.\. versionadded::[^\r\n]*\r?\n)?') +stamp_pattern_add = rb'\g<PREFIX>\g<NL>.. versionadded:: VERSION\g<NL>' +stamp_pattern_remove = rb'\g<PREFIX>' + +def update_file(path, version, overwrite): + try: + data = path.read_bytes() + except FileNotFoundError as e: + return False + + def _replacement(match): + if not overwrite and match.start('STAMP') != -1: + return match.group() + if version: + pattern = stamp_pattern_add.replace(b'VERSION', version.encode('utf-8')) + else: + pattern = stamp_pattern_remove + return match.expand(pattern) + + new_data, nrepl = stamp_re.subn(_replacement, data, 1) + if nrepl and new_data != data: + path.write_bytes(new_data) + return True + return False + +def update_repo(repo_root, version_map, overwrite): + total = 0 + for path, version in version_map.items(): + if update_file(repo_root / path, version, overwrite): + print(f"Version {version or '<none>':6} for {path}") + total += 1 + print(f"Updated {total} file(s)") + +def main(): + parser = argparse.ArgumentParser(allow_abbrev=False) + parser.add_argument('--overwrite', action='store_true', help="overwrite existing version tags") + parser.add_argument('--baseline', metavar='TAG', default='v3.0.0', + help="files present in this tag won't be stamped (default: v3.0.0)") + parser.add_argument('--since', metavar='TAG', + help="apply changes only to files added after this tag") + parser.add_argument('--next-version', metavar='VER', + help="version for files not present in any tag (default: from CMakeVersion.cmake)") + args = parser.parse_args() + + try: + repo_root = git_root() + next_version = args.next_version or cmake_version(repo_root / 'Source/CMakeVersion.cmake') + version_map = make_version_map(args.baseline, args.since, next_version) + update_repo(repo_root, version_map, args.overwrite) + except subprocess.CalledProcessError as e: + print(f"Command '{' '.join(e.cmd)}' returned code {e.returncode}:\n{e.stderr.strip()}") + +if __name__ == '__main__': + main() diff --git a/Utilities/cmcurl/include/curl/curl.h b/Utilities/cmcurl/include/curl/curl.h index 735c206..194b578 100644 --- a/Utilities/cmcurl/include/curl/curl.h +++ b/Utilities/cmcurl/include/curl/curl.h @@ -774,7 +774,7 @@ enum curl_khtype { }; struct curl_khkey { - const char *key; /* points to a zero-terminated string encoded with base64 + const char *key; /* points to a null-terminated string encoded with base64 if len is zero, otherwise to the "raw" data */ size_t len; enum curl_khtype keytype; @@ -1446,7 +1446,7 @@ typedef enum { /* 132 OBSOLETE. Gone in 7.16.0 */ /* 133 OBSOLETE. Gone in 7.16.0 */ - /* zero terminated string for pass on to the FTP server when asked for + /* null-terminated string for pass on to the FTP server when asked for "account" info */ CURLOPT(CURLOPT_FTP_ACCOUNT, CURLOPTTYPE_STRINGPOINT, 134), @@ -2118,7 +2118,7 @@ typedef enum { CURL_TIMECOND_LAST } curl_TimeCond; -/* Special size_t value signaling a zero-terminated string. */ +/* Special size_t value signaling a null-terminated string. */ #define CURL_ZERO_TERMINATED ((size_t) -1) /* curl_strequal() and curl_strnequal() are subject for removal in a future diff --git a/Utilities/cmcurl/include/curl/curlver.h b/Utilities/cmcurl/include/curl/curlver.h index 4c2e432..97a8bd8 100644 --- a/Utilities/cmcurl/include/curl/curlver.h +++ b/Utilities/cmcurl/include/curl/curlver.h @@ -30,13 +30,13 @@ /* This is the version number of the libcurl package from which this header file origins: */ -#define LIBCURL_VERSION "7.71.0" +#define LIBCURL_VERSION "7.71.1" /* The numeric version number is also available "in parts" by using these defines: */ #define LIBCURL_VERSION_MAJOR 7 #define LIBCURL_VERSION_MINOR 71 -#define LIBCURL_VERSION_PATCH 0 +#define LIBCURL_VERSION_PATCH 1 /* This is the numeric version of the libcurl version number, meant for easier parsing and comparisons by programs. The LIBCURL_VERSION_NUM define will @@ -57,7 +57,7 @@ CURL_VERSION_BITS() macro since curl's own configure script greps for it and needs it to contain the full number. */ -#define LIBCURL_VERSION_NUM 0x074700 +#define LIBCURL_VERSION_NUM 0x074701 /* * This is the date and time when the full source package was created. The diff --git a/Utilities/cmcurl/include/curl/multi.h b/Utilities/cmcurl/include/curl/multi.h index 3039e78..2e6bb72 100644 --- a/Utilities/cmcurl/include/curl/multi.h +++ b/Utilities/cmcurl/include/curl/multi.h @@ -267,7 +267,7 @@ CURL_EXTERN CURLMsg *curl_multi_info_read(CURLM *multi_handle, * value into the equivalent human readable error string. This is * useful for printing meaningful error messages. * - * Returns: A pointer to a zero-terminated error message. + * Returns: A pointer to a null-terminated error message. */ CURL_EXTERN const char *curl_multi_strerror(CURLMcode); diff --git a/Utilities/cmcurl/lib/cookie.c b/Utilities/cmcurl/lib/cookie.c index 68054e1..cb7d94b 100644 --- a/Utilities/cmcurl/lib/cookie.c +++ b/Utilities/cmcurl/lib/cookie.c @@ -755,7 +755,7 @@ Curl_cookie_add(struct Curl_easy *data, co->path = malloc(pathlen + 1); /* one extra for the zero byte */ if(co->path) { memcpy(co->path, path, pathlen); - co->path[pathlen] = 0; /* zero terminate */ + co->path[pathlen] = 0; /* null-terminate */ co->spath = sanitize_cookie_path(co->path); if(!co->spath) badcookie = TRUE; /* out of memory bad */ diff --git a/Utilities/cmcurl/lib/curl_path.c b/Utilities/cmcurl/lib/curl_path.c index f429634..fbd98cb 100644 --- a/Utilities/cmcurl/lib/curl_path.c +++ b/Utilities/cmcurl/lib/curl_path.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. + * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -42,7 +42,7 @@ CURLcode Curl_getworkingpath(struct connectdata *conn, size_t working_path_len; CURLcode result = Curl_urldecode(data, data->state.up.path, 0, &working_path, - &working_path_len, FALSE); + &working_path_len, REJECT_ZERO); if(result) return result; diff --git a/Utilities/cmcurl/lib/dict.c b/Utilities/cmcurl/lib/dict.c index c802dee..f529b48 100644 --- a/Utilities/cmcurl/lib/dict.c +++ b/Utilities/cmcurl/lib/dict.c @@ -99,7 +99,8 @@ static char *unescape_word(struct Curl_easy *data, const char *inputbuff) char *dictp; size_t len; - CURLcode result = Curl_urldecode(data, inputbuff, 0, &newp, &len, FALSE); + CURLcode result = Curl_urldecode(data, inputbuff, 0, &newp, &len, + REJECT_NADA); if(!newp || result) return NULL; diff --git a/Utilities/cmcurl/lib/dotdot.c b/Utilities/cmcurl/lib/dotdot.c index fe4f497..ce9a052 100644 --- a/Utilities/cmcurl/lib/dotdot.c +++ b/Utilities/cmcurl/lib/dotdot.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. + * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -39,7 +39,7 @@ * Curl_dedotdotify() * @unittest: 1395 * - * This function gets a zero-terminated path with dot and dotdot sequences + * This function gets a null-terminated path with dot and dotdot sequences * passed in and strips them off according to the rules in RFC 3986 section * 5.2.4. * @@ -62,7 +62,7 @@ char *Curl_dedotdotify(const char *input) if(!out) return NULL; /* out of memory */ - *out = 0; /* zero terminates, for inputs like "./" */ + *out = 0; /* null-terminates, for inputs like "./" */ /* get a cloned copy of the input */ clone = strdup(input); @@ -129,7 +129,7 @@ char *Curl_dedotdotify(const char *input) if(*outptr == '/') break; } - *outptr = 0; /* zero-terminate where it stops */ + *outptr = 0; /* null-terminate where it stops */ } else if(!strcmp("/..", clone)) { clone[2]='/'; @@ -141,7 +141,7 @@ char *Curl_dedotdotify(const char *input) if(*outptr == '/') break; } - *outptr = 0; /* zero-terminate where it stops */ + *outptr = 0; /* null-terminate where it stops */ } /* D. if the input buffer consists only of "." or "..", then remove diff --git a/Utilities/cmcurl/lib/dynbuf.c b/Utilities/cmcurl/lib/dynbuf.c index dfc1d05..38d370b 100644 --- a/Utilities/cmcurl/lib/dynbuf.c +++ b/Utilities/cmcurl/lib/dynbuf.c @@ -161,7 +161,7 @@ CURLcode Curl_dyn_addn(struct dynbuf *s, const void *mem, size_t len) } /* - * Append a zero terminated string at the end. + * Append a null-terminated string at the end. */ CURLcode Curl_dyn_add(struct dynbuf *s, const char *str) { diff --git a/Utilities/cmcurl/lib/dynbuf.h b/Utilities/cmcurl/lib/dynbuf.h index 7809bec..c80239e 100644 --- a/Utilities/cmcurl/lib/dynbuf.h +++ b/Utilities/cmcurl/lib/dynbuf.h @@ -23,7 +23,7 @@ ***************************************************************************/ struct dynbuf { - char *bufr; /* point to a zero terminated allocated buffer */ + char *bufr; /* point to a null-terminated allocated buffer */ size_t leng; /* number of bytes *EXCLUDING* the zero terminator */ size_t allc; /* size of the current allocation */ size_t toobig; /* size limit for the buffer */ diff --git a/Utilities/cmcurl/lib/escape.c b/Utilities/cmcurl/lib/escape.c index f3c558e..2bea145 100644 --- a/Utilities/cmcurl/lib/escape.c +++ b/Utilities/cmcurl/lib/escape.c @@ -89,6 +89,9 @@ char *curl_easy_escape(struct Curl_easy *data, const char *string, Curl_dyn_init(&d, CURL_MAX_INPUT_LENGTH); length = (inlength?(size_t)inlength:strlen(string)); + if(!length) + return strdup(""); + while(length--) { unsigned char in = *string; /* we need to treat the characters unsigned */ @@ -120,19 +123,26 @@ char *curl_easy_escape(struct Curl_easy *data, const char *string, /* * Curl_urldecode() URL decodes the given string. * - * Optionally detects control characters (byte codes lower than 32) in the - * data and rejects such data. - * * Returns a pointer to a malloced string in *ostring with length given in * *olen. If length == 0, the length is assumed to be strlen(string). * * 'data' can be set to NULL but then this function can't convert network * data to host for non-ascii. + * + * ctrl options: + * - REJECT_NADA: accept everything + * - REJECT_CTRL: rejects control characters (byte codes lower than 32) in + * the data + * - REJECT_ZERO: rejects decoded zero bytes + * + * The values for the enum starts at 2, to make the assert detect legacy + * invokes that used TRUE/FALSE (0 and 1). */ + CURLcode Curl_urldecode(struct Curl_easy *data, const char *string, size_t length, char **ostring, size_t *olen, - bool reject_ctrl) + enum urlreject ctrl) { size_t alloc; char *ns; @@ -141,6 +151,7 @@ CURLcode Curl_urldecode(struct Curl_easy *data, CURLcode result = CURLE_OK; DEBUGASSERT(string); + DEBUGASSERT(ctrl >= REJECT_NADA); /* crash on TRUE/FALSE */ alloc = (length?length:strlen(string)) + 1; ns = malloc(alloc); @@ -176,7 +187,8 @@ CURLcode Curl_urldecode(struct Curl_easy *data, alloc -= 2; } - if(reject_ctrl && (in < 0x20)) { + if(((ctrl == REJECT_CTRL) && (in < 0x20)) || + ((ctrl == REJECT_ZERO) && (in == 0))) { free(ns); return CURLE_URL_MALFORMAT; } @@ -210,7 +222,7 @@ char *curl_easy_unescape(struct Curl_easy *data, const char *string, size_t inputlen = length; size_t outputlen; CURLcode res = Curl_urldecode(data, string, inputlen, &str, &outputlen, - FALSE); + REJECT_NADA); if(res) return NULL; diff --git a/Utilities/cmcurl/lib/escape.h b/Utilities/cmcurl/lib/escape.h index d8bbe5c..586db7e 100644 --- a/Utilities/cmcurl/lib/escape.h +++ b/Utilities/cmcurl/lib/escape.h @@ -7,7 +7,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2018, Daniel Stenberg, <daniel@haxx.se>, et al. + * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -25,9 +25,16 @@ * allocated string or NULL if an error occurred. */ bool Curl_isunreserved(unsigned char in); + +enum urlreject { + REJECT_NADA = 2, + REJECT_CTRL, + REJECT_ZERO +}; + CURLcode Curl_urldecode(struct Curl_easy *data, const char *string, size_t length, char **ostring, size_t *olen, - bool reject_crlf); + enum urlreject ctrl); #endif /* HEADER_CURL_ESCAPE_H */ diff --git a/Utilities/cmcurl/lib/file.c b/Utilities/cmcurl/lib/file.c index 576a794..cd3e49c 100644 --- a/Utilities/cmcurl/lib/file.c +++ b/Utilities/cmcurl/lib/file.c @@ -144,7 +144,7 @@ static CURLcode file_connect(struct connectdata *conn, bool *done) size_t real_path_len; CURLcode result = Curl_urldecode(data, data->state.up.path, 0, &real_path, - &real_path_len, FALSE); + &real_path_len, REJECT_ZERO); if(result) return result; diff --git a/Utilities/cmcurl/lib/formdata.c b/Utilities/cmcurl/lib/formdata.c index dfa44bc..1cab2c5 100644 --- a/Utilities/cmcurl/lib/formdata.c +++ b/Utilities/cmcurl/lib/formdata.c @@ -602,7 +602,7 @@ CURLFORMcode FormAdd(struct curl_httppost **httppost, /* Note that there's small risk that form->name is NULL here if the app passed in a bad combo, so we better check for that first. */ if(form->name) { - /* copy name (without strdup; possibly not nul-terminated) */ + /* copy name (without strdup; possibly not null-terminated) */ form->name = Curl_memdup(form->name, form->namelength? form->namelength: strlen(form->name) + 1); @@ -771,7 +771,7 @@ void curl_formfree(struct curl_httppost *form) } -/* Set mime part name, taking care of non nul-terminated name string. */ +/* Set mime part name, taking care of non null-terminated name string. */ static CURLcode setname(curl_mimepart *part, const char *name, size_t len) { char *zname; diff --git a/Utilities/cmcurl/lib/ftp.c b/Utilities/cmcurl/lib/ftp.c index 562b6d2..cfd70a6 100644 --- a/Utilities/cmcurl/lib/ftp.c +++ b/Utilities/cmcurl/lib/ftp.c @@ -1043,6 +1043,7 @@ static CURLcode ftp_state_use_port(struct connectdata *conn, } /* data->set.ftpport */ if(!host) { + const char *r; /* not an interface and not a host name, get default by extracting the IP from the control connection */ sslen = sizeof(ss); @@ -1055,13 +1056,15 @@ static CURLcode ftp_state_use_port(struct connectdata *conn, switch(sa->sa_family) { #ifdef ENABLE_IPV6 case AF_INET6: - Curl_inet_ntop(sa->sa_family, &sa6->sin6_addr, hbuf, sizeof(hbuf)); + r = Curl_inet_ntop(sa->sa_family, &sa6->sin6_addr, hbuf, sizeof(hbuf)); break; #endif default: - Curl_inet_ntop(sa->sa_family, &sa4->sin_addr, hbuf, sizeof(hbuf)); + r = Curl_inet_ntop(sa->sa_family, &sa4->sin_addr, hbuf, sizeof(hbuf)); break; } + if(!r) + return CURLE_FTP_PORT_FAILED; host = hbuf; /* use this host name */ possibly_non_local = FALSE; /* we know it is local now */ } @@ -1449,7 +1452,7 @@ static CURLcode ftp_state_list(struct connectdata *conn) /* url-decode before evaluation: e.g. paths starting/ending with %2f */ const char *slashPos = NULL; char *rawPath = NULL; - result = Curl_urldecode(data, ftp->path, 0, &rawPath, NULL, TRUE); + result = Curl_urldecode(data, ftp->path, 0, &rawPath, NULL, REJECT_CTRL); if(result) return result; @@ -2824,7 +2827,7 @@ static CURLcode ftp_statemach_act(struct connectdata *conn) store++; ptr++; } - *store = '\0'; /* zero terminate */ + *store = '\0'; /* null-terminate */ } if(entry_extracted) { /* If the path name does not look like an absolute path (i.e.: it @@ -2888,7 +2891,7 @@ static CURLcode ftp_statemach_act(struct connectdata *conn) ptr++; for(store = os; *ptr && *ptr != ' ';) *store++ = *ptr++; - *store = '\0'; /* zero terminate */ + *store = '\0'; /* null-terminate */ /* Check for special servers here. */ @@ -3191,7 +3194,8 @@ static CURLcode ftp_done(struct connectdata *conn, CURLcode status, if(!result) /* get the url-decoded "raw" path */ - result = Curl_urldecode(data, ftp->path, 0, &rawPath, &pathLen, TRUE); + result = Curl_urldecode(data, ftp->path, 0, &rawPath, &pathLen, + REJECT_CTRL); if(result) { /* We can limp along anyway (and should try to since we may already be in * the error path) */ @@ -4108,7 +4112,7 @@ CURLcode ftp_parse_url_path(struct connectdata *conn) ftpc->cwdfail = FALSE; /* url-decode ftp path before further evaluation */ - result = Curl_urldecode(data, ftp->path, 0, &rawPath, &pathLen, TRUE); + result = Curl_urldecode(data, ftp->path, 0, &rawPath, &pathLen, REJECT_CTRL); if(result) return result; diff --git a/Utilities/cmcurl/lib/gopher.c b/Utilities/cmcurl/lib/gopher.c index c48098f..b4811b2 100644 --- a/Utilities/cmcurl/lib/gopher.c +++ b/Utilities/cmcurl/lib/gopher.c @@ -116,7 +116,7 @@ static CURLcode gopher_do(struct connectdata *conn, bool *done) newp += 2; /* ... and finally unescape */ - result = Curl_urldecode(data, newp, 0, &sel, &len, FALSE); + result = Curl_urldecode(data, newp, 0, &sel, &len, REJECT_ZERO); free(gopherpath); if(result) return result; diff --git a/Utilities/cmcurl/lib/http.c b/Utilities/cmcurl/lib/http.c index 482f9ad..28d66c2 100644 --- a/Utilities/cmcurl/lib/http.c +++ b/Utilities/cmcurl/lib/http.c @@ -125,7 +125,8 @@ const struct Curl_handler Curl_handler_http = { ZERO_NULL, /* connection_check */ PORT_HTTP, /* defport */ CURLPROTO_HTTP, /* protocol */ - PROTOPT_CREDSPERREQUEST /* flags */ + PROTOPT_CREDSPERREQUEST | /* flags */ + PROTOPT_USERPWDCTRL }; #ifdef USE_SSL @@ -150,7 +151,8 @@ const struct Curl_handler Curl_handler_https = { ZERO_NULL, /* connection_check */ PORT_HTTPS, /* defport */ CURLPROTO_HTTPS, /* protocol */ - PROTOPT_SSL | PROTOPT_CREDSPERREQUEST | PROTOPT_ALPN_NPN /* flags */ + PROTOPT_SSL | PROTOPT_CREDSPERREQUEST | PROTOPT_ALPN_NPN | /* flags */ + PROTOPT_USERPWDCTRL }; #endif @@ -268,7 +270,7 @@ char *Curl_copy_header_value(const char *header) return NULL; memcpy(value, start, len); - value[len] = 0; /* zero terminate */ + value[len] = 0; /* null-terminate */ return value; } @@ -306,7 +308,7 @@ static CURLcode http_output_basic(struct connectdata *conn, bool proxy) pwd = conn->passwd; } - out = aprintf("%s:%s", user, pwd); + out = aprintf("%s:%s", user, pwd ? pwd : ""); if(!out) return CURLE_OUT_OF_MEMORY; diff --git a/Utilities/cmcurl/lib/http2.c b/Utilities/cmcurl/lib/http2.c index 6199001..6cf651f 100644 --- a/Utilities/cmcurl/lib/http2.c +++ b/Utilities/cmcurl/lib/http2.c @@ -469,6 +469,46 @@ static struct Curl_easy *duphandle(struct Curl_easy *data) return second; } +static int set_transfer_url(struct Curl_easy *data, + struct curl_pushheaders *hp) +{ + const char *v; + CURLU *u = curl_url(); + CURLUcode uc; + char *url; + + v = curl_pushheader_byname(hp, ":scheme"); + if(v) { + uc = curl_url_set(u, CURLUPART_SCHEME, v, 0); + if(uc) + return 1; + } + + v = curl_pushheader_byname(hp, ":authority"); + if(v) { + uc = curl_url_set(u, CURLUPART_HOST, v, 0); + if(uc) + return 2; + } + + v = curl_pushheader_byname(hp, ":path"); + if(v) { + uc = curl_url_set(u, CURLUPART_PATH, v, 0); + if(uc) + return 3; + } + + uc = curl_url_get(u, CURLUPART_URL, &url, 0); + if(uc) + return 4; + curl_url_cleanup(u); + + if(data->change.url_alloc) + free(data->change.url); + data->change.url_alloc = TRUE; + data->change.url = url; + return 0; +} static int push_promise(struct Curl_easy *data, struct connectdata *conn, @@ -505,6 +545,10 @@ static int push_promise(struct Curl_easy *data, goto fail; } + rv = set_transfer_url(newhandle, &heads); + if(rv) + goto fail; + Curl_set_in_callback(data, true); rv = data->multi->push_cb(data, newhandle, stream->push_headers_used, &heads, diff --git a/Utilities/cmcurl/lib/if2ip.c b/Utilities/cmcurl/lib/if2ip.c index b283f67..3938869 100644 --- a/Utilities/cmcurl/lib/if2ip.c +++ b/Utilities/cmcurl/lib/if2ip.c @@ -118,7 +118,7 @@ if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope, if(iface->ifa_addr->sa_family == af) { if(strcasecompare(iface->ifa_name, interf)) { void *addr; - char *ip; + const char *ip; char scope[12] = ""; char ipstr[64]; #ifdef ENABLE_IPV6 @@ -153,15 +153,15 @@ if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope, } if(scopeid) - msnprintf(scope, sizeof(scope), "%%%u", scopeid); + msnprintf(scope, sizeof(scope), "%%%u", scopeid); #endif } else #endif addr = - &((struct sockaddr_in *)(void *)iface->ifa_addr)->sin_addr; + &((struct sockaddr_in *)(void *)iface->ifa_addr)->sin_addr; res = IF2IP_FOUND; - ip = (char *) Curl_inet_ntop(af, addr, ipstr, sizeof(ipstr)); + ip = Curl_inet_ntop(af, addr, ipstr, sizeof(ipstr)); msnprintf(buf, buf_size, "%s%s", ip, scope); break; } @@ -190,6 +190,7 @@ if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope, struct sockaddr_in *s; curl_socket_t dummy; size_t len; + const char *r; (void)remote_scope; (void)local_scope_id; @@ -219,9 +220,11 @@ if2ip_result_t Curl_if2ip(int af, unsigned int remote_scope, s = (struct sockaddr_in *)(void *)&req.ifr_addr; memcpy(&in, &s->sin_addr, sizeof(in)); - Curl_inet_ntop(s->sin_family, &in, buf, buf_size); + r = Curl_inet_ntop(s->sin_family, &in, buf, buf_size); sclose(dummy); + if(!r) + return IF2IP_NOT_FOUND; return IF2IP_FOUND; } diff --git a/Utilities/cmcurl/lib/imap.c b/Utilities/cmcurl/lib/imap.c index 14c76f0..cad0e59 100644 --- a/Utilities/cmcurl/lib/imap.c +++ b/Utilities/cmcurl/lib/imap.c @@ -1957,7 +1957,7 @@ static CURLcode imap_parse_url_path(struct connectdata *conn) end--; result = Curl_urldecode(data, begin, end - begin, &imap->mailbox, NULL, - TRUE); + REJECT_CTRL); if(result) return result; } @@ -1979,7 +1979,8 @@ static CURLcode imap_parse_url_path(struct connectdata *conn) return CURLE_URL_MALFORMAT; /* Decode the name parameter */ - result = Curl_urldecode(data, begin, ptr - begin, &name, NULL, TRUE); + result = Curl_urldecode(data, begin, ptr - begin, &name, NULL, + REJECT_CTRL); if(result) return result; @@ -1989,7 +1990,8 @@ static CURLcode imap_parse_url_path(struct connectdata *conn) ptr++; /* Decode the value parameter */ - result = Curl_urldecode(data, begin, ptr - begin, &value, &valuelen, TRUE); + result = Curl_urldecode(data, begin, ptr - begin, &value, &valuelen, + REJECT_CTRL); if(result) { free(name); return result; @@ -2077,7 +2079,7 @@ static CURLcode imap_parse_custom_request(struct connectdata *conn) if(custom) { /* URL decode the custom request */ - result = Curl_urldecode(data, custom, 0, &imap->custom, NULL, TRUE); + result = Curl_urldecode(data, custom, 0, &imap->custom, NULL, REJECT_CTRL); /* Extract the parameters if specified */ if(!result) { diff --git a/Utilities/cmcurl/lib/ldap.c b/Utilities/cmcurl/lib/ldap.c index 2730658..512def6 100644 --- a/Utilities/cmcurl/lib/ldap.c +++ b/Utilities/cmcurl/lib/ldap.c @@ -883,7 +883,7 @@ static int _ldap_url_parse2(const struct connectdata *conn, LDAPURLDesc *ludp) LDAP_TRACE(("DN '%s'\n", dn)); /* Unescape the DN */ - result = Curl_urldecode(conn->data, dn, 0, &unescaped, NULL, FALSE); + result = Curl_urldecode(conn->data, dn, 0, &unescaped, NULL, REJECT_ZERO); if(result) { rc = LDAP_NO_MEMORY; @@ -949,7 +949,7 @@ static int _ldap_url_parse2(const struct connectdata *conn, LDAPURLDesc *ludp) /* Unescape the attribute */ result = Curl_urldecode(conn->data, attributes[i], 0, &unescaped, NULL, - FALSE); + REJECT_ZERO); if(result) { free(attributes); @@ -1018,7 +1018,8 @@ static int _ldap_url_parse2(const struct connectdata *conn, LDAPURLDesc *ludp) LDAP_TRACE(("filter '%s'\n", filter)); /* Unescape the filter */ - result = Curl_urldecode(conn->data, filter, 0, &unescaped, NULL, FALSE); + result = Curl_urldecode(conn->data, filter, 0, &unescaped, NULL, + REJECT_ZERO); if(result) { rc = LDAP_NO_MEMORY; diff --git a/Utilities/cmcurl/lib/mime.c b/Utilities/cmcurl/lib/mime.c index 4a87c4a..6a9b64a 100644 --- a/Utilities/cmcurl/lib/mime.c +++ b/Utilities/cmcurl/lib/mime.c @@ -1419,7 +1419,7 @@ CURLcode curl_mime_data(curl_mimepart *part, if(datasize) memcpy(part->data, data, datasize); - part->data[datasize] = '\0'; /* Set a nul terminator as sentinel. */ + part->data[datasize] = '\0'; /* Set a null terminator as sentinel. */ part->readfunc = mime_mem_read; part->seekfunc = mime_mem_seek; diff --git a/Utilities/cmcurl/lib/mqtt.c b/Utilities/cmcurl/lib/mqtt.c index d09aab4..f6f4416 100644 --- a/Utilities/cmcurl/lib/mqtt.c +++ b/Utilities/cmcurl/lib/mqtt.c @@ -211,7 +211,8 @@ static CURLcode mqtt_get_topic(struct connectdata *conn, char *path = conn->data->state.up.path; if(strlen(path) > 1) { - result = Curl_urldecode(conn->data, path + 1, 0, topic, topiclen, FALSE); + result = Curl_urldecode(conn->data, path + 1, 0, topic, topiclen, + REJECT_NADA); } else { failf(conn->data, "Error: No topic specified."); diff --git a/Utilities/cmcurl/lib/multi.c b/Utilities/cmcurl/lib/multi.c index b106c94..249e360 100644 --- a/Utilities/cmcurl/lib/multi.c +++ b/Utilities/cmcurl/lib/multi.c @@ -374,11 +374,6 @@ struct Curl_multi *Curl_multi_handle(int hashsize, /* socket hash */ multi->max_concurrent_streams = 100; multi->ipv6_works = Curl_ipv6works(NULL); -#ifdef USE_WINSOCK - multi->wsa_event = WSACreateEvent(); - if(multi->wsa_event == WSA_INVALID_EVENT) - goto error; -#else #ifdef ENABLE_WAKEUP if(Curl_socketpair(AF_UNIX, SOCK_STREAM, 0, multi->wakeup_pair) < 0) { multi->wakeup_pair[0] = CURL_SOCKET_BAD; @@ -392,7 +387,6 @@ struct Curl_multi *Curl_multi_handle(int hashsize, /* socket hash */ multi->wakeup_pair[1] = CURL_SOCKET_BAD; } #endif -#endif return multi; @@ -1073,15 +1067,11 @@ static CURLMcode Curl_multi_wait(struct Curl_multi *multi, unsigned int i; unsigned int nfds = 0; unsigned int curlfds; + bool ufds_malloc = FALSE; long timeout_internal; int retcode = 0; -#ifndef USE_WINSOCK struct pollfd a_few_on_stack[NUM_POLLS_ON_STACK]; struct pollfd *ufds = &a_few_on_stack[0]; - bool ufds_malloc = FALSE; -#else - DEBUGASSERT(multi->wsa_event != WSA_INVALID_EVENT); -#endif if(!GOOD_MULTI_HANDLE(multi)) return CURLM_BAD_HANDLE; @@ -1127,16 +1117,11 @@ static CURLMcode Curl_multi_wait(struct Curl_multi *multi, nfds += extra_nfds; /* add the externally provided ones */ #ifdef ENABLE_WAKEUP -#ifdef USE_WINSOCK - if(use_wakeup) { -#else if(use_wakeup && multi->wakeup_pair[0] != CURL_SOCKET_BAD) { -#endif ++nfds; } #endif -#ifndef USE_WINSOCK if(nfds > NUM_POLLS_ON_STACK) { /* 'nfds' is a 32 bit value and 'struct pollfd' is typically 8 bytes big, so at 2^29 sockets this value might wrap. When a process gets @@ -1147,9 +1132,7 @@ static CURLMcode Curl_multi_wait(struct Curl_multi *multi, return CURLM_OUT_OF_MEMORY; ufds_malloc = TRUE; } - nfds = 0; -#endif /* only do the second loop if we found descriptors in the first stage run above */ @@ -1162,36 +1145,22 @@ static CURLMcode Curl_multi_wait(struct Curl_multi *multi, for(i = 0; i< MAX_SOCKSPEREASYHANDLE; i++) { curl_socket_t s = CURL_SOCKET_BAD; -#ifdef USE_WINSOCK - long mask = 0; -#endif + if(bitmap & GETSOCK_READSOCK(i)) { -#ifdef USE_WINSOCK - mask |= FD_READ; -#else ufds[nfds].fd = sockbunch[i]; ufds[nfds].events = POLLIN; ++nfds; -#endif s = sockbunch[i]; } if(bitmap & GETSOCK_WRITESOCK(i)) { -#ifdef USE_WINSOCK - mask |= FD_WRITE; -#else ufds[nfds].fd = sockbunch[i]; ufds[nfds].events = POLLOUT; ++nfds; -#endif s = sockbunch[i]; } if(s == CURL_SOCKET_BAD) { break; } -#ifdef USE_WINSOCK - if(WSAEventSelect(s, multi->wsa_event, mask) != 0) - return CURLM_INTERNAL_ERROR; -#endif } data = data->next; /* check next handle */ @@ -1200,17 +1169,6 @@ static CURLMcode Curl_multi_wait(struct Curl_multi *multi, /* Add external file descriptions from poll-like struct curl_waitfd */ for(i = 0; i < extra_nfds; i++) { -#ifdef USE_WINSOCK - long events = 0; - if(extra_fds[i].events & CURL_WAIT_POLLIN) - events |= FD_READ; - if(extra_fds[i].events & CURL_WAIT_POLLPRI) - events |= FD_OOB; - if(extra_fds[i].events & CURL_WAIT_POLLOUT) - events |= FD_WRITE; - if(WSAEventSelect(extra_fds[i].fd, multi->wsa_event, events) != 0) - return CURLM_INTERNAL_ERROR; -#else ufds[nfds].fd = extra_fds[i].fd; ufds[nfds].events = 0; if(extra_fds[i].events & CURL_WAIT_POLLIN) @@ -1220,61 +1178,28 @@ static CURLMcode Curl_multi_wait(struct Curl_multi *multi, if(extra_fds[i].events & CURL_WAIT_POLLOUT) ufds[nfds].events |= POLLOUT; ++nfds; -#endif } #ifdef ENABLE_WAKEUP -#ifndef USE_WINSOCK if(use_wakeup && multi->wakeup_pair[0] != CURL_SOCKET_BAD) { ufds[nfds].fd = multi->wakeup_pair[0]; ufds[nfds].events = POLLIN; ++nfds; } #endif -#endif if(nfds) { int pollrc; /* wait... */ -#ifdef USE_WINSOCK - DWORD waitrc = WSAWaitForMultipleEvents(1, &multi->wsa_event, FALSE, - timeout_ms, FALSE); - /* WSA_WAIT_EVENT_0 is 0, so waitrc >= WSA_WAIT_EVENT_0 warns */ - if(waitrc == WSA_WAIT_EVENT_0) - pollrc = 1; - else - pollrc = -1; -#else pollrc = Curl_poll(ufds, nfds, timeout_ms); -#endif if(pollrc > 0) { -#ifdef USE_WINSOCK - retcode = 0; -#else retcode = pollrc; -#endif /* copy revents results from the poll to the curl_multi_wait poll struct, the bit values of the actual underlying poll() implementation may not be the same as the ones in the public libcurl API! */ for(i = 0; i < extra_nfds; i++) { unsigned short mask = 0; -#ifdef USE_WINSOCK - WSANETWORKEVENTS events = {0}; - if(WSAEnumNetworkEvents(extra_fds[i].fd, multi->wsa_event, - &events) == 0) { - if(events.lNetworkEvents & FD_READ) - mask |= CURL_WAIT_POLLIN; - if(events.lNetworkEvents & FD_WRITE) - mask |= CURL_WAIT_POLLOUT; - if(events.lNetworkEvents & FD_OOB) - mask |= CURL_WAIT_POLLPRI; - - if(events.lNetworkEvents != 0) - retcode++; - } - WSAEventSelect(extra_fds[i].fd, multi->wsa_event, 0); -#else unsigned r = ufds[curlfds + i].revents; if(r & POLLIN) @@ -1283,39 +1208,10 @@ static CURLMcode Curl_multi_wait(struct Curl_multi *multi, mask |= CURL_WAIT_POLLOUT; if(r & POLLPRI) mask |= CURL_WAIT_POLLPRI; -#endif extra_fds[i].revents = mask; } -#ifdef USE_WINSOCK - /* Count up all our own sockets that had activity, - and remove them from the event. */ - if(curlfds) { - data = multi->easyp; - while(data) { - bitmap = multi_getsock(data, sockbunch); - - for(i = 0; i < MAX_SOCKSPEREASYHANDLE; i++) { - if(bitmap & (GETSOCK_READSOCK(i) | GETSOCK_WRITESOCK(i))) { - WSANETWORKEVENTS events = {0}; - if(WSAEnumNetworkEvents(sockbunch[i], multi->wsa_event, - &events) == 0) { - if(events.lNetworkEvents != 0) - retcode++; - } - WSAEventSelect(sockbunch[i], multi->wsa_event, 0); - } - else - break; - } - - data = data->next; - } - } - - WSAResetEvent(multi->wsa_event); -#else #ifdef ENABLE_WAKEUP if(use_wakeup && multi->wakeup_pair[0] != CURL_SOCKET_BAD) { if(ufds[curlfds + extra_nfds].revents & POLLIN) { @@ -1328,8 +1224,10 @@ static CURLMcode Curl_multi_wait(struct Curl_multi *multi, when there is no more data, breaking the loop. */ nread = sread(multi->wakeup_pair[0], buf, sizeof(buf)); if(nread <= 0) { +#ifndef USE_WINSOCK if(nread < 0 && EINTR == SOCKERRNO) continue; +#endif break; } } @@ -1338,14 +1236,11 @@ static CURLMcode Curl_multi_wait(struct Curl_multi *multi, } } #endif -#endif } } -#ifndef USE_WINSOCK if(ufds_malloc) free(ufds); -#endif if(ret) *ret = retcode; if(!extrawait || nfds) @@ -1400,10 +1295,6 @@ CURLMcode curl_multi_wakeup(struct Curl_multi *multi) return CURLM_BAD_HANDLE; #ifdef ENABLE_WAKEUP -#ifdef USE_WINSOCK - if(WSASetEvent(multi->wsa_event)) - return CURLM_OK; -#else /* the wakeup_pair variable is only written during init and cleanup, making it safe to access from another thread after the init part and before cleanup */ @@ -1437,7 +1328,6 @@ CURLMcode curl_multi_wakeup(struct Curl_multi *multi) } } #endif -#endif return CURLM_WAKEUP_FAILURE; } @@ -2596,14 +2486,10 @@ CURLMcode curl_multi_cleanup(struct Curl_multi *multi) Curl_hash_destroy(&multi->hostcache); Curl_psl_destroy(&multi->psl); -#ifdef USE_WINSOCK - WSACloseEvent(multi->wsa_event); -#else #ifdef ENABLE_WAKEUP sclose(multi->wakeup_pair[0]); sclose(multi->wakeup_pair[1]); #endif -#endif free(multi); return CURLM_OK; diff --git a/Utilities/cmcurl/lib/multihandle.h b/Utilities/cmcurl/lib/multihandle.h index 94bbad7..91eca16 100644 --- a/Utilities/cmcurl/lib/multihandle.h +++ b/Utilities/cmcurl/lib/multihandle.h @@ -138,14 +138,10 @@ struct Curl_multi { previous callback */ unsigned int max_concurrent_streams; -#ifdef USE_WINSOCK - WSAEVENT wsa_event; /* winsock event used for waits */ -#else #ifdef ENABLE_WAKEUP curl_socket_t wakeup_pair[2]; /* socketpair() used for wakeup 0 is used for read, 1 is used for write */ #endif -#endif /* multiplexing wanted */ bool multiplexing; bool recheckstate; /* see Curl_multi_connchanged */ diff --git a/Utilities/cmcurl/lib/pingpong.c b/Utilities/cmcurl/lib/pingpong.c index ced832e..3143315 100644 --- a/Utilities/cmcurl/lib/pingpong.c +++ b/Utilities/cmcurl/lib/pingpong.c @@ -384,10 +384,10 @@ CURLcode Curl_pp_readresp(curl_socket_t sockfd, if(pp->endofresp(conn, pp->linestart_resp, perline, code)) { /* This is the end of the last line, copy the last line to the - start of the buffer and zero terminate, for old times sake */ + start of the buffer and null-terminate, for old times sake */ size_t n = ptr - pp->linestart_resp; memmove(buf, pp->linestart_resp, n); - buf[n] = 0; /* zero terminate */ + buf[n] = 0; /* null-terminate */ keepon = FALSE; pp->linestart_resp = ptr + 1; /* advance pointer */ i++; /* skip this before getting out */ diff --git a/Utilities/cmcurl/lib/pop3.c b/Utilities/cmcurl/lib/pop3.c index 2f490b2..9ff5c78 100644 --- a/Utilities/cmcurl/lib/pop3.c +++ b/Utilities/cmcurl/lib/pop3.c @@ -1390,7 +1390,7 @@ static CURLcode pop3_parse_url_path(struct connectdata *conn) const char *path = &data->state.up.path[1]; /* skip leading path */ /* URL decode the path for the message ID */ - return Curl_urldecode(data, path, 0, &pop3->id, NULL, TRUE); + return Curl_urldecode(data, path, 0, &pop3->id, NULL, REJECT_CTRL); } /*********************************************************************** @@ -1408,7 +1408,7 @@ static CURLcode pop3_parse_custom_request(struct connectdata *conn) /* URL decode the custom request */ if(custom) - result = Curl_urldecode(data, custom, 0, &pop3->custom, NULL, TRUE); + result = Curl_urldecode(data, custom, 0, &pop3->custom, NULL, REJECT_CTRL); return result; } diff --git a/Utilities/cmcurl/lib/sendf.c b/Utilities/cmcurl/lib/sendf.c index 147ecbf..6943fa8 100644 --- a/Utilities/cmcurl/lib/sendf.c +++ b/Utilities/cmcurl/lib/sendf.c @@ -593,7 +593,7 @@ static CURLcode chop_write(struct connectdata *conn, return pausewrite(data, type, ptr, len); } if(wrote != chunklen) { - failf(data, "Failed writing body (%zu != %zu)", wrote, chunklen); + failf(data, "Failure writing output to destination"); return CURLE_WRITE_ERROR; } } diff --git a/Utilities/cmcurl/lib/smb.c b/Utilities/cmcurl/lib/smb.c index 12f9925..d493adc 100644 --- a/Utilities/cmcurl/lib/smb.c +++ b/Utilities/cmcurl/lib/smb.c @@ -6,7 +6,7 @@ * \___|\___/|_| \_\_____| * * Copyright (C) 2014, Bill Nagel <wnagel@tycoint.com>, Exacq Technologies - * Copyright (C) 2016-2019, Daniel Stenberg, <daniel@haxx.se>, et al. + * Copyright (C) 2016-2020, Daniel Stenberg, <daniel@haxx.se>, et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -964,7 +964,7 @@ static CURLcode smb_parse_url_path(struct connectdata *conn) /* URL decode the path */ CURLcode result = Curl_urldecode(data, data->state.up.path, 0, &path, NULL, - TRUE); + REJECT_CTRL); if(result) return result; diff --git a/Utilities/cmcurl/lib/smtp.c b/Utilities/cmcurl/lib/smtp.c index ec93648..685513b 100644 --- a/Utilities/cmcurl/lib/smtp.c +++ b/Utilities/cmcurl/lib/smtp.c @@ -1689,7 +1689,8 @@ static CURLcode smtp_parse_url_path(struct connectdata *conn) } /* URL decode the path and use it as the domain in our EHLO */ - return Curl_urldecode(conn->data, path, 0, &smtpc->domain, NULL, TRUE); + return Curl_urldecode(conn->data, path, 0, &smtpc->domain, NULL, + REJECT_CTRL); } /*********************************************************************** @@ -1707,7 +1708,7 @@ static CURLcode smtp_parse_custom_request(struct connectdata *conn) /* URL decode the custom request */ if(custom) - result = Curl_urldecode(data, custom, 0, &smtp->custom, NULL, TRUE); + result = Curl_urldecode(data, custom, 0, &smtp->custom, NULL, REJECT_CTRL); return result; } diff --git a/Utilities/cmcurl/lib/strerror.c b/Utilities/cmcurl/lib/strerror.c index 1a166bf..015e588 100644 --- a/Utilities/cmcurl/lib/strerror.c +++ b/Utilities/cmcurl/lib/strerror.c @@ -795,7 +795,7 @@ const char *Curl_strerror(int err, char *buf, size_t buflen) #endif /* end of not Windows */ - buf[max] = '\0'; /* make sure the string is zero terminated */ + buf[max] = '\0'; /* make sure the string is null-terminated */ /* strip trailing '\r\n' or '\n'. */ p = strrchr(buf, '\n'); diff --git a/Utilities/cmcurl/lib/strtok.c b/Utilities/cmcurl/lib/strtok.c index be8f481..ba6e025 100644 --- a/Utilities/cmcurl/lib/strtok.c +++ b/Utilities/cmcurl/lib/strtok.c @@ -5,7 +5,7 @@ * | (__| |_| | _ <| |___ * \___|\___/|_| \_\_____| * - * Copyright (C) 1998 - 2019, Daniel Stenberg, <daniel@haxx.se>, et al. + * Copyright (C) 1998 - 2020, Daniel Stenberg, <daniel@haxx.se>, et al. * * This software is licensed as described in the file COPYING, which * you should have received as part of this distribution. The terms @@ -52,7 +52,7 @@ Curl_strtok_r(char *ptr, const char *sep, char **end) if(**end) { /* the end is not a null byte */ - **end = '\0'; /* zero terminate it! */ + **end = '\0'; /* null-terminate it! */ ++*end; /* advance the last pointer to beyond the null byte */ } diff --git a/Utilities/cmcurl/lib/tftp.c b/Utilities/cmcurl/lib/tftp.c index 4f2f973..378d956 100644 --- a/Utilities/cmcurl/lib/tftp.c +++ b/Utilities/cmcurl/lib/tftp.c @@ -487,7 +487,7 @@ static CURLcode tftp_send_first(struct tftp_state_data *state, file name so we skip the always-present first letter of the path string. */ result = Curl_urldecode(data, &state->conn->data->state.up.path[1], 0, - &filename, NULL, FALSE); + &filename, NULL, REJECT_ZERO); if(result) return result; diff --git a/Utilities/cmcurl/lib/url.c b/Utilities/cmcurl/lib/url.c index 8225e61..a1a6b69 100644 --- a/Utilities/cmcurl/lib/url.c +++ b/Utilities/cmcurl/lib/url.c @@ -1894,23 +1894,32 @@ static CURLcode parseurlandfillconn(struct Curl_easy *data, if(result) return result; - uc = curl_url_get(uh, CURLUPART_USER, &data->state.up.user, - CURLU_URLDECODE); + /* we don't use the URL API's URL decoder option here since it rejects + control codes and we want to allow them for some schemes in the user and + password fields */ + uc = curl_url_get(uh, CURLUPART_USER, &data->state.up.user, 0); if(!uc) { - conn->user = strdup(data->state.up.user); - if(!conn->user) - return CURLE_OUT_OF_MEMORY; + char *decoded; + result = Curl_urldecode(NULL, data->state.up.user, 0, &decoded, NULL, + conn->handler->flags&PROTOPT_USERPWDCTRL ? + REJECT_ZERO : REJECT_CTRL); + if(result) + return result; + conn->user = decoded; conn->bits.user_passwd = TRUE; } else if(uc != CURLUE_NO_USER) return Curl_uc_to_curlcode(uc); - uc = curl_url_get(uh, CURLUPART_PASSWORD, &data->state.up.password, - CURLU_URLDECODE); + uc = curl_url_get(uh, CURLUPART_PASSWORD, &data->state.up.password, 0); if(!uc) { - conn->passwd = strdup(data->state.up.password); - if(!conn->passwd) - return CURLE_OUT_OF_MEMORY; + char *decoded; + result = Curl_urldecode(NULL, data->state.up.password, 0, &decoded, NULL, + conn->handler->flags&PROTOPT_USERPWDCTRL ? + REJECT_ZERO : REJECT_CTRL); + if(result) + return result; + conn->passwd = decoded; conn->bits.user_passwd = TRUE; } else if(uc != CURLUE_NO_PASSWORD) @@ -2373,10 +2382,10 @@ static CURLcode parse_proxy_auth(struct Curl_easy *data, if(proxyuser) result = Curl_urldecode(data, proxyuser, 0, &conn->http_proxy.user, NULL, - FALSE); + REJECT_ZERO); if(!result && proxypasswd) result = Curl_urldecode(data, proxypasswd, 0, &conn->http_proxy.passwd, - NULL, FALSE); + NULL, REJECT_ZERO); return result; } @@ -3600,6 +3609,7 @@ static CURLcode create_conn(struct Curl_easy *data, data->set.str[STRING_SSL_CIPHER13_LIST_ORIG]; data->set.ssl.primary.pinned_key = data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG]; + data->set.ssl.primary.cert_blob = data->set.blobs[BLOB_CERT_ORIG]; #ifndef CURL_DISABLE_PROXY data->set.proxy_ssl.primary.CApath = data->set.str[STRING_SSL_CAPATH_PROXY]; @@ -3613,6 +3623,7 @@ static CURLcode create_conn(struct Curl_easy *data, data->set.str[STRING_SSL_CIPHER13_LIST_PROXY]; data->set.proxy_ssl.primary.pinned_key = data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY]; + data->set.proxy_ssl.primary.cert_blob = data->set.blobs[BLOB_CERT_PROXY]; data->set.proxy_ssl.CRLfile = data->set.str[STRING_SSL_CRLFILE_PROXY]; data->set.proxy_ssl.issuercert = data->set.str[STRING_SSL_ISSUERCERT_PROXY]; data->set.proxy_ssl.cert = data->set.str[STRING_CERT_PROXY]; @@ -3646,7 +3657,7 @@ static CURLcode create_conn(struct Curl_easy *data, data->set.ssl.issuercert_blob = data->set.blobs[BLOB_SSL_ISSUERCERT_ORIG]; if(!Curl_clone_primary_ssl_config(&data->set.ssl.primary, - &conn->ssl_config)) { + &conn->ssl_config)) { result = CURLE_OUT_OF_MEMORY; goto out; } diff --git a/Utilities/cmcurl/lib/urlapi.c b/Utilities/cmcurl/lib/urlapi.c index 37937fb..acbfb82 100644 --- a/Utilities/cmcurl/lib/urlapi.c +++ b/Utilities/cmcurl/lib/urlapi.c @@ -225,7 +225,7 @@ static void strcpy_url(char *output, const char *url, bool relative) break; } } - *optr = 0; /* zero terminate output buffer */ + *optr = 0; /* null-terminate output buffer */ } @@ -584,7 +584,7 @@ static CURLUcode junkscan(const char *part) 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x7f, - 0x00 /* zero terminate */ + 0x00 /* null-terminate */ }; size_t n = strlen(part); size_t nfine = strcspn(part, badbytes); @@ -1185,7 +1185,10 @@ CURLUcode curl_url_get(CURLU *u, CURLUPart what, if(urldecode) { char *decoded; size_t dlen; - CURLcode res = Curl_urldecode(NULL, *part, 0, &decoded, &dlen, TRUE); + /* this unconditional rejection of control bytes is documented + API behavior */ + CURLcode res = Curl_urldecode(NULL, *part, 0, &decoded, &dlen, + REJECT_CTRL); free(*part); if(res) { *part = NULL; @@ -1395,7 +1398,7 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what, i = (const unsigned char *)part; for(o = enc; *i; ++o, ++i) *o = (*i == ' ') ? '+' : *i; - *o = 0; /* zero terminate */ + *o = 0; /* null-terminate */ part = strdup(enc); if(!part) { free(enc); @@ -1419,7 +1422,7 @@ CURLUcode curl_url_set(CURLU *u, CURLUPart what, o += 3; } } - *o = 0; /* zero terminate */ + *o = 0; /* null-terminate */ newp = enc; if(free_part) free((char *)part); diff --git a/Utilities/cmcurl/lib/urldata.h b/Utilities/cmcurl/lib/urldata.h index 74b43ab..f80a02d 100644 --- a/Utilities/cmcurl/lib/urldata.h +++ b/Utilities/cmcurl/lib/urldata.h @@ -229,6 +229,7 @@ struct ssl_primary_config { char *cipher_list; /* list of ciphers to use */ char *cipher_list13; /* list of TLS 1.3 cipher suites to use */ char *pinned_key; + struct curl_blob *cert_blob; BIT(verifypeer); /* set TRUE if this is desired */ BIT(verifyhost); /* set TRUE if CN/SAN must match hostname */ BIT(verifystatus); /* set TRUE if certificate status must be checked */ @@ -766,6 +767,8 @@ struct Curl_handler { HTTP proxy as HTTP proxies may know this protocol and act as a gateway */ #define PROTOPT_WILDCARD (1<<12) /* protocol supports wildcard matching */ +#define PROTOPT_USERPWDCTRL (1<<13) /* Allow "control bytes" (< 32 ascii) in + user name and password */ #define CONNCHECK_NONE 0 /* No checks */ #define CONNCHECK_ISDEAD (1<<0) /* Check if the connection is dead. */ @@ -1562,7 +1565,7 @@ enum dupstring { STRING_DNS_LOCAL_IP4, STRING_DNS_LOCAL_IP6, - /* -- end of zero-terminated strings -- */ + /* -- end of null-terminated strings -- */ STRING_LASTZEROTERMINATED, diff --git a/Utilities/cmcurl/lib/vquic/ngtcp2.c b/Utilities/cmcurl/lib/vquic/ngtcp2.c index e552823..d29cb37 100644 --- a/Utilities/cmcurl/lib/vquic/ngtcp2.c +++ b/Utilities/cmcurl/lib/vquic/ngtcp2.c @@ -757,7 +757,9 @@ static ngtcp2_conn_callbacks ng_callbacks = { cb_extend_max_stream_data, NULL, /* dcid_status */ NULL, /* handshake_confirmed */ - NULL /* recv_new_token */ + NULL, /* recv_new_token */ + ngtcp2_crypto_delete_crypto_aead_ctx_cb, + ngtcp2_crypto_delete_crypto_cipher_ctx_cb }; /* diff --git a/Utilities/cmcurl/lib/vtls/mbedtls.c b/Utilities/cmcurl/lib/vtls/mbedtls.c index ba31b8e..545f824 100644 --- a/Utilities/cmcurl/lib/vtls/mbedtls.c +++ b/Utilities/cmcurl/lib/vtls/mbedtls.c @@ -246,9 +246,14 @@ mbed_connect_step1(struct connectdata *conn, const char * const ssl_capath = SSL_CONN_CONFIG(CApath); char * const ssl_cert = SSL_SET_OPTION(cert); const char * const ssl_crlfile = SSL_SET_OPTION(CRLfile); +#ifndef CURL_DISABLE_PROXY const char * const hostname = SSL_IS_PROXY() ? conn->http_proxy.host.name : conn->host.name; const long int port = SSL_IS_PROXY() ? conn->port : conn->remote_port; +#else + const char * const hostname = conn->host.name; + const long int port = conn->remote_port; +#endif int ret = -1; char errorbuf[128]; errorbuf[0] = 0; @@ -538,9 +543,14 @@ mbed_connect_step2(struct connectdata *conn, struct ssl_connect_data *connssl = &conn->ssl[sockindex]; struct ssl_backend_data *backend = connssl->backend; const mbedtls_x509_crt *peercert; +#ifndef CURL_DISABLE_PROXY const char * const pinnedpubkey = SSL_IS_PROXY() ? data->set.str[STRING_SSL_PINNEDPUBLICKEY_PROXY] : data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG]; +#else + const char * const pinnedpubkey = + data->set.str[STRING_SSL_PINNEDPUBLICKEY_ORIG]; +#endif conn->recv[sockindex] = mbed_recv; conn->send[sockindex] = mbed_send; diff --git a/Utilities/cmcurl/lib/vtls/openssl.c b/Utilities/cmcurl/lib/vtls/openssl.c index 790d358..2e9f900 100644 --- a/Utilities/cmcurl/lib/vtls/openssl.c +++ b/Utilities/cmcurl/lib/vtls/openssl.c @@ -31,6 +31,11 @@ #include <limits.h> +/* Wincrypt must be included before anything that could include OpenSSL. */ +#if defined(USE_WIN32_CRYPTO) +#include <wincrypt.h> +#endif + #include "urldata.h" #include "sendf.h" #include "formdata.h" /* for the boundary function */ @@ -48,10 +53,6 @@ #include "strerror.h" #include "curl_printf.h" -#if defined(USE_WIN32_CRYPTO) -#include <wincrypt.h> -#endif - #include <openssl/ssl.h> #include <openssl/rand.h> #include <openssl/x509v3.h> @@ -1635,7 +1636,7 @@ static CURLcode verifyhost(struct connectdata *conn, X509 *server_cert) type itself: for example for an IA5String the data will be ASCII" It has been however verified that in 0.9.6 and 0.9.7, IA5String - is always zero-terminated. + is always null-terminated. */ if((altlen == strlen(altptr)) && /* if this isn't true, there was an embedded zero in the name diff --git a/Utilities/cmcurl/lib/vtls/vtls.c b/Utilities/cmcurl/lib/vtls/vtls.c index dfe2601..c3a55fb 100644 --- a/Utilities/cmcurl/lib/vtls/vtls.c +++ b/Utilities/cmcurl/lib/vtls/vtls.c @@ -63,6 +63,7 @@ #include "warnless.h" #include "curl_base64.h" #include "curl_printf.h" +#include "strdup.h" /* The last #include files should be: */ #include "curl_memory.h" @@ -82,6 +83,44 @@ else \ dest->var = NULL; +#define CLONE_BLOB(var) \ + if(blobdup(&dest->var, source->var)) \ + return FALSE; + +static CURLcode blobdup(struct curl_blob **dest, + struct curl_blob *src) +{ + DEBUGASSERT(dest); + DEBUGASSERT(!*dest); + if(src) { + /* only if there's data to dupe! */ + struct curl_blob *d; + d = malloc(sizeof(struct curl_blob) + src->len); + if(!d) + return CURLE_OUT_OF_MEMORY; + d->len = src->len; + /* Always duplicate because the connection may survive longer than the + handle that passed in the blob. */ + d->flags = CURL_BLOB_COPY; + d->data = (void *)((char *)d + sizeof(struct curl_blob)); + memcpy(d->data, src->data, src->len); + *dest = d; + } + return CURLE_OK; +} + +/* returns TRUE if the blobs are identical */ +static bool blobcmp(struct curl_blob *first, struct curl_blob *second) +{ + if(!first && !second) /* both are NULL */ + return TRUE; + if(!first || !second) /* one is NULL */ + return FALSE; + if(first->len != second->len) /* different sizes */ + return FALSE; + return !memcmp(first->data, second->data, first->len); /* same data */ +} + bool Curl_ssl_config_matches(struct ssl_primary_config *data, struct ssl_primary_config *needle) @@ -91,6 +130,7 @@ Curl_ssl_config_matches(struct ssl_primary_config *data, (data->verifypeer == needle->verifypeer) && (data->verifyhost == needle->verifyhost) && (data->verifystatus == needle->verifystatus) && + blobcmp(data->cert_blob, needle->cert_blob) && Curl_safe_strcasecompare(data->CApath, needle->CApath) && Curl_safe_strcasecompare(data->CAfile, needle->CAfile) && Curl_safe_strcasecompare(data->clientcert, needle->clientcert) && @@ -115,6 +155,7 @@ Curl_clone_primary_ssl_config(struct ssl_primary_config *source, dest->verifystatus = source->verifystatus; dest->sessionid = source->sessionid; + CLONE_BLOB(cert_blob); CLONE_STRING(CApath); CLONE_STRING(CAfile); CLONE_STRING(clientcert); @@ -137,6 +178,7 @@ void Curl_free_primary_ssl_config(struct ssl_primary_config *sslc) Curl_safefree(sslc->cipher_list); Curl_safefree(sslc->cipher_list13); Curl_safefree(sslc->pinned_key); + Curl_safefree(sslc->cert_blob); } #ifdef USE_SSL @@ -706,7 +748,7 @@ CURLcode Curl_ssl_init_certinfo(struct Curl_easy *data, int num) } /* - * 'value' is NOT a zero terminated string + * 'value' is NOT a null-terminated string */ CURLcode Curl_ssl_push_certinfo_len(struct Curl_easy *data, int certnum, @@ -728,10 +770,10 @@ CURLcode Curl_ssl_push_certinfo_len(struct Curl_easy *data, /* sprintf the label and colon */ msnprintf(output, outlen, "%s:", label); - /* memcpy the value (it might not be zero terminated) */ + /* memcpy the value (it might not be null-terminated) */ memcpy(&output[labellen + 1], value, valuelen); - /* zero terminate the output */ + /* null-terminate the output */ output[labellen + 1 + valuelen] = 0; nl = Curl_slist_append_nodup(ci->certinfo[certnum], output); diff --git a/Utilities/std/cmext/memory b/Utilities/std/cmext/memory index 50e79df..fa326f0 100644 --- a/Utilities/std/cmext/memory +++ b/Utilities/std/cmext/memory @@ -12,18 +12,19 @@ namespace cm { -template <typename T, typename O, - cm::enable_if_t< - std::is_pointer<cm::invoke_result_t<decltype(&O::get), O>>::value, - int> = 0> +template < + typename T, typename O, + cm::enable_if_t<std::is_pointer<decltype(std::declval<O>().get())>::value, + int> = 0> T& static_reference_cast(O& item) { return *(static_cast<T*>(item.get())); } -template <typename T, typename O, - cm::enable_if_t< - std::is_pointer<cm::invoke_result_t<decltype(&O::get), O>>::value, - int> = 0> + +template < + typename T, typename O, + cm::enable_if_t<std::is_pointer<decltype(std::declval<O>().get())>::value, + int> = 0> T& dynamic_reference_cast(O& item) { auto p = dynamic_cast<T*>(item.get()); @@ -432,6 +432,7 @@ CMAKE_CXX_SOURCES="\ cmSiteNameCommand \ cmSourceFile \ cmSourceFileLocation \ + cmStandardLevelResolver \ cmState \ cmStateDirectory \ cmStateSnapshot \ @@ -631,6 +632,8 @@ Configuration: --system-libuv use system-installed libuv library --no-system-libuv use cmake-provided libuv library (default) + --bootstrap-system-libuv use system-installed libuv library for boostrap + --qt-gui build the Qt-based GUI (requires Qt >= 4.2) --no-qt-gui do not build the Qt-based GUI (default) --qt-qmake=<qmake> use <qmake> as the qmake executable to find Qt @@ -853,6 +856,7 @@ cmake_verbose= cmake_parallel_make= cmake_ccache_enabled= cmake_prefix_dir="${cmake_default_prefix}" +bootstrap_system_libuv= while test $# != 0; do case "$1" in --prefix=*) dir=`cmake_arg "$1"` @@ -872,6 +876,7 @@ while test $# != 0; do --no-system-bzip2|--no-system-curl|--no-system-expat|--no-system-jsoncpp|--no-system-libarchive|--no-system-librhash|--no-system-zlib|--no-system-liblzma|--no-system-zstd|--no-system-libuv) lib=`cmake_arg "$1" "--no-system-"` cmake_bootstrap_system_libs="${cmake_bootstrap_system_libs} -DCMAKE_USE_SYSTEM_LIBRARY_`cmake_toupper $lib`=0" ;; + --bootstrap-system-libuv) bootstrap_system_libuv="1" ;; --qt-gui) cmake_bootstrap_qt_gui="1" ;; --no-qt-gui) cmake_bootstrap_qt_gui="0" ;; --qt-qmake=*) cmake_bootstrap_qt_qmake=`cmake_arg "$1"` ;; @@ -1487,9 +1492,11 @@ objs="" for a in ${CMAKE_CXX_SOURCES} ${CMAKE_C_SOURCES} ${CMAKE_STD_CXX_SOURCES} ${LexerParser_CXX_SOURCES} ${LexerParser_C_SOURCES} ${KWSYS_CXX_SOURCES} ${KWSYS_C_SOURCES}; do objs="${objs} ${a}.o" done -for a in ${LIBUV_C_SOURCES}; do - objs="${objs} uv-`cmake_obj ${a}`" -done +if test "x${bootstrap_system_libuv}" = "x"; then + for a in ${LIBUV_C_SOURCES}; do + objs="${objs} uv-`cmake_obj ${a}`" + done +fi libs="" @@ -1527,14 +1534,20 @@ else ;; esac fi -uv_c_flags="${uv_c_flags} `cmake_escape "-I${cmake_source_dir}/Utilities/cmlibuv/include"`" -if ${cmake_system_mingw}; then - uv_c_flags="${uv_c_flags} `cmake_escape "-I${cmake_source_dir}/Utilities/cmlibuv/src/win"`" +if test "x${bootstrap_system_libuv}" = "x"; then + uv_c_flags="${uv_c_flags} `cmake_escape "-I${cmake_source_dir}/Utilities/cmlibuv/include"`" + if ${cmake_system_mingw}; then + uv_c_flags="${uv_c_flags} `cmake_escape "-I${cmake_source_dir}/Utilities/cmlibuv/src/win"`" + else + uv_c_flags="${uv_c_flags} `cmake_escape "-I${cmake_source_dir}/Utilities/cmlibuv/src/unix"`" + fi + uv_c_flags="${uv_c_flags} `cmake_escape "-I${cmake_source_dir}/Utilities/cmlibuv/src"`" else - uv_c_flags="${uv_c_flags} `cmake_escape "-I${cmake_source_dir}/Utilities/cmlibuv/src/unix"`" + if test `which pkg-config`; then + uv_c_flags="${uv_c_flags} `pkg-config --cflags libuv`" + fi + libs="${libs} -luv" fi -uv_c_flags="${uv_c_flags} `cmake_escape "-I${cmake_source_dir}/Utilities/cmlibuv/src"`" - if test "x${cmake_ansi_cxx_flags}" != "x"; then cmake_cxx_flags="${cmake_ansi_cxx_flags} ${cmake_cxx_flags}" fi @@ -1616,11 +1629,13 @@ for a in ${KWSYS_CXX_SOURCES}; do echo "${a}.o : ${src} ${dep}" >> "${cmake_bootstrap_dir}/Makefile" echo " ${cmake_cxx_compiler} ${cmake_cxx_flags} -DKWSYS_NAMESPACE=cmsys ${src_flags} -c ${src} -o ${a}.o" >> "${cmake_bootstrap_dir}/Makefile" done -for a in ${LIBUV_C_SOURCES}; do - src=`cmake_escape "${cmake_source_dir}/Utilities/cmlibuv/${a}"` - echo "uv-`cmake_obj ${a}` : ${src} ${dep}" >> "${cmake_bootstrap_dir}/Makefile" - echo " ${cmake_c_compiler} ${cmake_c_flags} ${uv_c_flags} -c ${src} -o uv-`cmake_obj ${a}`" >> "${cmake_bootstrap_dir}/Makefile" -done +if test "x${bootstrap_system_libuv}" = "x"; then + for a in ${LIBUV_C_SOURCES}; do + src=`cmake_escape "${cmake_source_dir}/Utilities/cmlibuv/${a}"` + echo "uv-`cmake_obj ${a}` : ${src} ${dep}" >> "${cmake_bootstrap_dir}/Makefile" + echo " ${cmake_c_compiler} ${cmake_c_flags} ${uv_c_flags} -c ${src} -o uv-`cmake_obj ${a}`" >> "${cmake_bootstrap_dir}/Makefile" + done +fi echo ' rebuild_cache: cd "${cmake_binary_dir}" && "${cmake_source_dir}/bootstrap" |