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  c2ea729c87cee2fb19d34090ef00e42d12fb59f2 (commit)
       via  5d43e46ad5e2760f0e149959dc09b1414d54f362 (commit)
       via  21806e6f5f817c4c6cd1d2a304839b460d1fdbbc (commit)
       via  eee4124f3a9f2f7f560b76dccfe43dfca5769ee2 (commit)
       via  3726ded116e405d28d7d2bbd0abc1b929ab0adb0 (commit)
       via  95646591d62966043f0bc25364211594adc8d963 (commit)
       via  acb4cb950023be9300699a0220715bebb50306ad (commit)
       via  fb3c5bfdbe87786169dfe6d3ddaa86f4f6a5676f (commit)
      from  c5fdd66252a843eff182e6f6b773ef11a16e162b (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=c2ea729c87cee2fb19d34090ef00e42d12fb59f2
commit c2ea729c87cee2fb19d34090ef00e42d12fb59f2
Merge: 5d43e46 acb4cb9
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Thu Nov 30 12:58:09 2017 +0000
Commit:     Kitware Robot <kwro...@kitware.com>
CommitDate: Thu Nov 30 07:58:15 2017 -0500

    Merge topic 'CMakeFindBinUtils-improve-switch'
    
    acb4cb95 CMakeFindBinUtils: Improve switch between MSVC- and GNU-like tools
    
    Acked-by: Kitware Robot <kwro...@kitware.com>
    Merge-request: !1533


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5d43e46ad5e2760f0e149959dc09b1414d54f362
commit 5d43e46ad5e2760f0e149959dc09b1414d54f362
Merge: 21806e6 fb3c5bf
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Thu Nov 30 12:57:01 2017 +0000
Commit:     Kitware Robot <kwro...@kitware.com>
CommitDate: Thu Nov 30 07:57:08 2017 -0500

    Merge topic 'whitelist-more-interface-properties'
    
    fb3c5bfd cmTargetPropertyComputer: whitelist custom properties
    
    Acked-by: Kitware Robot <kwro...@kitware.com>
    Merge-request: !1515


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=21806e6f5f817c4c6cd1d2a304839b460d1fdbbc
commit 21806e6f5f817c4c6cd1d2a304839b460d1fdbbc
Merge: eee4124 3726ded
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Thu Nov 30 12:55:53 2017 +0000
Commit:     Kitware Robot <kwro...@kitware.com>
CommitDate: Thu Nov 30 07:55:59 2017 -0500

    Merge topic 'findcuda-separable-compilation-fix'
    
    3726ded1 FindCUDA: Add cublas device library to separable compilation
    
    Acked-by: Kitware Robot <kwro...@kitware.com>
    Reviewed-by: Robert Maynard <robert.mayn...@kitware.com>
    Merge-request: !1446


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=eee4124f3a9f2f7f560b76dccfe43dfca5769ee2
commit eee4124f3a9f2f7f560b76dccfe43dfca5769ee2
Merge: c5fdd66 9564659
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Thu Nov 30 12:55:19 2017 +0000
Commit:     Kitware Robot <kwro...@kitware.com>
CommitDate: Thu Nov 30 07:55:24 2017 -0500

    Merge topic 'findiconv-module'
    
    95646591 FindIconv: Add the FindIconv module.
    
    Acked-by: Kitware Robot <kwro...@kitware.com>
    Merge-request: !1530


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3726ded116e405d28d7d2bbd0abc1b929ab0adb0
commit 3726ded116e405d28d7d2bbd0abc1b929ab0adb0
Author:     Jamil Appa <jamil.a...@zenotech.com>
AuthorDate: Fri Nov 3 18:08:50 2017 -0400
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Wed Nov 29 11:44:42 2017 -0500

    FindCUDA: Add cublas device library to separable compilation
    
    Add cublas libraries to separable compilation device link line to
    resolve missing symbols when using cublas device library.

diff --git a/Modules/FindCUDA.cmake b/Modules/FindCUDA.cmake
index d177e5e..c907c8b 100644
--- a/Modules/FindCUDA.cmake
+++ b/Modules/FindCUDA.cmake
@@ -1756,7 +1756,7 @@ function(CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS 
output_file cuda_target options
       add_custom_command(
         OUTPUT ${output_file}
         DEPENDS ${object_files}
-        COMMAND ${CUDA_NVCC_EXECUTABLE} ${nvcc_flags} -dlink ${object_files} 
-o ${output_file}
+        COMMAND ${CUDA_NVCC_EXECUTABLE} ${nvcc_flags} -dlink ${object_files} 
${CUDA_cublas_device_LIBRARY} -o ${output_file}
         ${flags}
         COMMENT "Building NVCC intermediate link file 
${output_file_relative_path}"
         COMMAND_EXPAND_LISTS
@@ -1769,7 +1769,7 @@ function(CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS 
output_file cuda_target options
         PRE_LINK
         COMMAND ${CMAKE_COMMAND} -E echo "Building NVCC intermediate link file 
${output_file_relative_path}"
         COMMAND ${CMAKE_COMMAND} -E make_directory "${output_file_dir}"
-        COMMAND ${CUDA_NVCC_EXECUTABLE} ${nvcc_flags} ${flags} -dlink 
${object_files} -o "${output_file}"
+        COMMAND ${CUDA_NVCC_EXECUTABLE} ${nvcc_flags} ${flags} -dlink 
${object_files} ${CUDA_cublas_device_LIBRARY} -o "${output_file}"
         COMMAND_EXPAND_LISTS
         ${_verbatim}
         )

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=95646591d62966043f0bc25364211594adc8d963
commit 95646591d62966043f0bc25364211594adc8d963
Author:     Christian Pfeiffer <cpfeif...@live.de>
AuthorDate: Wed Nov 22 17:53:54 2017 +0100
Commit:     Christian Pfeiffer <christian.pfeif...@scai.fraunhofer.de>
CommitDate: Wed Nov 29 14:51:32 2017 +0100

    FindIconv: Add the FindIconv module.
    
    This module provides abstraction over the various ways POSIX platforms
    handle the iconv calls defined in POSIX.1-2001 and later versions.

diff --git a/Help/manual/cmake-modules.7.rst b/Help/manual/cmake-modules.7.rst
index 9fd92ec..694bae5 100644
--- a/Help/manual/cmake-modules.7.rst
+++ b/Help/manual/cmake-modules.7.rst
@@ -130,6 +130,7 @@ All Modules
    /module/FindIcotool
    /module/FindICU
    /module/FindImageMagick
+   /module/FindIconv
    /module/FindIntl
    /module/FindITK
    /module/FindJasper
diff --git a/Help/module/FindIconv.rst b/Help/module/FindIconv.rst
new file mode 100644
index 0000000..c1f3ed0
--- /dev/null
+++ b/Help/module/FindIconv.rst
@@ -0,0 +1 @@
+.. cmake-module:: ../../Modules/FindIconv.cmake
diff --git a/Help/release/dev/FindIconv.rst b/Help/release/dev/FindIconv.rst
new file mode 100644
index 0000000..98f2591
--- /dev/null
+++ b/Help/release/dev/FindIconv.rst
@@ -0,0 +1,4 @@
+FindIconv
+---------
+
+* A :module:`FindIconv` module was added to locate iconv support.
diff --git a/Modules/FindIconv.cmake b/Modules/FindIconv.cmake
new file mode 100644
index 0000000..bf20f6f
--- /dev/null
+++ b/Modules/FindIconv.cmake
@@ -0,0 +1,133 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+#[=======================================================================[.rst:
+FindIconv
+---------
+
+This module finds the ``iconv()`` POSIX.1 functions on the system.
+These functions might be provided in the regular C library or externally
+in the form of an additional library.
+
+The following variables are provided to indicate iconv support:
+
+.. variable:: Iconv_FOUND
+
+  Variable indicating if the iconv support was found.
+
+.. variable:: Iconv_INCLUDE_DIRS
+
+  The directories containing the iconv headers.
+
+.. variable:: Iconv_LIBRARIES
+
+  The iconv libraries to be linked.
+
+.. variable:: Iconv_IS_BUILT_IN
+
+  A variable indicating whether iconv support is stemming from the
+  C library or not. Even if the C library provides `iconv()`, the presence of
+  an external `libiconv` implementation might lead to this being false.
+
+Additionally, the following :prop_tgt:`IMPORTED` target is being provided:
+
+.. variable:: Iconv::Iconv
+
+  Imported target for using iconv.
+
+The following cache variables may also be set:
+
+.. variable:: Iconv_INCLUDE_DIR
+
+  The directory containing the iconv headers.
+
+.. variable:: Iconv_LIBRARY
+
+  The iconv library (if not implicitly given in the C library).
+
+.. note::
+  On POSIX platforms, iconv might be part of the C library and the cache
+  variables ``Iconv_INCLUDE_DIR`` and ``Iconv_LIBRARY`` might be empty.
+
+#]=======================================================================]
+
+include(${CMAKE_CURRENT_LIST_DIR}/CMakePushCheckState.cmake)
+if(CMAKE_C_COMPILER_LOADED)
+  include(${CMAKE_CURRENT_LIST_DIR}/CheckCSourceCompiles.cmake)
+elseif(CMAKE_CXX_COMPILER_LOADED)
+  include(${CMAKE_CURRENT_LIST_DIR}/CheckCXXSourceCompiles.cmake)
+else()
+  # If neither C nor CXX are loaded, implicit iconv makes no sense.
+  set(Iconv_IS_BUILT_IN FALSE)
+endif()
+
+# iconv can only be provided in libc on a POSIX system.
+# If any cache variable is already set, we'll skip this test.
+if(NOT DEFINED Iconv_IS_BUILT_IN)
+  if(UNIX AND NOT DEFINED Iconv_INCLUDE_DIR AND NOT DEFINED Iconv_LIBRARY)
+    cmake_push_check_state(RESET)
+    # We always suppress the message here: Otherwise on supported systems
+    # not having iconv in their C library (e.g. those using libiconv)
+    # would always display a confusing "Looking for iconv - not found" message
+    set(CMAKE_FIND_QUIETLY TRUE)
+    # The following code will not work, but it's sufficient to see if it 
compiles.
+    # Note: libiconv will define the iconv functions as macros, so 
CheckSymbolExists
+    # will not yield correct results.
+    set(Iconv_IMPLICIT_TEST_CODE
+      "
+      #include <stddef.h>
+      #include <iconv.h>
+      int main() {
+        char *a, *b;
+        size_t i, j;
+        iconv_t ic;
+        ic = iconv_open(\"to\", \"from\");
+        iconv(ic, &a, &i, &b, &j);
+        iconv_close(ic);
+      }
+      "
+    )
+    if(CMAKE_C_COMPILER_LOADED)
+      check_c_source_compiles("${Iconv_IMPLICIT_TEST_CODE}" Iconv_IS_BUILT_IN)
+    else()
+      check_cxx_source_compiles("${Iconv_IMPLICIT_TEST_CODE}" 
Iconv_IS_BUILT_IN)
+    endif()
+    cmake_pop_check_state()
+  else()
+    set(Iconv_IS_BUILT_IN FALSE)
+  endif()
+endif()
+
+if(NOT Iconv_IS_BUILT_IN)
+  find_path(Iconv_INCLUDE_DIR
+    NAMES "iconv.h"
+    DOC "iconv include directory")
+  set(Iconv_LIBRARY_NAMES "iconv" "libiconv")
+else()
+  set(Iconv_INCLUDE_DIR "" CACHE FILEPATH "iconv include directory")
+  set(Iconv_LIBRARY_NAMES "c")
+endif()
+
+find_library(Iconv_LIBRARY
+  NAMES ${Iconv_LIBRARY_NAMES}
+  DOC "iconv library (potentially the C library)")
+
+mark_as_advanced(Iconv_INCLUDE_DIR)
+mark_as_advanced(Iconv_LIBRARY)
+
+include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake)
+if(NOT Iconv_IS_BUILT_IN)
+  find_package_handle_standard_args(Iconv REQUIRED_VARS Iconv_LIBRARY 
Iconv_INCLUDE_DIR)
+else()
+  find_package_handle_standard_args(Iconv REQUIRED_VARS Iconv_LIBRARY)
+endif()
+
+if(Iconv_FOUND)
+  set(Iconv_INCLUDE_DIRS "${Iconv_INCLUDE_DIR}")
+  set(Iconv_LIBRARIES "${Iconv_LIBRARY}")
+  if(NOT TARGET Iconv::Iconv)
+    add_library(Iconv::Iconv INTERFACE IMPORTED)
+  endif()
+  set_property(TARGET Iconv::Iconv PROPERTY INTERFACE_INCLUDE_DIRECTORIES 
"${Iconv_INCLUDE_DIRS}")
+  set_property(TARGET Iconv::Iconv PROPERTY INTERFACE_LINK_LIBRARIES 
"${Iconv_LIBRARIES}")
+endif()
diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index 4a7b8c9..a61864f 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -1433,6 +1433,10 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P 
${CMake_SOURCE_DIR}/Utilities/Release
     add_subdirectory(GoogleTest)
   endif()
 
+  if(CMake_TEST_FindIconv)
+    add_subdirectory(FindIconv)
+  endif()
+
   if(CMake_TEST_FindICU)
     add_subdirectory(FindICU)
   endif()
diff --git a/Tests/FindIconv/CMakeLists.txt b/Tests/FindIconv/CMakeLists.txt
new file mode 100644
index 0000000..b205b80
--- /dev/null
+++ b/Tests/FindIconv/CMakeLists.txt
@@ -0,0 +1,10 @@
+add_test(NAME FindIconv.Test COMMAND
+  ${CMAKE_CTEST_COMMAND} -C $<CONFIGURATION>
+  --build-and-test
+  "${CMake_SOURCE_DIR}/Tests/FindIconv/Test"
+  "${CMake_BINARY_DIR}/Tests/FindIconv/Test"
+  ${build_generator_args}
+  --build-project TestFindIconv
+  --build-options ${build_options}
+  --test-command ${CMAKE_CTEST_COMMAND} -V -C $<CONFIGURATION>
+  )
diff --git a/Tests/FindIconv/Test/CMakeLists.txt 
b/Tests/FindIconv/Test/CMakeLists.txt
new file mode 100644
index 0000000..c59adb3
--- /dev/null
+++ b/Tests/FindIconv/Test/CMakeLists.txt
@@ -0,0 +1,14 @@
+cmake_minimum_required(VERSION 3.10)
+project(TestFindIconv CXX)
+include(CTest)
+
+find_package(Iconv REQUIRED)
+
+add_executable(test_iconv_tgt main.cxx)
+target_link_libraries(test_iconv_tgt Iconv::Iconv)
+add_test(NAME test_iconv_tgt COMMAND test_iconv_tgt)
+
+add_executable(test_iconv_var main.cxx)
+target_include_directories(test_iconv_var PRIVATE ${Iconv_INCLUDE_DIRS})
+target_link_libraries(test_iconv_var PRIVATE ${Iconv_LIBRARIES})
+add_test(NAME test_iconv_var COMMAND test_iconv_var)
diff --git a/Tests/FindIconv/Test/main.cxx b/Tests/FindIconv/Test/main.cxx
new file mode 100644
index 0000000..415ee37
--- /dev/null
+++ b/Tests/FindIconv/Test/main.cxx
@@ -0,0 +1,52 @@
+extern "C" {
+#include <iconv.h>
+}
+#include <array>
+#include <cstddef>
+#include <cstdlib>
+#include <iostream>
+#include <string>
+#include <system_error>
+
+class iconv_desc
+{
+private:
+  iconv_t iconvd_;
+
+public:
+  iconv_desc(const std::string& tocode, const std::string& fromcode)
+  {
+    iconvd_ = iconv_open(tocode.c_str(), fromcode.c_str());
+    if (iconvd_ == reinterpret_cast<iconv_t>(-1))
+      throw std::system_error(errno, std::system_category());
+  }
+
+  ~iconv_desc() { iconv_close(iconvd_); }
+
+  operator iconv_t() { return this->iconvd_; }
+};
+
+int main()
+{
+  try {
+    auto conv_d = iconv_desc{ "ISO-8859-1", "UTF-8" };
+    auto from_str = std::array<char, 10>{ u8"a\xC3\xA4o\xC3\xB6u\xC3\xBC" };
+    auto to_str = std::array<char, 7>{};
+
+    auto from_str_ptr = from_str.data();
+    auto from_len = from_str.size();
+    auto to_str_ptr = to_str.data();
+    auto to_len = to_str.size();
+    const auto iconv_ret =
+      iconv(conv_d, &from_str_ptr, &from_len, &to_str_ptr, &to_len);
+    if (iconv_ret == static_cast<std::size_t>(-1))
+      throw std::system_error(errno, std::system_category());
+    std::cout << '\'' << from_str.data() << "\' converted to \'"
+              << to_str.data() << '\'' << std::endl;
+    return EXIT_SUCCESS;
+  } catch (const std::system_error& ex) {
+    std::cerr << "ERROR: " << ex.code() << '\n'
+              << ex.code().message() << std::endl;
+  }
+  return EXIT_FAILURE;
+}

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=acb4cb950023be9300699a0220715bebb50306ad
commit acb4cb950023be9300699a0220715bebb50306ad
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Tue Nov 28 07:50:15 2017 -0500
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Tue Nov 28 07:57:58 2017 -0500

    CMakeFindBinUtils: Improve switch between MSVC- and GNU-like tools
    
    The switch was not considering some languages, such as `ASM`.
    Instead of memorizing the list of languages in the condition,
    use a language specified by the includer.
    
    Fixes: #17510

diff --git a/Modules/CMakeDetermineASMCompiler.cmake 
b/Modules/CMakeDetermineASMCompiler.cmake
index f7cf54a..ed8f598 100644
--- a/Modules/CMakeDetermineASMCompiler.cmake
+++ b/Modules/CMakeDetermineASMCompiler.cmake
@@ -163,8 +163,8 @@ if (NOT _CMAKE_TOOLCHAIN_PREFIX)
 endif ()
 
 
-include(CMakeFindBinUtils)
 set(_CMAKE_PROCESSING_LANGUAGE "ASM")
+include(CMakeFindBinUtils)
 include(Compiler/${CMAKE_ASM${ASM_DIALECT}_COMPILER_ID}-FindBinUtils OPTIONAL)
 unset(_CMAKE_PROCESSING_LANGUAGE)
 
diff --git a/Modules/CMakeDetermineCCompiler.cmake 
b/Modules/CMakeDetermineCCompiler.cmake
index 4e56ce1..7e6ca1e 100644
--- a/Modules/CMakeDetermineCCompiler.cmake
+++ b/Modules/CMakeDetermineCCompiler.cmake
@@ -166,8 +166,8 @@ if (CMAKE_CROSSCOMPILING  AND NOT _CMAKE_TOOLCHAIN_PREFIX)
 
 endif ()
 
-include(CMakeFindBinUtils)
 set(_CMAKE_PROCESSING_LANGUAGE "C")
+include(CMakeFindBinUtils)
 include(Compiler/${CMAKE_C_COMPILER_ID}-FindBinUtils OPTIONAL)
 unset(_CMAKE_PROCESSING_LANGUAGE)
 
diff --git a/Modules/CMakeDetermineCUDACompiler.cmake 
b/Modules/CMakeDetermineCUDACompiler.cmake
index c9cd7e2..f5a3ebd 100644
--- a/Modules/CMakeDetermineCUDACompiler.cmake
+++ b/Modules/CMakeDetermineCUDACompiler.cmake
@@ -73,7 +73,10 @@ if(NOT CMAKE_CUDA_COMPILER_ID_RUN)
   CMAKE_DETERMINE_COMPILER_ID(CUDA CUDAFLAGS CMakeCUDACompilerId.cu)
 endif()
 
+set(_CMAKE_PROCESSING_LANGUAGE "CUDA")
 include(CMakeFindBinUtils)
+unset(_CMAKE_PROCESSING_LANGUAGE)
+
 if(MSVC_CUDA_ARCHITECTURE_ID)
   set(SET_MSVC_CUDA_ARCHITECTURE_ID
     "set(MSVC_CUDA_ARCHITECTURE_ID ${MSVC_CUDA_ARCHITECTURE_ID})")
diff --git a/Modules/CMakeDetermineCXXCompiler.cmake 
b/Modules/CMakeDetermineCXXCompiler.cmake
index 4541844..c0fb3b6 100644
--- a/Modules/CMakeDetermineCXXCompiler.cmake
+++ b/Modules/CMakeDetermineCXXCompiler.cmake
@@ -164,8 +164,8 @@ if (CMAKE_CROSSCOMPILING  AND NOT  _CMAKE_TOOLCHAIN_PREFIX)
 
 endif ()
 
-include(CMakeFindBinUtils)
 set(_CMAKE_PROCESSING_LANGUAGE "CXX")
+include(CMakeFindBinUtils)
 include(Compiler/${CMAKE_CXX_COMPILER_ID}-FindBinUtils OPTIONAL)
 unset(_CMAKE_PROCESSING_LANGUAGE)
 
diff --git a/Modules/CMakeDetermineFortranCompiler.cmake 
b/Modules/CMakeDetermineFortranCompiler.cmake
index 2549c22..cf502f6 100644
--- a/Modules/CMakeDetermineFortranCompiler.cmake
+++ b/Modules/CMakeDetermineFortranCompiler.cmake
@@ -258,8 +258,8 @@ if (CMAKE_CROSSCOMPILING  AND NOT _CMAKE_TOOLCHAIN_PREFIX)
 
 endif ()
 
-include(CMakeFindBinUtils)
 set(_CMAKE_PROCESSING_LANGUAGE "Fortran")
+include(CMakeFindBinUtils)
 include(Compiler/${CMAKE_Fortran_COMPILER_ID}-FindBinUtils OPTIONAL)
 unset(_CMAKE_PROCESSING_LANGUAGE)
 
diff --git a/Modules/CMakeDetermineSwiftCompiler.cmake 
b/Modules/CMakeDetermineSwiftCompiler.cmake
index 2604906..dd02d54 100644
--- a/Modules/CMakeDetermineSwiftCompiler.cmake
+++ b/Modules/CMakeDetermineSwiftCompiler.cmake
@@ -34,7 +34,9 @@ if (NOT _CMAKE_TOOLCHAIN_LOCATION)
   get_filename_component(_CMAKE_TOOLCHAIN_LOCATION "${CMAKE_Swift_COMPILER}" 
PATH)
 endif ()
 
+set(_CMAKE_PROCESSING_LANGUAGE "Swift")
 include(CMakeFindBinUtils)
+unset(_CMAKE_PROCESSING_LANGUAGE)
 
 # configure variables set in this file for fast reload later on
 configure_file(${CMAKE_ROOT}/Modules/CMakeSwiftCompiler.cmake.in
diff --git a/Modules/CMakeFindBinUtils.cmake b/Modules/CMakeFindBinUtils.cmake
index e4103d0..ece0547 100644
--- a/Modules/CMakeFindBinUtils.cmake
+++ b/Modules/CMakeFindBinUtils.cmake
@@ -20,16 +20,9 @@
 # on UNIX, cygwin and mingw
 
 # if it's the MS C/CXX compiler, search for link
-if("x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC"
-   OR "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC"
-   OR "x${CMAKE_Fortran_SIMULATE_ID}" STREQUAL "xMSVC"
-   OR "x${CMAKE_C_COMPILER_ID}" STREQUAL "xMSVC"
-   OR "x${CMAKE_CXX_COMPILER_ID}" STREQUAL "xMSVC"
-   OR "x${CMAKE_CUDA_SIMULATE_ID}" STREQUAL "xMSVC"
-   OR (CMAKE_HOST_WIN32 AND (
-        "x${CMAKE_C_COMPILER_ID}" STREQUAL "xPGI"
-         OR "x${CMAKE_Fortran_COMPILER_ID}" STREQUAL "xPGI"
-   ))
+if("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_SIMULATE_ID}" STREQUAL "xMSVC"
+   OR "x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" STREQUAL "xMSVC"
+   OR (CMAKE_HOST_WIN32 AND 
"x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" STREQUAL "xPGI")
    OR (CMAKE_GENERATOR MATCHES "Visual Studio"
        AND NOT CMAKE_VS_PLATFORM_NAME STREQUAL "Tegra-Android"))
 

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=fb3c5bfdbe87786169dfe6d3ddaa86f4f6a5676f
commit fb3c5bfdbe87786169dfe6d3ddaa86f4f6a5676f
Author:     Ben Boeckel <ben.boec...@kitware.com>
AuthorDate: Tue Nov 21 11:35:41 2017 -0500
Commit:     Ben Boeckel <ben.boec...@kitware.com>
CommitDate: Tue Nov 21 11:35:41 2017 -0500

    cmTargetPropertyComputer: whitelist custom properties
    
    CMake's properties will never begin with an underscore or a lowercase
    letter, so allow them to be set by projects.

diff --git a/Help/release/dev/whitelist-more-interface-properties.rst 
b/Help/release/dev/whitelist-more-interface-properties.rst
new file mode 100644
index 0000000..793361c
--- /dev/null
+++ b/Help/release/dev/whitelist-more-interface-properties.rst
@@ -0,0 +1,7 @@
+whitelist-more-interface-properties
+-----------------------------------
+
+* ``INTERFACE`` libraries may now have custom properties set on them if they
+  start with either an underscore (``_``) or a lowercase ASCII character. The
+  original intention was to only allow properties which made sense for
+  ``INTERFACE`` libraries, but it also blocked usage of custom properties.
diff --git a/Source/cmTargetPropertyComputer.cxx 
b/Source/cmTargetPropertyComputer.cxx
index ed9026e..06ce0b1 100644
--- a/Source/cmTargetPropertyComputer.cxx
+++ b/Source/cmTargetPropertyComputer.cxx
@@ -3,6 +3,7 @@
 
 #include "cmTargetPropertyComputer.h"
 
+#include <cctype>
 #include <sstream>
 #include <unordered_set>
 
@@ -49,6 +50,12 @@ bool cmTargetPropertyComputer::WhiteListedInterfaceProperty(
   if (cmHasLiteralPrefix(prop, "INTERFACE_")) {
     return true;
   }
+  if (cmHasLiteralPrefix(prop, "_")) {
+    return true;
+  }
+  if (std::islower(prop[0])) {
+    return true;
+  }
   static std::unordered_set<std::string> builtIns;
   if (builtIns.empty()) {
     builtIns.insert("COMPATIBLE_INTERFACE_BOOL");
diff --git a/Tests/RunCMake/interface_library/whitelist.cmake 
b/Tests/RunCMake/interface_library/whitelist.cmake
index 98ef05c..bf64f01 100644
--- a/Tests/RunCMake/interface_library/whitelist.cmake
+++ b/Tests/RunCMake/interface_library/whitelist.cmake
@@ -4,3 +4,13 @@ add_library(iface INTERFACE)
 set_property(TARGET iface PROPERTY OUTPUT_NAME output)
 set_property(TARGET iface APPEND PROPERTY OUTPUT_NAME append)
 get_target_property(outname iface OUTPUT_NAME)
+
+# Properties starting with `_` are allowed.
+set_property(TARGET iface PROPERTY "_custom_property" output)
+set_property(TARGET iface APPEND PROPERTY "_custom_property" append)
+get_target_property(outname iface "_custom_property")
+
+# Properties starting with a lowercase letter are allowed.
+set_property(TARGET iface PROPERTY "custom_property" output)
+set_property(TARGET iface APPEND PROPERTY "custom_property" append)
+get_target_property(outname iface "custom_property")

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

Summary of changes:
 Help/manual/cmake-modules.7.rst                    |    1 +
 Help/module/FindIconv.rst                          |    1 +
 Help/release/dev/FindIconv.rst                     |    4 +
 .../dev/whitelist-more-interface-properties.rst    |    7 ++
 Modules/CMakeDetermineASMCompiler.cmake            |    2 +-
 Modules/CMakeDetermineCCompiler.cmake              |    2 +-
 Modules/CMakeDetermineCUDACompiler.cmake           |    3 +
 Modules/CMakeDetermineCXXCompiler.cmake            |    2 +-
 Modules/CMakeDetermineFortranCompiler.cmake        |    2 +-
 Modules/CMakeDetermineSwiftCompiler.cmake          |    2 +
 Modules/CMakeFindBinUtils.cmake                    |   13 +-
 Modules/FindCUDA.cmake                             |    4 +-
 Modules/FindIconv.cmake                            |  133 ++++++++++++++++++++
 Source/cmTargetPropertyComputer.cxx                |    7 ++
 Tests/CMakeLists.txt                               |    4 +
 Tests/{FindEXPAT => FindIconv}/CMakeLists.txt      |    8 +-
 Tests/FindIconv/Test/CMakeLists.txt                |   14 +++
 Tests/FindIconv/Test/main.cxx                      |   52 ++++++++
 Tests/RunCMake/interface_library/whitelist.cmake   |   10 ++
 19 files changed, 251 insertions(+), 20 deletions(-)
 create mode 100644 Help/module/FindIconv.rst
 create mode 100644 Help/release/dev/FindIconv.rst
 create mode 100644 Help/release/dev/whitelist-more-interface-properties.rst
 create mode 100644 Modules/FindIconv.cmake
 copy Tests/{FindEXPAT => FindIconv}/CMakeLists.txt (54%)
 create mode 100644 Tests/FindIconv/Test/CMakeLists.txt
 create mode 100644 Tests/FindIconv/Test/main.cxx


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

Reply via email to