summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Help/manual/cmake-developer.7.rst143
-rw-r--r--Modules/ExternalProject.cmake3
-rw-r--r--Modules/FetchContent.cmake4
-rw-r--r--Modules/FindCUDAToolkit.cmake37
-rw-r--r--Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake2
-rw-r--r--Tests/RunCMake/CTestCommandLine/TestOutputTruncation_head-check.cmake1
-rw-r--r--Tests/RunCMake/CTestCommandLine/TestOutputTruncation_head-stderr.txt (renamed from Tests/RunCMake/CTestCommandLine/TestOutputTruncation-stderr.txt)0
-rw-r--r--Tests/RunCMake/CTestCommandLine/TestOutputTruncation_middle-check.cmake1
-rw-r--r--Tests/RunCMake/CTestCommandLine/TestOutputTruncation_middle-stderr.txt1
-rw-r--r--Tests/RunCMake/CTestCommandLine/TestOutputTruncation_tail-check.cmake1
-rw-r--r--Tests/RunCMake/CTestCommandLine/TestOutputTruncation_tail-stderr.txt1
-rw-r--r--Tests/RunCMake/ctest_test/RunCMakeTest.cmake19
-rw-r--r--Tests/RunCMake/ctest_test/TestOutputTruncation_head-check.cmake1
-rw-r--r--Tests/RunCMake/ctest_test/TestOutputTruncation_middle-check.cmake1
-rw-r--r--Tests/RunCMake/ctest_test/TestOutputTruncation_tail-check.cmake1
15 files changed, 122 insertions, 94 deletions
diff --git a/Help/manual/cmake-developer.7.rst b/Help/manual/cmake-developer.7.rst
index 2c6cd96..0f3c30a 100644
--- a/Help/manual/cmake-developer.7.rst
+++ b/Help/manual/cmake-developer.7.rst
@@ -18,6 +18,85 @@ See https://cmake.org/get-involved/ to get involved in development of
CMake upstream. It includes links to contribution instructions, which
in turn link to developer guides for CMake itself.
+Accessing Windows Registry
+==========================
+
+CMake offers some facilities to access the registry on ``Windows`` platforms.
+
+Query Windows Registry
+----------------------
+
+.. versionadded:: 3.24
+
+The :command:`cmake_host_system_information` command offers the possibility to
+query the registry on the local computer. See
+:ref:`cmake_host_system(QUERY_WINDOWS_REGISTRY) <Query Windows registry>` for
+more information.
+
+.. _`Find Using Windows Registry`:
+
+Find Using Windows Registry
+---------------------------
+
+.. versionchanged:: 3.24
+
+Options ``HINTS`` and ``PATHS`` of :command:`find_file`,
+:command:`find_library`, :command:`find_path`, :command:`find_program`, and
+:command:`find_package` commands offer the possibility, on ``Windows``
+platform, to query the registry.
+
+The formal syntax, as specified using
+`BNF <https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form>`_ notation with
+the regular extensions, for registry query is the following:
+
+.. raw:: latex
+
+ \begin{small}
+
+.. productionlist::
+ registry_query: '[' `sep_definition`? `root_key`
+ : ((`key_separator` `sub_key`)? (`value_separator` `value_name`_)?)? ']'
+ sep_definition: '{' `value_separator` '}'
+ root_key: 'HKLM' | 'HKEY_LOCAL_MACHINE' | 'HKCU' | 'HKEY_CURRENT_USER' |
+ : 'HKCR' | 'HKEY_CLASSES_ROOT' | 'HKCC' | 'HKEY_CURRENT_CONFIG' |
+ : 'HKU' | 'HKEY_USERS'
+ sub_key: `element` (`key_separator` `element`)*
+ key_separator: '/' | '\\'
+ value_separator: `element` | ';'
+ value_name: `element` | '(default)'
+ element: `character`\+
+ character: <any character except `key_separator` and `value_separator`>
+
+.. raw:: latex
+
+ \end{small}
+
+The :token:`sep_definition` optional item offers the possibility to specify
+the string used to separate the :token:`sub_key` from the :token:`value_name`
+item. If not specified, the character ``;`` is used. Multiple
+:token:`registry_query` items can be specified as part of a path.
+
+.. code-block:: cmake
+
+ # example using default separator
+ find_file(... PATHS "/root/[HKLM/Stuff;InstallDir]/lib[HKLM\\\\Stuff;Architecture]")
+
+ # example using different specified separators
+ find_library(... HINTS "/root/[{|}HKCU/Stuff|InstallDir]/lib[{@@}HKCU\\\\Stuff@@Architecture]")
+
+If the :token:`value_name` item is not specified or has the special name
+``(default)``, the content of the default value, if any, will be returned. The
+supported types for the :token:`value_name` are:
+
+* ``REG_SZ``.
+* ``REG_EXPAND_SZ``. The returned data is expanded.
+* ``REG_DWORD``.
+* ``REG_QWORD``.
+
+When the registry query failed, typically because the key does not exist or
+the data type is not supported, the string ``/REGISTRY-NOTFOUND`` is substituted
+to the ``[]`` query expression.
+
.. _`Find Modules`:
Find Modules
@@ -242,70 +321,6 @@ backwards compatibility for any old names that were actually in use.
Make sure you comment them as deprecated, so that no-one starts using
them.
-.. _`Find Using Windows Registry`:
-
-Find Using Windows Registry
----------------------------
-
-.. versionchanged:: 3.24
-
-Options ``HINTS`` and ``PATHS`` of :command:`find_file`,
-:command:`find_library`, :command:`find_path`, :command:`find_program`, and
-:command:`find_package` commands offer the possibility, on ``Windows``
-platform, to query the registry.
-
-The formal syntax, as specified using
-`BNF <https://en.wikipedia.org/wiki/Backus%E2%80%93Naur_form>`_ notation with
-the regular extensions, for registry query is the following:
-
-.. raw:: latex
-
- \begin{small}
-
-.. productionlist::
- registry_query: '[' `sep_definition`? `root_key`
- : ((`key_separator` `sub_key`)? (`value_separator` `value_name`_)?)? ']'
- sep_definition: '{' `value_separator` '}'
- root_key: 'HKLM' | 'HKEY_LOCAL_MACHINE' | 'HKCU' | 'HKEY_CURRENT_USER' |
- : 'HKCR' | 'HKEY_CLASSES_ROOT' | 'HKCC' | 'HKEY_CURRENT_CONFIG' |
- : 'HKU' | 'HKEY_USERS'
- sub_key: `element` (`key_separator` `element`)*
- key_separator: '/' | '\\'
- value_separator: `element` | ';'
- value_name: `element` | '(default)'
- element: `character`\+
- character: <any character except `key_separator` and `value_separator`>
-
-.. raw:: latex
-
- \end{small}
-
-The :token:`sep_definition` optional item offers the possibility to specify
-the string used to separate the :token:`sub_key` from the :token:`value_name`
-item. If not specified, the character ``;`` is used. Multiple
-:token:`registry_query` items can be specified as part of a path.
-
-.. code-block:: cmake
-
- # example using default separator
- find_file(... PATHS "/root/[HKLM/Stuff;InstallDir]/lib[HKLM\\\\Stuff;Architecture]")
-
- # example using different specified separators
- find_library(... HINTS "/root/[{|}HKCU/Stuff|InstallDir]/lib[{@@}HKCU\\\\Stuff@@Architecture]")
-
-If the :token:`value_name` item is not specified or has the special name
-``(default)``, the content of the default value, if any, will be returned. The
-supported types for the :token:`value_name` are:
-
-* ``REG_SZ``.
-* ``REG_EXPAND_SZ``. The returned data is expanded.
-* ``REG_DWORD``.
-* ``REG_QWORD``.
-
-When the registry query failed, typically because the key does not exist or
-the data type is not supported, the string ``/REGISTRY-NOTFOUND`` is substituted
-to the ``[]`` query expression.
-
A Sample Find Module
--------------------
diff --git a/Modules/ExternalProject.cmake b/Modules/ExternalProject.cmake
index c7948cd..9952658 100644
--- a/Modules/ExternalProject.cmake
+++ b/Modules/ExternalProject.cmake
@@ -301,6 +301,9 @@ External Project Definition
If ``GIT_SHALLOW`` is enabled then ``GIT_TAG`` works only with
branch names and tags. A commit hash is not allowed.
+ Note that if not provided, ``GIT_TAG`` defaults to ``master``, not the
+ default Git branch name.
+
``GIT_REMOTE_NAME <name>``
The optional name of the remote. If this option is not specified, it
defaults to ``origin``.
diff --git a/Modules/FetchContent.cmake b/Modules/FetchContent.cmake
index d016fb5..e490a98 100644
--- a/Modules/FetchContent.cmake
+++ b/Modules/FetchContent.cmake
@@ -772,7 +772,7 @@ to the declared details and leaving
googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG 703bd9caab50b139428cea1aaff9974ebee5742e # release-1.10.0
- FIND_PACKAGE_ARGS NAMES gtest
+ FIND_PACKAGE_ARGS NAMES GTest
)
FetchContent_Declare(
Catch2
@@ -786,7 +786,7 @@ to the declared details and leaving
For ``Catch2``, no additional arguments to :command:`find_package` are needed,
so no additional arguments are provided after the ``FIND_PACKAGE_ARGS``
-keyword. For ``googletest``, its package is more commonly called ``gtest``,
+keyword. For ``googletest``, its package is more commonly called ``GTest``,
so arguments are added to support it being found by that name.
If the user wanted to disable :command:`FetchContent_MakeAvailable` from
diff --git a/Modules/FindCUDAToolkit.cmake b/Modules/FindCUDAToolkit.cmake
index edad44a..5f83ccc 100644
--- a/Modules/FindCUDAToolkit.cmake
+++ b/Modules/FindCUDAToolkit.cmake
@@ -927,7 +927,7 @@ if(CUDAToolkit_FOUND)
endif()
_CUDAToolkit_find_and_add_import_lib(culibos) # it's a static library
- foreach (cuda_lib cublasLt cublas cufft curand cusparse nppc nvjpeg)
+ foreach (cuda_lib cublasLt cufft curand cusparse nppc nvjpeg)
_CUDAToolkit_find_and_add_import_lib(${cuda_lib})
_CUDAToolkit_find_and_add_import_lib(${cuda_lib}_static DEPS culibos)
endforeach()
@@ -935,8 +935,11 @@ if(CUDAToolkit_FOUND)
if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL 11.0.0)
# cublas depends on cublasLt
# https://docs.nvidia.com/cuda/archive/11.0/cublas/index.html#static-library
- _CUDAToolkit_find_and_add_import_lib(cublas DEPS cublasLt)
- _CUDAToolkit_find_and_add_import_lib(cublas_static DEPS cublasLt_static)
+ _CUDAToolkit_find_and_add_import_lib(cublas DEPS cublasLt culibos)
+ _CUDAToolkit_find_and_add_import_lib(cublas_static DEPS cublasLt_static culibos)
+ else()
+ _CUDAToolkit_find_and_add_import_lib(cublas DEPS culibos)
+ _CUDAToolkit_find_and_add_import_lib(cublas_static DEPS culibos)
endif()
# cuFFTW depends on cuFFT
@@ -947,25 +950,25 @@ if(CUDAToolkit_FOUND)
endif()
# cuSOLVER depends on cuBLAS, and cuSPARSE
- _CUDAToolkit_find_and_add_import_lib(cusolver DEPS cublas cusparse)
- _CUDAToolkit_find_and_add_import_lib(cusolver_static DEPS cublas_static cusparse_static culibos)
-
-
- if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL 10.1.2)
- # cusolver depends on liblapack_static.a starting with CUDA 10.1 update 2,
- # https://docs.nvidia.com/cuda/archive/11.5.0/cusolver/index.html#static-link-lapack
- _CUDAToolkit_find_and_add_import_lib(cusolver_lapack_static ALT lapack_static) # implementation detail static lib
- _CUDAToolkit_find_and_add_import_lib(cusolver_static DEPS cusolver_lapack_static)
- endif()
-
+ set(cusolver_deps cublas cusparse)
+ set(cusolver_static_deps cublas_static cusparse_static culibos)
if(CUDAToolkit_VERSION VERSION_GREATER 11.2.1)
# cusolver depends on libcusolver_metis and cublasLt
# https://docs.nvidia.com/cuda/archive/11.2.2/cusolver/index.html#link-dependency
- _CUDAToolkit_find_and_add_import_lib(cusolver DEPS cublasLt)
-
+ list(APPEND cusolver_deps cublasLt)
_CUDAToolkit_find_and_add_import_lib(cusolver_metis_static ALT metis_static) # implementation detail static lib
- _CUDAToolkit_find_and_add_import_lib(cusolver_static DEPS cusolver_metis_static cublasLt_static)
+ list(APPEND cusolver_static_deps cusolver_metis_static cublasLt_static)
+ endif()
+ if(CUDAToolkit_VERSION VERSION_GREATER_EQUAL 10.1.2)
+ # cusolver depends on liblapack_static.a starting with CUDA 10.1 update 2,
+ # https://docs.nvidia.com/cuda/archive/11.5.0/cusolver/index.html#static-link-lapack
+ _CUDAToolkit_find_and_add_import_lib(cusolver_lapack_static ALT lapack_static) # implementation detail static lib
+ list(APPEND cusolver_static_deps cusolver_lapack_static)
endif()
+ _CUDAToolkit_find_and_add_import_lib(cusolver DEPS ${cusolver_deps})
+ _CUDAToolkit_find_and_add_import_lib(cusolver_static DEPS ${cusolver_static_deps})
+ unset(cusolver_deps)
+ unset(cusolver_static_deps)
# nvGRAPH depends on cuRAND, and cuSOLVER.
_CUDAToolkit_find_and_add_import_lib(nvgraph DEPS curand cusolver)
diff --git a/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake
index 8ac1747..2ac1f36 100644
--- a/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CTestCommandLine/RunCMakeTest.cmake
@@ -284,7 +284,7 @@ function(run_TestOutputTruncation mode expected)
file(WRITE "${RunCMake_TEST_BINARY_DIR}/CTestTestfile.cmake" "
add_test(Truncation_${mode} \"${CMAKE_COMMAND}\" -E echo 123456789)
")
- run_cmake_command(TestOutputTruncation
+ run_cmake_command(TestOutputTruncation_${mode}
${CMAKE_CTEST_COMMAND} -M Experimental -T Test
--no-compress-output
--test-output-size-passed 5
diff --git a/Tests/RunCMake/CTestCommandLine/TestOutputTruncation_head-check.cmake b/Tests/RunCMake/CTestCommandLine/TestOutputTruncation_head-check.cmake
new file mode 100644
index 0000000..6065c30
--- /dev/null
+++ b/Tests/RunCMake/CTestCommandLine/TestOutputTruncation_head-check.cmake
@@ -0,0 +1 @@
+include(${RunCMake_SOURCE_DIR}/TestOutputTruncation-check.cmake)
diff --git a/Tests/RunCMake/CTestCommandLine/TestOutputTruncation-stderr.txt b/Tests/RunCMake/CTestCommandLine/TestOutputTruncation_head-stderr.txt
index 30b46ce..30b46ce 100644
--- a/Tests/RunCMake/CTestCommandLine/TestOutputTruncation-stderr.txt
+++ b/Tests/RunCMake/CTestCommandLine/TestOutputTruncation_head-stderr.txt
diff --git a/Tests/RunCMake/CTestCommandLine/TestOutputTruncation_middle-check.cmake b/Tests/RunCMake/CTestCommandLine/TestOutputTruncation_middle-check.cmake
new file mode 100644
index 0000000..6065c30
--- /dev/null
+++ b/Tests/RunCMake/CTestCommandLine/TestOutputTruncation_middle-check.cmake
@@ -0,0 +1 @@
+include(${RunCMake_SOURCE_DIR}/TestOutputTruncation-check.cmake)
diff --git a/Tests/RunCMake/CTestCommandLine/TestOutputTruncation_middle-stderr.txt b/Tests/RunCMake/CTestCommandLine/TestOutputTruncation_middle-stderr.txt
new file mode 100644
index 0000000..30b46ce
--- /dev/null
+++ b/Tests/RunCMake/CTestCommandLine/TestOutputTruncation_middle-stderr.txt
@@ -0,0 +1 @@
+^Cannot find file: .*/Tests/RunCMake/CTestCommandLine/TestOutputTruncation.*/DartConfiguration.tcl
diff --git a/Tests/RunCMake/CTestCommandLine/TestOutputTruncation_tail-check.cmake b/Tests/RunCMake/CTestCommandLine/TestOutputTruncation_tail-check.cmake
new file mode 100644
index 0000000..6065c30
--- /dev/null
+++ b/Tests/RunCMake/CTestCommandLine/TestOutputTruncation_tail-check.cmake
@@ -0,0 +1 @@
+include(${RunCMake_SOURCE_DIR}/TestOutputTruncation-check.cmake)
diff --git a/Tests/RunCMake/CTestCommandLine/TestOutputTruncation_tail-stderr.txt b/Tests/RunCMake/CTestCommandLine/TestOutputTruncation_tail-stderr.txt
new file mode 100644
index 0000000..30b46ce
--- /dev/null
+++ b/Tests/RunCMake/CTestCommandLine/TestOutputTruncation_tail-stderr.txt
@@ -0,0 +1 @@
+^Cannot find file: .*/Tests/RunCMake/CTestCommandLine/TestOutputTruncation.*/DartConfiguration.tcl
diff --git a/Tests/RunCMake/ctest_test/RunCMakeTest.cmake b/Tests/RunCMake/ctest_test/RunCMakeTest.cmake
index b41c271..1aa6359 100644
--- a/Tests/RunCMake/ctest_test/RunCMakeTest.cmake
+++ b/Tests/RunCMake/ctest_test/RunCMakeTest.cmake
@@ -84,18 +84,17 @@ run_TestOutputSize()
function(run_TestOutputTruncation mode expected)
set(CASE_CTEST_TEST_ARGS EXCLUDE RunCMakeVersion)
set(TRUNCATED_OUTPUT ${expected}) # used in TestOutputTruncation-check.cmake
- set(CASE_TEST_PREFIX_CODE [[
-set( CTEST_CUSTOM_TEST_OUTPUT_TRUNCATION${mode})
- ]])
- set(CASE_CMAKELISTS_SUFFIX_CODE [[
-add_test(NAME Truncation_${mode} COMMAND ${CMAKE_COMMAND} -E echo 123456789)
- ]])
+ string(CONCAT CASE_TEST_PREFIX_CODE "
+set(CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE 5)
+set(CTEST_CUSTOM_TEST_OUTPUT_TRUNCATION ${mode})" )
+ set(CASE_CMAKELISTS_SUFFIX_CODE "
+add_test(NAME Truncation_${mode} COMMAND \${CMAKE_COMMAND} -E echo 123456789)")
- run_ctest(TestOutputTruncation)
+ run_ctest(TestOutputTruncation_${mode})
endfunction()
-run_TestOutputTruncation("head" "...6789")
-run_TestOutputTruncation("middle" "12....*...89")
-run_TestOutputTruncation("tail" "12345...")
+run_TestOutputTruncation("head" "\\.\\.\\.6789")
+run_TestOutputTruncation("middle" "12\\.\\.\\..*\\.\\.\\.89")
+run_TestOutputTruncation("tail" "12345\\.\\.\\.")
run_ctest_test(TestRepeatBad1 REPEAT UNKNOWN:3)
run_ctest_test(TestRepeatBad2 REPEAT UNTIL_FAIL:-1)
diff --git a/Tests/RunCMake/ctest_test/TestOutputTruncation_head-check.cmake b/Tests/RunCMake/ctest_test/TestOutputTruncation_head-check.cmake
new file mode 100644
index 0000000..6065c30
--- /dev/null
+++ b/Tests/RunCMake/ctest_test/TestOutputTruncation_head-check.cmake
@@ -0,0 +1 @@
+include(${RunCMake_SOURCE_DIR}/TestOutputTruncation-check.cmake)
diff --git a/Tests/RunCMake/ctest_test/TestOutputTruncation_middle-check.cmake b/Tests/RunCMake/ctest_test/TestOutputTruncation_middle-check.cmake
new file mode 100644
index 0000000..6065c30
--- /dev/null
+++ b/Tests/RunCMake/ctest_test/TestOutputTruncation_middle-check.cmake
@@ -0,0 +1 @@
+include(${RunCMake_SOURCE_DIR}/TestOutputTruncation-check.cmake)
diff --git a/Tests/RunCMake/ctest_test/TestOutputTruncation_tail-check.cmake b/Tests/RunCMake/ctest_test/TestOutputTruncation_tail-check.cmake
new file mode 100644
index 0000000..6065c30
--- /dev/null
+++ b/Tests/RunCMake/ctest_test/TestOutputTruncation_tail-check.cmake
@@ -0,0 +1 @@
+include(${RunCMake_SOURCE_DIR}/TestOutputTruncation-check.cmake)