[Cmake-commits] CMake branch, master, updated. v3.12.0-318-g5bbcf76

Kitware Robot kwrobot at kitware.com
Fri Jul 27 10:15:07 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  5bbcf76399e107bbb1712ba8aeee27c160413d2d (commit)
       via  bccbf9a737785c34e0b23b2b456fbb4e112d42fb (commit)
       via  548ac51d8ea319c65abefa0a771636893c45014c (commit)
       via  a3a0c3aa71498f76cc0e9655038de7bbb5430a03 (commit)
      from  131fcf65f667ab23b3bcd31c6d82b5bd01a44683 (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=5bbcf76399e107bbb1712ba8aeee27c160413d2d
commit 5bbcf76399e107bbb1712ba8aeee27c160413d2d
Merge: bccbf9a a3a0c3a
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri Jul 27 14:08:47 2018 +0000
Commit:     Kitware Robot <kwrobot at kitware.com>
CommitDate: Fri Jul 27 10:08:54 2018 -0400

    Merge topic 'UseSWIG-target-name-policy'
    
    a3a0c3aa71 UseSWIG: add policy to manage target naming strategy.
    
    Acked-by: Kitware Robot <kwrobot at kitware.com>
    Merge-request: !2232


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=bccbf9a737785c34e0b23b2b456fbb4e112d42fb
commit bccbf9a737785c34e0b23b2b456fbb4e112d42fb
Merge: 131fcf6 548ac51
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Fri Jul 27 14:06:35 2018 +0000
Commit:     Kitware Robot <kwrobot at kitware.com>
CommitDate: Fri Jul 27 10:06:44 2018 -0400

    Merge topic 'reproducible-tarballs'
    
    548ac51d8e CPack/Deb: Support SOURCE_DATE_EPOCH when packaging files
    
    Acked-by: Kitware Robot <kwrobot at kitware.com>
    Merge-request: !2226


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=548ac51d8ea319c65abefa0a771636893c45014c
commit 548ac51d8ea319c65abefa0a771636893c45014c
Author:     Andrew Fuller <afuller at teradici.com>
AuthorDate: Thu Jul 19 18:14:40 2018 -0700
Commit:     Andrew Fuller <afuller at teradici.com>
CommitDate: Wed Jul 25 13:39:07 2018 -0700

    CPack/Deb: Support SOURCE_DATE_EPOCH when packaging files

diff --git a/Help/cpack_gen/deb.rst b/Help/cpack_gen/deb.rst
index c5923be..37d750d 100644
--- a/Help/cpack_gen/deb.rst
+++ b/Help/cpack_gen/deb.rst
@@ -527,3 +527,11 @@ alternate data stream (ADT) is used.
 
 When a filesystem without ADT support is used only owner read/write
 permissions can be preserved.
+
+Reproducible packages
+^^^^^^^^^^^^^^^^^^^^^
+
+The environment variable ``SOURCE_DATE_EPOCH`` may be set to a UNIX
+timestamp, defined as the number of seconds, excluding leap seconds,
+since 01 Jan 1970 00:00:00 UTC.  If set, the CPack Deb generator will
+use its value for timestamps in the package.
diff --git a/Help/release/dev/cpack-deb-source-date-epoch.rst b/Help/release/dev/cpack-deb-source-date-epoch.rst
new file mode 100644
index 0000000..b276569
--- /dev/null
+++ b/Help/release/dev/cpack-deb-source-date-epoch.rst
@@ -0,0 +1,6 @@
+cpack-deb-source-date-epoch
+---------------------------
+
+* The :cpack_gen:`CPack Deb Generator` learned to honor the ``SOURCE_DATE_EPOCH``
+  environment variable when packaging files.  This is useful for generating
+  reproducible packages.
diff --git a/Source/cmArchiveWrite.cxx b/Source/cmArchiveWrite.cxx
index 1dd7734..6031781 100644
--- a/Source/cmArchiveWrite.cxx
+++ b/Source/cmArchiveWrite.cxx
@@ -10,6 +10,7 @@
 #include "cmsys/Encoding.hxx"
 #include "cmsys/FStream.hxx"
 #include <iostream>
+#include <sstream>
 #include <string.h>
 #include <time.h>
 
@@ -94,13 +95,25 @@ cmArchiveWrite::cmArchiveWrite(std::ostream& os, Compress c,
         return;
       }
       break;
-    case CompressGZip:
+    case CompressGZip: {
       if (archive_write_add_filter_gzip(this->Archive) != ARCHIVE_OK) {
         this->Error = "archive_write_add_filter_gzip: ";
         this->Error += cm_archive_error_string(this->Archive);
         return;
       }
-      break;
+      std::string source_date_epoch;
+      cmSystemTools::GetEnv("SOURCE_DATE_EPOCH", source_date_epoch);
+      if (!source_date_epoch.empty()) {
+        // We're not able to specify an arbitrary timestamp for gzip.
+        // The next best thing is to omit the timestamp entirely.
+        if (archive_write_set_filter_option(this->Archive, "gzip", "timestamp",
+                                            nullptr) != ARCHIVE_OK) {
+          this->Error = "archive_write_set_filter_option: ";
+          this->Error += cm_archive_error_string(this->Archive);
+          return;
+        }
+      }
+    } break;
     case CompressBZip2:
       if (archive_write_add_filter_bzip2(this->Archive) != ARCHIVE_OK) {
         this->Error = "archive_write_add_filter_bzip2: ";
@@ -243,6 +256,17 @@ bool cmArchiveWrite::AddFile(const char* file, size_t skip, const char* prefix)
       return false;
     }
     archive_entry_set_mtime(e, t, 0);
+  } else {
+    std::string source_date_epoch;
+    cmSystemTools::GetEnv("SOURCE_DATE_EPOCH", source_date_epoch);
+    if (!source_date_epoch.empty()) {
+      std::istringstream iss(source_date_epoch);
+      time_t epochTime;
+      iss >> epochTime;
+      if (iss.eof() && !iss.fail()) {
+        archive_entry_set_mtime(e, epochTime, 0);
+      }
+    }
   }
 
   // manages the uid/guid of the entry (if any)
diff --git a/Tests/RunCMake/CPack/CPackTestHelpers.cmake b/Tests/RunCMake/CPack/CPackTestHelpers.cmake
index 8c9f4b4..d00ef3b 100644
--- a/Tests/RunCMake/CPack/CPackTestHelpers.cmake
+++ b/Tests/RunCMake/CPack/CPackTestHelpers.cmake
@@ -78,8 +78,12 @@ function(run_cpack_test_common_ TEST_NAME types build SUBTEST_SUFFIX source PACK
     endif()
 
     # execute cpack
+    set(SETENV)
+    if(ENVIRONMENT)
+      set(SETENV ${CMAKE_COMMAND} -E env "${ENVIRONMENT}")
+    endif()
     execute_process(
-      COMMAND ${cpack_command_}
+      COMMAND ${SETENV} ${cpack_command_}
       WORKING_DIRECTORY "${RunCMake_TEST_BINARY_DIR}"
       RESULT_VARIABLE "result_"
       OUTPUT_FILE "${RunCMake_TEST_BINARY_DIR}/test_output.txt"
diff --git a/Tests/RunCMake/CPack/DEB/Helpers.cmake b/Tests/RunCMake/CPack/DEB/Helpers.cmake
index f7c5c84..e01f81d 100644
--- a/Tests/RunCMake/CPack/DEB/Helpers.cmake
+++ b/Tests/RunCMake/CPack/DEB/Helpers.cmake
@@ -1,7 +1,7 @@
 set(ALL_FILES_GLOB "*.deb")
 
 function(getPackageContent FILE RESULT_VAR)
-  execute_process(COMMAND ${DPKG_EXECUTABLE} -c "${FILE}"
+  execute_process(COMMAND ${CMAKE_COMMAND} -E env TZ=Etc/UTC ${DPKG_EXECUTABLE} -c "${FILE}"
           OUTPUT_VARIABLE package_content_
           ERROR_QUIET
           OUTPUT_STRIP_TRAILING_WHITESPACE)
diff --git a/Tests/RunCMake/CPack/RunCMakeTest.cmake b/Tests/RunCMake/CPack/RunCMakeTest.cmake
index 33ffa14..b273c1e 100644
--- a/Tests/RunCMake/CPack/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CPack/RunCMakeTest.cmake
@@ -28,6 +28,9 @@ run_cpack_test(EXTRA_SLASH_IN_PATH "RPM" true "COMPONENT")
 run_cpack_source_test(SOURCE_PACKAGE "RPM")
 run_cpack_test(SUGGESTS "RPM" false "MONOLITHIC")
 run_cpack_test(SYMLINKS "RPM;TGZ" false "MONOLITHIC;COMPONENT")
+set(ENVIRONMENT "SOURCE_DATE_EPOCH=123456789")
+run_cpack_test(TIMESTAMPS "DEB;TGZ" false "COMPONENT")
+unset(ENVIRONMENT)
 run_cpack_test(USER_FILELIST "RPM" false "MONOLITHIC")
 run_cpack_test(MD5SUMS "DEB" false "MONOLITHIC;COMPONENT")
 run_cpack_test(CPACK_INSTALL_SCRIPT "ZIP" false "MONOLITHIC")
diff --git a/Tests/RunCMake/CPack/tests/TIMESTAMPS/ExpectedFiles.cmake b/Tests/RunCMake/CPack/tests/TIMESTAMPS/ExpectedFiles.cmake
new file mode 100644
index 0000000..d1a3a5f
--- /dev/null
+++ b/Tests/RunCMake/CPack/tests/TIMESTAMPS/ExpectedFiles.cmake
@@ -0,0 +1,2 @@
+set(EXPECTED_FILES_COUNT "1")
+set(EXPECTED_FILE_CONTENT_1_LIST "/foo;/foo/CMakeLists.txt")
diff --git a/Tests/RunCMake/CPack/tests/TIMESTAMPS/VerifyResult.cmake b/Tests/RunCMake/CPack/tests/TIMESTAMPS/VerifyResult.cmake
new file mode 100644
index 0000000..e7e2645
--- /dev/null
+++ b/Tests/RunCMake/CPack/tests/TIMESTAMPS/VerifyResult.cmake
@@ -0,0 +1,58 @@
+macro(getFileMetadata_ FILE RESULT_VAR)
+  if(GENERATOR_TYPE STREQUAL "TGZ")
+    # getPackageContent defined for archives omit the metadata (non-verbose)
+    execute_process(COMMAND ${CMAKE_COMMAND} -E env TZ=Etc/UTC ${CMAKE_COMMAND} -E tar -xtvf ${FILE}
+            OUTPUT_VARIABLE ${RESULT_VAR}
+            ERROR_QUIET
+            OUTPUT_STRIP_TRAILING_WHITESPACE)
+  else()
+    getPackageContent("${FILE}" ${RESULT_VAR})
+  endif()
+endmacro()
+
+function(checkContentTimestamp FILE REGEX)
+  getFileMetadata_("${FILE}" METADATA_)
+
+  if(NOT METADATA_ MATCHES "${REGEX}")
+    string(REPLACE "\n" "\n  " metadata_indented "${METADATA_}")
+    message(FATAL_ERROR
+      "Wrong timestamps in file:\n"
+      "  ${FILE}\n"
+      "Expected timestamps to match:\n"
+      "  ${REGEX}\n"
+      "Actual timestamps:\n"
+      "  ${metadata_indented}")
+  endif()
+endfunction()
+
+function(checkTimestamp FILE_NAME)
+  file(READ ${FILE_NAME} ACTUAL_TIMESTAMP OFFSET 4 LIMIT 4 HEX)
+
+  if(NOT ACTUAL_TIMESTAMP STREQUAL "00000000")
+    message(FATAL_ERROR "${FILE_NAME} contains a timestamp [0x${ACTUAL_TIMESTAMP}]")
+  endif()
+endfunction()
+
+# Expected timestamp is UNIX time 123456789
+if(GENERATOR_TYPE STREQUAL "TGZ")
+  set(EXPECTED_TIMESTAMP "29 Nov +1973")
+  set(EXPECTED_FILES foo/ foo/CMakeLists.txt)
+else()
+  set(EXPECTED_TIMESTAMP "1973-11-29 21:33")
+  set(EXPECTED_FILES ./usr/ ./usr/foo/ ./usr/foo/CMakeLists.txt)
+endif()
+
+set(EXPECTED_METADATA)
+foreach(FILE ${EXPECTED_FILES})
+  list(APPEND EXPECTED_METADATA ".* ${EXPECTED_TIMESTAMP} ${FILE}")
+endforeach()
+list(JOIN EXPECTED_METADATA ".*" EXPECTED_REGEX)
+checkContentTimestamp("${FOUND_FILE_1}" "${EXPECTED_REGEX}")
+
+if(GENERATOR_TYPE STREQUAL "TGZ")
+  checkTimestamp("${FOUND_FILE_1}")
+else()
+  execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf "${FOUND_FILE_1}")
+  checkTimestamp("data.tar.gz")
+  checkTimestamp("control.tar.gz")
+endif()
diff --git a/Tests/RunCMake/CPack/tests/TIMESTAMPS/test.cmake b/Tests/RunCMake/CPack/tests/TIMESTAMPS/test.cmake
new file mode 100644
index 0000000..a193852
--- /dev/null
+++ b/Tests/RunCMake/CPack/tests/TIMESTAMPS/test.cmake
@@ -0,0 +1,3 @@
+install(FILES CMakeLists.txt DESTINATION foo COMPONENT test)
+
+set(CPACK_COMPONENTS_ALL test)

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a3a0c3aa71498f76cc0e9655038de7bbb5430a03
commit a3a0c3aa71498f76cc0e9655038de7bbb5430a03
Author:     Marc Chevrier <marc.chevrier at gmail.com>
AuthorDate: Mon Jul 23 10:38:08 2018 +0200
Commit:     Marc Chevrier <marc.chevrier at gmail.com>
CommitDate: Wed Jul 25 18:00:52 2018 +0200

    UseSWIG: add policy to manage target naming strategy.

diff --git a/Help/manual/cmake-policies.7.rst b/Help/manual/cmake-policies.7.rst
index b2eeb3a..32a0118 100644
--- a/Help/manual/cmake-policies.7.rst
+++ b/Help/manual/cmake-policies.7.rst
@@ -57,6 +57,7 @@ Policies Introduced by CMake 3.13
 .. toctree::
    :maxdepth: 1
 
+   CMP0078: UseSWIG generates standard target names. </policy/CMP0078>
    CMP0077: option() honors normal variables. </policy/CMP0077>
    CMP0076: target_sources() command converts relative paths to absolute. </policy/CMP0076>
 
diff --git a/Help/policy/CMP0078.rst b/Help/policy/CMP0078.rst
new file mode 100644
index 0000000..54cdc9c
--- /dev/null
+++ b/Help/policy/CMP0078.rst
@@ -0,0 +1,22 @@
+CMP0078
+-------
+
+Starting with CMake 3.13, :module:`UseSWIG` generates now standard target
+names. This policy provides compatibility with projects that expect the legacy
+behavior.
+
+The ``OLD`` behavior for this policy relies on
+``UseSWIG_TARGET_NAME_PREFERENCE`` variable that can be used to specify an
+explicit preference.  The value may be one of:
+
+* ``LEGACY``: legacy strategy is applied. Variable
+  ``SWIG_MODULE_<name>_REAL_NAME`` must be used to get real target name.
+  This is the default if not specified.
+* ``STANDARD``: target name matches specified name.
+
+This policy was introduced in CMake version 3.13.  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/UseSWIG-target-name-policy.rst b/Help/release/dev/UseSWIG-target-name-policy.rst
new file mode 100644
index 0000000..bb9011d
--- /dev/null
+++ b/Help/release/dev/UseSWIG-target-name-policy.rst
@@ -0,0 +1,5 @@
+UseSWIG-target-name-policy
+--------------------------
+
+* The :module:`UseSWIG` module has changed strategy for target naming.
+  See policy :policy:`CMP0078`.
diff --git a/Modules/UseSWIG.cmake b/Modules/UseSWIG.cmake
index 7460932..e7aaf32 100644
--- a/Modules/UseSWIG.cmake
+++ b/Modules/UseSWIG.cmake
@@ -30,9 +30,10 @@ Defines the following command for use with ``SWIG``:
 
   .. note::
 
-    The variable ``SWIG_MODULE_<name>_REAL_NAME`` will be set to the name
-    of the swig module target library. This variable is useless if variable
-    ``UseSWIG_TARGET_NAME_PREFERENCE`` is set to ``STANDARD``.
+    This command creates a target with the specified ``<name>`` when
+    policy :policy:`CMP0078` is set to ``NEW``.  Otherwise, the legacy
+    behavior will choose a different target name and store it in the
+    ``SWIG_MODULE_<name>_REAL_NAME`` variable.
 
   .. note::
 
@@ -197,13 +198,6 @@ information about support files generated by ``SWIG`` interface compilation.
 Some variables can be set to customize the behavior of ``swig_add_library``
 as well as ``SWIG``:
 
-``UseSWIG_TARGET_NAME_PREFERENCE``
-  Specify target name strategy.
-
-  * Set to ``LEGACY`` or undefined: legacy strategy is applied. Variable
-    ``SWIG_MODULE_<name>_REAL_NAME`` must be used to get real target name.
-  * Set to ``STANDARD``: target name matches specified name.
-
 ``UseSWIG_MODULE_VERSION``
   Specify different behaviors for ``UseSWIG`` module.
 
@@ -225,8 +219,13 @@ as well as ``SWIG``:
   Specify extra dependencies for the generated module for ``<name>``.
 #]=======================================================================]
 
-
+cmake_policy(GET CMP0078 target_name_policy)
 cmake_policy (VERSION 3.12)
+if (target_name_policy)
+  # respect user choice regarding CMP0078 policy
+  cmake_policy(SET CMP0078 ${target_name_policy})
+endif()
+unset(target_name_policy)
 
 set(SWIG_CXX_EXTENSION "cxx")
 set(SWIG_EXTRA_LIBRARIES "")
@@ -545,10 +544,22 @@ function(SWIG_ADD_LIBRARY name)
     unset(_SAM_TYPE)
   endif()
 
-  if (NOT DEFINED UseSWIG_TARGET_NAME_PREFERENCE)
-    set (UseSWIG_TARGET_NAME_PREFERENCE LEGACY)
-  elseif (NOT UseSWIG_TARGET_NAME_PREFERENCE MATCHES "^(LEGACY|STANDARD)$")
-    message (FATAL_ERROR "UseSWIG_TARGET_NAME_PREFERENCE: ${UseSWIG_TARGET_NAME_PREFERENCE}: invalid value. 'LEGACY' or 'STANDARD' is expected.")
+  cmake_policy(GET CMP0078 target_name_policy)
+  if (target_name_policy STREQUAL "NEW")
+    set (UseSWIG_TARGET_NAME_PREFERENCE STANDARD)
+  else()
+    if (NOT target_name_policy)
+      message(AUTHOR_WARNING
+        "Policy CMP0078 is not set.  "
+        "Run \"cmake --help-policy CMP0078\" for policy details.  "
+        "Use the cmake_policy command to set the policy and suppress this warning."
+        )
+    endif()
+    if (NOT DEFINED UseSWIG_TARGET_NAME_PREFERENCE)
+      set (UseSWIG_TARGET_NAME_PREFERENCE LEGACY)
+    elseif (NOT UseSWIG_TARGET_NAME_PREFERENCE MATCHES "^(LEGACY|STANDARD)$")
+      message (FATAL_ERROR "UseSWIG_TARGET_NAME_PREFERENCE: ${UseSWIG_TARGET_NAME_PREFERENCE}: invalid value. 'LEGACY' or 'STANDARD' is expected.")
+    endif()
   endif()
 
   if (NOT DEFINED UseSWIG_MODULE_VERSION)
diff --git a/Source/cmPolicies.h b/Source/cmPolicies.h
index d6f7c54..91ed924 100644
--- a/Source/cmPolicies.h
+++ b/Source/cmPolicies.h
@@ -228,7 +228,9 @@ class cmMakefile;
          "target_sources() command converts relative paths to absolute.", 3,  \
          13, 0, cmPolicies::WARN)                                             \
   SELECT(POLICY, CMP0077, "option() honors normal variables.", 3, 13, 0,      \
-         cmPolicies::WARN)
+         cmPolicies::WARN)                                                    \
+  SELECT(POLICY, CMP0078, "UseSWIG generates standard target names.", 3, 13,  \
+         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/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt
index c030cda..c6c90d0 100644
--- a/Tests/RunCMake/CMakeLists.txt
+++ b/Tests/RunCMake/CMakeLists.txt
@@ -154,6 +154,9 @@ add_RunCMake_test(FPHSA)
 add_RunCMake_test(FindBoost)
 add_RunCMake_test(FindLua)
 add_RunCMake_test(FindOpenGL)
+if(CMake_TEST_UseSWIG)
+  add_RunCMake_test(UseSWIG)
+endif()
 if(NOT CMAKE_C_COMPILER_ID MATCHES "Watcom")
   add_RunCMake_test(GenerateExportHeader)
 endif()
diff --git a/Tests/RunCMake/UseSWIG/CMP0078-NEW-stdout.txt b/Tests/RunCMake/UseSWIG/CMP0078-NEW-stdout.txt
new file mode 100644
index 0000000..d4fa6e4
--- /dev/null
+++ b/Tests/RunCMake/UseSWIG/CMP0078-NEW-stdout.txt
@@ -0,0 +1,2 @@
+-- PREFIX='_'
+-- TARGET NAME='example'
diff --git a/Tests/RunCMake/UseSWIG/CMP0078-NEW.cmake b/Tests/RunCMake/UseSWIG/CMP0078-NEW.cmake
new file mode 100644
index 0000000..ce77218
--- /dev/null
+++ b/Tests/RunCMake/UseSWIG/CMP0078-NEW.cmake
@@ -0,0 +1,2 @@
+cmake_policy(SET CMP0078 NEW)
+include(CMP0078-common.cmake)
diff --git a/Tests/RunCMake/UseSWIG/CMP0078-OLD-stdout.txt b/Tests/RunCMake/UseSWIG/CMP0078-OLD-stdout.txt
new file mode 100644
index 0000000..62f5371
--- /dev/null
+++ b/Tests/RunCMake/UseSWIG/CMP0078-OLD-stdout.txt
@@ -0,0 +1,2 @@
+-- PREFIX=''
+-- TARGET NAME='_example'
diff --git a/Tests/RunCMake/UseSWIG/CMP0078-OLD.cmake b/Tests/RunCMake/UseSWIG/CMP0078-OLD.cmake
new file mode 100644
index 0000000..2c4d142
--- /dev/null
+++ b/Tests/RunCMake/UseSWIG/CMP0078-OLD.cmake
@@ -0,0 +1,2 @@
+cmake_policy(SET CMP0078 OLD)
+include(CMP0078-common.cmake)
diff --git a/Tests/RunCMake/UseSWIG/CMP0078-WARN-stderr.txt b/Tests/RunCMake/UseSWIG/CMP0078-WARN-stderr.txt
new file mode 100644
index 0000000..bc8da4c
--- /dev/null
+++ b/Tests/RunCMake/UseSWIG/CMP0078-WARN-stderr.txt
@@ -0,0 +1,9 @@
+CMake Warning \(dev\) at .*/Modules/UseSWIG.cmake:[0-9]+ \(message\):
+  Policy CMP0078 is not set.  Run "cmake --help-policy CMP0078" for policy
+  details.  Use the cmake_policy command to set the policy and suppress this
+  warning.
+Call Stack \(most recent call first\):
+  CMP0078-common.cmake:6 \(swig_add_library\)
+  CMP0078-WARN.cmake:1 \(include\)
+  CMakeLists.txt:3 \(include\)
+This warning is for project developers.  Use -Wno-dev to suppress it.$
diff --git a/Tests/RunCMake/UseSWIG/CMP0078-WARN-stdout.txt b/Tests/RunCMake/UseSWIG/CMP0078-WARN-stdout.txt
new file mode 100644
index 0000000..62f5371
--- /dev/null
+++ b/Tests/RunCMake/UseSWIG/CMP0078-WARN-stdout.txt
@@ -0,0 +1,2 @@
+-- PREFIX=''
+-- TARGET NAME='_example'
diff --git a/Tests/RunCMake/UseSWIG/CMP0078-WARN.cmake b/Tests/RunCMake/UseSWIG/CMP0078-WARN.cmake
new file mode 100644
index 0000000..86b21a5
--- /dev/null
+++ b/Tests/RunCMake/UseSWIG/CMP0078-WARN.cmake
@@ -0,0 +1 @@
+include(CMP0078-common.cmake)
diff --git a/Tests/RunCMake/UseSWIG/CMP0078-common.cmake b/Tests/RunCMake/UseSWIG/CMP0078-common.cmake
new file mode 100644
index 0000000..6cf39dc
--- /dev/null
+++ b/Tests/RunCMake/UseSWIG/CMP0078-common.cmake
@@ -0,0 +1,10 @@
+
+set(SWIG_EXECUTABLE "swig")
+set(SWIG_DIR "/swig")
+include(UseSWIG)
+
+swig_add_library(example LANGUAGE python TYPE MODULE SOURCES example.i)
+
+get_property(prefix TARGET ${SWIG_MODULE_example_REAL_NAME} PROPERTY PREFIX)
+message(STATUS "PREFIX='${prefix}'")
+message(STATUS "TARGET NAME='${SWIG_MODULE_example_REAL_NAME}'")
diff --git a/Tests/RunCMake/UseSWIG/CMakeLists.txt b/Tests/RunCMake/UseSWIG/CMakeLists.txt
new file mode 100644
index 0000000..d1b0d2c
--- /dev/null
+++ b/Tests/RunCMake/UseSWIG/CMakeLists.txt
@@ -0,0 +1,3 @@
+cmake_minimum_required(VERSION 3.10)
+project(${RunCMake_TEST} C)
+include(${RunCMake_TEST}.cmake)
diff --git a/Tests/RunCMake/UseSWIG/RunCMakeTest.cmake b/Tests/RunCMake/UseSWIG/RunCMakeTest.cmake
new file mode 100644
index 0000000..b96622a
--- /dev/null
+++ b/Tests/RunCMake/UseSWIG/RunCMakeTest.cmake
@@ -0,0 +1,5 @@
+include(RunCMake)
+
+run_cmake(CMP0078-WARN)
+run_cmake(CMP0078-OLD)
+run_cmake(CMP0078-NEW)
diff --git a/Tests/RunCMake/UseSWIG/example.i b/Tests/RunCMake/UseSWIG/example.i
new file mode 100644
index 0000000..86625aa
--- /dev/null
+++ b/Tests/RunCMake/UseSWIG/example.i
@@ -0,0 +1,2 @@
+/* File : example.i */
+%module example
diff --git a/Tests/UseSWIG/BasicConfiguration.cmake b/Tests/UseSWIG/BasicConfiguration.cmake
index ad34d39..fd3ac40 100644
--- a/Tests/UseSWIG/BasicConfiguration.cmake
+++ b/Tests/UseSWIG/BasicConfiguration.cmake
@@ -58,7 +58,6 @@ if(${language} MATCHES lua)
   set(SWIG_LANG_LIBRARIES ${LUA_LIBRARIES})
 endif()
 
-set(UseSWIG_TARGET_NAME_PREFERENCE STANDARD)
 unset(CMAKE_SWIG_FLAGS)
 
 set (CMAKE_INCLUDE_CURRENT_DIR ON)
diff --git a/Tests/UseSWIG/BasicCsharp/CMakeLists.txt b/Tests/UseSWIG/BasicCsharp/CMakeLists.txt
index 84743ef..1a6c763 100644
--- a/Tests/UseSWIG/BasicCsharp/CMakeLists.txt
+++ b/Tests/UseSWIG/BasicCsharp/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.12)
+cmake_minimum_required(VERSION 3.12...3.13)
 
 project(TestBasicCsharp CXX CSharp)
 
diff --git a/Tests/UseSWIG/BasicPerl/CMakeLists.txt b/Tests/UseSWIG/BasicPerl/CMakeLists.txt
index 476ef0e..cf02de7 100644
--- a/Tests/UseSWIG/BasicPerl/CMakeLists.txt
+++ b/Tests/UseSWIG/BasicPerl/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.1)
+cmake_minimum_required(VERSION 3.1...3.13)
 
 project(TestBasicPerl CXX)
 
diff --git a/Tests/UseSWIG/BasicPython/CMakeLists.txt b/Tests/UseSWIG/BasicPython/CMakeLists.txt
index cf1d821..8bbd1cb 100644
--- a/Tests/UseSWIG/BasicPython/CMakeLists.txt
+++ b/Tests/UseSWIG/BasicPython/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.1)
+cmake_minimum_required(VERSION 3.1...3.13)
 
 project(TestBasicPython CXX)
 
diff --git a/Tests/UseSWIG/ModuleVersion2/CMakeLists.txt b/Tests/UseSWIG/ModuleVersion2/CMakeLists.txt
index 452f9e2..a7ee210 100644
--- a/Tests/UseSWIG/ModuleVersion2/CMakeLists.txt
+++ b/Tests/UseSWIG/ModuleVersion2/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.1)
+cmake_minimum_required(VERSION 3.1...3.13)
 
 project(TestModuleVersion2 CXX)
 
@@ -16,7 +16,6 @@ else()
   set (PS ":")
 endif()
 
-set(UseSWIG_TARGET_NAME_PREFERENCE STANDARD)
 set (UseSWIG_MODULE_VERSION 2)
 unset(CMAKE_SWIG_FLAGS)
 
diff --git a/Tests/UseSWIG/MultipleModules/CMakeLists.txt b/Tests/UseSWIG/MultipleModules/CMakeLists.txt
index 25dd6b3..f1dc379 100644
--- a/Tests/UseSWIG/MultipleModules/CMakeLists.txt
+++ b/Tests/UseSWIG/MultipleModules/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.1)
+cmake_minimum_required(VERSION 3.1...3.13)
 
 project(TestMultipleModules CXX)
 
@@ -19,7 +19,6 @@ else()
   set (PS ":")
 endif()
 
-set(UseSWIG_TARGET_NAME_PREFERENCE STANDARD)
 unset(CMAKE_SWIG_FLAGS)
 
 set_property(SOURCE "../example.i" PROPERTY CPLUSPLUS ON)
diff --git a/Tests/UseSWIG/MultiplePython/CMakeLists.txt b/Tests/UseSWIG/MultiplePython/CMakeLists.txt
index a1651fb..8f87755 100644
--- a/Tests/UseSWIG/MultiplePython/CMakeLists.txt
+++ b/Tests/UseSWIG/MultiplePython/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.1)
+cmake_minimum_required(VERSION 3.1...3.13)
 
 project(TestMultiplePython CXX)
 
@@ -17,7 +17,6 @@ else()
   set (PS ":")
 endif()
 
-set(UseSWIG_TARGET_NAME_PREFERENCE STANDARD)
 unset(CMAKE_SWIG_FLAGS)
 
 set_property(SOURCE "../example.i" PROPERTY CPLUSPLUS ON)
diff --git a/Tests/UseSWIG/UseTargetINCLUDE_DIRECTORIES/CMakeLists.txt b/Tests/UseSWIG/UseTargetINCLUDE_DIRECTORIES/CMakeLists.txt
index d0855bf..fbb72d5 100644
--- a/Tests/UseSWIG/UseTargetINCLUDE_DIRECTORIES/CMakeLists.txt
+++ b/Tests/UseSWIG/UseTargetINCLUDE_DIRECTORIES/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.1)
+cmake_minimum_required(VERSION 3.1...3.13)
 
 project(TestUseTargetINCLUDE_DIRECTORIES CXX)
 
@@ -9,7 +9,6 @@ include(${SWIG_USE_FILE})
 
 find_package(Python3 REQUIRED COMPONENTS Interpreter Development)
 
-set(UseSWIG_TARGET_NAME_PREFERENCE STANDARD)
 unset(CMAKE_SWIG_FLAGS)
 
 set_property(SOURCE "example.i" PROPERTY CPLUSPLUS ON)

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

Summary of changes:
 Help/cpack_gen/deb.rst                             |  8 +++
 Help/manual/cmake-policies.7.rst                   |  1 +
 Help/policy/CMP0078.rst                            | 22 ++++++++
 Help/release/dev/UseSWIG-target-name-policy.rst    |  5 ++
 Help/release/dev/cpack-deb-source-date-epoch.rst   |  6 +++
 Modules/UseSWIG.cmake                              | 41 +++++++++------
 Source/cmArchiveWrite.cxx                          | 28 ++++++++++-
 Source/cmPolicies.h                                |  4 +-
 Tests/RunCMake/CMakeLists.txt                      |  3 ++
 Tests/RunCMake/CPack/CPackTestHelpers.cmake        |  6 ++-
 Tests/RunCMake/CPack/DEB/Helpers.cmake             |  2 +-
 Tests/RunCMake/CPack/RunCMakeTest.cmake            |  3 ++
 .../{SUGGESTS => TIMESTAMPS}/ExpectedFiles.cmake   |  0
 .../CPack/tests/TIMESTAMPS/VerifyResult.cmake      | 58 ++++++++++++++++++++++
 Tests/RunCMake/CPack/tests/TIMESTAMPS/test.cmake   |  3 ++
 Tests/RunCMake/UseSWIG/CMP0078-NEW-stdout.txt      |  2 +
 Tests/RunCMake/UseSWIG/CMP0078-NEW.cmake           |  2 +
 Tests/RunCMake/UseSWIG/CMP0078-OLD-stdout.txt      |  2 +
 Tests/RunCMake/UseSWIG/CMP0078-OLD.cmake           |  2 +
 Tests/RunCMake/UseSWIG/CMP0078-WARN-stderr.txt     |  9 ++++
 Tests/RunCMake/UseSWIG/CMP0078-WARN-stdout.txt     |  2 +
 Tests/RunCMake/UseSWIG/CMP0078-WARN.cmake          |  1 +
 Tests/RunCMake/UseSWIG/CMP0078-common.cmake        | 10 ++++
 .../{ObjectLibrary => UseSWIG}/CMakeLists.txt      |  0
 Tests/RunCMake/UseSWIG/RunCMakeTest.cmake          |  5 ++
 Tests/RunCMake/UseSWIG/example.i                   |  2 +
 Tests/UseSWIG/BasicConfiguration.cmake             |  1 -
 Tests/UseSWIG/BasicCsharp/CMakeLists.txt           |  2 +-
 Tests/UseSWIG/BasicPerl/CMakeLists.txt             |  2 +-
 Tests/UseSWIG/BasicPython/CMakeLists.txt           |  2 +-
 Tests/UseSWIG/ModuleVersion2/CMakeLists.txt        |  3 +-
 Tests/UseSWIG/MultipleModules/CMakeLists.txt       |  3 +-
 Tests/UseSWIG/MultiplePython/CMakeLists.txt        |  3 +-
 .../UseTargetINCLUDE_DIRECTORIES/CMakeLists.txt    |  3 +-
 34 files changed, 214 insertions(+), 32 deletions(-)
 create mode 100644 Help/policy/CMP0078.rst
 create mode 100644 Help/release/dev/UseSWIG-target-name-policy.rst
 create mode 100644 Help/release/dev/cpack-deb-source-date-epoch.rst
 copy Tests/RunCMake/CPack/tests/{SUGGESTS => TIMESTAMPS}/ExpectedFiles.cmake (100%)
 create mode 100644 Tests/RunCMake/CPack/tests/TIMESTAMPS/VerifyResult.cmake
 create mode 100644 Tests/RunCMake/CPack/tests/TIMESTAMPS/test.cmake
 create mode 100644 Tests/RunCMake/UseSWIG/CMP0078-NEW-stdout.txt
 create mode 100644 Tests/RunCMake/UseSWIG/CMP0078-NEW.cmake
 create mode 100644 Tests/RunCMake/UseSWIG/CMP0078-OLD-stdout.txt
 create mode 100644 Tests/RunCMake/UseSWIG/CMP0078-OLD.cmake
 create mode 100644 Tests/RunCMake/UseSWIG/CMP0078-WARN-stderr.txt
 create mode 100644 Tests/RunCMake/UseSWIG/CMP0078-WARN-stdout.txt
 create mode 100644 Tests/RunCMake/UseSWIG/CMP0078-WARN.cmake
 create mode 100644 Tests/RunCMake/UseSWIG/CMP0078-common.cmake
 copy Tests/RunCMake/{ObjectLibrary => UseSWIG}/CMakeLists.txt (100%)
 create mode 100644 Tests/RunCMake/UseSWIG/RunCMakeTest.cmake
 create mode 100644 Tests/RunCMake/UseSWIG/example.i


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list