diff options
-rw-r--r-- | .clang-tidy | 12 | ||||
-rw-r--r-- | .gitlab-ci.yml | 34 | ||||
-rw-r--r-- | .gitlab/ci/configure_fedora31_tidy.cmake | 3 | ||||
-rw-r--r-- | .gitlab/ci/configure_fedora33_common.cmake (renamed from .gitlab/ci/configure_fedora31_common.cmake) | 0 | ||||
-rw-r--r-- | .gitlab/ci/configure_fedora33_makefiles.cmake (renamed from .gitlab/ci/configure_fedora31_makefiles.cmake) | 0 | ||||
-rw-r--r-- | .gitlab/ci/configure_fedora33_ninja.cmake (renamed from .gitlab/ci/configure_fedora31_ninja.cmake) | 2 | ||||
-rw-r--r-- | .gitlab/ci/configure_fedora33_ninja_multi.cmake (renamed from .gitlab/ci/configure_fedora31_ninja_multi.cmake) | 0 | ||||
-rw-r--r-- | .gitlab/ci/configure_fedora33_sphinx.cmake (renamed from .gitlab/ci/configure_fedora31_sphinx.cmake) | 0 | ||||
-rw-r--r-- | .gitlab/ci/configure_fedora33_sphinx_package.cmake (renamed from .gitlab/ci/configure_fedora31_sphinx_package.cmake) | 0 | ||||
-rw-r--r-- | .gitlab/ci/configure_fedora33_tidy.cmake | 3 | ||||
-rw-r--r-- | .gitlab/ci/docker/fedora33/Dockerfile (renamed from .gitlab/ci/docker/fedora31/Dockerfile) | 4 | ||||
-rwxr-xr-x | .gitlab/ci/docker/fedora33/install_deps.sh (renamed from .gitlab/ci/docker/fedora31/install_deps.sh) | 0 | ||||
-rwxr-xr-x | .gitlab/ci/docker/fedora33/install_ispc.sh (renamed from .gitlab/ci/docker/fedora31/install_ispc.sh) | 0 | ||||
-rwxr-xr-x | .gitlab/ci/docker/fedora33/install_rvm.sh (renamed from .gitlab/ci/docker/fedora31/install_rvm.sh) | 3 | ||||
-rw-r--r-- | .gitlab/ci/env_fedora33_makefiles.cmake (renamed from .gitlab/ci/env_fedora31_makefiles.cmake) | 0 | ||||
-rw-r--r-- | .gitlab/os-linux.yml | 42 | ||||
-rw-r--r-- | Help/command/cmake_path.rst | 132 | ||||
-rw-r--r-- | Source/CMakeVersion.cmake | 2 | ||||
-rw-r--r-- | Source/cmCMakePathCommand.cxx | 99 | ||||
-rw-r--r-- | Tests/FindBoost/TestPython/CMakeLists.txt | 4 | ||||
-rw-r--r-- | Tests/RunCMake/cmake_path/APPEND_STRING-OUTPUT_VARIABLE-invalid-arg-result.txt (renamed from Tests/RunCMake/cmake_path/CONCAT-wrong-path-result.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/cmake_path/APPEND_STRING-OUTPUT_VARIABLE-no-arg-result.txt (renamed from Tests/RunCMake/cmake_path/CONCAT-OUTPUT_VARIABLE-no-arg-result.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/cmake_path/APPEND_STRING-wrong-path-result.txt (renamed from Tests/RunCMake/cmake_path/CONCAT-OUTPUT_VARIABLE-invalid-arg-result.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/cmake_path/APPEND_STRING.cmake (renamed from Tests/RunCMake/cmake_path/CONCAT.cmake) | 6 | ||||
-rw-r--r-- | Tests/RunCMake/cmake_path/CMAKE_PATH-OUTPUT_VARIABLE-no-arg-result.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/cmake_path/CMAKE_PATH-invalid-output-result.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/cmake_path/CMAKE_PATH-missing-output-result.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/cmake_path/CMAKE_PATH-unexpected-arg-result.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/cmake_path/CMAKE_PATH-wrong-path-result.txt | 1 | ||||
-rw-r--r-- | Tests/RunCMake/cmake_path/COMPARE.cmake | 8 | ||||
-rw-r--r-- | Tests/RunCMake/cmake_path/PROXIMATE_PATH.cmake | 41 | ||||
-rw-r--r-- | Tests/RunCMake/cmake_path/RunCMakeTest.cmake | 30 | ||||
-rw-r--r-- | Tests/RunCMake/cmake_path/SET-missing-output-result.txt (renamed from Tests/RunCMake/cmake_path/COMPARE-NOT_EQUAL-wrong-path-result.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/cmake_path/SET-unexpected-arg-result.txt (renamed from Tests/RunCMake/cmake_path/COMPARE-EQUAL-wrong-path-result.txt) | 0 | ||||
-rw-r--r-- | Tests/RunCMake/cmake_path/SET.cmake (renamed from Tests/RunCMake/cmake_path/CMAKE_PATH.cmake) | 18 |
35 files changed, 192 insertions, 256 deletions
diff --git a/.clang-tidy b/.clang-tidy index 10819ef..11e1726 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -4,9 +4,13 @@ bugprone-*,\ -bugprone-macro-parentheses,\ -bugprone-misplaced-widening-cast,\ -bugprone-narrowing-conversions,\ +-bugprone-reserved-identifier,\ +-bugprone-signed-char-misuse,\ +-bugprone-suspicious-include,\ -bugprone-too-small-loop-variable,\ google-readability-casting,\ misc-*,\ +-misc-no-recursion,\ -misc-non-private-member-variables-in-classes,\ -misc-static-assert,\ modernize-*,\ @@ -16,6 +20,8 @@ modernize-*,\ -modernize-use-trailing-return-type,\ -modernize-use-transparent-functors,\ performance-*,\ +-performance-no-automatic-move,\ +-performance-trivially-destructible,\ readability-*,\ -readability-convert-member-functions-to-static,\ -readability-function-size,\ @@ -23,9 +29,15 @@ readability-*,\ -readability-implicit-bool-conversion,\ -readability-inconsistent-declaration-parameter-name,\ -readability-magic-numbers,\ +-readability-make-member-function-const,\ -readability-named-parameter,\ +-readability-qualified-auto,\ +-readability-redundant-access-specifiers,\ -readability-redundant-declaration,\ +-readability-redundant-string-init,\ +-readability-simplify-boolean-expr,\ -readability-uppercase-literal-suffix,\ +-readability-use-anyofallof,\ " HeaderFilterRegex: 'Source/cm[^/]*\.(h|hxx|cxx)$' CheckOptions: diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1a94a3d..626071a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -46,7 +46,7 @@ prep:source-package: prep:doc-package: extends: - - .fedora31_sphinx_package + - .fedora33_sphinx_package - .cmake_prep_doc_linux - .linux_builder_tags_qt - .cmake_doc_artifacts @@ -72,16 +72,16 @@ build:debian10-iwyu: - .linux_builder_tags - .run_automatically -build:fedora31-tidy: +build:fedora33-tidy: extends: - - .fedora31_tidy + - .fedora33_tidy - .cmake_build_linux - .linux_builder_tags_qt - .run_automatically -build:fedora31-sphinx: +build:fedora33-sphinx: extends: - - .fedora31_sphinx + - .fedora33_sphinx - .cmake_build_linux - .linux_builder_tags_qt - .run_automatically @@ -110,9 +110,9 @@ test:debian10-ninja: needs: - build:centos6-release -test:fedora31-makefiles: +test:fedora33-makefiles: extends: - - .fedora31_makefiles + - .fedora33_makefiles - .cmake_test_linux_package - .linux_builder_tags_qt - .run_dependent @@ -132,36 +132,36 @@ test:cuda10.2-nvidia: needs: - build:centos6-release -build:fedora31-ninja: +build:fedora33-ninja: extends: - - .fedora31_ninja + - .fedora33_ninja - .cmake_build_linux - .cmake_build_artifacts - .linux_builder_tags_qt - .run_manually -test:fedora31-ninja: +test:fedora33-ninja: extends: - - .fedora31_ninja + - .fedora33_ninja - .cmake_test_linux - .linux_builder_tags_x11 - .cmake_test_artifacts - .run_dependent dependencies: - - build:fedora31-ninja + - build:fedora33-ninja needs: - - build:fedora31-ninja + - build:fedora33-ninja -test:fedora31-ninja-multi: +test:fedora33-ninja-multi: extends: - - .fedora31_ninja_multi + - .fedora33_ninja_multi - .cmake_test_linux_external - .linux_builder_tags_qt - .run_dependent dependencies: - - test:fedora31-ninja + - test:fedora33-ninja needs: - - test:fedora31-ninja + - test:fedora33-ninja build:linux-x86_64-package: extends: diff --git a/.gitlab/ci/configure_fedora31_tidy.cmake b/.gitlab/ci/configure_fedora31_tidy.cmake deleted file mode 100644 index 55d022c..0000000 --- a/.gitlab/ci/configure_fedora31_tidy.cmake +++ /dev/null @@ -1,3 +0,0 @@ -set(CMake_RUN_CLANG_TIDY ON CACHE BOOL "") - -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora31_common.cmake") diff --git a/.gitlab/ci/configure_fedora31_common.cmake b/.gitlab/ci/configure_fedora33_common.cmake index c343833..c343833 100644 --- a/.gitlab/ci/configure_fedora31_common.cmake +++ b/.gitlab/ci/configure_fedora33_common.cmake diff --git a/.gitlab/ci/configure_fedora31_makefiles.cmake b/.gitlab/ci/configure_fedora33_makefiles.cmake index db2d005..db2d005 100644 --- a/.gitlab/ci/configure_fedora31_makefiles.cmake +++ b/.gitlab/ci/configure_fedora33_makefiles.cmake diff --git a/.gitlab/ci/configure_fedora31_ninja.cmake b/.gitlab/ci/configure_fedora33_ninja.cmake index ea429c1..883f425 100644 --- a/.gitlab/ci/configure_fedora31_ninja.cmake +++ b/.gitlab/ci/configure_fedora33_ninja.cmake @@ -4,4 +4,4 @@ set(CMake_TEST_GUI "ON" CACHE BOOL "") # Cover compilation with C++11 only and not higher standards. set(CMAKE_CXX_STANDARD "11" CACHE STRING "") -include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora31_common.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora33_common.cmake") diff --git a/.gitlab/ci/configure_fedora31_ninja_multi.cmake b/.gitlab/ci/configure_fedora33_ninja_multi.cmake index efb4b84..efb4b84 100644 --- a/.gitlab/ci/configure_fedora31_ninja_multi.cmake +++ b/.gitlab/ci/configure_fedora33_ninja_multi.cmake diff --git a/.gitlab/ci/configure_fedora31_sphinx.cmake b/.gitlab/ci/configure_fedora33_sphinx.cmake index 90d159b..90d159b 100644 --- a/.gitlab/ci/configure_fedora31_sphinx.cmake +++ b/.gitlab/ci/configure_fedora33_sphinx.cmake diff --git a/.gitlab/ci/configure_fedora31_sphinx_package.cmake b/.gitlab/ci/configure_fedora33_sphinx_package.cmake index e839de8..e839de8 100644 --- a/.gitlab/ci/configure_fedora31_sphinx_package.cmake +++ b/.gitlab/ci/configure_fedora33_sphinx_package.cmake diff --git a/.gitlab/ci/configure_fedora33_tidy.cmake b/.gitlab/ci/configure_fedora33_tidy.cmake new file mode 100644 index 0000000..9052fdc --- /dev/null +++ b/.gitlab/ci/configure_fedora33_tidy.cmake @@ -0,0 +1,3 @@ +set(CMake_RUN_CLANG_TIDY ON CACHE BOOL "") + +include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora33_common.cmake") diff --git a/.gitlab/ci/docker/fedora31/Dockerfile b/.gitlab/ci/docker/fedora33/Dockerfile index 80ab379..8ebcb9e 100644 --- a/.gitlab/ci/docker/fedora31/Dockerfile +++ b/.gitlab/ci/docker/fedora33/Dockerfile @@ -1,10 +1,10 @@ -FROM fedora:31 as rvm-build +FROM fedora:33 as rvm-build MAINTAINER Ben Boeckel <ben.boeckel@kitware.com> COPY install_rvm.sh /root/install_rvm.sh RUN sh /root/install_rvm.sh -FROM fedora:31 +FROM fedora:33 MAINTAINER Ben Boeckel <ben.boeckel@kitware.com> COPY install_deps.sh /root/install_deps.sh diff --git a/.gitlab/ci/docker/fedora31/install_deps.sh b/.gitlab/ci/docker/fedora33/install_deps.sh index c1391e3..c1391e3 100755 --- a/.gitlab/ci/docker/fedora31/install_deps.sh +++ b/.gitlab/ci/docker/fedora33/install_deps.sh diff --git a/.gitlab/ci/docker/fedora31/install_ispc.sh b/.gitlab/ci/docker/fedora33/install_ispc.sh index fdc14b5..fdc14b5 100755 --- a/.gitlab/ci/docker/fedora31/install_ispc.sh +++ b/.gitlab/ci/docker/fedora33/install_ispc.sh diff --git a/.gitlab/ci/docker/fedora31/install_rvm.sh b/.gitlab/ci/docker/fedora33/install_rvm.sh index 2332ab7..6d4fa97 100755 --- a/.gitlab/ci/docker/fedora31/install_rvm.sh +++ b/.gitlab/ci/docker/fedora33/install_rvm.sh @@ -13,6 +13,9 @@ dnf install --setopt=install_weak_deps=False -y \ curl -sSL https://get.rvm.io | bash -s stable +# This is intentionally an older version. +# If updating, the associated `env_fedora*_makefiles.cmake` file needs updated +# as well. /usr/local/rvm/bin/rvm install ruby-2.7.0 tar -C /usr/local -cf /root/rvm.tar rvm diff --git a/.gitlab/ci/env_fedora31_makefiles.cmake b/.gitlab/ci/env_fedora33_makefiles.cmake index 1d0efa7..1d0efa7 100644 --- a/.gitlab/ci/env_fedora31_makefiles.cmake +++ b/.gitlab/ci/env_fedora33_makefiles.cmake diff --git a/.gitlab/os-linux.yml b/.gitlab/os-linux.yml index bab4f5a..6684d71 100644 --- a/.gitlab/os-linux.yml +++ b/.gitlab/os-linux.yml @@ -12,7 +12,7 @@ LAUNCHER: "scl enable devtoolset-6 rh-python36 --" .linux_prep_source: - image: "fedora:32" + image: "fedora:33" variables: GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci" @@ -48,36 +48,36 @@ ### Fedora -.fedora31: - image: "kitware/cmake:ci-fedora31-x86_64-2020-10-22" +.fedora33: + image: "kitware/cmake:ci-fedora33-x86_64-2020-11-13" variables: GIT_CLONE_PATH: "$CI_BUILDS_DIR/cmake ci/long file name for testing purposes" #### Lint builds -.fedora31_tidy: - extends: .fedora31 +.fedora33_tidy: + extends: .fedora33 variables: - CMAKE_CONFIGURATION: fedora31_tidy + CMAKE_CONFIGURATION: fedora33_tidy CTEST_NO_WARNINGS_ALLOWED: 1 CMake_SKIP_INSTALL: 1 -.fedora31_sphinx: - extends: .fedora31 +.fedora33_sphinx: + extends: .fedora33 variables: - CMAKE_CONFIGURATION: fedora31_sphinx + CMAKE_CONFIGURATION: fedora33_sphinx CTEST_NO_WARNINGS_ALLOWED: 1 CTEST_SOURCE_SUBDIRECTORY: "Utilities/Sphinx" CMake_SKIP_INSTALL: 1 -.fedora31_sphinx_package: - extends: .fedora31 +.fedora33_sphinx_package: + extends: .fedora33 variables: - CMAKE_CONFIGURATION: fedora31_sphinx_package + CMAKE_CONFIGURATION: fedora33_sphinx_package CTEST_SOURCE_SUBDIRECTORY: "Utilities/Sphinx" #### Build and test @@ -89,26 +89,26 @@ CMAKE_CONFIGURATION: debian10_ninja CTEST_NO_WARNINGS_ALLOWED: 1 -.fedora31_ninja: - extends: .fedora31 +.fedora33_ninja: + extends: .fedora33 variables: - CMAKE_CONFIGURATION: fedora31_ninja + CMAKE_CONFIGURATION: fedora33_ninja CTEST_NO_WARNINGS_ALLOWED: 1 -.fedora31_ninja_multi: - extends: .fedora31 +.fedora33_ninja_multi: + extends: .fedora33 variables: - CMAKE_CONFIGURATION: fedora31_ninja_multi + CMAKE_CONFIGURATION: fedora33_ninja_multi CTEST_NO_WARNINGS_ALLOWED: 1 CMAKE_GENERATOR: "Ninja Multi-Config" -.fedora31_makefiles: - extends: .fedora31 +.fedora33_makefiles: + extends: .fedora33 variables: - CMAKE_CONFIGURATION: fedora31_makefiles + CMAKE_CONFIGURATION: fedora33_makefiles CTEST_NO_WARNINGS_ALLOWED: 1 CMAKE_GENERATOR: "Unix Makefiles" diff --git a/Help/command/cmake_path.rst b/Help/command/cmake_path.rst index cb84dd1..2d37ae0 100644 --- a/Help/command/cmake_path.rst +++ b/Help/command/cmake_path.rst @@ -1,7 +1,7 @@ cmake_path ---------- -.. versionadded:: 3.19 +.. versionadded:: 3.20 Filesystem path manipulation command. @@ -66,8 +66,8 @@ The following exceptions apply: in cross-compiling environment. For all commands, ``<path-var>`` placeholder expect a variable name. An error -will be raised if the variable does not exist, except for `APPEND`_ and -`CMAKE_PATH`_ sub-commands. ``<input>`` placeholder expect a string literal. +will be raised if the variable does not exist, except for `SET`_ and `APPEND`_ +sub-commands. ``<input>`` placeholder expect a string literal. ``[<input>...]`` placeholder expect zero or more arguments. ``<out-var>`` placeholder expect a variable name. @@ -79,10 +79,10 @@ placeholder expect a variable name. To initialize a path variable, three possibilities can be used: 1. :command:`set` command. -2. :ref:`cmake_path(APPEND) <APPEND>` command. Can be used to build a path from - already available path fragments. -3. :ref:`cmake_path(CMAKE_PATH) <CMAKE_PATH>` command. Mainly used to build a +2. :ref:`cmake_path(SET) <SET>` command. Mainly used to build a path variable from a native path. +3. :ref:`cmake_path(APPEND) <APPEND>` command. Can be used to build a path from + already available path fragments. .. code-block:: cmake @@ -90,13 +90,13 @@ To initialize a path variable, three possibilities can be used: set (path1 "${CMAKE_CURRENT_SOURCE_DIR}/data") - cmake_path(APPEND path2 "${CMAKE_CURRENT_SOURCE_DIR}" "data") + cmake_path(SET path2 "${CMAKE_CURRENT_SOURCE_DIR}/data") - cmake_path(CMAKE_PATH path3 "${CMAKE_CURRENT_SOURCE_DIR}/data") + cmake_path(APPEND path3 "${CMAKE_CURRENT_SOURCE_DIR}" "data") `Modification`_ and `Generation`_ sub-commands store the result in-place or in -the variable specified by ``OUTPUT_VARIABLE`` option. All other sub-commands, -except `CMAKE_PATH`_, store the result in the required ``<out-var>`` variable. +the variable specified by ``OUTPUT_VARIABLE`` option. All other sub-commands +store the result in the required ``<out-var>`` variable. Sub-commands supporting ``NORMALIZE`` option will :ref:`normalize <NORMAL_PATH>` the path. @@ -117,8 +117,9 @@ Synopsis cmake_path(`GET`_ <path-var> :ref:`PARENT_PATH <GET_PARENT_PATH>` <out-var>) `Modification`_ + cmake_path(`SET`_ <path-var> [NORMALIZE] <input>) cmake_path(`APPEND`_ <path-var> [<input>...] [OUTPUT_VARIABLE <out-var>]) - cmake_path(`CONCAT`_ <path-var> [<input>...] [OUTPUT_VARIABLE <out-var>]) + cmake_path(`APPEND_STRING`_ <path-var> [<input>...] [OUTPUT_VARIABLE <out-var>]) cmake_path(`REMOVE_FILENAME`_ <path-var> [OUTPUT_VARIABLE <out-var>]) cmake_path(`REPLACE_FILENAME`_ <path-var> <input> [OUTPUT_VARIABLE <out-var>]) cmake_path(`REMOVE_EXTENSION`_ <path-var> [LAST_ONLY] @@ -130,19 +131,16 @@ Synopsis cmake_path(`NORMAL_PATH`_ <path-var> [OUTPUT_VARIABLE <out-var>]) cmake_path(`RELATIVE_PATH`_ <path-var> [BASE_DIRECTORY <input>] [OUTPUT_VARIABLE <out-var>]) - cmake_path(`PROXIMATE_PATH`_ <path-var> [BASE_DIRECTORY <input>] - [OUTPUT_VARIABLE <out-var>]) cmake_path(`ABSOLUTE_PATH`_ <path-var> [BASE_DIRECTORY <input>] [NORMALIZE] [OUTPUT_VARIABLE <out-var>]) `Conversion`_ - cmake_path(`CMAKE_PATH`_ <path-var> [NORMALIZE] <input>) cmake_path(`NATIVE_PATH`_ <path-var> [NORMALIZE] <out-var>) cmake_path(`CONVERT`_ <input> `TO_CMAKE_PATH_LIST`_ <out-var>) cmake_path(`CONVERT`_ <input> `TO_NATIVE_PATH_LIST`_ <out-var>) `Comparison`_ - cmake_path(`COMPARE`_ <path-var> <OP> <input> <out-var>) + cmake_path(`COMPARE`_ <input1> <OP> <input2> <out-var>) `Query`_ cmake_path(`HAS_ROOT_NAME`_ <path-var> <out-var>) @@ -388,6 +386,36 @@ For Example: Modification ^^^^^^^^^^^^ +.. _cmake_path-SET: +.. _SET: + +.. code-block:: cmake + + cmake_path(SET <path-var> [NORMALIZE] <input>) + +Assign the ``<input>`` path to ``<path-var>``. Moreover, if ``<input>`` is a +native path, it is converted into cmake-style path with forward-slashes +(``/``). On Windows, the long filename marker is taken into account. + +When ``NORMALIZE`` option is specified, the path is :ref:`normalized +<NORMAL_PATH>` before the conversion. + +For Example: + + .. code-block:: cmake + + set (native_path "c:\\a\\b/..\\c") + cmake_path (SET path "${native_path}") + message ("CMake path is \"${path}\"") + + cmake_path (SET path NORMALIZE "${native_path}") + message ("Normalized CMake path is \"${path}\"") + + Will display:: + + CMake path is "c:/a/b/../c" + Normalized CMake path is "c:/a/c" + .. _APPEND: .. code-block:: cmake @@ -419,13 +447,13 @@ For each ``<input>`` argument, the following algorithm (pseudo-code) applies: appends <input> omitting any root-name to <path> -.. _CONCAT: +.. _APPEND_STRING: .. code-block:: cmake - cmake_path(CONCAT <path-var> [<input>...] [OUTPUT_VARIABLE <out-var>]) + cmake_path(APPEND_STRING <path-var> [<input>...] [OUTPUT_VARIABLE <out-var>]) -Concatenates all the ``<input>`` arguments to the ``<path-var>`` without +Append all the ``<input>`` arguments to the ``<path-var>`` without ``directory-separator``. .. _REMOVE_FILENAME: @@ -500,7 +528,7 @@ Replaces the :ref:`extension <EXTENSION_DEF>` with ``<input>``. (`HAS_EXTENSION`_ is true), it is removed. 2. A ``dot`` character is appended to ``<path-var>``, if ``<input>`` is not empty or does not begin with a ``dot`` character. - 3. ``<input>`` is appended as if `CONCAT`_ was used. + 3. ``<input>`` is appended as if `APPEND_STRING`_ was used. Equivalent to the following: @@ -509,9 +537,9 @@ Equivalent to the following: cmake_path(REMOVE_EXTENSION path) if (NOT "input" MATCHES "^\\.") - cmake_path(CONCAT path ".") + cmake_path(APPEND_STRING path ".") endif() - cmake_path(CONCAT path "input"); + cmake_path(APPEND_STRING path "input"); Generation ^^^^^^^^^^ @@ -557,19 +585,6 @@ Returns ``<path-var>`` made relative to ``BASE_DIRECTORY`` argument. If For reference, the algorithm used to compute the relative path is described `here <https://en.cppreference.com/w/cpp/filesystem/path/lexically_normal>`_. -.. _PROXIMATE_PATH: - -.. code-block:: cmake - - cmake_path(PROXIMATE_PATH <path-var> [BASE_DIRECTORY <input>] - [OUTPUT_VARIABLE <out-var>]) - -If the value of `RELATIVE_PATH`_ is not an empty path, return -it. Otherwise return ``<path-var>``. - -If ``BASE_DIRECTORY`` is not specified, the default base directory will be -:variable:`CMAKE_CURRENT_SOURCE_DIR`. - .. _ABSOLUTE_PATH: .. code-block:: cmake @@ -593,35 +608,6 @@ command. Conversion ^^^^^^^^^^ -.. _cmake_path-CMAKE_PATH: -.. _CMAKE_PATH: - -.. code-block:: cmake - - cmake_path(CMAKE_PATH <path-var> [NORMALIZE] <input>) - -Converts a native ``<input>`` path into cmake-style path with forward-slashes -(``/``). On Windows, the long filename marker is taken into account. - -When ``NORMALIZE`` option is specified, the path is :ref:`normalized -<NORMAL_PATH>` before the conversion. - -For Example: - - .. code-block:: cmake - - set (native_path "c:\\a\\b/..\\c") - cmake_path (CMAKE_PATH path "${native_path}") - message ("CMake path is \"${path}\"") - - cmake_path (CMAKE_PATH path NORMALIZE "${native_path}") - message ("Normalized CMake path is \"${path}\"") - - Will display:: - - CMake path is "c:/a/b/../c" - Normalized CMake path is "c:/a/c" - .. _cmake_path-NATIVE_PATH: .. _NATIVE_PATH: @@ -644,9 +630,9 @@ When ``NORMALIZE`` option is specified, the path is :ref:`normalized cmake_path(CONVERT <input> TO_CMAKE_PATH_LIST <out-var> [NORMALIZE]) Converts a native ``<input>`` path into cmake-style path with forward-slashes -(``/``). On Windows, the long filename marker is taken into account. The input can -be a single path or a system search path like ``$ENV{PATH}``. A search path -will be converted to a cmake-style list separated by ``;`` characters. The +(``/``). On Windows, the long filename marker is taken into account. The input +can be a single path or a system search path like ``$ENV{PATH}``. A search +path will be converted to a cmake-style list separated by ``;`` characters. The result of the conversion is stored in the ``<out-var>`` variable. When ``NORMALIZE`` option is specified, the path is :ref:`normalized @@ -691,8 +677,8 @@ Comparison .. code-block:: cmake - cmake_path(COMPARE <path-var> EQUAL <input> <out-var>) - cmake_path(COMPARE <path-var> NOT_EQUAL <input> <out-var>) + cmake_path(COMPARE <input1> EQUAL <input2> <out-var>) + cmake_path(COMPARE <input1> NOT_EQUAL <input2> <out-var>) Compares the lexical representations of the path and another path. @@ -700,16 +686,14 @@ For testing equality, the following algorithm (pseudo-code) apply: .. code-block:: cmake - # <path> is the contents of <path-var> - - IF (NOT <path>.root_name() STREQUAL <input>.root_name()) + IF (NOT <input1>.root_name() STREQUAL <input2>.root_name()) returns FALSE - ELSEIF (<path>.has_root_directory() XOR <input>.has_root_directory()) + ELSEIF (<input1>.has_root_directory() XOR <input2>.has_root_directory()) returns FALSE ENDIF() - returns TRUE or FALSE if the relative portion of <path> is - lexicographically equal or not to the relative portion of <input>. + returns TRUE or FALSE if the relative portion of <input1> is + lexicographically equal or not to the relative portion of <input2>. Comparison is performed path component-wise Query diff --git a/Source/CMakeVersion.cmake b/Source/CMakeVersion.cmake index e499ad2..aad6371 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 19) -set(CMake_VERSION_PATCH 20201113) +set(CMake_VERSION_PATCH 20201116) #set(CMake_VERSION_RC 0) set(CMake_VERSION_IS_DIRTY 0) diff --git a/Source/cmCMakePathCommand.cxx b/Source/cmCMakePathCommand.cxx index 720f582..85e7d9e 100644 --- a/Source/cmCMakePathCommand.cxx +++ b/Source/cmCMakePathCommand.cxx @@ -250,9 +250,48 @@ bool HandleGetCommand(std::vector<std::string> const& args, return true; } +bool HandleSetCommand(std::vector<std::string> const& args, + cmExecutionStatus& status) +{ + if (args.size() < 3 || args.size() > 4) { + status.SetError("SET must be called with two or three arguments."); + return false; + } + + if (args[1].empty()) { + status.SetError("Invalid name for path variable."); + return false; + } + + static NormalizeParser const parser; + + const auto arguments = parser.Parse(args); + + if (parser.GetInputs().size() != 1) { + status.SetError("SET called with unexpected arguments."); + return false; + } + + auto path = + cmCMakePath(parser.GetInputs().front(), cmCMakePath::native_format); + + if (arguments.Normalize) { + path = path.Normal(); + } + + status.GetMakefile().AddDefinition(args[1], path.GenericString()); + + return true; +} + bool HandleAppendCommand(std::vector<std::string> const& args, cmExecutionStatus& status) { + if (args[1].empty()) { + status.SetError("Invalid name for path variable."); + return false; + } + static OutputVariableParser const parser{}; const auto arguments = parser.Parse(args); @@ -272,8 +311,8 @@ bool HandleAppendCommand(std::vector<std::string> const& args, return true; } -bool HandleConcatCommand(std::vector<std::string> const& args, - cmExecutionStatus& status) +bool HandleAppendStringCommand(std::vector<std::string> const& args, + cmExecutionStatus& status) { static OutputVariableParser const parser{}; @@ -546,16 +585,6 @@ bool HandleRelativePathCommand(std::vector<std::string> const& args, }); } -bool HandleProximatePathCommand(std::vector<std::string> const& args, - cmExecutionStatus& status) -{ - return HandleTransformPathCommand( - args, status, - [](const cmCMakePath& path, const std::string& base) -> cmCMakePath { - return path.Proximate(base); - }); -} - bool HandleAbsolutePathCommand(std::vector<std::string> const& args, cmExecutionStatus& status) { @@ -567,40 +596,6 @@ bool HandleAbsolutePathCommand(std::vector<std::string> const& args, true); } -bool HandleCMakePathCommand(std::vector<std::string> const& args, - cmExecutionStatus& status) -{ - if (args.size() < 3 || args.size() > 4) { - status.SetError("CMAKE_PATH must be called with two or three arguments."); - return false; - } - - static NormalizeParser const parser; - - const auto arguments = parser.Parse(args); - - if (parser.GetInputs().size() != 1) { - status.SetError("CMAKE_PATH called with unexpected arguments."); - return false; - } - - if (args[1].empty()) { - status.SetError("Invalid name for output variable."); - return false; - } - - auto path = - cmCMakePath(parser.GetInputs().front(), cmCMakePath::native_format); - - if (arguments.Normalize) { - path = path.Normal(); - } - - status.GetMakefile().AddDefinition(args[1], path.GenericString()); - - return true; -} - bool HandleNativePathCommand(std::vector<std::string> const& args, cmExecutionStatus& status) { @@ -737,12 +732,7 @@ bool HandleCompareCommand(std::vector<std::string> const& args, return false; } - std::string inputPath; - if (!getInputPath(args[1], status, inputPath)) { - return false; - } - - cmCMakePath path1(inputPath); + cmCMakePath path1(args[1]); cmCMakePath path2(args[3]); auto result = op->second(path1, path2); @@ -987,17 +977,16 @@ bool cmCMakePathCommand(std::vector<std::string> const& args, static cmSubcommandTable const subcommand{ { "GET"_s, HandleGetCommand }, + { "SET"_s, HandleSetCommand }, { "APPEND"_s, HandleAppendCommand }, - { "CONCAT"_s, HandleConcatCommand }, + { "APPEND_STRING"_s, HandleAppendStringCommand }, { "REMOVE_FILENAME"_s, HandleRemoveFilenameCommand }, { "REPLACE_FILENAME"_s, HandleReplaceFilenameCommand }, { "REMOVE_EXTENSION"_s, HandleRemoveExtensionCommand }, { "REPLACE_EXTENSION"_s, HandleReplaceExtensionCommand }, { "NORMAL_PATH"_s, HandleNormalPathCommand }, { "RELATIVE_PATH"_s, HandleRelativePathCommand }, - { "PROXIMATE_PATH"_s, HandleProximatePathCommand }, { "ABSOLUTE_PATH"_s, HandleAbsolutePathCommand }, - { "CMAKE_PATH"_s, HandleCMakePathCommand }, { "NATIVE_PATH"_s, HandleNativePathCommand }, { "CONVERT"_s, HandleConvertCommand }, { "COMPARE"_s, HandleCompareCommand }, diff --git a/Tests/FindBoost/TestPython/CMakeLists.txt b/Tests/FindBoost/TestPython/CMakeLists.txt index 4d137ca..6d292cd 100644 --- a/Tests/FindBoost/TestPython/CMakeLists.txt +++ b/Tests/FindBoost/TestPython/CMakeLists.txt @@ -2,10 +2,10 @@ cmake_minimum_required(VERSION 3.14) project(TestFindBoostPython CXX) include(CTest) -find_package(Boost OPTIONAL_COMPONENTS python27 python34 python35 python36 python37) +find_package(Boost OPTIONAL_COMPONENTS python27 python34 python35 python36 python37 python38 python39) set(FAILTEST TRUE) -foreach (v IN ITEMS 27 34 35 36 37) +foreach (v IN ITEMS 27 34 35 36 37 38 39) if (Boost_PYTHON${v}_FOUND) set(FAILTEST FALSE) break() diff --git a/Tests/RunCMake/cmake_path/CONCAT-wrong-path-result.txt b/Tests/RunCMake/cmake_path/APPEND_STRING-OUTPUT_VARIABLE-invalid-arg-result.txt index d00491f..d00491f 100644 --- a/Tests/RunCMake/cmake_path/CONCAT-wrong-path-result.txt +++ b/Tests/RunCMake/cmake_path/APPEND_STRING-OUTPUT_VARIABLE-invalid-arg-result.txt diff --git a/Tests/RunCMake/cmake_path/CONCAT-OUTPUT_VARIABLE-no-arg-result.txt b/Tests/RunCMake/cmake_path/APPEND_STRING-OUTPUT_VARIABLE-no-arg-result.txt index d00491f..d00491f 100644 --- a/Tests/RunCMake/cmake_path/CONCAT-OUTPUT_VARIABLE-no-arg-result.txt +++ b/Tests/RunCMake/cmake_path/APPEND_STRING-OUTPUT_VARIABLE-no-arg-result.txt diff --git a/Tests/RunCMake/cmake_path/CONCAT-OUTPUT_VARIABLE-invalid-arg-result.txt b/Tests/RunCMake/cmake_path/APPEND_STRING-wrong-path-result.txt index d00491f..d00491f 100644 --- a/Tests/RunCMake/cmake_path/CONCAT-OUTPUT_VARIABLE-invalid-arg-result.txt +++ b/Tests/RunCMake/cmake_path/APPEND_STRING-wrong-path-result.txt diff --git a/Tests/RunCMake/cmake_path/CONCAT.cmake b/Tests/RunCMake/cmake_path/APPEND_STRING.cmake index 62b5eb0..ea5f2dd 100644 --- a/Tests/RunCMake/cmake_path/CONCAT.cmake +++ b/Tests/RunCMake/cmake_path/APPEND_STRING.cmake @@ -3,13 +3,13 @@ include ("${RunCMake_SOURCE_DIR}/check_errors.cmake") unset (errors) set (path "/a/b") -cmake_path (CONCAT path "cd") +cmake_path (APPEND_STRING path "cd") if (NOT path STREQUAL "/a/bcd") list (APPEND errors "'${path}' instead of 'a/bcd'") endif() set (path "/a/b") -cmake_path (CONCAT path "cd" "ef" OUTPUT_VARIABLE output) +cmake_path (APPEND_STRING path "cd" "ef" OUTPUT_VARIABLE output) if (NOT path STREQUAL "/a/b") list (APPEND errors "input changed unexpectedly") endif() @@ -17,4 +17,4 @@ if (NOT output STREQUAL "/a/bcdef") list (APPEND errors "'${output}' instead of 'a/bcdef'") endif() -check_errors (CONCAT ${errors}) +check_errors (APPEND_STRING ${errors}) diff --git a/Tests/RunCMake/cmake_path/CMAKE_PATH-OUTPUT_VARIABLE-no-arg-result.txt b/Tests/RunCMake/cmake_path/CMAKE_PATH-OUTPUT_VARIABLE-no-arg-result.txt deleted file mode 100644 index d00491f..0000000 --- a/Tests/RunCMake/cmake_path/CMAKE_PATH-OUTPUT_VARIABLE-no-arg-result.txt +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/Tests/RunCMake/cmake_path/CMAKE_PATH-invalid-output-result.txt b/Tests/RunCMake/cmake_path/CMAKE_PATH-invalid-output-result.txt deleted file mode 100644 index d00491f..0000000 --- a/Tests/RunCMake/cmake_path/CMAKE_PATH-invalid-output-result.txt +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/Tests/RunCMake/cmake_path/CMAKE_PATH-missing-output-result.txt b/Tests/RunCMake/cmake_path/CMAKE_PATH-missing-output-result.txt deleted file mode 100644 index d00491f..0000000 --- a/Tests/RunCMake/cmake_path/CMAKE_PATH-missing-output-result.txt +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/Tests/RunCMake/cmake_path/CMAKE_PATH-unexpected-arg-result.txt b/Tests/RunCMake/cmake_path/CMAKE_PATH-unexpected-arg-result.txt deleted file mode 100644 index d00491f..0000000 --- a/Tests/RunCMake/cmake_path/CMAKE_PATH-unexpected-arg-result.txt +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/Tests/RunCMake/cmake_path/CMAKE_PATH-wrong-path-result.txt b/Tests/RunCMake/cmake_path/CMAKE_PATH-wrong-path-result.txt deleted file mode 100644 index d00491f..0000000 --- a/Tests/RunCMake/cmake_path/CMAKE_PATH-wrong-path-result.txt +++ /dev/null @@ -1 +0,0 @@ -1 diff --git a/Tests/RunCMake/cmake_path/COMPARE.cmake b/Tests/RunCMake/cmake_path/COMPARE.cmake index bc6b9b4..ecf7c82 100644 --- a/Tests/RunCMake/cmake_path/COMPARE.cmake +++ b/Tests/RunCMake/cmake_path/COMPARE.cmake @@ -2,19 +2,19 @@ include ("${RunCMake_SOURCE_DIR}/check_errors.cmake") unset (errors) -set (path "a///b/c") -cmake_path(COMPARE path EQUAL "a/b/c" output) +set(path "a///b/c") +cmake_path(COMPARE "${path}" EQUAL "a/b/c" output) if (NOT output) list (APPEND errors "'${path}' not equal to 'a/b/c'") endif() set (path "a/b/d/../c") -cmake_path(COMPARE path NOT_EQUAL "a/b/c" output) +cmake_path(COMPARE "${path}" NOT_EQUAL "a/b/c" output) if (NOT output) list (APPEND errors "'${path}' equal to 'a/b/c'") endif() cmake_path(NORMAL_PATH path) -cmake_path(COMPARE path EQUAL "a/b/c" output) +cmake_path(COMPARE "${path}" EQUAL "a/b/c" output) if (NOT output) list (APPEND errors "'${path}' not equal to 'a/b/c'") endif() diff --git a/Tests/RunCMake/cmake_path/PROXIMATE_PATH.cmake b/Tests/RunCMake/cmake_path/PROXIMATE_PATH.cmake deleted file mode 100644 index ad23377..0000000 --- a/Tests/RunCMake/cmake_path/PROXIMATE_PATH.cmake +++ /dev/null @@ -1,41 +0,0 @@ - -include ("${RunCMake_SOURCE_DIR}/check_errors.cmake") -unset (errors) - -if (WIN32) - set (path "c:/a/d") - cmake_path(PROXIMATE_PATH path BASE_DIRECTORY "e/d/c") - if (NOT path STREQUAL "c:/a/d") - list (APPEND errors "'${path}' instead of 'c:/a/d'") - endif() -else() - set (path "/a/d") - cmake_path(PROXIMATE_PATH path BASE_DIRECTORY "e/d/c") - if (NOT path STREQUAL "/a/d") - list (APPEND errors "'${path}' instead of '/a/d'") - endif() -endif() - -set (path "/a/d") -cmake_path(PROXIMATE_PATH path BASE_DIRECTORY "/a/b/c" OUTPUT_VARIABLE output) -if (NOT path STREQUAL "/a/d") - list (APPEND errors "input changed unexpectedly") -endif() -if (NOT output STREQUAL "../../d") - list (APPEND errors "'${output}' instead of '../../d'") -endif() - -set (path "${CMAKE_CURRENT_SOURCE_DIR}/a/d") -cmake_path(PROXIMATE_PATH path) -if (NOT path STREQUAL "a/d") - list (APPEND errors "'${path}' instead of 'a/d'") -endif() - -set (path "a/b/c") -cmake_path(PROXIMATE_PATH path) -if (NOT path STREQUAL "a/b/c") - list (APPEND errors "'${path}' instead of 'a/b/c'") -endif() - - -check_errors (PROXIMATE_PATH ${errors}) diff --git a/Tests/RunCMake/cmake_path/RunCMakeTest.cmake b/Tests/RunCMake/cmake_path/RunCMakeTest.cmake index ca9cba6..4edfb1a 100644 --- a/Tests/RunCMake/cmake_path/RunCMakeTest.cmake +++ b/Tests/RunCMake/cmake_path/RunCMakeTest.cmake @@ -11,14 +11,9 @@ foreach (subcommand IN ITEMS ROOT_NAME ROOT_DIRECTORY ROOT_PATH FILENAME EXTENSI run_cmake_command (GET-${subcommand}-wrong-path "${CMAKE_COMMAND}" "-DCMAKE_PATH_ARGUMENTS=GET wrong_path ${subcommand} output" -P "${RunCMake_SOURCE_DIR}/call-cmake_path.cmake") endforeach() -### COMPARE sub-command -foreach (subcommand IN ITEMS EQUAL NOT_EQUAL) - run_cmake_command (COMPARE-${subcommand}-wrong-path "${CMAKE_COMMAND}" "-DCMAKE_PATH_ARGUMENTS=COMPARE wrong_path ${subcommand} path2 output" -P "${RunCMake_SOURCE_DIR}/call-cmake_path.cmake") -endforeach() - -foreach (command IN ITEMS CONCAT REMOVE_FILENAME REPLACE_FILENAME +foreach (command IN ITEMS APPEND_STRING REMOVE_FILENAME REPLACE_FILENAME REMOVE_EXTENSION REPLACE_EXTENSION NORMAL_PATH - RELATIVE_PATH PROXIMATE_PATH ABSOLUTE_PATH) + RELATIVE_PATH ABSOLUTE_PATH) run_cmake_command (${command}-wrong-path "${CMAKE_COMMAND}" "-DCMAKE_PATH_ARGUMENTS=${command} wrong_path" -P "${RunCMake_SOURCE_DIR}/call-cmake_path.cmake") endforeach() @@ -55,7 +50,7 @@ foreach (subcommand IN ITEMS EQUAL NOT_EQUAL) run_cmake_command (COMPARE-${subcommand}-missing-output "${CMAKE_COMMAND}" "-DCMAKE_PATH_ARGUMENTS=COMPARE path ${subcommand} path2" -P "${RunCMake_SOURCE_DIR}/call-cmake_path.cmake") endforeach() -foreach (command IN ITEMS CMAKE_PATH NATIVE_PATH +foreach (command IN ITEMS SET NATIVE_PATH HAS_ROOT_NAME HAS_ROOT_DIRECTORY HAS_ROOT_PATH HAS_FILENAME HAS_EXTENSION HAS_STEM HAS_RELATIVE_PATH HAS_PARENT_PATH @@ -72,9 +67,9 @@ endforeach() ## OUTPUT_VARIABLE without argument set (RunCMake-stderr-file "OUTPUT_VARIABLE-no-arg-stderr.txt") -foreach (command IN ITEMS APPEND CONCAT REMOVE_FILENAME REPLACE_FILENAME +foreach (command IN ITEMS APPEND APPEND_STRING REMOVE_FILENAME REPLACE_FILENAME REMOVE_EXTENSION REPLACE_EXTENSION NORMAL_PATH - RELATIVE_PATH PROXIMATE_PATH ABSOLUTE_PATH) + RELATIVE_PATH ABSOLUTE_PATH) run_cmake_command (${command}-OUTPUT_VARIABLE-no-arg "${CMAKE_COMMAND}" "-DCMAKE_PATH_ARGUMENTS=${command} path OUTPUT_VARIABLE" -P "${RunCMake_SOURCE_DIR}/call-cmake_path.cmake") endforeach() @@ -98,7 +93,7 @@ foreach (subcommand IN ITEMS EQUAL NOT_EQUAL) run_cmake_command (COMPARE-${subcommand}-invalid-output "${CMAKE_COMMAND}" "-DCMAKE_PATH_ARGUMENTS=COMPARE path ${subcommand} path2" -DCHECK_INVALID_OUTPUT=ON -P "${RunCMake_SOURCE_DIR}/call-cmake_path.cmake") endforeach() -foreach (command IN ITEMS CMAKE_PATH NATIVE_PATH +foreach (command IN ITEMS NATIVE_PATH HAS_ROOT_NAME HAS_ROOT_DIRECTORY HAS_ROOT_PATH HAS_FILENAME HAS_EXTENSION HAS_STEM HAS_RELATIVE_PATH HAS_PARENT_PATH @@ -111,9 +106,9 @@ foreach (command IN ITEMS CMAKE_PATH NATIVE_PATH run_cmake_command (${command}-invalid-output "${CMAKE_COMMAND}" "-DCMAKE_PATH_ARGUMENTS=${command} path ${extra_args}" -DCHECK_INVALID_OUTPUT=ON -P "${RunCMake_SOURCE_DIR}/call-cmake_path.cmake") endforeach() -foreach (command IN ITEMS APPEND CONCAT REMOVE_FILENAME REPLACE_FILENAME +foreach (command IN ITEMS APPEND APPEND_STRING REMOVE_FILENAME REPLACE_FILENAME REMOVE_EXTENSION REPLACE_EXTENSION NORMAL_PATH - RELATIVE_PATH PROXIMATE_PATH ABSOLUTE_PATH) + RELATIVE_PATH ABSOLUTE_PATH) run_cmake_command (${command}-OUTPUT_VARIABLE-invalid-arg "${CMAKE_COMMAND}" "-DCMAKE_PATH_ARGUMENTS=${command} path OUTPUT_VARIABLE" -DCHECK_INVALID_OUTPUT=ON -P "${RunCMake_SOURCE_DIR}/call-cmake_path.cmake") endforeach() @@ -139,7 +134,7 @@ endforeach() foreach (command IN ITEMS REMOVE_FILENAME REPLACE_FILENAME REMOVE_EXTENSION REPLACE_EXTENSION NORMAL_PATH - RELATIVE_PATH PROXIMATE_PATH ABSOLUTE_PATH) + RELATIVE_PATH ABSOLUTE_PATH) if (command STREQUAL "REPLACE_FILENAME" OR command STREQUAL "REPLACE_EXTENSION") set (extra_args input) else() @@ -148,7 +143,7 @@ foreach (command IN ITEMS REMOVE_FILENAME REPLACE_FILENAME run_cmake_command (${command}-unexpected-arg "${CMAKE_COMMAND}" "-DCMAKE_PATH_ARGUMENTS=${command} path ${extra_args} unexpected" -P "${RunCMake_SOURCE_DIR}/call-cmake_path.cmake") endforeach() -foreach (command IN ITEMS CMAKE_PATH NATIVE_PATH +foreach (command IN ITEMS SET NATIVE_PATH HAS_ROOT_NAME HAS_ROOT_DIRECTORY HAS_ROOT_PATH HAS_FILENAME HAS_EXTENSION HAS_STEM HAS_RELATIVE_PATH HAS_PARENT_PATH @@ -170,17 +165,16 @@ run_cmake(COMPARE-wrong-operator) set (RunCMake_TEST_OPTIONS "-DRunCMake_SOURCE_DIR=${RunCMake_SOURCE_DIR}") run_cmake(GET) +run_cmake(SET) run_cmake(APPEND) -run_cmake(CONCAT) +run_cmake(APPEND_STRING) run_cmake(REMOVE_FILENAME) run_cmake(REPLACE_FILENAME) run_cmake(REMOVE_EXTENSION) run_cmake(REPLACE_EXTENSION) run_cmake(NORMAL_PATH) run_cmake(RELATIVE_PATH) -run_cmake(PROXIMATE_PATH) run_cmake(ABSOLUTE_PATH) -run_cmake(CMAKE_PATH) run_cmake(NATIVE_PATH) run_cmake(CONVERT) run_cmake(COMPARE) diff --git a/Tests/RunCMake/cmake_path/COMPARE-NOT_EQUAL-wrong-path-result.txt b/Tests/RunCMake/cmake_path/SET-missing-output-result.txt index d00491f..d00491f 100644 --- a/Tests/RunCMake/cmake_path/COMPARE-NOT_EQUAL-wrong-path-result.txt +++ b/Tests/RunCMake/cmake_path/SET-missing-output-result.txt diff --git a/Tests/RunCMake/cmake_path/COMPARE-EQUAL-wrong-path-result.txt b/Tests/RunCMake/cmake_path/SET-unexpected-arg-result.txt index d00491f..d00491f 100644 --- a/Tests/RunCMake/cmake_path/COMPARE-EQUAL-wrong-path-result.txt +++ b/Tests/RunCMake/cmake_path/SET-unexpected-arg-result.txt diff --git a/Tests/RunCMake/cmake_path/CMAKE_PATH.cmake b/Tests/RunCMake/cmake_path/SET.cmake index b9320f3..445783e 100644 --- a/Tests/RunCMake/cmake_path/CMAKE_PATH.cmake +++ b/Tests/RunCMake/cmake_path/SET.cmake @@ -2,42 +2,42 @@ include ("${RunCMake_SOURCE_DIR}/check_errors.cmake") unset (errors) -cmake_path(CMAKE_PATH path "/x/y/z/../../a/d") +cmake_path(SET path "/x/y/z/../../a/d") if (NOT path STREQUAL "/x/y/z/../../a/d") list (APPEND errors "'${path}' instead of '/x/y/z/../../a/d'") endif() -cmake_path(CMAKE_PATH path NORMALIZE "/x/y/z/../../a/d") +cmake_path(SET path NORMALIZE "/x/y/z/../../a/d") if (NOT path STREQUAL "/x/a/d") list (APPEND errors "'${path}' instead of '/x/a/d'") endif() if (WIN32) - cmake_path(CMAKE_PATH path "/x\\y/z\\..\\../a/d") + cmake_path(SET path "/x\\y/z\\..\\../a/d") if (NOT path STREQUAL "/x/y/z/../../a/d") list (APPEND errors "'${path}' instead of '/x/y/z/../../a/d'") endif() - cmake_path(CMAKE_PATH path NORMALIZE "/x\\y/z\\..\\../a/d") + cmake_path(SET path NORMALIZE "/x\\y/z\\..\\../a/d") if (NOT path STREQUAL "/x/a/d") list (APPEND errors "'${path}' instead of '/x/a/d'") endif() - cmake_path(CMAKE_PATH path "//?/c:/x\\y/z\\..\\../a/d") + cmake_path(SET path "//?/c:/x\\y/z\\..\\../a/d") if (NOT path STREQUAL "c:/x/y/z/../../a/d") list (APPEND errors "'${path}' instead of 'c:/x/y/z/../../a/d'") endif() - cmake_path(CMAKE_PATH path NORMALIZE "//?/c:/x\\y/z\\..\\../a/d") + cmake_path(SET path NORMALIZE "//?/c:/x\\y/z\\..\\../a/d") if (NOT path STREQUAL "c:/x/a/d") list (APPEND errors "'${path}' instead of 'c:/x/a/d'") endif() - cmake_path(CMAKE_PATH path "\\\\?\\UNC/host/x\\y/z\\..\\../a/d") + cmake_path(SET path "\\\\?\\UNC/host/x\\y/z\\..\\../a/d") if (NOT path STREQUAL "//host/x/y/z/../../a/d") list (APPEND errors "'${path}' instead of '//host/x/y/z/../../a/d'") endif() - cmake_path(CMAKE_PATH path NORMALIZE "\\\\?\\UNC\\host/x\\y/z\\..\\../a/d") + cmake_path(SET path NORMALIZE "\\\\?\\UNC\\host/x\\y/z\\..\\../a/d") if (NOT path STREQUAL "//host/x/a/d") list (APPEND errors "'${path}' instead of '//host/x/a/d'") endif() endif() -check_errors (CMAKE_PATH ${errors}) +check_errors (SET ${errors}) |