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, next has been updated
       via  1ec618612cdd61f4994324c727d812cf133077af (commit)
       via  0e6f89f51ab87afb4049bb60bfb827f5e2657c18 (commit)
      from  d434df4ff8750bf96de5251847473addeeff69bd (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 -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1ec618612cdd61f4994324c727d812cf133077af
commit 1ec618612cdd61f4994324c727d812cf133077af
Merge: d434df4 0e6f89f
Author:     Stephen Kelly <steve...@gmail.com>
AuthorDate: Tue Feb 11 12:54:43 2014 -0500
Commit:     CMake Topic Stage <kwro...@kitware.com>
CommitDate: Tue Feb 11 12:54:43 2014 -0500

    Merge topic 'backward-compatibility' into next
    
    0e6f89f5 add_custom_command: Disallow use of SOURCE signatures.


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0e6f89f51ab87afb4049bb60bfb827f5e2657c18
commit 0e6f89f51ab87afb4049bb60bfb827f5e2657c18
Author:     Stephen Kelly <steve...@gmail.com>
AuthorDate: Tue Feb 11 18:39:55 2014 +0100
Commit:     Stephen Kelly <steve...@gmail.com>
CommitDate: Tue Feb 11 18:51:54 2014 +0100

    add_custom_command: Disallow use of SOURCE signatures.
    
    Add CMP0050 to control this behavior.

diff --git a/Help/manual/cmake-policies.7.rst b/Help/manual/cmake-policies.7.rst
index c097697..8650a58 100644
--- a/Help/manual/cmake-policies.7.rst
+++ b/Help/manual/cmake-policies.7.rst
@@ -101,3 +101,4 @@ All Policies
    /policy/CMP0047
    /policy/CMP0048
    /policy/CMP0049
+   /policy/CMP0050
diff --git a/Help/policy/CMP0050.rst b/Help/policy/CMP0050.rst
new file mode 100644
index 0000000..afd9c27
--- /dev/null
+++ b/Help/policy/CMP0050.rst
@@ -0,0 +1,21 @@
+CMP0050
+-------
+
+Disallow add_custom_command SOURCE signatures.
+
+CMake 2.8.12 and lower expanded variables which were escaped in CMake code to
+bypass initial expansion by the CMake language:
+
+.. code-block:: cmake
+
+  set(sources foo.c)
+  add_executable(foo \${sources})
+
+The OLD behavior for this policy is to expand such variables when processing
+the target sources.  The NEW behavior for this policy is to issue an error
+if such variables need to be expanded.
+
+This policy was introduced in CMake version 3.0.
+CMake version |release| warns when the policy is not set and uses
+OLD behavior.  Use the cmake_policy command to set it to OLD or
+NEW explicitly.
diff --git a/Source/cmAddCustomCommandCommand.cxx 
b/Source/cmAddCustomCommandCommand.cxx
index 5634849..3de04f5 100644
--- a/Source/cmAddCustomCommandCommand.cxx
+++ b/Source/cmAddCustomCommandCommand.cxx
@@ -344,6 +344,36 @@ bool cmAddCustomCommandCommand
     }
   else
     {
+    bool issueMessage = true;
+    cmOStringStream e;
+    cmake::MessageType messageType = cmake::AUTHOR_WARNING;
+    switch(this->Makefile->GetPolicyStatus(cmPolicies::CMP0050))
+    {
+    case cmPolicies::WARN:
+      e << (this->Makefile->GetPolicies()
+                ->GetPolicyWarning(cmPolicies::CMP0050)) << "\n";
+      break;
+    case cmPolicies::OLD:
+      issueMessage = false;
+      break;
+    case cmPolicies::REQUIRED_ALWAYS:
+    case cmPolicies::REQUIRED_IF_USED:
+    case cmPolicies::NEW:
+      messageType = cmake::FATAL_ERROR;
+      break;
+    }
+
+    if (issueMessage)
+      {
+      e << "The SOURCE signatures of add_custom_command are no longer "
+           "supported.";
+      this->Makefile->IssueMessage(messageType, e.str().c_str());
+      if (messageType == cmake::FATAL_ERROR)
+        {
+        return false;
+        }
+      }
+
     // Use the old-style mode for backward compatibility.
     this->Makefile->AddCustomCommandOldStyle(target.c_str(), outputs, depends,
                                              source.c_str(), commandLines,
diff --git a/Source/cmPolicies.cxx b/Source/cmPolicies.cxx
index 78453db..93072f5 100644
--- a/Source/cmPolicies.cxx
+++ b/Source/cmPolicies.cxx
@@ -338,6 +338,11 @@ cmPolicies::cmPolicies()
     CMP0049, "CMP0049",
     "Do not expand variables in target source entries.",
     3,0,0, cmPolicies::WARN);
+
+  this->DefinePolicy(
+    CMP0050, "CMP0050",
+    "Disallow add_custom_command SOURCE signatures.",
+    3,0,0, cmPolicies::WARN);
 }
 
 cmPolicies::~cmPolicies()
diff --git a/Source/cmPolicies.h b/Source/cmPolicies.h
index 9523650..b77235d 100644
--- a/Source/cmPolicies.h
+++ b/Source/cmPolicies.h
@@ -103,6 +103,7 @@ public:
     CMP0047, ///< Use QCC compiler id for the qcc drivers on QNX.
     CMP0048, ///< project() command manages VERSION variables
     CMP0049, ///< Do not expand variables in target source entries
+    CMP0050, ///< Disallow add_custom_command SOURCE signatures
 
     /** \brief Always the last entry.
      *
diff --git a/Tests/RunCMake/CMP0050/CMP0050-NEW-result.txt 
b/Tests/RunCMake/CMP0050/CMP0050-NEW-result.txt
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/Tests/RunCMake/CMP0050/CMP0050-NEW-result.txt
@@ -0,0 +1 @@
+1
diff --git a/Tests/RunCMake/CMP0050/CMP0050-NEW-stderr.txt 
b/Tests/RunCMake/CMP0050/CMP0050-NEW-stderr.txt
new file mode 100644
index 0000000..e913b3f
--- /dev/null
+++ b/Tests/RunCMake/CMP0050/CMP0050-NEW-stderr.txt
@@ -0,0 +1,4 @@
+CMake Error at CMP0050-NEW.cmake:5 \(add_custom_command\):
+  The SOURCE signatures of add_custom_command are no longer supported.
+Call Stack \(most recent call first\):
+  CMakeLists.txt:3 \(include\)
diff --git a/Tests/RunCMake/CMP0050/CMP0050-NEW.cmake 
b/Tests/RunCMake/CMP0050/CMP0050-NEW.cmake
new file mode 100644
index 0000000..cdc65b8
--- /dev/null
+++ b/Tests/RunCMake/CMP0050/CMP0050-NEW.cmake
@@ -0,0 +1,13 @@
+
+cmake_policy(SET CMP0050 NEW)
+
+add_library(empty empty.cpp)
+add_custom_command(
+  TARGET empty
+  SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/input.h.in
+  COMMAND ${CMAKE_COMMAND}
+  ARGS -E copy ${CMAKE_CURRENT_SOURCE_DIR}/input.h.in
+               ${CMAKE_CURRENT_BINARY_DIR}/input.h
+  OUTPUTS ${CMAKE_CURRENT_BINARY_DIR}/input.h
+  DEPENDS ${CMAKE_COMMAND}
+)
diff --git a/Tests/RunCMake/CMP0050/CMP0050-OLD-result.txt 
b/Tests/RunCMake/CMP0050/CMP0050-OLD-result.txt
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/Tests/RunCMake/CMP0050/CMP0050-OLD-result.txt
@@ -0,0 +1 @@
+0
diff --git a/Tests/RunCMake/CMP0050/CMP0050-OLD-stderr.txt 
b/Tests/RunCMake/CMP0050/CMP0050-OLD-stderr.txt
new file mode 100644
index 0000000..10f3293
--- /dev/null
+++ b/Tests/RunCMake/CMP0050/CMP0050-OLD-stderr.txt
@@ -0,0 +1 @@
+^$
diff --git a/Tests/RunCMake/CMP0050/CMP0050-OLD.cmake 
b/Tests/RunCMake/CMP0050/CMP0050-OLD.cmake
new file mode 100644
index 0000000..efb37e5
--- /dev/null
+++ b/Tests/RunCMake/CMP0050/CMP0050-OLD.cmake
@@ -0,0 +1,13 @@
+
+cmake_policy(SET CMP0050 OLD)
+
+add_library(empty empty.cpp)
+add_custom_command(
+  TARGET empty
+  SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/input.h.in
+  COMMAND ${CMAKE_COMMAND}
+  ARGS -E copy ${CMAKE_CURRENT_SOURCE_DIR}/input.h.in
+               ${CMAKE_CURRENT_BINARY_DIR}/input.h
+  OUTPUTS ${CMAKE_CURRENT_BINARY_DIR}/input.h
+  DEPENDS ${CMAKE_COMMAND}
+)
diff --git a/Tests/RunCMake/CMP0050/CMP0050-WARN-result.txt 
b/Tests/RunCMake/CMP0050/CMP0050-WARN-result.txt
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/Tests/RunCMake/CMP0050/CMP0050-WARN-result.txt
@@ -0,0 +1 @@
+0
diff --git a/Tests/RunCMake/CMP0050/CMP0050-WARN-stderr.txt 
b/Tests/RunCMake/CMP0050/CMP0050-WARN-stderr.txt
new file mode 100644
index 0000000..c88d595
--- /dev/null
+++ b/Tests/RunCMake/CMP0050/CMP0050-WARN-stderr.txt
@@ -0,0 +1,9 @@
+CMake Warning \(dev\) at CMP0050-WARN.cmake:3 \(add_custom_command\):
+  Policy CMP0050 is not set: Disallow add_custom_command SOURCE signatures.
+  Run "cmake --help-policy CMP0050" for policy details.  Use the cmake_policy
+  command to set the policy and suppress this warning.
+
+  The SOURCE signatures of add_custom_command are no longer supported.
+Call Stack \(most recent call first\):
+  CMakeLists.txt:3 \(include\)
+This warning is for project developers.  Use -Wno-dev to suppress it.
diff --git a/Tests/RunCMake/CMP0050/CMP0050-WARN.cmake 
b/Tests/RunCMake/CMP0050/CMP0050-WARN.cmake
new file mode 100644
index 0000000..e57230e
--- /dev/null
+++ b/Tests/RunCMake/CMP0050/CMP0050-WARN.cmake
@@ -0,0 +1,11 @@
+
+add_library(empty empty.cpp)
+add_custom_command(
+  TARGET empty
+  SOURCE ${CMAKE_CURRENT_SOURCE_DIR}/input.h.in
+  COMMAND ${CMAKE_COMMAND}
+  ARGS -E copy ${CMAKE_CURRENT_SOURCE_DIR}/input.h.in
+               ${CMAKE_CURRENT_BINARY_DIR}/input.h
+  OUTPUTS ${CMAKE_CURRENT_BINARY_DIR}/input.h
+  DEPENDS ${CMAKE_COMMAND}
+)
diff --git a/Tests/RunCMake/CMP0050/CMakeLists.txt 
b/Tests/RunCMake/CMP0050/CMakeLists.txt
new file mode 100644
index 0000000..2f10cb0
--- /dev/null
+++ b/Tests/RunCMake/CMP0050/CMakeLists.txt
@@ -0,0 +1,3 @@
+cmake_minimum_required(VERSION 2.8.12)
+project(${RunCMake_TEST} CXX)
+include(${RunCMake_TEST}.cmake NO_POLICY_SCOPE)
diff --git a/Tests/RunCMake/CMP0050/RunCMakeTest.cmake 
b/Tests/RunCMake/CMP0050/RunCMakeTest.cmake
new file mode 100644
index 0000000..b7de284
--- /dev/null
+++ b/Tests/RunCMake/CMP0050/RunCMakeTest.cmake
@@ -0,0 +1,5 @@
+include(RunCMake)
+
+run_cmake(CMP0050-OLD)
+run_cmake(CMP0050-NEW)
+run_cmake(CMP0050-WARN)
diff --git a/Tests/RunCMake/CMP0050/empty.cpp b/Tests/RunCMake/CMP0050/empty.cpp
new file mode 100644
index 0000000..182ea29
--- /dev/null
+++ b/Tests/RunCMake/CMP0050/empty.cpp
@@ -0,0 +1,10 @@
+
+#include "input.h"
+
+#ifdef _WIN32
+__declspec(dllexport)
+#endif
+int empty()
+{
+  return 0;
+}
diff --git a/Tests/RunCMake/CMP0050/input.h.in 
b/Tests/RunCMake/CMP0050/input.h.in
new file mode 100644
index 0000000..d8c5d26
--- /dev/null
+++ b/Tests/RunCMake/CMP0050/input.h.in
@@ -0,0 +1,2 @@
+
+#define INPUT
diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt
index ef6f69d..9bb097b 100644
--- a/Tests/RunCMake/CMakeLists.txt
+++ b/Tests/RunCMake/CMakeLists.txt
@@ -33,6 +33,7 @@ add_RunCMake_test(CMP0043)
 add_RunCMake_test(CMP0045)
 add_RunCMake_test(CMP0046)
 add_RunCMake_test(CMP0049)
+add_RunCMake_test(CMP0050)
 add_RunCMake_test(CTest)
 if(UNIX AND "${CMAKE_TEST_GENERATOR}" MATCHES "Unix Makefiles")
   add_RunCMake_test(CompilerChange)

-----------------------------------------------------------------------

Summary of changes:
 Help/manual/cmake-policies.7.rst                   |    1 +
 Help/policy/{CMP0049.rst => CMP0050.rst}           |    4 +--
 Source/cmAddCustomCommandCommand.cxx               |   30 ++++++++++++++++++++
 Source/cmPolicies.cxx                              |    5 ++++
 Source/cmPolicies.h                                |    1 +
 .../CMP0050-NEW-result.txt}                        |    0
 Tests/RunCMake/CMP0050/CMP0050-NEW-stderr.txt      |    4 +++
 Tests/RunCMake/CMP0050/CMP0050-NEW.cmake           |   13 +++++++++
 .../CMP0050-OLD-result.txt}                        |    0
 .../CMP0050-OLD-stderr.txt}                        |    0
 Tests/RunCMake/CMP0050/CMP0050-OLD.cmake           |   13 +++++++++
 .../CMP0050-WARN-result.txt}                       |    0
 Tests/RunCMake/CMP0050/CMP0050-WARN-stderr.txt     |    9 ++++++
 Tests/RunCMake/CMP0050/CMP0050-WARN.cmake          |   11 +++++++
 Tests/RunCMake/{CMP0038 => CMP0050}/CMakeLists.txt |    0
 Tests/RunCMake/CMP0050/RunCMakeTest.cmake          |    5 ++++
 Tests/RunCMake/{CMP0026 => CMP0050}/empty.cpp      |    3 ++
 Tests/RunCMake/CMP0050/input.h.in                  |    2 ++
 Tests/RunCMake/CMakeLists.txt                      |    1 +
 19 files changed, 100 insertions(+), 2 deletions(-)
 copy Help/policy/{CMP0049.rst => CMP0050.rst} (91%)
 copy Tests/RunCMake/{CMP0004/CMP0004-NEW-result.txt => 
CMP0050/CMP0050-NEW-result.txt} (100%)
 create mode 100644 Tests/RunCMake/CMP0050/CMP0050-NEW-stderr.txt
 create mode 100644 Tests/RunCMake/CMP0050/CMP0050-NEW.cmake
 copy Tests/RunCMake/{CMP0022/CMP0022-WARN-empty-old-result.txt => 
CMP0050/CMP0050-OLD-result.txt} (100%)
 copy Tests/RunCMake/{CMP0022/CMP0022-NOWARN-exe-stderr.txt => 
CMP0050/CMP0050-OLD-stderr.txt} (100%)
 create mode 100644 Tests/RunCMake/CMP0050/CMP0050-OLD.cmake
 copy Tests/RunCMake/{CMP0022/CMP0022-WARN-empty-old-result.txt => 
CMP0050/CMP0050-WARN-result.txt} (100%)
 create mode 100644 Tests/RunCMake/CMP0050/CMP0050-WARN-stderr.txt
 create mode 100644 Tests/RunCMake/CMP0050/CMP0050-WARN.cmake
 copy Tests/RunCMake/{CMP0038 => CMP0050}/CMakeLists.txt (100%)
 create mode 100644 Tests/RunCMake/CMP0050/RunCMakeTest.cmake
 copy Tests/RunCMake/{CMP0026 => CMP0050}/empty.cpp (77%)
 create mode 100644 Tests/RunCMake/CMP0050/input.h.in


hooks/post-receive
-- 
CMake
_______________________________________________
Cmake-commits mailing list
Cmake-commits@cmake.org
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-commits

Reply via email to