[Cmake-commits] CMake branch, master, updated. v3.14.5-1232-g4b68baa
Kitware Robot
kwrobot at kitware.com
Tue Jun 4 08:33:06 EDT 2019
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".
The branch, master has been updated
via 4b68baa776bf8ccc2911057fc79b558515438900 (commit)
via d4108f5585ae4e0ab79c9b192f9d6a0614f868cd (commit)
via 99b9b01c020a0b20c0eefa73a39138471c01a053 (commit)
via e591e22d4c7d2b4d4806cf47923e54269644b2a2 (commit)
via 7561fcda0918abf71b7fb0cfe67dd70fafe577ae (commit)
via f263650f95bdf87e2c50ada4a28d4fb729ac6f1c (commit)
via fada8cbfd6ae13d15b015f667a85096b15dc07b1 (commit)
via 162555d7ecd510a84fb26a2ebc90f0a3e9eabc1a (commit)
via 808b8180632aef06e7a3644fb4d3957722abc3f3 (commit)
via 9fd602bfd33479b1acecd40e5c1b76ce37d59798 (commit)
via ec66af2026e085e7b648b222794f0f213183ea1e (commit)
via 2d4787fc4ddc077e1d8fcb807768d1ecc7902a73 (commit)
via 3475e2728bad16899b50131785a61f43083e8ba9 (commit)
via 619416f8a30c99f87869559cf3829ce6d3431dca (commit)
from 99496f57769a45fb664f6865bd6935d37fe45467 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4b68baa776bf8ccc2911057fc79b558515438900
commit 4b68baa776bf8ccc2911057fc79b558515438900
Merge: d4108f5 162555d
Author: Brad King <brad.king at kitware.com>
AuthorDate: Tue Jun 4 12:32:11 2019 +0000
Commit: Kitware Robot <kwrobot at kitware.com>
CommitDate: Tue Jun 4 08:32:19 2019 -0400
Merge topic 'compiler_id_gen_exp_supports_multiple_ids'
162555d7ec Help: Add release notes for updated generator expressions
808b818063 Genex: CompileLang and CompileLangAndId now match against a list of ids
9fd602bfd3 Genex: PlatformId now can match against a list of ids.
ec66af2026 Genex: CompilerId now can match against a list of ids.
2d4787fc4d Genex: Add more extensive support for an unbounded number of parameters
Acked-by: Kitware Robot <kwrobot at kitware.com>
Merge-request: !3405
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d4108f5585ae4e0ab79c9b192f9d6a0614f868cd
commit d4108f5585ae4e0ab79c9b192f9d6a0614f868cd
Merge: 99b9b01 fada8cb
Author: Brad King <brad.king at kitware.com>
AuthorDate: Tue Jun 4 12:30:18 2019 +0000
Commit: Kitware Robot <kwrobot at kitware.com>
CommitDate: Tue Jun 4 08:30:26 2019 -0400
Merge topic 'check_language_respects_cuda_host_compiler'
fada8cbfd6 CheckLanguage: Report CMAKE_CUDA_HOST_COMPILER if needed for compilation
Acked-by: Kitware Robot <kwrobot at kitware.com>
Merge-request: !3407
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=99b9b01c020a0b20c0eefa73a39138471c01a053
commit 99b9b01c020a0b20c0eefa73a39138471c01a053
Merge: e591e22 3475e27
Author: Brad King <brad.king at kitware.com>
AuthorDate: Tue Jun 4 12:27:58 2019 +0000
Commit: Kitware Robot <kwrobot at kitware.com>
CommitDate: Tue Jun 4 08:28:09 2019 -0400
Merge topic 'print-correct-line-number'
3475e2728b cmListFileCache: When missing ending ) print starting line instead of last one
Acked-by: Kitware Robot <kwrobot at kitware.com>
Merge-request: !3398
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e591e22d4c7d2b4d4806cf47923e54269644b2a2
commit e591e22d4c7d2b4d4806cf47923e54269644b2a2
Merge: 7561fcd 619416f
Author: Brad King <brad.king at kitware.com>
AuthorDate: Tue Jun 4 12:25:38 2019 +0000
Commit: Kitware Robot <kwrobot at kitware.com>
CommitDate: Tue Jun 4 08:25:47 2019 -0400
Merge topic 'better_error_message_for_visibility_preset_property'
619416f8a3 The error message for VISIBILITY_PRESET now documents valid options.
Acked-by: Kitware Robot <kwrobot at kitware.com>
Merge-request: !3409
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7561fcda0918abf71b7fb0cfe67dd70fafe577ae
commit 7561fcda0918abf71b7fb0cfe67dd70fafe577ae
Merge: 99496f5 f263650
Author: Brad King <brad.king at kitware.com>
AuthorDate: Tue Jun 4 12:24:18 2019 +0000
Commit: Kitware Robot <kwrobot at kitware.com>
CommitDate: Tue Jun 4 08:24:29 2019 -0400
Merge topic 'test-explicit-dirs'
f263650f95 Tests: Fix RunCMake.CommandLine test to use generator in no-S-B case
Acked-by: Kitware Robot <kwrobot at kitware.com>
Merge-request: !3414
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f263650f95bdf87e2c50ada4a28d4fb729ac6f1c
commit f263650f95bdf87e2c50ada4a28d4fb729ac6f1c
Author: Brad King <brad.king at kitware.com>
AuthorDate: Mon Jun 3 14:57:19 2019 -0400
Commit: Brad King <brad.king at kitware.com>
CommitDate: Mon Jun 3 14:57:19 2019 -0400
Tests: Fix RunCMake.CommandLine test to use generator in no-S-B case
Apply the fix from commit baed22c4b0 (Tests: Fix RunCMake.CommandLine
test to use generator with -S and -B, 2019-04-10) to the `no-S-B` case
too. It also generates a build system and should use the generator
being tested.
diff --git a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake
index cee996c..7798b62 100644
--- a/Tests/RunCMake/CommandLine/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CommandLine/RunCMakeTest.cmake
@@ -68,6 +68,9 @@ run_cmake_command(cache-empty-entry
${CMAKE_COMMAND} --build ${RunCMake_SOURCE_DIR}/cache-empty-entry/)
function(run_ExplicitDirs)
+ set(RunCMake_TEST_NO_CLEAN 1)
+ set(RunCMake_TEST_NO_SOURCE_DIR 1)
+
set(source_dir ${RunCMake_BINARY_DIR}/ExplicitDirsMissing)
file(REMOVE_RECURSE "${source_dir}")
@@ -76,16 +79,15 @@ function(run_ExplicitDirs)
cmake_minimum_required(VERSION 3.13)
project(ExplicitDirsMissing LANGUAGES NONE)
]=])
- run_cmake_command(no-S-B ${CMAKE_COMMAND} -E chdir ${source_dir}
- ${CMAKE_COMMAND} -DFOO=BAR)
+ set(RunCMake_TEST_SOURCE_DIR "${source_dir}")
+ set(RunCMake_TEST_BINARY_DIR "${source_dir}")
+ run_cmake_with_options(no-S-B -DFOO=BAR)
set(source_dir ${RunCMake_SOURCE_DIR}/ExplicitDirs)
set(binary_dir ${RunCMake_BINARY_DIR}/ExplicitDirs-build)
set(RunCMake_TEST_SOURCE_DIR "${source_dir}")
set(RunCMake_TEST_BINARY_DIR "${binary_dir}")
- set(RunCMake_TEST_NO_CLEAN 1)
- set(RunCMake_TEST_NO_SOURCE_DIR 1)
file(REMOVE_RECURSE "${binary_dir}")
run_cmake_with_options(S-arg -S ${source_dir} ${binary_dir})
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=fada8cbfd6ae13d15b015f667a85096b15dc07b1
commit fada8cbfd6ae13d15b015f667a85096b15dc07b1
Author: Robert Maynard <robert.maynard at kitware.com>
AuthorDate: Fri May 31 08:39:16 2019 -0400
Commit: Brad King <brad.king at kitware.com>
CommitDate: Mon Jun 3 10:36:06 2019 -0400
CheckLanguage: Report CMAKE_CUDA_HOST_COMPILER if needed for compilation
Fixes: #19013
diff --git a/Modules/CheckLanguage.cmake b/Modules/CheckLanguage.cmake
index d096849..a1a3a7a 100644
--- a/Modules/CheckLanguage.cmake
+++ b/Modules/CheckLanguage.cmake
@@ -18,7 +18,9 @@ such as ``Fortran``. If :variable:`CMAKE_<LANG>_COMPILER` is already defined
the check does nothing. Otherwise it tries enabling the language in a
test project. The result is cached in :variable:`CMAKE_<LANG>_COMPILER`
as the compiler that was found, or ``NOTFOUND`` if the language cannot be
-enabled.
+enabled. For CUDA which can have an explicit host compiler, the cache
+:variable:`CMAKE_CUDA_HOST_COMPILER` variable will be set if it was required
+for compilation.
Example:
@@ -39,13 +41,23 @@ macro(check_language lang)
set(_desc "Looking for a ${lang} compiler")
message(STATUS ${_desc})
file(REMOVE_RECURSE ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Check${lang})
- file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Check${lang}/CMakeLists.txt"
+
+ set(extra_compiler_variables)
+ if(lang STREQUAL CUDA)
+ set(extra_compiler_variables "set(CMAKE_CUDA_HOST_COMPILER \\\"\${CMAKE_CUDA_HOST_COMPILER}\\\")")
+ endif()
+
+ set(content
"cmake_minimum_required(VERSION ${CMAKE_VERSION})
project(Check${lang} ${lang})
file(WRITE \"\${CMAKE_CURRENT_BINARY_DIR}/result.cmake\"
\"set(CMAKE_${lang}_COMPILER \\\"\${CMAKE_${lang}_COMPILER}\\\")\\n\"
- )
-")
+ \"${extra_compiler_variables}\\n\"
+ )"
+ )
+
+ file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/Check${lang}/CMakeLists.txt"
+ "${content}")
if(CMAKE_GENERATOR_INSTANCE)
set(_D_CMAKE_GENERATOR_INSTANCE "-DCMAKE_GENERATOR_INSTANCE:INTERNAL=${CMAKE_GENERATOR_INSTANCE}")
else()
@@ -75,5 +87,12 @@ file(WRITE \"\${CMAKE_CURRENT_BINARY_DIR}/result.cmake\"
message(STATUS "${_desc} - ${CMAKE_${lang}_COMPILER}")
set(CMAKE_${lang}_COMPILER "${CMAKE_${lang}_COMPILER}" CACHE FILEPATH "${lang} compiler")
mark_as_advanced(CMAKE_${lang}_COMPILER)
+
+ if(CMAKE_${lang}_HOST_COMPILER)
+ message(STATUS "Looking for a ${lang} host compiler - ${CMAKE_${lang}_HOST_COMPILER}")
+ set(CMAKE_${lang}_HOST_COMPILER "${CMAKE_${lang}_HOST_COMPILER}" CACHE FILEPATH "${lang} host compiler")
+ mark_as_advanced(CMAKE_${lang}_HOST_COMPILER)
+ endif()
+
endif()
endmacro()
diff --git a/Tests/CMakeOnly/CheckLanguage/CMakeLists.txt b/Tests/CMakeOnly/CheckLanguage/CMakeLists.txt
index f5336dc..ca4becb 100644
--- a/Tests/CMakeOnly/CheckLanguage/CMakeLists.txt
+++ b/Tests/CMakeOnly/CheckLanguage/CMakeLists.txt
@@ -7,7 +7,8 @@ set(expect_C 1)
set(expect_CXX 1)
unset(expect_Fortran)
set(expect_NoSuchLanguage 0)
-foreach(lang C CXX Fortran NoSuchLanguage)
+
+foreach(lang C CXX Fortran CUDA NoSuchLanguage)
check_language(${lang})
if(NOT DEFINED CMAKE_${lang}_COMPILER)
message(FATAL_ERROR "check_language(${lang}) did not set result")
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=162555d7ecd510a84fb26a2ebc90f0a3e9eabc1a
commit 162555d7ecd510a84fb26a2ebc90f0a3e9eabc1a
Author: Robert Maynard <robert.maynard at kitware.com>
AuthorDate: Thu May 30 16:46:22 2019 -0400
Commit: Brad King <brad.king at kitware.com>
CommitDate: Mon Jun 3 10:23:49 2019 -0400
Help: Add release notes for updated generator expressions
diff --git a/Help/release/dev/genex-comma-separated.rst b/Help/release/dev/genex-comma-separated.rst
new file mode 100644
index 0000000..f27f781
--- /dev/null
+++ b/Help/release/dev/genex-comma-separated.rst
@@ -0,0 +1,8 @@
+genex-comma-separated
+---------------------
+
+* The :manual:`generator expressions <cmake-generator-expressions(7)>`
+ ``C_COMPILER_ID``, ``CXX_COMPILER_ID``, ``CUDA_COMPILER_ID``,
+ ``Fortran_COMPILER_ID``, ``COMPILE_LANGUAGE``, ``COMPILE_LANG_AND_ID``, and
+ ``PLATFORM_ID`` learned to support matching one value from a comma-separated
+ list.
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=808b8180632aef06e7a3644fb4d3957722abc3f3
commit 808b8180632aef06e7a3644fb4d3957722abc3f3
Author: Robert Maynard <robert.maynard at kitware.com>
AuthorDate: Thu May 30 10:00:19 2019 -0400
Commit: Brad King <brad.king at kitware.com>
CommitDate: Mon Jun 3 10:20:23 2019 -0400
Genex: CompileLang and CompileLangAndId now match against a list of ids
This allows for expressions such as:
$<COMPILE_LANG_AND_ID, CXX, GNU, Clang>
diff --git a/Help/manual/cmake-generator-expressions.7.rst b/Help/manual/cmake-generator-expressions.7.rst
index 1136151..c0449fb 100644
--- a/Help/manual/cmake-generator-expressions.7.rst
+++ b/Help/manual/cmake-generator-expressions.7.rst
@@ -164,20 +164,20 @@ Variable Queries
.. _`Boolean COMPILE_LANGUAGE Generator Expression`:
-``$<COMPILE_LANG_AND_ID:language,compiler_id>``
+``$<COMPILE_LANG_AND_ID:language,compiler_ids>``
``1`` when the language used for compilation unit matches ``language`` and
- the CMake's compiler id of the language compiler matches ``compiler_id``,
- otherwise ``0``. This expression is a short form for the combination of
- ``$<COMPILE_LANGUAGE:language>`` and ``$<LANG_COMPILER_ID:compiler_id>``.
- This expression may be used to specify compile options,
- compile definitions, and include directories for source files of a
+ the CMake's compiler id of the language compiler matches any one of the
+ entries in ``compiler_ids``, otherwise ``0``. This expression is a short form
+ for the combination of ``$<COMPILE_LANGUAGE:language>`` and
+ ``$<LANG_COMPILER_ID:compiler_ids>``. This expression may be used to specify
+ compile options, compile definitions, and include directories for source files of a
particular language and compiler combination in a target. For example:
.. code-block:: cmake
add_executable(myapp main.cpp foo.c bar.cpp zot.cu)
target_compile_definitions(myapp
- PRIVATE $<$<COMPILE_LANG_AND_ID:CXX,Clang>:COMPILING_CXX_WITH_CLANG>
+ PRIVATE $<$<COMPILE_LANG_AND_ID:CXX,AppleClang,Clang>:COMPILING_CXX_WITH_CLANG>
$<$<COMPILE_LANG_AND_ID:CXX,Intel>:COMPILING_CXX_WITH_INTEL>
$<$<COMPILE_LANG_AND_ID:C,Clang>:COMPILING_C_WITH_CLANG>
)
@@ -200,10 +200,10 @@ Variable Queries
$<$<AND:$<COMPILE_LANGUAGE:C>,$<C_COMPILER_ID:Clang>>:COMPILING_C_WITH_CLANG>
)
-``$<COMPILE_LANGUAGE:language>``
- ``1`` when the language used for compilation unit matches ``language``,
- otherwise ``0``. This expression may be used to specify compile options,
- compile definitions, and include directories for source files of a
+``$<COMPILE_LANGUAGE:languages>``
+ ``1`` when the language used for compilation unit matches any of the entries
+ in ``languages``, otherwise ``0``. This expression may be used to specify
+ compile options, compile definitions, and include directories for source files of a
particular language in a target. For example:
.. code-block:: cmake
@@ -217,7 +217,7 @@ Variable Queries
$<$<COMPILE_LANGUAGE:CUDA>:COMPILING_CUDA>
)
target_include_directories(myapp
- PRIVATE $<$<COMPILE_LANGUAGE:CXX>:/opt/foo/cxx_headers>
+ PRIVATE $<$<COMPILE_LANGUAGE:CXX,CUDA>:/opt/foo/headers>
)
This specifies the use of the ``-fno-exceptions`` compile option,
diff --git a/Source/cmGeneratorExpressionNode.cxx b/Source/cmGeneratorExpressionNode.cxx
index 4744309..a60c75c 100644
--- a/Source/cmGeneratorExpressionNode.cxx
+++ b/Source/cmGeneratorExpressionNode.cxx
@@ -951,7 +951,7 @@ static const struct CompileLanguageNode : public cmGeneratorExpressionNode
{
CompileLanguageNode() {} // NOLINT(modernize-use-equals-default)
- int NumExpectedParameters() const override { return OneOrZeroParameters; }
+ int NumExpectedParameters() const override { return ZeroOrMoreParameters; }
std::string Evaluate(
const std::vector<std::string>& parameters,
@@ -982,7 +982,13 @@ static const struct CompileLanguageNode : public cmGeneratorExpressionNode
if (parameters.empty()) {
return context->Language;
}
- return context->Language == parameters.front() ? "1" : "0";
+
+ for (auto& param : parameters) {
+ if (context->Language == param) {
+ return "1";
+ }
+ }
+ return "0";
}
} languageNode;
@@ -990,7 +996,7 @@ static const struct CompileLanguageAndIdNode : public cmGeneratorExpressionNode
{
CompileLanguageAndIdNode() {} // NOLINT(modernize-use-equals-default)
- int NumExpectedParameters() const override { return 2; }
+ int NumExpectedParameters() const override { return TwoOrMoreParameters; }
std::string Evaluate(
const std::vector<std::string>& parameters,
@@ -1023,7 +1029,8 @@ static const struct CompileLanguageAndIdNode : public cmGeneratorExpressionNode
const std::string& lang = context->Language;
if (lang == parameters.front()) {
- std::vector<std::string> idParameter = { parameters[1] };
+ std::vector<std::string> idParameter((parameters.cbegin() + 1),
+ parameters.cend());
return CompilerIdNode{ lang.c_str() }.EvaluateWithLanguage(
idParameter, context, content, dagChecker, lang);
}
diff --git a/Tests/CMakeCommands/target_compile_definitions/CMakeLists.txt b/Tests/CMakeCommands/target_compile_definitions/CMakeLists.txt
index 7dc7995..a5bc1e1 100644
--- a/Tests/CMakeCommands/target_compile_definitions/CMakeLists.txt
+++ b/Tests/CMakeCommands/target_compile_definitions/CMakeLists.txt
@@ -34,6 +34,7 @@ target_compile_definitions(consumer
CONSUMER_LANG_$<COMPILE_LANGUAGE>
LANG_IS_CXX=$<COMPILE_LANGUAGE:CXX>
LANG_IS_C=$<COMPILE_LANGUAGE:C>
+ LANG_IS_C_OR_CXX=$<COMPILE_LANGUAGE:C,CXX>
)
if(CMAKE_GENERATOR MATCHES "Visual Studio|Xcode")
target_compile_definitions(consumer
diff --git a/Tests/CMakeCommands/target_compile_definitions/consumer.c b/Tests/CMakeCommands/target_compile_definitions/consumer.c
index bacd4c4..bb65e01 100644
--- a/Tests/CMakeCommands/target_compile_definitions/consumer.c
+++ b/Tests/CMakeCommands/target_compile_definitions/consumer.c
@@ -35,6 +35,10 @@
# endif
#endif
+#if !LANG_IS_C_OR_CXX
+# error Expected LANG_IS_C_OR_CXX
+#endif
+
void consumer_c()
{
}
diff --git a/Tests/CMakeCommands/target_compile_options/CMakeLists.txt b/Tests/CMakeCommands/target_compile_options/CMakeLists.txt
index ee187f5..a7055b1 100644
--- a/Tests/CMakeCommands/target_compile_options/CMakeLists.txt
+++ b/Tests/CMakeCommands/target_compile_options/CMakeLists.txt
@@ -9,6 +9,7 @@ add_executable(target_compile_options
target_compile_options(target_compile_options
PRIVATE $<$<CXX_COMPILER_ID:AppleClang,Clang,GNU>:-DMY_PRIVATE_DEFINE>
PUBLIC $<$<COMPILE_LANG_AND_ID:CXX,GNU>:-DMY_PUBLIC_DEFINE>
+ PUBLIC $<$<COMPILE_LANG_AND_ID:CXX,GNU,Clang,AppleClang>:-DMY_MUTLI_COMP_PUBLIC_DEFINE>
INTERFACE $<$<CXX_COMPILER_ID:GNU>:-DMY_INTERFACE_DEFINE>
INTERFACE $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-DMY_MULTI_COMP_INTERFACE_DEFINE>
)
diff --git a/Tests/CMakeCommands/target_compile_options/consumer.cpp b/Tests/CMakeCommands/target_compile_options/consumer.cpp
index 5cbe049..78928b4 100644
--- a/Tests/CMakeCommands/target_compile_options/consumer.cpp
+++ b/Tests/CMakeCommands/target_compile_options/consumer.cpp
@@ -17,6 +17,10 @@
# error Expected MY_MULTI_COMP_INTERFACE_DEFINE
# endif
+# ifndef MY_MUTLI_COMP_PUBLIC_DEFINE
+# error Expected MY_MUTLI_COMP_PUBLIC_DEFINE
+# endif
+
#endif
#ifdef DO_CLANG_TESTS
@@ -29,6 +33,10 @@
# error Expected MY_MULTI_COMP_INTERFACE_DEFINE
# endif
+# ifndef MY_MUTLI_COMP_PUBLIC_DEFINE
+# error Expected MY_MUTLI_COMP_PUBLIC_DEFINE
+# endif
+
#endif
#ifndef CONSUMER_LANG_CXX
diff --git a/Tests/CMakeCommands/target_compile_options/main.cpp b/Tests/CMakeCommands/target_compile_options/main.cpp
index edefdf2..7608400 100644
--- a/Tests/CMakeCommands/target_compile_options/main.cpp
+++ b/Tests/CMakeCommands/target_compile_options/main.cpp
@@ -9,6 +9,10 @@
# error Expected MY_PUBLIC_DEFINE
# endif
+# ifndef MY_MUTLI_COMP_PUBLIC_DEFINE
+# error Expected MY_MUTLI_COMP_PUBLIC_DEFINE
+# endif
+
# ifdef MY_INTERFACE_DEFINE
# error Unexpected MY_INTERFACE_DEFINE
# endif
@@ -25,6 +29,10 @@
# error Unexpected MY_PUBLIC_DEFINE
# endif
+# ifndef MY_MUTLI_COMP_PUBLIC_DEFINE
+# error Expected MY_MUTLI_COMP_PUBLIC_DEFINE
+# endif
+
#endif
int main()
diff --git a/Tests/RunCMake/GeneratorExpression/COMPILE_LANG_AND_ID-add_custom_command-stderr.txt b/Tests/RunCMake/GeneratorExpression/COMPILE_LANG_AND_ID-add_custom_command-stderr.txt
index fc3c3de..2ee96ed 100644
--- a/Tests/RunCMake/GeneratorExpression/COMPILE_LANG_AND_ID-add_custom_command-stderr.txt
+++ b/Tests/RunCMake/GeneratorExpression/COMPILE_LANG_AND_ID-add_custom_command-stderr.txt
@@ -3,7 +3,6 @@ CMake Error at COMPILE_LANG_AND_ID-add_custom_command.cmake:2 \(add_custom_comma
\$<COMPILE_LANG_AND_ID>
- \$<COMPILE_LANG_AND_ID> expression requires 2 comma separated parameters,
- but got 0 instead.
+ \$<COMPILE_LANG_AND_ID> expression requires at least two parameters.
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)
diff --git a/Tests/RunCMake/GeneratorExpression/COMPILE_LANG_AND_ID-target_sources-stderr.txt b/Tests/RunCMake/GeneratorExpression/COMPILE_LANG_AND_ID-target_sources-stderr.txt
index 44d8684..3ecbdc3 100644
--- a/Tests/RunCMake/GeneratorExpression/COMPILE_LANG_AND_ID-target_sources-stderr.txt
+++ b/Tests/RunCMake/GeneratorExpression/COMPILE_LANG_AND_ID-target_sources-stderr.txt
@@ -3,7 +3,6 @@ CMake Error at COMPILE_LANG_AND_ID-target_sources.cmake:2 \(target_sources\):
\$<COMPILE_LANG_AND_ID>
- \$<COMPILE_LANG_AND_ID> expression requires 2 comma separated parameters,
- but got 0 instead.
+ \$<COMPILE_LANG_AND_ID> expression requires at least two parameters.
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9fd602bfd33479b1acecd40e5c1b76ce37d59798
commit 9fd602bfd33479b1acecd40e5c1b76ce37d59798
Author: Robert Maynard <robert.maynard at kitware.com>
AuthorDate: Wed May 29 14:55:45 2019 -0400
Commit: Brad King <brad.king at kitware.com>
CommitDate: Mon Jun 3 10:20:23 2019 -0400
Genex: PlatformId now can match against a list of ids.
diff --git a/Help/manual/cmake-generator-expressions.7.rst b/Help/manual/cmake-generator-expressions.7.rst
index c03e701..1136151 100644
--- a/Help/manual/cmake-generator-expressions.7.rst
+++ b/Help/manual/cmake-generator-expressions.7.rst
@@ -110,9 +110,10 @@ Variable Queries
The mapping in :prop_tgt:`MAP_IMPORTED_CONFIG_<CONFIG>` is also considered by
this expression when it is evaluated on a property on an :prop_tgt:`IMPORTED`
target.
-``$<PLATFORM_ID:platform_id>``
- ``1`` if the CMake's platform id matches ``platform_id``
- otherwise ``0``.
+``$<PLATFORM_ID:platform_ids>``
+ where ``platform_ids`` is a comma-separated list.
+ ``1`` if the CMake's platform id matches any one of the entries in
+ ``platform_ids``, otherwise ``0``.
See also the :variable:`CMAKE_SYSTEM_NAME` variable.
``$<C_COMPILER_ID:compiler_ids>``
where ``compiler_ids`` is a comma-separated list.
diff --git a/Source/cmGeneratorExpressionNode.cxx b/Source/cmGeneratorExpressionNode.cxx
index 7fcd3f3..4744309 100644
--- a/Source/cmGeneratorExpressionNode.cxx
+++ b/Source/cmGeneratorExpressionNode.cxx
@@ -776,7 +776,7 @@ struct PlatformIdNode : public cmGeneratorExpressionNode
{
PlatformIdNode() {} // NOLINT(modernize-use-equals-default)
- int NumExpectedParameters() const override { return OneOrZeroParameters; }
+ int NumExpectedParameters() const override { return ZeroOrMoreParameters; }
std::string Evaluate(
const std::vector<std::string>& parameters,
@@ -794,8 +794,10 @@ struct PlatformIdNode : public cmGeneratorExpressionNode
return parameters.front().empty() ? "1" : "0";
}
- if (parameters.front() == platformId) {
- return "1";
+ for (auto& param : parameters) {
+ if (param == platformId) {
+ return "1";
+ }
}
return "0";
}
diff --git a/Tests/GeneratorExpression/CMakeLists.txt b/Tests/GeneratorExpression/CMakeLists.txt
index 5ba0dc0..3ff2b85 100644
--- a/Tests/GeneratorExpression/CMakeLists.txt
+++ b/Tests/GeneratorExpression/CMakeLists.txt
@@ -220,6 +220,7 @@ add_custom_target(check-part3 ALL
-Dtest_early_termination_2=$<$<1:>:,
-Dsystem_name=${CMAKE_HOST_SYSTEM_NAME}
-Dtest_platform_id=$<PLATFORM_ID>
+ -Dtest_platform_id_supported=$<PLATFORM_ID:Linux,Windows,Darwin>
-Dtest_platform_id_Linux=$<PLATFORM_ID:Linux>
-Dtest_platform_id_Windows=$<PLATFORM_ID:Windows>
-Dtest_platform_id_Darwin=$<PLATFORM_ID:Darwin>
diff --git a/Tests/GeneratorExpression/check-part3.cmake b/Tests/GeneratorExpression/check-part3.cmake
index 9014406..4fb7308 100644
--- a/Tests/GeneratorExpression/check-part3.cmake
+++ b/Tests/GeneratorExpression/check-part3.cmake
@@ -28,11 +28,16 @@ check(test_early_termination_2 "$<:,")
check(test_platform_id "${system_name}")
foreach(system Linux Windows Darwin)
if(system_name STREQUAL system)
+ check(test_platform_id_supported 1)
check(test_platform_id_${system} 1)
+ set(platform_supported 1)
else()
check(test_platform_id_${system} 0)
endif()
endforeach()
+if(NOT platform_supported)
+ check(test_platform_id_supported 0)
+endif()
check(lower_case "mi,xed")
check(upper_case "MIX,ED")
check(make_c_identifier "_4f_oo__bar__")
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ec66af2026e085e7b648b222794f0f213183ea1e
commit ec66af2026e085e7b648b222794f0f213183ea1e
Author: Robert Maynard <robert.maynard at kitware.com>
AuthorDate: Wed May 29 14:55:18 2019 -0400
Commit: Brad King <brad.king at kitware.com>
CommitDate: Mon Jun 3 10:20:23 2019 -0400
Genex: CompilerId now can match against a list of ids.
This allows for expressions like:
$<$<CXX_COMPILER_ID:Clang,GNU>:-DMY_PRIVATE_DEFINE>
diff --git a/Help/manual/cmake-generator-expressions.7.rst b/Help/manual/cmake-generator-expressions.7.rst
index f2e6597..c03e701 100644
--- a/Help/manual/cmake-generator-expressions.7.rst
+++ b/Help/manual/cmake-generator-expressions.7.rst
@@ -114,20 +114,25 @@ Variable Queries
``1`` if the CMake's platform id matches ``platform_id``
otherwise ``0``.
See also the :variable:`CMAKE_SYSTEM_NAME` variable.
-``$<C_COMPILER_ID:compiler_id>``
- ``1`` if the CMake's compiler id of the C compiler matches ``compiler_id``,
- otherwise ``0``.
+``$<C_COMPILER_ID:compiler_ids>``
+ where ``compiler_ids`` is a comma-separated list.
+ ``1`` if the CMake's compiler id of the C compiler matches any one
+ of the entries in ``compiler_ids``, otherwise ``0``.
See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
-``$<CXX_COMPILER_ID:compiler_id>``
- ``1`` if the CMake's compiler id of the CXX compiler matches ``compiler_id``,
- otherwise ``0``.
-``$<CUDA_COMPILER_ID:compiler_id>``
- ``1`` if the CMake's compiler id of the CUDA compiler matches ``compiler_id``,
- otherwise ``0``.
+``$<CXX_COMPILER_ID:compiler_ids>``
+ where ``compiler_ids`` is a comma-separated list.
+ ``1`` if the CMake's compiler id of the CXX compiler matches any one
+ of the entries in ``compiler_ids``, otherwise ``0``.
See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
-``$<Fortran_COMPILER_ID:compiler_id>``
- ``1`` if the CMake's compiler id of the Fortran compiler matches ``compiler_id``,
- otherwise ``0``.
+``$<CUDA_COMPILER_ID:compiler_ids>``
+ where ``compiler_ids`` is a comma-separated list.
+ ``1`` if the CMake's compiler id of the CUDA compiler matches any one
+ of the entries in ``compiler_ids``, otherwise ``0``.
+ See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
+``$<Fortran_COMPILER_ID:compiler_ids>``
+ where ``compiler_ids`` is a comma-separated list.
+ ``1`` if the CMake's compiler id of the Fortran compiler matches any one
+ of the entries in ``compiler_ids``, otherwise ``0``.
See also the :variable:`CMAKE_<LANG>_COMPILER_ID` variable.
``$<C_COMPILER_VERSION:version>``
``1`` if the version of the C compiler matches ``version``, otherwise ``0``.
diff --git a/Source/cmGeneratorExpressionNode.cxx b/Source/cmGeneratorExpressionNode.cxx
index 68ef170..7fcd3f3 100644
--- a/Source/cmGeneratorExpressionNode.cxx
+++ b/Source/cmGeneratorExpressionNode.cxx
@@ -632,7 +632,7 @@ struct CompilerIdNode : public cmGeneratorExpressionNode
{
}
- int NumExpectedParameters() const override { return OneOrZeroParameters; }
+ int NumExpectedParameters() const override { return ZeroOrMoreParameters; }
std::string Evaluate(
const std::vector<std::string>& parameters,
@@ -664,36 +664,39 @@ struct CompilerIdNode : public cmGeneratorExpressionNode
if (parameters.empty()) {
return compilerId;
}
- static cmsys::RegularExpression compilerIdValidator("^[A-Za-z0-9_]*$");
- if (!compilerIdValidator.find(parameters.front())) {
- reportError(context, content->GetOriginalExpression(),
- "Expression syntax not recognized.");
- return std::string();
- }
if (compilerId.empty()) {
return parameters.front().empty() ? "1" : "0";
}
+ static cmsys::RegularExpression compilerIdValidator("^[A-Za-z0-9_]*$");
- if (strcmp(parameters.front().c_str(), compilerId.c_str()) == 0) {
- return "1";
- }
+ for (auto& param : parameters) {
- if (cmsysString_strcasecmp(parameters.front().c_str(),
- compilerId.c_str()) == 0) {
- switch (context->LG->GetPolicyStatus(cmPolicies::CMP0044)) {
- case cmPolicies::WARN: {
- std::ostringstream e;
- e << cmPolicies::GetPolicyWarning(cmPolicies::CMP0044);
- context->LG->GetCMakeInstance()->IssueMessage(
- MessageType::AUTHOR_WARNING, e.str(), context->Backtrace);
- CM_FALLTHROUGH;
+ if (!compilerIdValidator.find(param)) {
+ reportError(context, content->GetOriginalExpression(),
+ "Expression syntax not recognized.");
+ return std::string();
+ }
+
+ if (strcmp(param.c_str(), compilerId.c_str()) == 0) {
+ return "1";
+ }
+
+ if (cmsysString_strcasecmp(param.c_str(), compilerId.c_str()) == 0) {
+ switch (context->LG->GetPolicyStatus(cmPolicies::CMP0044)) {
+ case cmPolicies::WARN: {
+ std::ostringstream e;
+ e << cmPolicies::GetPolicyWarning(cmPolicies::CMP0044);
+ context->LG->GetCMakeInstance()->IssueMessage(
+ MessageType::AUTHOR_WARNING, e.str(), context->Backtrace);
+ CM_FALLTHROUGH;
+ }
+ case cmPolicies::OLD:
+ return "1";
+ case cmPolicies::NEW:
+ case cmPolicies::REQUIRED_ALWAYS:
+ case cmPolicies::REQUIRED_IF_USED:
+ break;
}
- case cmPolicies::OLD:
- return "1";
- case cmPolicies::NEW:
- case cmPolicies::REQUIRED_ALWAYS:
- case cmPolicies::REQUIRED_IF_USED:
- break;
}
}
return "0";
diff --git a/Tests/CMakeCommands/target_compile_options/CMakeLists.txt b/Tests/CMakeCommands/target_compile_options/CMakeLists.txt
index a24cd53..ee187f5 100644
--- a/Tests/CMakeCommands/target_compile_options/CMakeLists.txt
+++ b/Tests/CMakeCommands/target_compile_options/CMakeLists.txt
@@ -7,9 +7,10 @@ add_executable(target_compile_options
"${CMAKE_CURRENT_SOURCE_DIR}/main.cpp"
)
target_compile_options(target_compile_options
- PRIVATE $<$<CXX_COMPILER_ID:GNU>:-DMY_PRIVATE_DEFINE>
+ PRIVATE $<$<CXX_COMPILER_ID:AppleClang,Clang,GNU>:-DMY_PRIVATE_DEFINE>
PUBLIC $<$<COMPILE_LANG_AND_ID:CXX,GNU>:-DMY_PUBLIC_DEFINE>
INTERFACE $<$<CXX_COMPILER_ID:GNU>:-DMY_INTERFACE_DEFINE>
+ INTERFACE $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:-DMY_MULTI_COMP_INTERFACE_DEFINE>
)
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
@@ -17,6 +18,11 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
PRIVATE
"DO_GNU_TESTS"
)
+elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ target_compile_definitions(target_compile_options
+ PRIVATE
+ "DO_CLANG_TESTS"
+ )
endif()
add_executable(consumer
@@ -40,7 +46,7 @@ if(CMAKE_GENERATOR MATCHES "Visual Studio")
endif()
target_compile_options(consumer
- PRIVATE $<$<CXX_COMPILER_ID:GNU>:$<TARGET_PROPERTY:target_compile_options,INTERFACE_COMPILE_OPTIONS>>
+ PRIVATE $<$<CXX_COMPILER_ID:GNU,Clang,AppleClang>:$<TARGET_PROPERTY:target_compile_options,INTERFACE_COMPILE_OPTIONS>>
)
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
@@ -48,6 +54,11 @@ if(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
PRIVATE
"DO_GNU_TESTS"
)
+elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+ target_compile_definitions(consumer
+ PRIVATE
+ "DO_CLANG_TESTS"
+ )
endif()
# Test no items
diff --git a/Tests/CMakeCommands/target_compile_options/consumer.cpp b/Tests/CMakeCommands/target_compile_options/consumer.cpp
index fe79eb5..5cbe049 100644
--- a/Tests/CMakeCommands/target_compile_options/consumer.cpp
+++ b/Tests/CMakeCommands/target_compile_options/consumer.cpp
@@ -13,6 +13,22 @@
# error Expected MY_INTERFACE_DEFINE
# endif
+# ifndef MY_MULTI_COMP_INTERFACE_DEFINE
+# error Expected MY_MULTI_COMP_INTERFACE_DEFINE
+# endif
+
+#endif
+
+#ifdef DO_CLANG_TESTS
+
+# ifdef MY_PRIVATE_DEFINE
+# error Unexpected MY_PRIVATE_DEFINE
+# endif
+
+# ifndef MY_MULTI_COMP_INTERFACE_DEFINE
+# error Expected MY_MULTI_COMP_INTERFACE_DEFINE
+# endif
+
#endif
#ifndef CONSUMER_LANG_CXX
diff --git a/Tests/CMakeCommands/target_compile_options/main.cpp b/Tests/CMakeCommands/target_compile_options/main.cpp
index 829a25e..edefdf2 100644
--- a/Tests/CMakeCommands/target_compile_options/main.cpp
+++ b/Tests/CMakeCommands/target_compile_options/main.cpp
@@ -15,6 +15,18 @@
#endif
+#ifdef DO_CLANG_TESTS
+
+# ifndef MY_PRIVATE_DEFINE
+# error Expected MY_PRIVATE_DEFINE
+# endif
+
+# ifdef MY_PUBLIC_DEFINE
+# error Unexpected MY_PUBLIC_DEFINE
+# endif
+
+#endif
+
int main()
{
return 0;
diff --git a/Tests/RunCMake/PolicyScope/dir1/CMakeLists.txt b/Tests/RunCMake/PolicyScope/dir1/CMakeLists.txt
index 16bcb36..66ff016 100644
--- a/Tests/RunCMake/PolicyScope/dir1/CMakeLists.txt
+++ b/Tests/RunCMake/PolicyScope/dir1/CMakeLists.txt
@@ -2,4 +2,4 @@
add_library(foo STATIC foo.cpp)
string(TOLOWER ${CMAKE_CXX_COMPILER_ID} compiler_id)
-target_compile_definitions(foo PRIVATE Foo=$<CXX_COMPILER_ID:${compiler_id}>)
+target_compile_definitions(foo PRIVATE Foo=$<CXX_COMPILER_ID:invalid,${compiler_id}>)
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2d4787fc4ddc077e1d8fcb807768d1ecc7902a73
commit 2d4787fc4ddc077e1d8fcb807768d1ecc7902a73
Author: Robert Maynard <robert.maynard at kitware.com>
AuthorDate: Wed May 29 14:49:36 2019 -0400
Commit: Brad King <brad.king at kitware.com>
CommitDate: Mon Jun 3 10:20:22 2019 -0400
Genex: Add more extensive support for an unbounded number of parameters
Previously genex support for unbounded number of parameters required
at least 1 parameter. We now support zero or more parameters, and two
or more parameters.
diff --git a/Source/cmGeneratorExpressionEvaluator.cxx b/Source/cmGeneratorExpressionEvaluator.cxx
index 268de6f..7442018 100644
--- a/Source/cmGeneratorExpressionEvaluator.cxx
+++ b/Source/cmGeneratorExpressionEvaluator.cxx
@@ -166,9 +166,13 @@ std::string GeneratorExpressionContent::EvaluateParameters(
reportError(context, this->GetOriginalExpression(),
"$<" + identifier +
"> expression requires at least one parameter.");
- }
- if (numExpected == cmGeneratorExpressionNode::OneOrZeroParameters &&
- parameters.size() > 1) {
+ } else if (numExpected == cmGeneratorExpressionNode::TwoOrMoreParameters &&
+ parameters.size() < 2) {
+ reportError(context, this->GetOriginalExpression(),
+ "$<" + identifier +
+ "> expression requires at least two parameters.");
+ } else if (numExpected == cmGeneratorExpressionNode::OneOrZeroParameters &&
+ parameters.size() > 1) {
reportError(context, this->GetOriginalExpression(),
"$<" + identifier +
"> expression requires one or zero parameters.");
diff --git a/Source/cmGeneratorExpressionNode.h b/Source/cmGeneratorExpressionNode.h
index 3dbfc6e..7a36924 100644
--- a/Source/cmGeneratorExpressionNode.h
+++ b/Source/cmGeneratorExpressionNode.h
@@ -20,7 +20,9 @@ struct cmGeneratorExpressionNode
{
DynamicParameters = 0,
OneOrMoreParameters = -1,
- OneOrZeroParameters = -2
+ TwoOrMoreParameters = -2,
+ ZeroOrMoreParameters = -3,
+ OneOrZeroParameters = -4
};
virtual ~cmGeneratorExpressionNode() = default;
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3475e2728bad16899b50131785a61f43083e8ba9
commit 3475e2728bad16899b50131785a61f43083e8ba9
Author: Bartosz Kosiorek <bartosz.kosiorek at tomtom.com>
AuthorDate: Thu May 30 09:18:16 2019 +0200
Commit: Brad King <brad.king at kitware.com>
CommitDate: Mon Jun 3 10:03:53 2019 -0400
cmListFileCache: When missing ending ) print starting line instead of last one
Fixes: #19301
diff --git a/Source/cmListFileCache.cxx b/Source/cmListFileCache.cxx
index f99caed..df0d00c 100644
--- a/Source/cmListFileCache.cxx
+++ b/Source/cmListFileCache.cxx
@@ -192,12 +192,9 @@ bool cmListFileParser::ParseFunction(const char* name, long line)
}
// Arguments.
- unsigned long lastLine;
unsigned long parenDepth = 0;
this->Separation = SeparationOkay;
- while (
- (static_cast<void>(lastLine = cmListFileLexer_GetCurrentLine(this->Lexer)),
- token = cmListFileLexer_Scan(this->Lexer))) {
+ while ((token = cmListFileLexer_Scan(this->Lexer))) {
if (token->type == cmListFileLexer_Token_Space ||
token->type == cmListFileLexer_Token_Newline) {
this->Separation = SeparationOkay;
@@ -252,7 +249,7 @@ bool cmListFileParser::ParseFunction(const char* name, long line)
std::ostringstream error;
cmListFileContext lfc;
lfc.FilePath = this->FileName;
- lfc.Line = lastLine;
+ lfc.Line = line;
cmListFileBacktrace lfbt = this->Backtrace;
lfbt = lfbt.Push(lfc);
error << "Parse error. Function missing ending \")\". "
diff --git a/Tests/RunCMake/Syntax/UnterminatedCall1-stderr.txt b/Tests/RunCMake/Syntax/UnterminatedCall1-stderr.txt
index 3f52244..f3ee895 100644
--- a/Tests/RunCMake/Syntax/UnterminatedCall1-stderr.txt
+++ b/Tests/RunCMake/Syntax/UnterminatedCall1-stderr.txt
@@ -1,4 +1,4 @@
-CMake Error at UnterminatedCall1.cmake:2:
+CMake Error at UnterminatedCall1.cmake:1:
Parse error. Function missing ending "\)". End of file reached.
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)
diff --git a/Tests/RunCMake/Syntax/UnterminatedCall1.cmake b/Tests/RunCMake/Syntax/UnterminatedCall1.cmake
index 1166109..e1d2118 100644
--- a/Tests/RunCMake/Syntax/UnterminatedCall1.cmake
+++ b/Tests/RunCMake/Syntax/UnterminatedCall1.cmake
@@ -1 +1,4 @@
message(
+
+
+message("Additional message")
diff --git a/Tests/RunCMake/Syntax/UnterminatedCall2-stderr.txt b/Tests/RunCMake/Syntax/UnterminatedCall2-stderr.txt
index 18656f7..04216c3 100644
--- a/Tests/RunCMake/Syntax/UnterminatedCall2-stderr.txt
+++ b/Tests/RunCMake/Syntax/UnterminatedCall2-stderr.txt
@@ -1,4 +1,4 @@
-CMake Error at UnterminatedCall2.cmake:4:
+CMake Error at UnterminatedCall2.cmake:3:
Parse error. Function missing ending "\)". End of file reached.
Call Stack \(most recent call first\):
CMakeLists.txt:3 \(include\)
diff --git a/Tests/RunCMake/Syntax/UnterminatedCall2.cmake b/Tests/RunCMake/Syntax/UnterminatedCall2.cmake
index 26e9e62..8d4088d 100644
--- a/Tests/RunCMake/Syntax/UnterminatedCall2.cmake
+++ b/Tests/RunCMake/Syntax/UnterminatedCall2.cmake
@@ -1,3 +1,6 @@
set(var "\
")
message(
+
+
+message("Additional message")
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=619416f8a30c99f87869559cf3829ce6d3431dca
commit 619416f8a30c99f87869559cf3829ce6d3431dca
Author: Robert Maynard <robert.maynard at kitware.com>
AuthorDate: Fri May 31 13:18:11 2019 -0400
Commit: Brad King <brad.king at kitware.com>
CommitDate: Mon Jun 3 09:56:03 2019 -0400
The error message for VISIBILITY_PRESET now documents valid options.
Rather than just state the value for VISIBILITY_PRESET was invalid,
we additionally list the accepted values.
diff --git a/Source/cmLocalGenerator.cxx b/Source/cmLocalGenerator.cxx
index 87d2232..e20747f 100644
--- a/Source/cmLocalGenerator.cxx
+++ b/Source/cmLocalGenerator.cxx
@@ -1914,7 +1914,9 @@ static void AddVisibilityCompileOption(std::string& flags,
strcmp(prop, "protected") != 0 && strcmp(prop, "internal") != 0) {
std::ostringstream e;
e << "Target " << target->GetName() << " uses unsupported value \"" << prop
- << "\" for " << flagDefine << ".";
+ << "\" for " << flagDefine << "."
+ << " The supported values are: default, hidden, protected, and "
+ "internal.";
cmSystemTools::Error(e.str());
return;
}
diff --git a/Tests/RunCMake/VisibilityPreset/PropertyTypo-stderr.txt b/Tests/RunCMake/VisibilityPreset/PropertyTypo-stderr.txt
index ca8c33f..a63591f 100644
--- a/Tests/RunCMake/VisibilityPreset/PropertyTypo-stderr.txt
+++ b/Tests/RunCMake/VisibilityPreset/PropertyTypo-stderr.txt
@@ -1 +1 @@
-CMake Error: Target visibility_preset uses unsupported value \"hiden\" for CXX_VISIBILITY_PRESET
+CMake Error: Target visibility_preset uses unsupported value \"hiden\" for CXX_VISIBILITY_PRESET. The supported values are: default, hidden, protected, and internal.
-----------------------------------------------------------------------
Summary of changes:
Help/manual/cmake-generator-expressions.7.rst | 60 +++++++++--------
Help/release/dev/genex-comma-separated.rst | 8 +++
Modules/CheckLanguage.cmake | 27 ++++++--
Source/cmGeneratorExpressionEvaluator.cxx | 10 ++-
Source/cmGeneratorExpressionNode.cxx | 76 +++++++++++++---------
Source/cmGeneratorExpressionNode.h | 4 +-
Source/cmListFileCache.cxx | 7 +-
Source/cmLocalGenerator.cxx | 4 +-
.../target_compile_definitions/CMakeLists.txt | 1 +
.../target_compile_definitions/consumer.c | 4 ++
.../target_compile_options/CMakeLists.txt | 16 ++++-
.../target_compile_options/consumer.cpp | 24 +++++++
.../CMakeCommands/target_compile_options/main.cpp | 20 ++++++
Tests/CMakeOnly/CheckLanguage/CMakeLists.txt | 3 +-
Tests/GeneratorExpression/CMakeLists.txt | 1 +
Tests/GeneratorExpression/check-part3.cmake | 5 ++
Tests/RunCMake/CommandLine/RunCMakeTest.cmake | 10 +--
...MPILE_LANG_AND_ID-add_custom_command-stderr.txt | 3 +-
.../COMPILE_LANG_AND_ID-target_sources-stderr.txt | 3 +-
Tests/RunCMake/PolicyScope/dir1/CMakeLists.txt | 2 +-
Tests/RunCMake/Syntax/UnterminatedCall1-stderr.txt | 2 +-
Tests/RunCMake/Syntax/UnterminatedCall1.cmake | 3 +
Tests/RunCMake/Syntax/UnterminatedCall2-stderr.txt | 2 +-
Tests/RunCMake/Syntax/UnterminatedCall2.cmake | 3 +
.../VisibilityPreset/PropertyTypo-stderr.txt | 2 +-
25 files changed, 212 insertions(+), 88 deletions(-)
create mode 100644 Help/release/dev/genex-comma-separated.rst
hooks/post-receive
--
CMake
More information about the Cmake-commits
mailing list