[Cmake-commits] CMake branch, master, updated. v3.11.0-rc4-276-g1c3bbda
Kitware Robot
kwrobot at kitware.com
Tue Mar 20 09:45:09 EDT 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 1c3bbda2f2920f416304086ece139ba1b50015ea (commit)
via d41abae70f282c718f3109b7f76644adce41ff37 (commit)
via 16eaf2d27112c739667049c633d1f522e9d6c1d1 (commit)
via a58158727be4585f9fd71449e9cc9e801c59a009 (commit)
from 3b99c9689aae478708c83cafa552c4ce7bbf4a1b (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=1c3bbda2f2920f416304086ece139ba1b50015ea
commit 1c3bbda2f2920f416304086ece139ba1b50015ea
Merge: d41abae 16eaf2d
Author: Brad King <brad.king at kitware.com>
AuthorDate: Tue Mar 20 13:43:12 2018 +0000
Commit: Kitware Robot <kwrobot at kitware.com>
CommitDate: Tue Mar 20 09:43:22 2018 -0400
Merge topic 'pr.install_name_dir'
16eaf2d271 Help: Reference CMAKE_INSTALL_NAME_DIR from INSTALL_NAME_DIR
Acked-by: Kitware Robot <kwrobot at kitware.com>
Acked-by: Brad King <brad.king at kitware.com>
Merge-request: !1872
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d41abae70f282c718f3109b7f76644adce41ff37
commit d41abae70f282c718f3109b7f76644adce41ff37
Merge: 3b99c96 a581587
Author: Brad King <brad.king at kitware.com>
AuthorDate: Tue Mar 20 13:39:45 2018 +0000
Commit: Kitware Robot <kwrobot at kitware.com>
CommitDate: Tue Mar 20 09:40:40 2018 -0400
Merge topic 'list-join'
a58158727b list(): add `JOIN` sub-command
Acked-by: Kitware Robot <kwrobot at kitware.com>
Merge-request: !1846
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=16eaf2d27112c739667049c633d1f522e9d6c1d1
commit 16eaf2d27112c739667049c633d1f522e9d6c1d1
Author: Ruslan Baratov <ruslan_baratov at yahoo.com>
AuthorDate: Tue Mar 20 16:34:45 2018 +0300
Commit: Ruslan Baratov <ruslan_baratov at yahoo.com>
CommitDate: Tue Mar 20 16:34:45 2018 +0300
Help: Reference CMAKE_INSTALL_NAME_DIR from INSTALL_NAME_DIR
diff --git a/Help/prop_tgt/INSTALL_NAME_DIR.rst b/Help/prop_tgt/INSTALL_NAME_DIR.rst
index a67ec15..34348bb 100644
--- a/Help/prop_tgt/INSTALL_NAME_DIR.rst
+++ b/Help/prop_tgt/INSTALL_NAME_DIR.rst
@@ -6,3 +6,7 @@ Mac OSX directory name for installed targets.
INSTALL_NAME_DIR is a string specifying the directory portion of the
"install_name" field of shared libraries on Mac OSX to use in the
installed targets.
+
+This property is initialized by the value of the variable
+:variable:`CMAKE_INSTALL_NAME_DIR` if it is set when a target is
+created.
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a58158727be4585f9fd71449e9cc9e801c59a009
commit a58158727be4585f9fd71449e9cc9e801c59a009
Author: Marc Chevrier <marc.chevrier at sap.com>
AuthorDate: Mon Mar 19 15:06:52 2018 +0100
Commit: Marc Chevrier <marc.chevrier at sap.com>
CommitDate: Tue Mar 20 14:28:17 2018 +0100
list(): add `JOIN` sub-command
diff --git a/Help/command/list.rst b/Help/command/list.rst
index e6a7069..3c092bd 100644
--- a/Help/command/list.rst
+++ b/Help/command/list.rst
@@ -54,6 +54,17 @@ GET
Returns the list of elements specified by indices from the list.
+JOIN
+""""
+
+::
+
+ list(JOIN <list> <glue> <output variable>)
+
+Returns a string joining all list's elements using the glue string.
+To join multiple strings, which are not part of a list, use ``JOIN`` operator
+from :command:`string` command.
+
Search
^^^^^^
diff --git a/Help/command/string.rst b/Help/command/string.rst
index cd94bb4..bb07d29 100644
--- a/Help/command/string.rst
+++ b/Help/command/string.rst
@@ -161,6 +161,10 @@ JOIN
Join all the input arguments together using the glue
string and store the result in the named output variable.
+To join list's elements, use preferably the ``JOIN`` operator
+from :command:`list` command. This allows for the elements to have
+special characters like ``;`` in them.
+
TOLOWER
"""""""
diff --git a/Help/release/dev/list-join.rst b/Help/release/dev/list-join.rst
new file mode 100644
index 0000000..0756b60
--- /dev/null
+++ b/Help/release/dev/list-join.rst
@@ -0,0 +1,5 @@
+list-join
+---------
+
+* The :command:`list` command learned a ``JOIN`` sub-command
+ to concatenate list's elements separated by a glue string.
diff --git a/Source/cmListCommand.cxx b/Source/cmListCommand.cxx
index ae4f0a8..62d4ea7 100644
--- a/Source/cmListCommand.cxx
+++ b/Source/cmListCommand.cxx
@@ -42,6 +42,9 @@ bool cmListCommand::InitialPass(std::vector<std::string> const& args,
if (subCommand == "INSERT") {
return this->HandleInsertCommand(args);
}
+ if (subCommand == "JOIN") {
+ return this->HandleJoinCommand(args);
+ }
if (subCommand == "REMOVE_AT") {
return this->HandleRemoveAtCommand(args);
}
@@ -294,6 +297,34 @@ bool cmListCommand::HandleInsertCommand(std::vector<std::string> const& args)
return true;
}
+bool cmListCommand::HandleJoinCommand(std::vector<std::string> const& args)
+{
+ if (args.size() != 4) {
+ std::ostringstream error;
+ error << "sub-command JOIN requires three arguments (" << args.size() - 1
+ << " found).";
+ this->SetError(error.str());
+ return false;
+ }
+
+ const std::string& listName = args[1];
+ const std::string& glue = args[2];
+ const std::string& variableName = args[3];
+
+ // expand the variable
+ std::vector<std::string> varArgsExpanded;
+ if (!this->GetList(varArgsExpanded, listName)) {
+ this->Makefile->AddDefinition(variableName, "");
+ return true;
+ }
+
+ std::string value =
+ cmJoin(cmMakeRange(varArgsExpanded.begin(), varArgsExpanded.end()), glue);
+
+ this->Makefile->AddDefinition(variableName, value.c_str());
+ return true;
+}
+
bool cmListCommand::HandleRemoveItemCommand(
std::vector<std::string> const& args)
{
diff --git a/Source/cmListCommand.h b/Source/cmListCommand.h
index 2965399..d6870e6 100644
--- a/Source/cmListCommand.h
+++ b/Source/cmListCommand.h
@@ -37,6 +37,7 @@ protected:
bool HandleAppendCommand(std::vector<std::string> const& args);
bool HandleFindCommand(std::vector<std::string> const& args);
bool HandleInsertCommand(std::vector<std::string> const& args);
+ bool HandleJoinCommand(std::vector<std::string> const& args);
bool HandleRemoveAtCommand(std::vector<std::string> const& args);
bool HandleRemoveItemCommand(std::vector<std::string> const& args);
bool HandleRemoveDuplicatesCommand(std::vector<std::string> const& args);
diff --git a/Tests/RunCMake/list/JOIN-NoArguments-result.txt b/Tests/RunCMake/list/JOIN-NoArguments-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/list/JOIN-NoArguments-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/list/JOIN-NoArguments-stderr.txt b/Tests/RunCMake/list/JOIN-NoArguments-stderr.txt
new file mode 100644
index 0000000..5e1b98f
--- /dev/null
+++ b/Tests/RunCMake/list/JOIN-NoArguments-stderr.txt
@@ -0,0 +1,4 @@
+^CMake Error at JOIN-NoArguments.cmake:1 \(list\):
+ list sub-command JOIN requires three arguments \(1 found\).
+Call Stack \(most recent call first\):
+ CMakeLists.txt:3 \(include\)$
diff --git a/Tests/RunCMake/list/JOIN-NoArguments.cmake b/Tests/RunCMake/list/JOIN-NoArguments.cmake
new file mode 100644
index 0000000..2ab449a
--- /dev/null
+++ b/Tests/RunCMake/list/JOIN-NoArguments.cmake
@@ -0,0 +1 @@
+list(JOIN mylist)
diff --git a/Tests/RunCMake/list/JOIN-NoVariable-result.txt b/Tests/RunCMake/list/JOIN-NoVariable-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/list/JOIN-NoVariable-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/list/JOIN-NoVariable-stderr.txt b/Tests/RunCMake/list/JOIN-NoVariable-stderr.txt
new file mode 100644
index 0000000..db1d773
--- /dev/null
+++ b/Tests/RunCMake/list/JOIN-NoVariable-stderr.txt
@@ -0,0 +1,4 @@
+^CMake Error at JOIN-NoVariable.cmake:1 \(list\):
+ list sub-command JOIN requires three arguments \(2 found\).
+Call Stack \(most recent call first\):
+ CMakeLists.txt:3 \(include\)$
diff --git a/Tests/RunCMake/list/JOIN-NoVariable.cmake b/Tests/RunCMake/list/JOIN-NoVariable.cmake
new file mode 100644
index 0000000..b60d8f1
--- /dev/null
+++ b/Tests/RunCMake/list/JOIN-NoVariable.cmake
@@ -0,0 +1 @@
+list(JOIN mylist "glue")
diff --git a/Tests/RunCMake/list/JOIN-TooManyArguments-result.txt b/Tests/RunCMake/list/JOIN-TooManyArguments-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/list/JOIN-TooManyArguments-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/list/JOIN-TooManyArguments-stderr.txt b/Tests/RunCMake/list/JOIN-TooManyArguments-stderr.txt
new file mode 100644
index 0000000..2b09e22
--- /dev/null
+++ b/Tests/RunCMake/list/JOIN-TooManyArguments-stderr.txt
@@ -0,0 +1,4 @@
+^CMake Error at JOIN-TooManyArguments.cmake:1 \(list\):
+ list sub-command JOIN requires three arguments \(4 found\).
+Call Stack \(most recent call first\):
+ CMakeLists.txt:3 \(include\)$
diff --git a/Tests/RunCMake/list/JOIN-TooManyArguments.cmake b/Tests/RunCMake/list/JOIN-TooManyArguments.cmake
new file mode 100644
index 0000000..dc651f6
--- /dev/null
+++ b/Tests/RunCMake/list/JOIN-TooManyArguments.cmake
@@ -0,0 +1 @@
+list(JOIN mylist "glue" out one_too_many)
diff --git a/Tests/RunCMake/list/JOIN.cmake b/Tests/RunCMake/list/JOIN.cmake
new file mode 100644
index 0000000..24a623e
--- /dev/null
+++ b/Tests/RunCMake/list/JOIN.cmake
@@ -0,0 +1,18 @@
+list(JOIN undefList % out)
+if(NOT out STREQUAL "")
+ message(FATAL_ERROR "\"list(JOIN undefList % out)\" set out to \"${out}\"")
+endif()
+set(myList a)
+list(JOIN myList % out)
+if(NOT out STREQUAL "a")
+ message(FATAL_ERROR "\"list(JOIN \"a\" % out)\" set out to \"${out}\"")
+endif()
+set(myList a b)
+list(JOIN myList % out)
+if(NOT out STREQUAL "a%b")
+ message(FATAL_ERROR "\"list(JOIN \"a;b\" % out)\" set out to \"${out}\"")
+endif()
+list(JOIN myList "" out)
+if(NOT out STREQUAL "ab")
+ message(FATAL_ERROR "\"list(JOIN \"a;b\" \"\" out a)\" set out to \"${out}\"")
+endif()
diff --git a/Tests/RunCMake/list/RunCMakeTest.cmake b/Tests/RunCMake/list/RunCMakeTest.cmake
index b002ab3..1be4f85 100644
--- a/Tests/RunCMake/list/RunCMakeTest.cmake
+++ b/Tests/RunCMake/list/RunCMakeTest.cmake
@@ -15,6 +15,7 @@ run_cmake(INSERT-InvalidIndex)
run_cmake(REMOVE_AT-InvalidIndex)
run_cmake(FILTER-REGEX-TooManyArguments)
+run_cmake(JOIN-TooManyArguments)
run_cmake(LENGTH-TooManyArguments)
run_cmake(REMOVE_DUPLICATES-TooManyArguments)
run_cmake(REVERSE-TooManyArguments)
@@ -31,3 +32,7 @@ run_cmake(FILTER-REGEX-InvalidMode)
run_cmake(FILTER-REGEX-InvalidOperator)
run_cmake(FILTER-REGEX-Valid0)
run_cmake(FILTER-REGEX-Valid1)
+
+run_cmake(JOIN-NoArguments)
+run_cmake(JOIN-NoVariable)
+run_cmake(JOIN)
-----------------------------------------------------------------------
Summary of changes:
Help/command/list.rst | 11 +++++++
Help/command/string.rst | 4 +++
Help/prop_tgt/INSTALL_NAME_DIR.rst | 4 +++
Help/release/dev/list-join.rst | 5 ++++
Source/cmListCommand.cxx | 31 ++++++++++++++++++++
Source/cmListCommand.h | 1 +
.../JOIN-NoArguments-result.txt} | 0
Tests/RunCMake/list/JOIN-NoArguments-stderr.txt | 4 +++
Tests/RunCMake/list/JOIN-NoArguments.cmake | 1 +
.../JOIN-NoVariable-result.txt} | 0
Tests/RunCMake/list/JOIN-NoVariable-stderr.txt | 4 +++
Tests/RunCMake/list/JOIN-NoVariable.cmake | 1 +
.../JOIN-TooManyArguments-result.txt} | 0
.../RunCMake/list/JOIN-TooManyArguments-stderr.txt | 4 +++
Tests/RunCMake/list/JOIN-TooManyArguments.cmake | 1 +
Tests/RunCMake/list/JOIN.cmake | 18 ++++++++++++
Tests/RunCMake/list/RunCMakeTest.cmake | 5 ++++
17 files changed, 94 insertions(+)
create mode 100644 Help/release/dev/list-join.rst
copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => list/JOIN-NoArguments-result.txt} (100%)
create mode 100644 Tests/RunCMake/list/JOIN-NoArguments-stderr.txt
create mode 100644 Tests/RunCMake/list/JOIN-NoArguments.cmake
copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => list/JOIN-NoVariable-result.txt} (100%)
create mode 100644 Tests/RunCMake/list/JOIN-NoVariable-stderr.txt
create mode 100644 Tests/RunCMake/list/JOIN-NoVariable.cmake
copy Tests/RunCMake/{Android/BadSYSROOT-result.txt => list/JOIN-TooManyArguments-result.txt} (100%)
create mode 100644 Tests/RunCMake/list/JOIN-TooManyArguments-stderr.txt
create mode 100644 Tests/RunCMake/list/JOIN-TooManyArguments.cmake
create mode 100644 Tests/RunCMake/list/JOIN.cmake
hooks/post-receive
--
CMake
More information about the Cmake-commits
mailing list