[Cmake-commits] CMake branch, master, updated. v3.13.0-rc3-508-ga09274c
Kitware Robot
kwrobot at kitware.com
Tue Nov 20 09:33:07 EST 2018
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 a09274c6ec5a3cbe1d57c48199279946d6c997a7 (commit)
via aed259ac414e49933e498639edadfff6290d2a65 (commit)
via e653f46677450090b6acb46e9e12543cc307021a (commit)
via fc366d25946f7434527658475835d1e587cea4ea (commit)
via 4b94f3420c78e1bb7aa1324973e3ec76ba765c27 (commit)
via b5f8113ca7796df47bcb04bcd77991885c3b1b07 (commit)
via a5241cc3a7d5c7173603e637c039f1b8a1852627 (commit)
via a3c31effedbaf6c552fc433ac6688cb0453e7bf3 (commit)
via 3e1c361afa1c58b3c56a3253f8215dfaac2c0cc4 (commit)
via c24f29c6647f70e6597dd35a1fe276279e019ad4 (commit)
via d3fa2e7400f4c7ce88c8fe762810bc379879444c (commit)
via 01c7d9ce863d6f8bcae578b500dd2e8ba2d97967 (commit)
from d851a8b457251a577f10055d9fb277b75a82da6c (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=a09274c6ec5a3cbe1d57c48199279946d6c997a7
commit a09274c6ec5a3cbe1d57c48199279946d6c997a7
Merge: aed259a a5241cc
Author: Brad King <brad.king at kitware.com>
AuthorDate: Tue Nov 20 09:30:24 2018 -0500
Commit: Brad King <brad.king at kitware.com>
CommitDate: Tue Nov 20 09:30:24 2018 -0500
Merge branch 'release-3.13'
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=aed259ac414e49933e498639edadfff6290d2a65
commit aed259ac414e49933e498639edadfff6290d2a65
Merge: e653f46 b5f8113
Author: Brad King <brad.king at kitware.com>
AuthorDate: Tue Nov 20 14:29:38 2018 +0000
Commit: Kitware Robot <kwrobot at kitware.com>
CommitDate: Tue Nov 20 09:29:44 2018 -0500
Merge topic 'genex-in_list-empty-args'
b5f8113ca7 Genex: Add policy to handle empty list items in $<IN_LIST:...>
Acked-by: Kitware Robot <kwrobot at kitware.com>
Merge-request: !2569
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=e653f46677450090b6acb46e9e12543cc307021a
commit e653f46677450090b6acb46e9e12543cc307021a
Merge: fc366d2 a3c31ef
Author: Brad King <brad.king at kitware.com>
AuthorDate: Tue Nov 20 14:25:39 2018 +0000
Commit: Kitware Robot <kwrobot at kitware.com>
CommitDate: Tue Nov 20 09:26:31 2018 -0500
Merge topic 'blas-pkgcfg'
a3c31effed FindBLAS: Restore BLAS_FOUND when found using pkgconfig
Acked-by: Kitware Robot <kwrobot at kitware.com>
Merge-request: !2631
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=fc366d25946f7434527658475835d1e587cea4ea
commit fc366d25946f7434527658475835d1e587cea4ea
Merge: 4b94f34 c24f29c
Author: Brad King <brad.king at kitware.com>
AuthorDate: Tue Nov 20 14:25:21 2018 +0000
Commit: Kitware Robot <kwrobot at kitware.com>
CommitDate: Tue Nov 20 09:25:48 2018 -0500
Merge topic 'FindPython-lib-arch'
c24f29c664 FindPython: Ensure config tool matches library architecture
Acked-by: Kitware Robot <kwrobot at kitware.com>
Acked-by: Eric Noulard <eric.noulard at gmail.com>
Merge-request: !2624
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4b94f3420c78e1bb7aa1324973e3ec76ba765c27
commit 4b94f3420c78e1bb7aa1324973e3ec76ba765c27
Merge: d851a8b 01c7d9c
Author: Brad King <brad.king at kitware.com>
AuthorDate: Tue Nov 20 14:24:56 2018 +0000
Commit: Kitware Robot <kwrobot at kitware.com>
CommitDate: Tue Nov 20 09:25:03 2018 -0500
Merge topic 'irsl-ucrt-version'
01c7d9ce86 IRSL: Detect versioned Windows Universal CRT directories
Acked-by: Kitware Robot <kwrobot at kitware.com>
Merge-request: !2637
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b5f8113ca7796df47bcb04bcd77991885c3b1b07
commit b5f8113ca7796df47bcb04bcd77991885c3b1b07
Author: Kyle Edwards <kyle.edwards at kitware.com>
AuthorDate: Tue Nov 6 11:27:03 2018 -0500
Commit: Kyle Edwards <kyle.edwards at kitware.com>
CommitDate: Mon Nov 19 17:02:06 2018 -0500
Genex: Add policy to handle empty list items in $<IN_LIST:...>
The old behavior of $<IN_LIST:...> is inconsistent with that of
if(IN_LIST), in that it does not find an empty search item even if
the list contains empty items. This change adds a new policy to
correctly handle empty items and make the behavior more consistent
with if(IN_LIST).
Fixes: #18556
diff --git a/Help/manual/cmake-policies.7.rst b/Help/manual/cmake-policies.7.rst
index 7c0fe6d..044a06e 100644
--- a/Help/manual/cmake-policies.7.rst
+++ b/Help/manual/cmake-policies.7.rst
@@ -57,6 +57,7 @@ Policies Introduced by CMake 3.14
.. toctree::
:maxdepth: 1
+ CMP0085: IN_LIST generator expression handles empty list items. </policy/CMP0085>
CMP0084: The FindQt module does not exist for find_package(). </policy/CMP0084>
CMP0083: Add PIE options when linking executable. </policy/CMP0083>
CMP0082: Install rules from add_subdirectory() are interleaved with those in caller. </policy/CMP0082>
diff --git a/Help/policy/CMP0085.rst b/Help/policy/CMP0085.rst
new file mode 100644
index 0000000..d9ec9a2
--- /dev/null
+++ b/Help/policy/CMP0085.rst
@@ -0,0 +1,21 @@
+CMP0085
+-------
+
+``$<IN_LIST:...>`` handles empty list items.
+
+In CMake 3.13 and lower, the ``$<IN_LIST:...>`` generator expression always
+returned ``0`` if the first argument was empty, even if the list contained an
+empty item. This behavior is inconsistent with the ``IN_LIST`` behavior of
+:command:`if`, which this generator expression is meant to emulate. CMake 3.14
+and later handles this case correctly.
+
+The ``OLD`` behavior of this policy is for ``$<IN_LIST:...>`` to always return
+``0`` if the first argument is empty. The ``NEW`` behavior is to return ``1``
+if the first argument is empty and the list contains an empty item.
+
+This policy was introduced in CMake version 3.14. CMake version
+|release| warns when the policy is not set and uses ``OLD`` behavior.
+Use the :command:`cmake_policy` command to set it to ``OLD`` or ``NEW``
+explicitly.
+
+.. include:: DEPRECATED.txt
diff --git a/Help/release/dev/genex-in_list-empty-args.rst b/Help/release/dev/genex-in_list-empty-args.rst
new file mode 100644
index 0000000..ec1c6c0
--- /dev/null
+++ b/Help/release/dev/genex-in_list-empty-args.rst
@@ -0,0 +1,5 @@
+genex-in_list-empty-args
+------------------------
+
+* The $<IN_LIST:...> generator expression now correctly handles an empty
+ argument. See :policy:`CMP0085` for details.
diff --git a/Source/cmGeneratorExpressionNode.cxx b/Source/cmGeneratorExpressionNode.cxx
index 49b97fb..eb3df16 100644
--- a/Source/cmGeneratorExpressionNode.cxx
+++ b/Source/cmGeneratorExpressionNode.cxx
@@ -283,14 +283,39 @@ static const struct InListNode : public cmGeneratorExpressionNode
std::string Evaluate(
const std::vector<std::string>& parameters,
- cmGeneratorExpressionContext* /*context*/,
+ cmGeneratorExpressionContext* context,
const GeneratorExpressionContent* /*content*/,
cmGeneratorExpressionDAGChecker* /*dagChecker*/) const override
{
- std::vector<std::string> values;
- cmSystemTools::ExpandListArgument(parameters[1], values);
- if (values.empty()) {
- return "0";
+ std::vector<std::string> values, checkValues;
+ bool check = false;
+ switch (context->LG->GetPolicyStatus(cmPolicies::CMP0085)) {
+ case cmPolicies::WARN:
+ if (parameters.front().empty()) {
+ check = true;
+ cmSystemTools::ExpandListArgument(parameters[1], checkValues, true);
+ }
+ CM_FALLTHROUGH;
+ case cmPolicies::OLD:
+ cmSystemTools::ExpandListArgument(parameters[1], values);
+ if (check && values != checkValues) {
+ std::ostringstream e;
+ e << cmPolicies::GetPolicyWarning(cmPolicies::CMP0085)
+ << "\nSearch Item:\n \"" << parameters.front()
+ << "\"\nList:\n \"" << parameters[1] << "\"\n";
+ context->LG->GetCMakeInstance()->IssueMessage(
+ cmake::AUTHOR_WARNING, e.str(), context->Backtrace);
+ return "0";
+ }
+ if (values.empty()) {
+ return "0";
+ }
+ break;
+ case cmPolicies::REQUIRED_IF_USED:
+ case cmPolicies::REQUIRED_ALWAYS:
+ case cmPolicies::NEW:
+ cmSystemTools::ExpandListArgument(parameters[1], values, true);
+ break;
}
return std::find(values.cbegin(), values.cend(), parameters.front()) ==
diff --git a/Source/cmPolicies.h b/Source/cmPolicies.h
index 6b1314f..9985d63 100644
--- a/Source/cmPolicies.h
+++ b/Source/cmPolicies.h
@@ -249,7 +249,9 @@ class cmMakefile;
0, cmPolicies::WARN) \
SELECT(POLICY, CMP0084, \
"The FindQt module does not exist for find_package().", 3, 14, 0, \
- cmPolicies::WARN)
+ cmPolicies::WARN) \
+ SELECT(POLICY, CMP0085, "$<IN_LIST:...> handles empty list items.", 3, 14, \
+ 0, cmPolicies::WARN)
#define CM_SELECT_ID(F, A1, A2, A3, A4, A5, A6) F(A1)
#define CM_FOR_EACH_POLICY_ID(POLICY) \
diff --git a/Tests/RunCMake/GeneratorExpression/CMP0085-NEW-check.cmake b/Tests/RunCMake/GeneratorExpression/CMP0085-NEW-check.cmake
new file mode 100644
index 0000000..520bf3d
--- /dev/null
+++ b/Tests/RunCMake/GeneratorExpression/CMP0085-NEW-check.cmake
@@ -0,0 +1,6 @@
+file(READ "${RunCMake_TEST_BINARY_DIR}/CMP0085-NEW-generated.txt" content)
+
+set(expected "101011")
+if(NOT content STREQUAL expected)
+ set(RunCMake_TEST_FAILED "actual content:\n [[${content}]]\nbut expected:\n [[${expected}]]")
+endif()
diff --git a/Tests/RunCMake/GeneratorExpression/CMP0085-NEW.cmake b/Tests/RunCMake/GeneratorExpression/CMP0085-NEW.cmake
new file mode 100644
index 0000000..ee85c0d
--- /dev/null
+++ b/Tests/RunCMake/GeneratorExpression/CMP0085-NEW.cmake
@@ -0,0 +1,4 @@
+cmake_policy(SET CMP0070 NEW)
+file(GENERATE OUTPUT CMP0085-NEW-generated.txt CONTENT
+ "$<IN_LIST:,>$<IN_LIST:,a>$<IN_LIST:,;a>$<IN_LIST:a,>$<IN_LIST:a,a>$<IN_LIST:a,;a>"
+ )
diff --git a/Tests/RunCMake/GeneratorExpression/CMP0085-OLD-check.cmake b/Tests/RunCMake/GeneratorExpression/CMP0085-OLD-check.cmake
new file mode 100644
index 0000000..c387db7
--- /dev/null
+++ b/Tests/RunCMake/GeneratorExpression/CMP0085-OLD-check.cmake
@@ -0,0 +1,6 @@
+file(READ "${RunCMake_TEST_BINARY_DIR}/CMP0085-OLD-generated.txt" content)
+
+set(expected "000011")
+if(NOT content STREQUAL expected)
+ set(RunCMake_TEST_FAILED "actual content:\n [[${content}]]\nbut expected:\n [[${expected}]]")
+endif()
diff --git a/Tests/RunCMake/GeneratorExpression/CMP0085-OLD.cmake b/Tests/RunCMake/GeneratorExpression/CMP0085-OLD.cmake
new file mode 100644
index 0000000..31b6a51
--- /dev/null
+++ b/Tests/RunCMake/GeneratorExpression/CMP0085-OLD.cmake
@@ -0,0 +1,4 @@
+cmake_policy(SET CMP0070 NEW)
+file(GENERATE OUTPUT CMP0085-OLD-generated.txt CONTENT
+ "$<IN_LIST:,>$<IN_LIST:,a>$<IN_LIST:,;a>$<IN_LIST:a,>$<IN_LIST:a,a>$<IN_LIST:a,;a>"
+ )
diff --git a/Tests/RunCMake/GeneratorExpression/CMP0085-WARN-check.cmake b/Tests/RunCMake/GeneratorExpression/CMP0085-WARN-check.cmake
new file mode 100644
index 0000000..f7bcf0f
--- /dev/null
+++ b/Tests/RunCMake/GeneratorExpression/CMP0085-WARN-check.cmake
@@ -0,0 +1,6 @@
+file(READ "${RunCMake_TEST_BINARY_DIR}/CMP0085-WARN-generated.txt" content)
+
+set(expected "000011")
+if(NOT content STREQUAL expected)
+ set(RunCMake_TEST_FAILED "actual content:\n [[${content}]]\nbut expected:\n [[${expected}]]")
+endif()
diff --git a/Tests/RunCMake/GeneratorExpression/CMP0085-WARN-stderr.txt b/Tests/RunCMake/GeneratorExpression/CMP0085-WARN-stderr.txt
new file mode 100644
index 0000000..81bd450
--- /dev/null
+++ b/Tests/RunCMake/GeneratorExpression/CMP0085-WARN-stderr.txt
@@ -0,0 +1,33 @@
+CMake Warning \(dev\) at CMP0085-WARN\.cmake:[0-9]+ \(file\):
+ Policy CMP0085 is not set: \$<IN_LIST:\.\.\.> handles empty list items\. Run
+ "cmake --help-policy CMP0085" for policy details\. Use the cmake_policy
+ command to set the policy and suppress this warning\.
+
+ Search Item:
+
+ ""
+
+ List:
+
+ ""
+
+Call Stack \(most recent call first\):
+ CMakeLists\.txt:[0-9]+ \(include\)
+This warning is for project developers\. Use -Wno-dev to suppress it\.
+
+CMake Warning \(dev\) at CMP0085-WARN\.cmake:[0-9]+ \(file\):
+ Policy CMP0085 is not set: \$<IN_LIST:\.\.\.> handles empty list items\. Run
+ "cmake --help-policy CMP0085" for policy details\. Use the cmake_policy
+ command to set the policy and suppress this warning\.
+
+ Search Item:
+
+ ""
+
+ List:
+
+ ";a"
+
+Call Stack \(most recent call first\):
+ CMakeLists\.txt:[0-9]+ \(include\)
+This warning is for project developers\. Use -Wno-dev to suppress it\.
diff --git a/Tests/RunCMake/GeneratorExpression/CMP0085-WARN.cmake b/Tests/RunCMake/GeneratorExpression/CMP0085-WARN.cmake
new file mode 100644
index 0000000..59c7826
--- /dev/null
+++ b/Tests/RunCMake/GeneratorExpression/CMP0085-WARN.cmake
@@ -0,0 +1,4 @@
+cmake_policy(SET CMP0070 NEW)
+file(GENERATE OUTPUT CMP0085-WARN-generated.txt CONTENT
+ "$<IN_LIST:,>$<IN_LIST:,a>$<IN_LIST:,;a>$<IN_LIST:a,>$<IN_LIST:a,a>$<IN_LIST:a,;a>"
+ )
diff --git a/Tests/RunCMake/GeneratorExpression/RunCMakeTest.cmake b/Tests/RunCMake/GeneratorExpression/RunCMakeTest.cmake
index 3905c5f..013117e 100644
--- a/Tests/RunCMake/GeneratorExpression/RunCMakeTest.cmake
+++ b/Tests/RunCMake/GeneratorExpression/RunCMakeTest.cmake
@@ -61,3 +61,13 @@ if(LINKER_SUPPORTS_PDB)
else()
run_cmake(NonValidCompiler-TARGET_PDB_FILE)
endif()
+
+set(RunCMake_TEST_OPTIONS -DCMAKE_POLICY_DEFAULT_CMP0085:STRING=OLD)
+run_cmake(CMP0085-OLD)
+unset(RunCMake_TEST_OPTIONS)
+
+run_cmake(CMP0085-WARN)
+
+set(RunCMake_TEST_OPTIONS -DCMAKE_POLICY_DEFAULT_CMP0085:STRING=NEW)
+run_cmake(CMP0085-NEW)
+unset(RunCMake_TEST_OPTIONS)
-----------------------------------------------------------------------
Summary of changes:
Help/manual/cmake-policies.7.rst | 1 +
Help/policy/CMP0085.rst | 21 +++++++++++++
Help/release/dev/genex-in_list-empty-args.rst | 5 ++++
Modules/FindBLAS.cmake | 1 +
Modules/FindPython/Support.cmake | 17 +++++++++++
Modules/InstallRequiredSystemLibraries.cmake | 22 ++++++++++++--
Source/cmGeneratorExpressionNode.cxx | 35 ++++++++++++++++++----
Source/cmPolicies.h | 4 ++-
..._EXISTS-check.cmake => CMP0085-NEW-check.cmake} | 4 +--
.../RunCMake/GeneratorExpression/CMP0085-NEW.cmake | 4 +++
..._EXISTS-check.cmake => CMP0085-OLD-check.cmake} | 4 +--
.../RunCMake/GeneratorExpression/CMP0085-OLD.cmake | 4 +++
...EXISTS-check.cmake => CMP0085-WARN-check.cmake} | 4 +--
.../GeneratorExpression/CMP0085-WARN-stderr.txt | 33 ++++++++++++++++++++
.../GeneratorExpression/CMP0085-WARN.cmake | 4 +++
.../GeneratorExpression/RunCMakeTest.cmake | 10 +++++++
16 files changed, 158 insertions(+), 15 deletions(-)
create mode 100644 Help/policy/CMP0085.rst
create mode 100644 Help/release/dev/genex-in_list-empty-args.rst
copy Tests/RunCMake/GeneratorExpression/{TARGET_EXISTS-check.cmake => CMP0085-NEW-check.cmake} (58%)
create mode 100644 Tests/RunCMake/GeneratorExpression/CMP0085-NEW.cmake
copy Tests/RunCMake/GeneratorExpression/{TARGET_EXISTS-check.cmake => CMP0085-OLD-check.cmake} (58%)
create mode 100644 Tests/RunCMake/GeneratorExpression/CMP0085-OLD.cmake
copy Tests/RunCMake/GeneratorExpression/{TARGET_EXISTS-check.cmake => CMP0085-WARN-check.cmake} (58%)
create mode 100644 Tests/RunCMake/GeneratorExpression/CMP0085-WARN-stderr.txt
create mode 100644 Tests/RunCMake/GeneratorExpression/CMP0085-WARN.cmake
hooks/post-receive
--
CMake
More information about the Cmake-commits
mailing list