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  067a4f484b1e2f650918d90051653b5c434c77a2 (commit)
       via  8b42d560028b8da0a3cf7e1a14962f2245d21227 (commit)
       via  5a720a30fad4cb7dc4b9d9b783a7d3a8a9a1b231 (commit)
       via  a1c291e0ac2cfe62e394842192b12e9e092c5a0b (commit)
       via  f093ac36c0e389447af210d1f596baa5207bd6b3 (commit)
       via  0f9d7dc3ba2f6a82d6d0d54e7cc79899576981b8 (commit)
       via  4ff3ab2ac9d0c81c927d25117e5a14cb8ebbbb86 (commit)
       via  a15595e4c9ae27677180b0b5374ead7a754be1f7 (commit)
       via  6baa80d1e31b26f06c68afddd096d3d8c5961718 (commit)
       via  abea06efdfebbf5becfde40cb8ecc8427054edf1 (commit)
       via  26f2b65fec383bbab74f30c4b0bc6649d0b5b509 (commit)
       via  74829f01b13de0031e659bf8dac3e6672fbfa77b (commit)
       via  19669abe1d714d9dba3dcd642588160c0814f9e7 (commit)
       via  a2a90f41e312ef1b6f60dd700db441e4b637d853 (commit)
       via  4819ff964714faec8ad2d92a3ee541b19196bcfc (commit)
       via  26af0b25e77ba48b6d015adef6d54b6725fd7977 (commit)
       via  d44c0db0b2f8fa24b932b5c0d506fc8842baffd6 (commit)
       via  b7d5ef23e9c9c76c7b8422c969ce806f9fd965e6 (commit)
       via  3d0210d8dc48f3e85f771b9e301ba867272c106d (commit)
       via  53fbe23f3fc6a6680308bb01edc02442ca9c7a57 (commit)
      from  7c39a9c6b6e2463b9fefc7516faeb48c2cbbd997 (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=067a4f484b1e2f650918d90051653b5c434c77a2
commit 067a4f484b1e2f650918d90051653b5c434c77a2
Merge: 8b42d56 74829f0
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Wed May 29 13:21:53 2019 +0000
Commit:     Kitware Robot <kwro...@kitware.com>
CommitDate: Wed May 29 09:22:12 2019 -0400

    Merge topic 'clang-gnulike-support'
    
    74829f01b1 Help: Add notes for topic 'clang-gnulike-support'
    19669abe1d Tests: handle string escaping differences with NMake+clang
    a2a90f41e3 Tests: require C++14 for the Tutorial
    4819ff9647 Tests: fix failures with gnu mode clang on windows
    26af0b25e7 cmake: use correct stack size with gnu mode clang on windows
    d44c0db0b2 clang: setup correct configuration in gnu mode
    b7d5ef23e9 cmGlobalNinjaGenerator: use gnu compatible paths with clang in 
gnu mode
    3d0210d8dc binutils: add the llvm-* variants to the tool lists.
    ...
    
    Acked-by: Kitware Robot <kwro...@kitware.com>
    Acked-by: Francesco Bertolaccini <france...@bertolaccini.dev>
    Acked-by: Stanislav Ershov <digital.stream.of.m...@gmail.com>
    Acked-by: Saleem Abdulrasool <compn...@compnerd.org>
    Merge-request: !2992


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8b42d560028b8da0a3cf7e1a14962f2245d21227
commit 8b42d560028b8da0a3cf7e1a14962f2245d21227
Merge: 5a720a3 4ff3ab2
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Wed May 29 13:18:27 2019 +0000
Commit:     Kitware Robot <kwro...@kitware.com>
CommitDate: Wed May 29 09:19:38 2019 -0400

    Merge topic 'FindZLIB-names'
    
    4ff3ab2ac9 FindZLIB: Add more zlib library names
    
    Acked-by: Kitware Robot <kwro...@kitware.com>
    Merge-request: !3384


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5a720a30fad4cb7dc4b9d9b783a7d3a8a9a1b231
commit 5a720a30fad4cb7dc4b9d9b783a7d3a8a9a1b231
Merge: a1c291e a15595e
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Wed May 29 13:18:17 2019 +0000
Commit:     Kitware Robot <kwro...@kitware.com>
CommitDate: Wed May 29 09:18:35 2019 -0400

    Merge topic 'samu'
    
    a15595e4c9 Ninja: Consider 'samu' when looking for CMAKE_MAKE_PROGRAM
    
    Acked-by: Kitware Robot <kwro...@kitware.com>
    Merge-request: !3380


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a1c291e0ac2cfe62e394842192b12e9e092c5a0b
commit a1c291e0ac2cfe62e394842192b12e9e092c5a0b
Merge: f093ac3 6baa80d
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Wed May 29 13:15:40 2019 +0000
Commit:     Kitware Robot <kwro...@kitware.com>
CommitDate: Wed May 29 09:17:44 2019 -0400

    Merge topic 'swift-wrapper'
    
    6baa80d1e3 Modules: correct linker wrapper flag for Swift
    
    Acked-by: Kitware Robot <kwro...@kitware.com>
    Merge-request: !3390

diff --cc Modules/CMakeSwiftInformation.cmake
index 69e1519,6eed283..21f18d4
--- a/Modules/CMakeSwiftInformation.cmake
+++ b/Modules/CMakeSwiftInformation.cmake
@@@ -19,15 -19,13 +19,16 @@@ endif(
  
  set(CMAKE_INCLUDE_FLAG_Swift "-I ")
  
- set(CMAKE_Swift_DEFINE_FLAG -D)
  set(CMAKE_Swift_COMPILE_OPTIONS_TARGET "-target ")
  set(CMAKE_Swift_COMPILER_ARG1 -frontend)
+ set(CMAKE_Swift_DEFINE_FLAG -D)
  set(CMAKE_Swift_FRAMEWORK_SEARCH_FLAG "-F ")
+ set(CMAKE_Swift_LINKER_WRAPPER_FLAG "-Xlinker" " ")
  set(CMAKE_Swift_RESPONSE_FILE_LINK_FLAG @)
  
 +set(CMAKE_Swift_LINKER_PREFERENCE 50)
 +set(CMAKE_Swift_LINKER_PREFERENCE_PROPAGATES 1)
 +
  # NOTE(compnerd) use the short form for convenience and ease of search.  They
  # are treated equivalent to their long form names as well as custom Swift
  # specific names.

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=f093ac36c0e389447af210d1f596baa5207bd6b3
commit f093ac36c0e389447af210d1f596baa5207bd6b3
Merge: 0f9d7dc abea06e
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Wed May 29 13:15:28 2019 +0000
Commit:     Kitware Robot <kwro...@kitware.com>
CommitDate: Wed May 29 09:16:17 2019 -0400

    Merge topic 'linker-preference'
    
    abea06efdf Modules: setup `CMAKE_Swift_LINKER_PREFERENCE`
    
    Acked-by: Kitware Robot <kwro...@kitware.com>
    Merge-request: !3373

diff --cc Modules/CMakeSwiftInformation.cmake
index 1477e8a,6bc4bbe..69e1519
--- a/Modules/CMakeSwiftInformation.cmake
+++ b/Modules/CMakeSwiftInformation.cmake
@@@ -23,8 -22,10 +23,11 @@@ set(CMAKE_Swift_DEFINE_FLAG -D
  set(CMAKE_Swift_COMPILE_OPTIONS_TARGET "-target ")
  set(CMAKE_Swift_COMPILER_ARG1 -frontend)
  set(CMAKE_Swift_FRAMEWORK_SEARCH_FLAG "-F ")
 +set(CMAKE_Swift_RESPONSE_FILE_LINK_FLAG @)
  
+ set(CMAKE_Swift_LINKER_PREFERENCE 50)
+ set(CMAKE_Swift_LINKER_PREFERENCE_PROPAGATES 1)
+ 
  # NOTE(compnerd) use the short form for convenience and ease of search.  They
  # are treated equivalent to their long form names as well as custom Swift
  # specific names.

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0f9d7dc3ba2f6a82d6d0d54e7cc79899576981b8
commit 0f9d7dc3ba2f6a82d6d0d54e7cc79899576981b8
Merge: 7c39a9c 26f2b65
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Wed May 29 13:14:57 2019 +0000
Commit:     Kitware Robot <kwro...@kitware.com>
CommitDate: Wed May 29 09:15:09 2019 -0400

    Merge topic 'findopenmp-new-dates'
    
    26f2b65fec FindOpenMP: Add 5.0 and VS19 spec dates
    
    Acked-by: Kitware Robot <kwro...@kitware.com>
    Merge-request: !3375


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4ff3ab2ac9d0c81c927d25117e5a14cb8ebbbb86
commit 4ff3ab2ac9d0c81c927d25117e5a14cb8ebbbb86
Author:     Alexander Neumann <neum...@imt.uni-luebeck.de>
AuthorDate: Tue May 28 05:51:11 2019 -0400
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Tue May 28 14:51:45 2019 -0400

    FindZLIB: Add more zlib library names
    
    Account for all names that can be generated by the upstream zlib build
    system.
    
    Issue: #18029

diff --git a/Modules/FindZLIB.cmake b/Modules/FindZLIB.cmake
index 790eb42..79e2313 100644
--- a/Modules/FindZLIB.cmake
+++ b/Modules/FindZLIB.cmake
@@ -67,8 +67,8 @@ set(_ZLIB_SEARCH_NORMAL
 unset(_ZLIB_x86)
 list(APPEND _ZLIB_SEARCHES _ZLIB_SEARCH_NORMAL)
 
-set(ZLIB_NAMES z zlib zdll zlib1)
-set(ZLIB_NAMES_DEBUG zlibd zlibd1)
+set(ZLIB_NAMES z zlib zdll zlib1 zlibstatic)
+set(ZLIB_NAMES_DEBUG zd zlibd zdlld zlibd1 zlib1d zlibstaticd)
 
 # Try each search configuration.
 foreach(search ${_ZLIB_SEARCHES})

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a15595e4c9ae27677180b0b5374ead7a754be1f7
commit a15595e4c9ae27677180b0b5374ead7a754be1f7
Author:     Michael Forney <mfor...@mforney.org>
AuthorDate: Mon Oct 8 10:44:35 2018 -0700
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Tue May 28 14:16:29 2019 -0400

    Ninja: Consider 'samu' when looking for CMAKE_MAKE_PROGRAM
    
    `samurai` is an alternative implementation of ninja and is a drop-in
    replacement.  `samu --version` reports the ninja version it is
    compatible with.

diff --git a/Modules/CMakeNinjaFindMake.cmake b/Modules/CMakeNinjaFindMake.cmake
index 6a0c47e..702af13 100644
--- a/Modules/CMakeNinjaFindMake.cmake
+++ b/Modules/CMakeNinjaFindMake.cmake
@@ -3,6 +3,6 @@
 
 
 find_program(CMAKE_MAKE_PROGRAM
-  NAMES ninja-build ninja
+  NAMES ninja-build ninja samu
   DOC "Program used to build from build.ninja files.")
 mark_as_advanced(CMAKE_MAKE_PROGRAM)

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6baa80d1e31b26f06c68afddd096d3d8c5961718
commit 6baa80d1e31b26f06c68afddd096d3d8c5961718
Author:     Saleem Abdulrasool <compn...@compnerd.org>
AuthorDate: Tue May 28 08:32:08 2019 -0700
Commit:     Saleem Abdulrasool <compn...@compnerd.org>
CommitDate: Tue May 28 09:21:41 2019 -0700

    Modules: correct linker wrapper flag for Swift
    
    This was sitting locally but was missed in previous commits.  This
    enables the use of `LINKER:` when building Swift code bases.

diff --git a/Modules/CMakeSwiftInformation.cmake 
b/Modules/CMakeSwiftInformation.cmake
index 1477e8a..6eed283 100644
--- a/Modules/CMakeSwiftInformation.cmake
+++ b/Modules/CMakeSwiftInformation.cmake
@@ -19,10 +19,11 @@ endif()
 
 set(CMAKE_INCLUDE_FLAG_Swift "-I ")
 
-set(CMAKE_Swift_DEFINE_FLAG -D)
 set(CMAKE_Swift_COMPILE_OPTIONS_TARGET "-target ")
 set(CMAKE_Swift_COMPILER_ARG1 -frontend)
+set(CMAKE_Swift_DEFINE_FLAG -D)
 set(CMAKE_Swift_FRAMEWORK_SEARCH_FLAG "-F ")
+set(CMAKE_Swift_LINKER_WRAPPER_FLAG "-Xlinker" " ")
 set(CMAKE_Swift_RESPONSE_FILE_LINK_FLAG @)
 
 # NOTE(compnerd) use the short form for convenience and ease of search.  They

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=abea06efdfebbf5becfde40cb8ecc8427054edf1
commit abea06efdfebbf5becfde40cb8ecc8427054edf1
Author:     Saleem Abdulrasool <compn...@compnerd.org>
AuthorDate: Fri May 24 09:32:05 2019 -0700
Commit:     Saleem Abdulrasool <compn...@compnerd.org>
CommitDate: Fri May 24 10:33:25 2019 -0700

    Modules: setup `CMAKE_Swift_LINKER_PREFERENCE`
    
    Swift's driver will invoke the C++ driver (`clang++`) to invoke the
    linker.  Additionally, it will configure the command line to deal with
    the linkage runtime support object (`swiftrt.o` or `swiftrt.obj`) to be
    added at the right time (similar to C/C++).  Since it indirects through
    `clang++` it will properly setup the linker invocation for C++ and C as
    well.  This should permit the correct linker driver to be invoked in
    multi-language projects.
    
    Closes #19299

diff --git a/Modules/CMakeSwiftInformation.cmake 
b/Modules/CMakeSwiftInformation.cmake
index 2bba178..6bc4bbe 100644
--- a/Modules/CMakeSwiftInformation.cmake
+++ b/Modules/CMakeSwiftInformation.cmake
@@ -23,6 +23,9 @@ set(CMAKE_Swift_COMPILE_OPTIONS_TARGET "-target ")
 set(CMAKE_Swift_COMPILER_ARG1 -frontend)
 set(CMAKE_Swift_FRAMEWORK_SEARCH_FLAG "-F ")
 
+set(CMAKE_Swift_LINKER_PREFERENCE 50)
+set(CMAKE_Swift_LINKER_PREFERENCE_PROPAGATES 1)
+
 # NOTE(compnerd) use the short form for convenience and ease of search.  They
 # are treated equivalent to their long form names as well as custom Swift
 # specific names.

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=26f2b65fec383bbab74f30c4b0bc6649d0b5b509
commit 26f2b65fec383bbab74f30c4b0bc6649d0b5b509
Author:     Christian Pfeiffer <cpfeif...@live.de>
AuthorDate: Fri May 24 19:01:28 2019 +0200
Commit:     Christian Pfeiffer <cpfeif...@live.de>
CommitDate: Fri May 24 19:01:28 2019 +0200

    FindOpenMP: Add 5.0 and VS19 spec dates
    
    Fixes: #19289

diff --git a/Modules/FindOpenMP.cmake b/Modules/FindOpenMP.cmake
index b909db8..def23bb 100644
--- a/Modules/FindOpenMP.cmake
+++ b/Modules/FindOpenMP.cmake
@@ -347,6 +347,7 @@ macro(_OPENMP_SET_VERSION_BY_SPEC_DATE LANG)
     # Preview versions
     "201611=5.0" # OpenMP 5.0 preview 1
     # Combined versions, 2.5 onwards
+    "201811=5.0"
     "201511=4.5"
     "201307=4.0"
     "201107=3.1"
@@ -363,6 +364,9 @@ macro(_OPENMP_SET_VERSION_BY_SPEC_DATE LANG)
     # Fortran version 1.0
     "199710=1.0"
   )
+  if(MSVC)
+    list(APPEND OpenMP_SPEC_DATE_MAP "2019=2.0")
+  endif()
 
   if(OpenMP_${LANG}_SPEC_DATE)
     string(REGEX MATCHALL "${OpenMP_${LANG}_SPEC_DATE}=([0-9]+)\\.([0-9]+)" 
_version_match "${OpenMP_SPEC_DATE_MAP}")

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=74829f01b13de0031e659bf8dac3e6672fbfa77b
commit 74829f01b13de0031e659bf8dac3e6672fbfa77b
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Wed May 22 10:39:46 2019 -0400
Commit:     Zsolt Parragi <zsolt.parr...@cancellar.hu>
CommitDate: Fri May 24 08:43:56 2019 +0200

    Help: Add notes for topic 'clang-gnulike-support'

diff --git a/Help/release/dev/clang-gnulike-support.rst 
b/Help/release/dev/clang-gnulike-support.rst
new file mode 100644
index 0000000..87715d7
--- /dev/null
+++ b/Help/release/dev/clang-gnulike-support.rst
@@ -0,0 +1,5 @@
+clang-gnulike-support
+---------------------
+
+* The ``Clang`` compiler variant on Windows that targets the MSVC ABI
+  but has a GNU-like command line is now supported.

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=19669abe1d714d9dba3dcd642588160c0814f9e7
commit 19669abe1d714d9dba3dcd642588160c0814f9e7
Author:     Zsolt Parragi <zsolt.parr...@cancellar.hu>
AuthorDate: Wed Apr 10 14:11:21 2019 +0200
Commit:     Zsolt Parragi <zsolt.parr...@cancellar.hu>
CommitDate: Fri May 24 08:43:55 2019 +0200

    Tests: handle string escaping differences with NMake+clang

diff --git a/Tests/CompileOptions/CMakeLists.txt 
b/Tests/CompileOptions/CMakeLists.txt
index 15a993c..2aa4458 100644
--- a/Tests/CompileOptions/CMakeLists.txt
+++ b/Tests/CompileOptions/CMakeLists.txt
@@ -42,7 +42,7 @@ else()
     )
 endif()
 
-if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|Borland|Embarcadero")
+if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang|Borland|Embarcadero" AND NOT 
"${CMAKE_GENERATOR}" MATCHES "NMake Makefiles")
   set_property(TARGET CompileOptions APPEND PROPERTY COMPILE_OPTIONS
     "-DTEST_OCTOTHORPE=\"#\""
     )
diff --git a/Tests/Preprocess/CMakeLists.txt b/Tests/Preprocess/CMakeLists.txt
index 8c2cdc9..588af03 100644
--- a/Tests/Preprocess/CMakeLists.txt
+++ b/Tests/Preprocess/CMakeLists.txt
@@ -28,6 +28,11 @@ endif()
 if("${CMAKE_GENERATOR}" MATCHES "Visual Studio")
   set(PP_VS 1)
 endif()
+if(CMAKE_C_COMPILER_ID STREQUAL "Clang" AND
+   "x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC" AND
+   "x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
+   set(CLANG_GNULIKE_WINDOWS 1)
+endif()
 
 # Some tests below check the PP_* variables set above.  They are meant
 # to test the case that the build tool is at fault.  Other tests below
@@ -53,7 +58,7 @@ endif()
 
 string(APPEND STRING_EXTRA " ")
 
-if(NOT PP_BORLAND AND NOT PP_WATCOM)
+if(NOT PP_BORLAND AND NOT PP_WATCOM AND NOT CLANG_GNULIKE_WINDOWS)
   # Borland, WMake: multiple spaces
   # The make tool seems to remove extra whitespace from inside
   # quoted strings when passing to the compiler.  It does not have
@@ -70,14 +75,14 @@ if(NOT PP_VS)
   string(APPEND STRING_EXTRA ",")
 endif()
 
-if(NOT PP_MINGW)
+if(NOT PP_MINGW AND NOT CLANG_GNULIKE_WINDOWS)
   # MinGW: &
   # When inside -D"FOO=\"a & b\"" MinGW make wants -D"FOO=\"a "&" b\""
   # but it does not like quoted ampersand elsewhere.
   string(APPEND STRING_EXTRA "&")
 endif()
 
-if(NOT PP_MINGW)
+if(NOT PP_MINGW AND NOT CLANG_GNULIKE_WINDOWS)
   # MinGW: |
   # When inside -D"FOO=\"a | b\"" MinGW make wants -D"FOO=\"a "|" b\""
   # but it does not like quoted pipe elsewhere.
@@ -100,7 +105,8 @@ endif()
 
 set(EXPR_OP1 "/")
 if((NOT MSVC OR PP_NMAKE) AND
-   NOT CMAKE_C_COMPILER_ID STREQUAL "Intel")
+   NOT CMAKE_C_COMPILER_ID STREQUAL "Intel" AND
+   NOT CLANG_GNULIKE_WINDOWS)
   # MSVC cl, Intel icl: %
   # When the cl compiler is invoked from the command line then % must
   # be written %% (to distinguish from %ENV% syntax).  However cl does
diff --git a/Tests/Preprocess/preprocess.c b/Tests/Preprocess/preprocess.c
index 2913f93..958c77e 100644
--- a/Tests/Preprocess/preprocess.c
+++ b/Tests/Preprocess/preprocess.c
@@ -10,7 +10,8 @@ int check_defines_C(void)
 {
   int result = 1;
   if (strcmp(FILE_STRING, STRING_VALUE) != 0) {
-    fprintf(stderr, "FILE_STRING has wrong value in C [%s]\n", FILE_STRING);
+    fprintf(stderr, "FILE_STRING has wrong value in C [%s] vs [%s]\n",
+            FILE_STRING, STRING_VALUE);
     result = 0;
   }
   if (strcmp(TARGET_STRING, STRING_VALUE) != 0) {

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a2a90f41e312ef1b6f60dd700db441e4b637d853
commit a2a90f41e312ef1b6f60dd700db441e4b637d853
Author:     Zsolt Parragi <zsolt.parr...@cancellar.hu>
AuthorDate: Thu Mar 21 19:54:03 2019 +0100
Commit:     Zsolt Parragi <zsolt.parr...@cancellar.hu>
CommitDate: Fri May 24 08:43:55 2019 +0200

    Tests: require C++14 for the Tutorial
    
    Clang++ on Windows with the MSVC STL requires C++14 to compile.
    The C++ standard is set to C++14 for the entire tutorial instead of
    MSVC/clang specific conditions to keep it simple.

diff --git a/Tests/Tutorial/Complete/CMakeLists.txt 
b/Tests/Tutorial/Complete/CMakeLists.txt
index 9658e65..1c97545 100644
--- a/Tests/Tutorial/Complete/CMakeLists.txt
+++ b/Tests/Tutorial/Complete/CMakeLists.txt
@@ -7,8 +7,7 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}")
 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}")
 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}")
 
-set(CMAKE_CXX_STANDARD 11)
-set(CMAKE_CXX_STANDARD_REQUIRED True)
+set(CMAKE_CXX_STANDARD 14)
 
 option(BUILD_SHARED_LIBS "Build using shared libraries" ON)
 
diff --git a/Tests/Tutorial/Consumer/CMakeLists.txt 
b/Tests/Tutorial/Consumer/CMakeLists.txt
index 4033b4d..5097917 100644
--- a/Tests/Tutorial/Consumer/CMakeLists.txt
+++ b/Tests/Tutorial/Consumer/CMakeLists.txt
@@ -1,8 +1,7 @@
 cmake_minimum_required(VERSION 3.3)
 
 if(NOT DEFINED CMAKE_CXX_STANDARD)
-  set(CMAKE_CXX_STANDARD 11)
-  set(CMAKE_CXX_STANDARD_REQUIRED True)
+  set(CMAKE_CXX_STANDARD 14)
 endif()
 
 
diff --git a/Tests/Tutorial/Step10/CMakeLists.txt 
b/Tests/Tutorial/Step10/CMakeLists.txt
index b1d46c4..79aadd5 100644
--- a/Tests/Tutorial/Step10/CMakeLists.txt
+++ b/Tests/Tutorial/Step10/CMakeLists.txt
@@ -7,8 +7,7 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}")
 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}")
 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}")
 
-set(CMAKE_CXX_STANDARD 11)
-set(CMAKE_CXX_STANDARD_REQUIRED True)
+set(CMAKE_CXX_STANDARD 14)
 
 option(BUILD_SHARED_LIBS "Build using shared libraries" ON)
 
diff --git a/Tests/Tutorial/Step11/CMakeLists.txt 
b/Tests/Tutorial/Step11/CMakeLists.txt
index b1d46c4..79aadd5 100644
--- a/Tests/Tutorial/Step11/CMakeLists.txt
+++ b/Tests/Tutorial/Step11/CMakeLists.txt
@@ -7,8 +7,7 @@ set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}")
 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}")
 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}")
 
-set(CMAKE_CXX_STANDARD 11)
-set(CMAKE_CXX_STANDARD_REQUIRED True)
+set(CMAKE_CXX_STANDARD 14)
 
 option(BUILD_SHARED_LIBS "Build using shared libraries" ON)
 
diff --git a/Tests/Tutorial/Step2/CMakeLists.txt 
b/Tests/Tutorial/Step2/CMakeLists.txt
index 48afaa3..8e50e7c 100644
--- a/Tests/Tutorial/Step2/CMakeLists.txt
+++ b/Tests/Tutorial/Step2/CMakeLists.txt
@@ -1,9 +1,7 @@
 cmake_minimum_required(VERSION 3.3)
 project(Tutorial)
 
-set(CMAKE_CXX_STANDARD 11)
-set(CMAKE_CXX_STANDARD_REQUIRED True)
-
+set(CMAKE_CXX_STANDARD 14)
 # the version number.
 set(Tutorial_VERSION_MAJOR 1)
 set(Tutorial_VERSION_MINOR 0)
diff --git a/Tests/Tutorial/Step2/directions.txt 
b/Tests/Tutorial/Step2/directions.txt
index bb6662c..48de7a2 100644
--- a/Tests/Tutorial/Step2/directions.txt
+++ b/Tests/Tutorial/Step2/directions.txt
@@ -44,8 +44,7 @@ the following:
   cmake_minimum_required(VERSION 3.3)
   project(Tutorial)
 
-  set(CMAKE_CXX_STANDARD 11)
-  set(CMAKE_CXX_STANDARD_REQUIRED True)
+  set(CMAKE_CXX_STANDARD 14)
 
   # the version number.
   set(Tutorial_VERSION_MAJOR 1)
diff --git a/Tests/Tutorial/Step3/CMakeLists.txt 
b/Tests/Tutorial/Step3/CMakeLists.txt
index f904ea7..baa0a44 100644
--- a/Tests/Tutorial/Step3/CMakeLists.txt
+++ b/Tests/Tutorial/Step3/CMakeLists.txt
@@ -1,8 +1,7 @@
 cmake_minimum_required(VERSION 3.3)
 project(Tutorial)
 
-set(CMAKE_CXX_STANDARD 11)
-set(CMAKE_CXX_STANDARD_REQUIRED True)
+set(CMAKE_CXX_STANDARD 14)
 
 # should we use our own math functions
 option(USE_MYMATH "Use tutorial provided math implementation" ON)
diff --git a/Tests/Tutorial/Step4/CMakeLists.txt 
b/Tests/Tutorial/Step4/CMakeLists.txt
index 34eab55..9ce60b9 100644
--- a/Tests/Tutorial/Step4/CMakeLists.txt
+++ b/Tests/Tutorial/Step4/CMakeLists.txt
@@ -1,8 +1,7 @@
 cmake_minimum_required(VERSION 3.3)
 project(Tutorial)
 
-set(CMAKE_CXX_STANDARD 11)
-set(CMAKE_CXX_STANDARD_REQUIRED True)
+set(CMAKE_CXX_STANDARD 14)
 
 # should we use our own math functions
 option(USE_MYMATH "Use tutorial provided math implementation" ON)
diff --git a/Tests/Tutorial/Step5/CMakeLists.txt 
b/Tests/Tutorial/Step5/CMakeLists.txt
index 63e5410..828b9fc 100644
--- a/Tests/Tutorial/Step5/CMakeLists.txt
+++ b/Tests/Tutorial/Step5/CMakeLists.txt
@@ -1,8 +1,7 @@
 cmake_minimum_required(VERSION 3.3)
 project(Tutorial)
 
-set(CMAKE_CXX_STANDARD 11)
-set(CMAKE_CXX_STANDARD_REQUIRED True)
+set(CMAKE_CXX_STANDARD 14)
 
 # should we use our own math functions
 option(USE_MYMATH "Use tutorial provided math implementation" ON)
diff --git a/Tests/Tutorial/Step6/CMakeLists.txt 
b/Tests/Tutorial/Step6/CMakeLists.txt
index 503a312..a78b0ff 100644
--- a/Tests/Tutorial/Step6/CMakeLists.txt
+++ b/Tests/Tutorial/Step6/CMakeLists.txt
@@ -1,8 +1,7 @@
 cmake_minimum_required(VERSION 3.3)
 project(Tutorial)
 
-set(CMAKE_CXX_STANDARD 11)
-set(CMAKE_CXX_STANDARD_REQUIRED True)
+set(CMAKE_CXX_STANDARD 14)
 
 # the version number.
 set(Tutorial_VERSION_MAJOR 1)
diff --git a/Tests/Tutorial/Step7/CMakeLists.txt 
b/Tests/Tutorial/Step7/CMakeLists.txt
index f2d3839..33aa039 100644
--- a/Tests/Tutorial/Step7/CMakeLists.txt
+++ b/Tests/Tutorial/Step7/CMakeLists.txt
@@ -1,8 +1,7 @@
 cmake_minimum_required(VERSION 3.3)
 project(Tutorial)
 
-set(CMAKE_CXX_STANDARD 11)
-set(CMAKE_CXX_STANDARD_REQUIRED True)
+set(CMAKE_CXX_STANDARD 14)
 
 # the version number.
 set(Tutorial_VERSION_MAJOR 1)
diff --git a/Tests/Tutorial/Step8/CMakeLists.txt 
b/Tests/Tutorial/Step8/CMakeLists.txt
index c66bf96..03dc7c0 100644
--- a/Tests/Tutorial/Step8/CMakeLists.txt
+++ b/Tests/Tutorial/Step8/CMakeLists.txt
@@ -1,8 +1,7 @@
 cmake_minimum_required(VERSION 3.3)
 project(Tutorial)
 
-set(CMAKE_CXX_STANDARD 11)
-set(CMAKE_CXX_STANDARD_REQUIRED True)
+set(CMAKE_CXX_STANDARD 14)
 
 # the version number.
 set(Tutorial_VERSION_MAJOR 1)
diff --git a/Tests/Tutorial/Step9/CMakeLists.txt 
b/Tests/Tutorial/Step9/CMakeLists.txt
index 309d513..4981fe2 100644
--- a/Tests/Tutorial/Step9/CMakeLists.txt
+++ b/Tests/Tutorial/Step9/CMakeLists.txt
@@ -1,8 +1,7 @@
 cmake_minimum_required(VERSION 3.3)
 project(Tutorial)
 
-set(CMAKE_CXX_STANDARD 11)
-set(CMAKE_CXX_STANDARD_REQUIRED True)
+set(CMAKE_CXX_STANDARD 14)
 
 # the version number.
 set(Tutorial_VERSION_MAJOR 1)

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=4819ff964714faec8ad2d92a3ee541b19196bcfc
commit 4819ff964714faec8ad2d92a3ee541b19196bcfc
Author:     Zsolt Parragi <zsolt.parr...@cancellar.hu>
AuthorDate: Thu Mar 21 19:49:11 2019 +0100
Commit:     Zsolt Parragi <zsolt.parr...@cancellar.hu>
CommitDate: Fri May 24 08:43:42 2019 +0200

    Tests: fix failures with gnu mode clang on windows
    
        Root causes were:
        * Using incorrect conditions (assuming MSVC-like command line mode)
        * Trying to compile the MSVC STL in C++11 mode, when parts of it require
          C++14 or enabling MS extensions in clang.
        * Missing flush in a testcase using stdout in a dll and a main part
        with static crt

diff --git a/Tests/AliasTarget/CMakeLists.txt b/Tests/AliasTarget/CMakeLists.txt
index fc70135..6271988 100644
--- a/Tests/AliasTarget/CMakeLists.txt
+++ b/Tests/AliasTarget/CMakeLists.txt
@@ -7,7 +7,7 @@ set(CMAKE_CXX_STANDARD 98)
 # Clang/C2 in C++98 mode cannot properly handle some of MSVC headers
 if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND
     CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")
-  set(CMAKE_CXX_STANDARD 11)
+  set(CMAKE_CXX_STANDARD 14)
 endif()
 
 add_library(foo SHARED empty.cpp)
diff --git a/Tests/COnly/CMakeLists.txt b/Tests/COnly/CMakeLists.txt
index b3cc438..3037f13 100644
--- a/Tests/COnly/CMakeLists.txt
+++ b/Tests/COnly/CMakeLists.txt
@@ -7,7 +7,7 @@ add_library(testc1 STATIC libc1.c)
 add_library(testc2 SHARED libc2.c)
 add_executable (COnly conly.c foo.c foo.h)
 target_link_libraries(COnly testc1 testc2)
-if(MSVC_VERSION)
+if(MSVC_VERSION AND NOT CMAKE_C_COMPILER_ID STREQUAL Clang OR 
"x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC")
   set_target_properties(COnly PROPERTIES
     LINK_FLAGS " /NODEFAULTLIB:\"libcdg.lib\" /NODEFAULTLIB:\"libcmtg.lib\" 
/NODEFAULTLIB:\"foomsvcrt.lib\" /NODEFAULTLIB:\"libbar.lib\" 
/NODEFAULTLIB:\"libfooba.lib\"")
 endif()
diff --git a/Tests/Complex/CMakeLists.txt b/Tests/Complex/CMakeLists.txt
index 2e41754..fef83f6 100644
--- a/Tests/Complex/CMakeLists.txt
+++ b/Tests/Complex/CMakeLists.txt
@@ -446,6 +446,11 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND
   set(CMAKE_CXX_STANDARD 11)
 endif()
 
+if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND
+    CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "GNU")
+  set(CMAKE_CXX_STANDARD 14)
+endif()
+
 #
 # Create the libs and the main exe
 #
diff --git a/Tests/ComplexOneConfig/CMakeLists.txt 
b/Tests/ComplexOneConfig/CMakeLists.txt
index 628cd4e..77baa4c 100644
--- a/Tests/ComplexOneConfig/CMakeLists.txt
+++ b/Tests/ComplexOneConfig/CMakeLists.txt
@@ -403,6 +403,11 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND
   set(CMAKE_CXX_STANDARD 11)
 endif()
 
+if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND
+    CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "GNU")
+  set(CMAKE_CXX_STANDARD 14)
+endif()
+
 #
 # Create the libs and the main exe
 #
diff --git a/Tests/EnforceConfig.cmake.in b/Tests/EnforceConfig.cmake.in
index 8c0817c..b8a6860 100644
--- a/Tests/EnforceConfig.cmake.in
+++ b/Tests/EnforceConfig.cmake.in
@@ -18,7 +18,12 @@ if(NOT CTEST_CONFIGURATION_TYPE)
     endif()
   endforeach()
   if(NOT CTEST_CONFIGURATION_TYPE)
-    set(CTEST_CONFIGURATION_TYPE NoConfig)
+    
if("@CMAKE_C_COMPILER_ID@;@CMAKE_C_SIMULATE_ID@;@CMAKE_C_COMPILER_FRONTEND_VARIANT@"
 STREQUAL "Clang;MSVC;GNU")
+      # A valid configuration is required for this compiler in tests that do 
not set CMP0091 to NEW.
+      set(CTEST_CONFIGURATION_TYPE Debug)
+    else()
+      set(CTEST_CONFIGURATION_TYPE NoConfig)
+    endif()
   endif()
   message("Guessing configuration ${CTEST_CONFIGURATION_TYPE}")
 endif()
diff --git a/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt 
b/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt
index cffef5a..b30928d 100644
--- a/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt
+++ b/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt
@@ -133,7 +133,9 @@ endif()
 
 # for msvc the compiler version determines which c++11 features are available.
 if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC"
-    OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND "x${CMAKE_CXX_SIMULATE_ID}" 
STREQUAL "xMSVC"))
+    OR (CMAKE_CXX_COMPILER_ID STREQUAL "Clang"
+    AND "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC"
+    AND "x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC" ))
   if(";${CMAKE_CXX_COMPILE_FEATURES};" MATCHES ";cxx_delegating_constructors;")
     list(APPEND true_defs EXPECTED_COMPILER_CXX_DELEGATING_CONSTRUCTORS)
     list(APPEND true_defs EXPECTED_COMPILER_CXX_VARIADIC_TEMPLATES)
diff --git a/Tests/Plugin/CMakeLists.txt b/Tests/Plugin/CMakeLists.txt
index 8e8fa07..c4540db 100644
--- a/Tests/Plugin/CMakeLists.txt
+++ b/Tests/Plugin/CMakeLists.txt
@@ -5,6 +5,17 @@ project(Plugin)
 # We need proper C++98 support from the compiler
 set(CMAKE_CXX_STANDARD 98)
 
+# Clang/C2 in C++98 mode cannot properly handle some of MSVC headers
+if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND
+    CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")
+  set(CMAKE_CXX_STANDARD 11)
+endif()
+
+if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND
+    CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "GNU")
+  set(CMAKE_CXX_STANDARD 14)
+endif()
+
 # Test per-target output directory properties.
 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${Plugin_BINARY_DIR}/bin)
 set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${Plugin_BINARY_DIR}/lib/plugin)
@@ -29,12 +40,6 @@ include_directories(
   ${Plugin_SOURCE_DIR}/include
   )
 
-# Clang/C2 in C++98 mode cannot properly handle some of MSVC headers
-if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND
-    CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")
-  set(CMAKE_CXX_STANDARD 11)
-endif()
-
 # Create an executable that exports an API for use by plugins.
 add_executable(example_exe src/example_exe.cxx)
 set_target_properties(example_exe PROPERTIES
diff --git a/Tests/RunCMake/GenerateExportHeader/GEH.cmake 
b/Tests/RunCMake/GenerateExportHeader/GEH.cmake
index ae9a84c..b3f1c7f 100644
--- a/Tests/RunCMake/GenerateExportHeader/GEH.cmake
+++ b/Tests/RunCMake/GenerateExportHeader/GEH.cmake
@@ -51,6 +51,11 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND
   set(CMAKE_CXX_STANDARD 11)
 endif()
 
+if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND
+    CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "GNU")
+  set(CMAKE_CXX_STANDARD 14)
+endif()
+
 add_subdirectory(lib_shared_and_static)
 
 if(CMAKE_SYSTEM_NAME MATCHES "AIX" AND CMAKE_CXX_COMPILER_ID STREQUAL "GNU"
diff --git a/Tests/RunCMake/Ninja/greeting.c b/Tests/RunCMake/Ninja/greeting.c
index ba3e55b..1124d14 100644
--- a/Tests/RunCMake/Ninja/greeting.c
+++ b/Tests/RunCMake/Ninja/greeting.c
@@ -6,4 +6,5 @@ __declspec(dllexport)
   void greeting(void)
 {
   printf("Hello world!\n");
+  fflush(stdout);
 }
diff --git a/Tests/RunCMake/Ninja/greeting2.c b/Tests/RunCMake/Ninja/greeting2.c
index c6ed87d..cc8409c 100644
--- a/Tests/RunCMake/Ninja/greeting2.c
+++ b/Tests/RunCMake/Ninja/greeting2.c
@@ -3,4 +3,5 @@
 void greeting2(void)
 {
   printf("Hello world 2!\n");
+  fflush(stdout);
 }
diff --git a/Tests/RunCMake/try_compile/LinkOptions.cmake 
b/Tests/RunCMake/try_compile/LinkOptions.cmake
index 488cab1..7fae35c 100644
--- a/Tests/RunCMake/try_compile/LinkOptions.cmake
+++ b/Tests/RunCMake/try_compile/LinkOptions.cmake
@@ -5,7 +5,9 @@ cmake_policy(SET CMP0054 NEW)
 
 set (lib_name 
"${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}lib${CMAKE_STATIC_LIBRARY_SUFFIX}")
 if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
-  if (RunCMake_C_COMPILER_ID STREQUAL "MSVC" OR "x${CMAKE_C_SIMULATE_ID}" 
STREQUAL "xMSVC")
+  if (RunCMake_C_COMPILER_ID STREQUAL "MSVC"
+      OR ("x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC" AND
+          NOT CMAKE_C_COMPILER_ID STREQUAL "Clang" OR 
"x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC"))
     if (CMAKE_SIZEOF_VOID_P EQUAL 4)
       set (undef_flag /INCLUDE:_func)
     else()
diff --git a/Tests/RunCMake/try_run/LinkOptions.cmake 
b/Tests/RunCMake/try_run/LinkOptions.cmake
index 9939a42..b9a87f3 100644
--- a/Tests/RunCMake/try_run/LinkOptions.cmake
+++ b/Tests/RunCMake/try_run/LinkOptions.cmake
@@ -5,7 +5,9 @@ cmake_policy(SET CMP0054 NEW)
 
 set (lib_name 
"${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_STATIC_LIBRARY_PREFIX}lib${CMAKE_STATIC_LIBRARY_SUFFIX}")
 if (CMAKE_SYSTEM_NAME STREQUAL "Windows")
-  if (RunCMake_C_COMPILER_ID STREQUAL "MSVC" OR "x${CMAKE_C_SIMULATE_ID}" 
STREQUAL "xMSVC")
+  if (RunCMake_C_COMPILER_ID STREQUAL "MSVC"
+      OR ("x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC" AND
+          NOT CMAKE_C_COMPILER_ID STREQUAL "Clang" OR 
"x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC"))
     if (CMAKE_SIZEOF_VOID_P EQUAL 4)
       set (undef_flag /INCLUDE:_func)
     else()

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=26af0b25e77ba48b6d015adef6d54b6725fd7977
commit 26af0b25e77ba48b6d015adef6d54b6725fd7977
Author:     Zsolt Parragi <zsolt.parr...@cancellar.hu>
AuthorDate: Wed Feb 20 12:19:58 2019 +0100
Commit:     Zsolt Parragi <zsolt.parr...@cancellar.hu>
CommitDate: Thu May 23 23:35:42 2019 +0200

    cmake: use correct stack size with gnu mode clang on windows

diff --git a/CompileFlags.cmake b/CompileFlags.cmake
index c8a039a..c231ede 100644
--- a/CompileFlags.cmake
+++ b/CompileFlags.cmake
@@ -21,6 +21,12 @@ if(MSVC)
   set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -stack:10000000")
 endif()
 
+if(CMAKE_CXX_COMPILER_ID STREQUAL Clang
+   AND "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC"
+   AND "x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Xlinker 
-stack:20000000")
+endif()
+
 #silence duplicate symbol warnings on AIX
 if(CMAKE_SYSTEM_NAME MATCHES "AIX")
   if(NOT CMAKE_COMPILER_IS_GNUCXX)

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=d44c0db0b2f8fa24b932b5c0d506fc8842baffd6
commit d44c0db0b2f8fa24b932b5c0d506fc8842baffd6
Author:     Zsolt Parragi <zsolt.parr...@cancellar.hu>
AuthorDate: Wed Feb 20 12:19:08 2019 +0100
Commit:     Zsolt Parragi <zsolt.parr...@cancellar.hu>
CommitDate: Thu May 23 23:35:33 2019 +0200

    clang: setup correct configuration in gnu mode

diff --git a/Modules/Compiler/Clang-CXX.cmake b/Modules/Compiler/Clang-CXX.cmake
index c116078..17f3917 100644
--- a/Modules/Compiler/Clang-CXX.cmake
+++ b/Modules/Compiler/Clang-CXX.cmake
@@ -1,7 +1,7 @@
 include(Compiler/Clang)
 __compiler_clang(CXX)
 
-if(NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
+if("x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
   set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN 
"-fvisibility-inlines-hidden")
 endif()
 
@@ -10,7 +10,8 @@ if(APPLE AND NOT appleClangPolicy STREQUAL NEW)
   return()
 endif()
 
-if(NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
+
+if("x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xGNU")
   if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 2.1)
     set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-std=c++98")
     set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-std=gnu++98")
@@ -56,6 +57,14 @@ if(NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
 
   unset(_clang_version_std17)
 
+  if("x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
+    # This clang++ is missing some features because of MSVC compatibility.
+    unset(CMAKE_CXX11_STANDARD__HAS_FULL_SUPPORT)
+    unset(CMAKE_CXX14_STANDARD__HAS_FULL_SUPPORT)
+    unset(CMAKE_CXX17_STANDARD__HAS_FULL_SUPPORT)
+    unset(CMAKE_CXX20_STANDARD__HAS_FULL_SUPPORT)
+  endif()
+
   __compiler_check_default_language_standard(CXX 2.1 98)
 elseif(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 3.9
     AND CMAKE_CXX_SIMULATE_VERSION VERSION_GREATER_EQUAL 19.0)
diff --git a/Modules/Platform/Windows-Clang.cmake 
b/Modules/Platform/Windows-Clang.cmake
index 007ae53..b317da6 100644
--- a/Modules/Platform/Windows-Clang.cmake
+++ b/Modules/Platform/Windows-Clang.cmake
@@ -8,13 +8,120 @@ if(__WINDOWS_CLANG)
 endif()
 set(__WINDOWS_CLANG 1)
 
+macro(__windows_compiler_clang_gnu lang)
+  set(CMAKE_LIBRARY_PATH_FLAG "-L")
+  set(CMAKE_LINK_LIBRARY_FLAG "-l")
+
+  set(CMAKE_IMPORT_LIBRARY_PREFIX "")
+  set(CMAKE_SHARED_LIBRARY_PREFIX "")
+  set(CMAKE_SHARED_MODULE_PREFIX  "")
+  set(CMAKE_STATIC_LIBRARY_PREFIX "")
+  set(CMAKE_EXECUTABLE_SUFFIX     ".exe")
+  set(CMAKE_IMPORT_LIBRARY_SUFFIX ".lib")
+  set(CMAKE_SHARED_LIBRARY_SUFFIX ".dll")
+  set(CMAKE_SHARED_MODULE_SUFFIX  ".dll")
+  set(CMAKE_STATIC_LIBRARY_SUFFIX ".lib")
+  set(CMAKE_DEPFILE_FLAGS_${lang} "-MD -MT <OBJECT> -MF <DEPFILE>")
+
+  set(CMAKE_FIND_LIBRARY_PREFIXES "lib" "")
+  set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll" ".dll.a" ".a" ".lib")
+  set(CMAKE_SUPPORT_WINDOWS_EXPORT_ALL_SYMBOLS 1)
+  set (CMAKE_LINK_DEF_FILE_FLAG "-Xlinker /DEF:")
+
+  if("${CMAKE_${lang}_SIMULATE_VERSION}" MATCHES "^([0-9]+)\\.([0-9]+)")
+    math(EXPR MSVC_VERSION "${CMAKE_MATCH_1}*100 + ${CMAKE_MATCH_2}")
+  endif()
+
+  # No -fPIC on Windows
+  set(CMAKE_${lang}_COMPILE_OPTIONS_PIC "")
+  set(CMAKE_${lang}_COMPILE_OPTIONS_PIE "")
+  set(_CMAKE_${lang}_PIE_MAY_BE_SUPPORTED_BY_LINKER NO)
+  set(CMAKE_${lang}_LINK_OPTIONS_PIE "")
+  set(CMAKE_${lang}_LINK_OPTIONS_NO_PIE "")
+  set(CMAKE_SHARED_LIBRARY_${lang}_FLAGS "")
+
+  set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_OBJECTS 1)
+  set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_LIBRARIES 1)
+  set(CMAKE_${lang}_USE_RESPONSE_FILE_FOR_INCLUDES 1)
+
+  # Create archiving rules to support large object file lists for static 
libraries.
+  set(CMAKE_${lang}_ARCHIVE_CREATE "<CMAKE_AR> qc <TARGET> <LINK_FLAGS> 
<OBJECTS>")
+  set(CMAKE_${lang}_ARCHIVE_APPEND "<CMAKE_AR> q  <TARGET> <LINK_FLAGS> 
<OBJECTS>")
+  set(CMAKE_${lang}_ARCHIVE_FINISH "<CMAKE_RANLIB> <TARGET>")
+  set(CMAKE_${lang}_CREATE_SHARED_LIBRARY
+    "<CMAKE_${lang}_COMPILER> -nostartfiles -nostdlib 
<CMAKE_SHARED_LIBRARY_${lang}_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> 
<CMAKE_SHARED_LIBRARY_CREATE_${lang}_FLAGS> -o <TARGET> 
${CMAKE_GNULD_IMAGE_VERSION} -Xlinker /implib:<TARGET_IMPLIB> -Xlinker 
/pdb:<TARGET_PDB> -Xlinker 
/version:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR> <OBJECTS> 
<LINK_LIBRARIES>")
+  set(CMAKE_${lang}_CREATE_SHARED_MODULE 
${CMAKE_${lang}_CREATE_SHARED_LIBRARY})
+  set(CMAKE_${lang}_LINK_EXECUTABLE
+    "<CMAKE_${lang}_COMPILER> -nostartfiles -nostdlib <FLAGS> 
<CMAKE_${lang}_LINK_FLAGS> <LINK_FLAGS> <OBJECTS>  -o <TARGET> -Xlinker 
/implib:<TARGET_IMPLIB> -Xlinker /pdb:<TARGET_PDB> -Xlinker 
/version:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR> 
${CMAKE_GNULD_IMAGE_VERSION} <LINK_LIBRARIES>")
+
+  set(CMAKE_${lang}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreaded         
-Xclang -flto-visibility-public-std -D_MT -Xclang --dependent-lib=libcmt)
+  set(CMAKE_${lang}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDLL      
-D_DLL -D_MT -Xclang --dependent-lib=msvcrt)
+  set(CMAKE_${lang}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebug    
-D_DEBUG -Xclang -flto-visibility-public-std -D_MT -Xclang 
--dependent-lib=libcmtd)
+  set(CMAKE_${lang}_COMPILE_OPTIONS_MSVC_RUNTIME_LIBRARY_MultiThreadedDebugDLL 
-D_DEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrtd)
+
+  if(CMAKE_MSVC_RUNTIME_LIBRARY_DEFAULT)
+    set(__ADDED_FLAGS "")
+    set(__ADDED_FLAGS_DEBUG "")
+  else()
+    set(__ADDED_FLAGS_DEBUG "-D_DEBUG -D_DLL -D_MT -Xclang 
--dependent-lib=msvcrtd")
+    set(__ADDED_FLAGS "-D_DLL -D_MT -Xclang --dependent-lib=msvcrt")
+  endif()
+
+  string(APPEND CMAKE_${lang}_FLAGS_DEBUG_INIT " -g -Xclang -gcodeview -O0 
${__ADDED_FLAGS_DEBUG}")
+  string(APPEND CMAKE_${lang}_FLAGS_MINSIZEREL_INIT " -Os -DNDEBUG 
${__ADDED_FLAGS}")
+  string(APPEND CMAKE_${lang}_FLAGS_RELEASE_INIT " -O3 -DNDEBUG 
${__ADDED_FLAGS}")
+  string(APPEND CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT " -O2 -g -DNDEBUG 
-Xclang -gcodeview ${__ADDED_FLAGS}")
+  set(CMAKE_INCLUDE_SYSTEM_FLAG_${lang} "-isystem ")
+
+  unset(__ADDED_FLAGS)
+  unset(__ADDED_FLAGS_DEBUG)
+  string(TOLOWER "${CMAKE_BUILD_TYPE}" BUILD_TYPE_LOWER)
+  set(CMAKE_${lang}_STANDARD_LIBRARIES_INIT "-lkernel32 -luser32 -lgdi32 
-lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 
-loldnames")
+
+  enable_language(RC)
+endmacro()
+
 if("x${CMAKE_C_SIMULATE_ID}" STREQUAL "xMSVC"
     OR "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
-  include(Platform/Windows-MSVC)
-  macro(__windows_compiler_clang lang)
-    set(_COMPILE_${lang} "${_COMPILE_${lang}_MSVC}")
-    __windows_compiler_msvc(${lang})
-  endmacro()
+
+  if ( DEFINED CMAKE_C_COMPILER_ID AND DEFINED CMAKE_CXX_COMPILER_ID
+       AND NOT "x${CMAKE_C_COMPILER_ID}" STREQUAL "x${CMAKE_CXX_COMPILER_ID}")
+    message(FATAL_ERROR "The current configuration mixes Clang and MSVC or "
+            "some other CL compatible compiler tool. This is not supported. "
+            "Use either clang or MSVC as both C and C++ compilers.")
+  endif()
+
+  if ( DEFINED CMAKE_C_COMPILER_FRONTEND_VARIANT AND DEFINED 
CMAKE_CXX_COMPILER_FRONTEND_VARIANT
+       AND NOT "x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL 
"x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}")
+    message(FATAL_ERROR "The current configuration uses the Clang compiler "
+            "tool with mixed frontend variants, both the GNU and in MSVC CL "
+            "like variants. This is not supported. Use either clang/clang++ "
+            "or clang-cl as both C and C++ compilers.")
+  endif()
+
+  if ( "x${CMAKE_CXX_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC" OR 
"x${CMAKE_C_COMPILER_FRONTEND_VARIANT}" STREQUAL "xMSVC" )
+    include(Platform/Windows-MSVC)
+
+    macro(__windows_compiler_clang lang)
+      set(_COMPILE_${lang} "${_COMPILE_${lang}_MSVC}")
+      __windows_compiler_msvc(${lang})
+    endmacro()
+  else()
+    cmake_policy(GET CMP0091 __WINDOWS_CLANG_CMP0091)
+    if(__WINDOWS_CLANG_CMP0091 STREQUAL "NEW")
+      set(CMAKE_MSVC_RUNTIME_LIBRARY_DEFAULT 
"MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
+    else()
+      set(CMAKE_MSVC_RUNTIME_LIBRARY_DEFAULT "")
+    endif()
+    unset(__WINDOWS_CLANG_CMP0091)
+
+    set(CMAKE_BUILD_TYPE_INIT Debug)
+
+    macro(__windows_compiler_clang lang)
+      __windows_compiler_clang_gnu(${lang})
+    endmacro()
+  endif()
+
 else()
   include(Platform/Windows-GNU)
   macro(__windows_compiler_clang lang)

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b7d5ef23e9c9c76c7b8422c969ce806f9fd965e6
commit b7d5ef23e9c9c76c7b8422c969ce806f9fd965e6
Author:     Zsolt Parragi <zsolt.parr...@cancellar.hu>
AuthorDate: Wed Feb 20 12:18:15 2019 +0100
Commit:     Zsolt Parragi <zsolt.parr...@cancellar.hu>
CommitDate: Fri May 17 19:11:34 2019 +0200

    cmGlobalNinjaGenerator: use gnu compatible paths with clang in gnu mode

diff --git a/Source/cmGlobalNinjaGenerator.cxx 
b/Source/cmGlobalNinjaGenerator.cxx
index 00276f8..b642e46 100644
--- a/Source/cmGlobalNinjaGenerator.cxx
+++ b/Source/cmGlobalNinjaGenerator.cxx
@@ -639,13 +639,20 @@ void cmGlobalNinjaGenerator::EnableLanguage(
     this->ResolveLanguageCompiler(l, mf, optional);
   }
 #ifdef _WIN32
-  if ((mf->GetSafeDefinition("CMAKE_C_SIMULATE_ID") != "MSVC") &&
-      (mf->GetSafeDefinition("CMAKE_CXX_SIMULATE_ID") != "MSVC") &&
-      (mf->IsOn("CMAKE_COMPILER_IS_MINGW") ||
-       (mf->GetSafeDefinition("CMAKE_C_COMPILER_ID") == "GNU") ||
-       (mf->GetSafeDefinition("CMAKE_CXX_COMPILER_ID") == "GNU") ||
-       (mf->GetSafeDefinition("CMAKE_C_COMPILER_ID") == "Clang") ||
-       (mf->GetSafeDefinition("CMAKE_CXX_COMPILER_ID") == "Clang"))) {
+  const bool clangGnuMode =
+    ((mf->GetSafeDefinition("CMAKE_C_COMPILER_ID") == "Clang") &&
+     (mf->GetSafeDefinition("CMAKE_C_COMPILER_FRONTEND_VARIANT") == "GNU")) ||
+    ((mf->GetSafeDefinition("CMAKE_CXX_COMPILER_ID") == "Clang") &&
+     (mf->GetSafeDefinition("CMAKE_CXX_COMPILER_FRONTEND_VARIANT") == "GNU"));
+
+  if (clangGnuMode ||
+      ((mf->GetSafeDefinition("CMAKE_C_SIMULATE_ID") != "MSVC") &&
+       (mf->GetSafeDefinition("CMAKE_CXX_SIMULATE_ID") != "MSVC") &&
+       (mf->IsOn("CMAKE_COMPILER_IS_MINGW") ||
+        (mf->GetSafeDefinition("CMAKE_C_COMPILER_ID") == "GNU") ||
+        (mf->GetSafeDefinition("CMAKE_CXX_COMPILER_ID") == "GNU") ||
+        (mf->GetSafeDefinition("CMAKE_C_COMPILER_ID") == "Clang") ||
+        (mf->GetSafeDefinition("CMAKE_CXX_COMPILER_ID") == "Clang")))) {
     this->UsingGCCOnWindows = true;
   }
 #endif

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3d0210d8dc48f3e85f771b9e301ba867272c106d
commit 3d0210d8dc48f3e85f771b9e301ba867272c106d
Author:     Zsolt Parragi <zsolt.parr...@cancellar.hu>
AuthorDate: Wed Feb 20 12:15:56 2019 +0100
Commit:     Zsolt Parragi <zsolt.parr...@cancellar.hu>
CommitDate: Fri May 17 19:11:34 2019 +0200

    binutils: add the llvm-* variants to the tool lists.
    
    This allows cmake to use the ar/ranlib/objdump/ld tools on windows
    without mingw installed.
    
    These tools are selected when clang is in GNU command line mode.

diff --git a/Modules/CMakeFindBinUtils.cmake b/Modules/CMakeFindBinUtils.cmake
index 35f75c9..0e84116 100644
--- a/Modules/CMakeFindBinUtils.cmake
+++ b/Modules/CMakeFindBinUtils.cmake
@@ -60,7 +60,9 @@ __resolve_tool_path(CMAKE_MT     
"${_CMAKE_TOOLCHAIN_LOCATION}" "Default Manifes
 set(_CMAKE_TOOL_VARS "")
 
 # if it's the MS C/CXX compiler, search for link
-if("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_SIMULATE_ID}" STREQUAL "xMSVC"
+if(("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_SIMULATE_ID}" STREQUAL "xMSVC" AND
+   ("x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_FRONTEND_VARIANT}" 
STREQUAL "xMSVC"
+    OR NOT "x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" STREQUAL 
"xClang"))
    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_HOST_WIN32 AND 
"x${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" STREQUAL "xNVIDIA")
@@ -80,17 +82,26 @@ else()
   if(CMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN)
     set(_CMAKE_TOOLCHAIN_LOCATION ${_CMAKE_TOOLCHAIN_LOCATION} 
${CMAKE_CXX_COMPILER_EXTERNAL_TOOLCHAIN}/bin)
   endif()
-  find_program(CMAKE_AR NAMES 
${_CMAKE_TOOLCHAIN_PREFIX}ar${_CMAKE_TOOLCHAIN_SUFFIX} HINTS 
${_CMAKE_TOOLCHAIN_LOCATION})
 
-  find_program(CMAKE_RANLIB NAMES ${_CMAKE_TOOLCHAIN_PREFIX}ranlib HINTS 
${_CMAKE_TOOLCHAIN_LOCATION})
+  if("${CMAKE_${_CMAKE_PROCESSING_LANGUAGE}_COMPILER_ID}" STREQUAL Clang)
+    set(LLVM_OBJDUMP "llvm-objdump")
+    set(LLVM_LLD "ld.lld")
+    set(LLVM_RANLIB "llvm-ranlib")
+    set(LLVM_AR "llvm-ar")
+  endif()
+
+  find_program(CMAKE_AR NAMES 
${_CMAKE_TOOLCHAIN_PREFIX}ar${_CMAKE_TOOLCHAIN_SUFFIX} ${LLVM_AR} HINTS 
${_CMAKE_TOOLCHAIN_LOCATION})
+
+  find_program(CMAKE_RANLIB NAMES ${_CMAKE_TOOLCHAIN_PREFIX}ranlib 
${LLVM_RANLIB} HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
   if(NOT CMAKE_RANLIB)
     set(CMAKE_RANLIB : CACHE INTERNAL "noop for ranlib")
   endif()
 
+
   find_program(CMAKE_STRIP NAMES 
${_CMAKE_TOOLCHAIN_PREFIX}strip${_CMAKE_TOOLCHAIN_SUFFIX} HINTS 
${_CMAKE_TOOLCHAIN_LOCATION})
-  find_program(CMAKE_LINKER NAMES ${_CMAKE_TOOLCHAIN_PREFIX}ld HINTS 
${_CMAKE_TOOLCHAIN_LOCATION})
+  find_program(CMAKE_LINKER NAMES ${_CMAKE_TOOLCHAIN_PREFIX}ld ${LLVM_LLD} 
HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
   find_program(CMAKE_NM NAMES ${_CMAKE_TOOLCHAIN_PREFIX}nm HINTS 
${_CMAKE_TOOLCHAIN_LOCATION})
-  find_program(CMAKE_OBJDUMP NAMES ${_CMAKE_TOOLCHAIN_PREFIX}objdump HINTS 
${_CMAKE_TOOLCHAIN_LOCATION})
+  find_program(CMAKE_OBJDUMP NAMES ${_CMAKE_TOOLCHAIN_PREFIX}objdump 
${LLVM_OBJDUMP} HINTS ${_CMAKE_TOOLCHAIN_LOCATION})
   find_program(CMAKE_OBJCOPY NAMES ${_CMAKE_TOOLCHAIN_PREFIX}objcopy HINTS 
${_CMAKE_TOOLCHAIN_LOCATION})
 
   list(APPEND _CMAKE_TOOL_VARS CMAKE_AR CMAKE_RANLIB CMAKE_STRIP CMAKE_LINKER 
CMAKE_NM CMAKE_OBJDUMP CMAKE_OBJCOPY)

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=53fbe23f3fc6a6680308bb01edc02442ca9c7a57
commit 53fbe23f3fc6a6680308bb01edc02442ca9c7a57
Author:     Zsolt Parragi <zsolt.parr...@cancellar.hu>
AuthorDate: Wed Feb 20 12:13:55 2019 +0100
Commit:     Zsolt Parragi <zsolt.parr...@cancellar.hu>
CommitDate: Fri May 17 19:11:34 2019 +0200

    clang: introduce CMAKE_<lang>_COMPILER_FRONTEND_VARIANT
    
    This variable is set to GNU on Windows when clang.exe ar clang++.exe is
    used, and set to MSVC for clang-cl.exe.
    
    CMAKE_<lang>_SIMULATE_ID is set to MSVC in both cases, as clang defaults
    to -fms-compatibility for all command lines on windows.

diff --git a/Modules/CMakeCCompiler.cmake.in b/Modules/CMakeCCompiler.cmake.in
index f473b0d..9b8d423 100644
--- a/Modules/CMakeCCompiler.cmake.in
+++ b/Modules/CMakeCCompiler.cmake.in
@@ -12,6 +12,7 @@ set(CMAKE_C11_COMPILE_FEATURES "@CMAKE_C11_COMPILE_FEATURES@")
 
 set(CMAKE_C_PLATFORM_ID "@CMAKE_C_PLATFORM_ID@")
 set(CMAKE_C_SIMULATE_ID "@CMAKE_C_SIMULATE_ID@")
+set(CMAKE_C_COMPILER_FRONTEND_VARIANT "@CMAKE_C_COMPILER_FRONTEND_VARIANT@")
 set(CMAKE_C_SIMULATE_VERSION "@CMAKE_C_SIMULATE_VERSION@")
 @_SET_CMAKE_C_COMPILER_ARCHITECTURE_ID@
 @SET_MSVC_C_ARCHITECTURE_ID@
diff --git a/Modules/CMakeCXXCompiler.cmake.in 
b/Modules/CMakeCXXCompiler.cmake.in
index a1be02b..e7f0e70 100644
--- a/Modules/CMakeCXXCompiler.cmake.in
+++ b/Modules/CMakeCXXCompiler.cmake.in
@@ -14,6 +14,7 @@ set(CMAKE_CXX20_COMPILE_FEATURES 
"@CMAKE_CXX20_COMPILE_FEATURES@")
 
 set(CMAKE_CXX_PLATFORM_ID "@CMAKE_CXX_PLATFORM_ID@")
 set(CMAKE_CXX_SIMULATE_ID "@CMAKE_CXX_SIMULATE_ID@")
+set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT 
"@CMAKE_CXX_COMPILER_FRONTEND_VARIANT@")
 set(CMAKE_CXX_SIMULATE_VERSION "@CMAKE_CXX_SIMULATE_VERSION@")
 @_SET_CMAKE_CXX_COMPILER_ARCHITECTURE_ID@
 @SET_MSVC_CXX_ARCHITECTURE_ID@
diff --git a/Modules/CMakeDetermineCCompiler.cmake 
b/Modules/CMakeDetermineCCompiler.cmake
index 3ec534f..ffd27c0 100644
--- a/Modules/CMakeDetermineCCompiler.cmake
+++ b/Modules/CMakeDetermineCCompiler.cmake
@@ -111,7 +111,6 @@ if(NOT CMAKE_C_COMPILER_ID_RUN)
 
   include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerId.cmake)
   CMAKE_DETERMINE_COMPILER_ID(C CFLAGS CMakeCCompilerId.c)
-  CMAKE_DIAGNOSE_UNSUPPORTED_CLANG(C CC)
 
   # Set old compiler and platform id variables.
   if(CMAKE_C_COMPILER_ID STREQUAL "GNU")
diff --git a/Modules/CMakeDetermineCXXCompiler.cmake 
b/Modules/CMakeDetermineCXXCompiler.cmake
index 68cb9fe..ac45452 100644
--- a/Modules/CMakeDetermineCXXCompiler.cmake
+++ b/Modules/CMakeDetermineCXXCompiler.cmake
@@ -106,7 +106,6 @@ if(NOT CMAKE_CXX_COMPILER_ID_RUN)
 
   include(${CMAKE_ROOT}/Modules/CMakeDetermineCompilerId.cmake)
   CMAKE_DETERMINE_COMPILER_ID(CXX CXXFLAGS CMakeCXXCompilerId.cpp)
-  CMAKE_DIAGNOSE_UNSUPPORTED_CLANG(CXX CXX)
 
   # Set old compiler and platform id variables.
   if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
diff --git a/Modules/CMakeDetermineCompilerId.cmake 
b/Modules/CMakeDetermineCompilerId.cmake
index 746a806..44e7892 100644
--- a/Modules/CMakeDetermineCompilerId.cmake
+++ b/Modules/CMakeDetermineCompilerId.cmake
@@ -103,6 +103,31 @@ function(CMAKE_DETERMINE_COMPILER_ID lang flagvar src)
     set(CMAKE_${lang}_CL_SHOWINCLUDES_PREFIX "")
   endif()
 
+  set(_variant "")
+  if("x${CMAKE_${lang}_COMPILER_ID}" STREQUAL "xClang")
+    if(CMAKE_HOST_WIN32 AND "x${CMAKE_${lang}_SIMULATE_ID}" STREQUAL "xMSVC")
+      if(CMAKE_GENERATOR MATCHES "Visual Studio")
+        set(CMAKE_${lang}_COMPILER_FRONTEND_VARIANT "MSVC")
+      else()
+        # Test whether an MSVC-like command-line option works.
+        execute_process(COMMAND "${CMAKE_${lang}_COMPILER}" -?
+          RESULT_VARIABLE _clang_result
+          OUTPUT_VARIABLE _clang_stdout
+          ERROR_VARIABLE _clang_stderr)
+        if(_clang_result EQUAL 0)
+          set(CMAKE_${lang}_COMPILER_FRONTEND_VARIANT "MSVC")
+        else()
+          set(CMAKE_${lang}_COMPILER_FRONTEND_VARIANT "GNU")
+        endif()
+      endif()
+      set(_variant " with ${CMAKE_${lang}_COMPILER_FRONTEND_VARIANT}-like 
command-line")
+    else()
+      set(CMAKE_${lang}_COMPILER_FRONTEND_VARIANT "GNU")
+    endif()
+  else()
+    set(CMAKE_${lang}_COMPILER_FRONTEND_VARIANT "")
+  endif()
+
   # Display the final identification result.
   if(CMAKE_${lang}_COMPILER_ID)
     if(CMAKE_${lang}_COMPILER_VERSION)
@@ -116,9 +141,10 @@ function(CMAKE_DETERMINE_COMPILER_ID lang flagvar src)
       set(_archid "")
     endif()
     message(STATUS "The ${lang} compiler identification is "
-      "${CMAKE_${lang}_COMPILER_ID}${_archid}${_version}")
+      "${CMAKE_${lang}_COMPILER_ID}${_archid}${_version}${_variant}")
     unset(_archid)
     unset(_version)
+    unset(_variant)
   else()
     message(STATUS "The ${lang} compiler identification is unknown")
   endif()
@@ -137,6 +163,7 @@ function(CMAKE_DETERMINE_COMPILER_ID lang flagvar src)
     PARENT_SCOPE)
   set(CMAKE_${lang}_XCODE_ARCHS "${CMAKE_${lang}_XCODE_ARCHS}" PARENT_SCOPE)
   set(CMAKE_${lang}_CL_SHOWINCLUDES_PREFIX 
"${CMAKE_${lang}_CL_SHOWINCLUDES_PREFIX}" PARENT_SCOPE)
+  set(CMAKE_${lang}_COMPILER_FRONTEND_VARIANT 
"${CMAKE_${lang}_COMPILER_FRONTEND_VARIANT}" PARENT_SCOPE)
   set(CMAKE_${lang}_COMPILER_VERSION "${CMAKE_${lang}_COMPILER_VERSION}" 
PARENT_SCOPE)
   set(CMAKE_${lang}_COMPILER_VERSION_INTERNAL 
"${CMAKE_${lang}_COMPILER_VERSION_INTERNAL}" PARENT_SCOPE)
   set(CMAKE_${lang}_COMPILER_WRAPPER "${CMAKE_${lang}_COMPILER_WRAPPER}" 
PARENT_SCOPE)
@@ -838,38 +865,3 @@ function(CMAKE_DETERMINE_MSVC_SHOWINCLUDES_PREFIX lang 
userflags)
     set(CMAKE_${lang}_CL_SHOWINCLUDES_PREFIX "" PARENT_SCOPE)
   endif()
 endfunction()
-
-function(CMAKE_DIAGNOSE_UNSUPPORTED_CLANG lang envvar)
-  if(NOT CMAKE_HOST_WIN32 OR CMAKE_GENERATOR MATCHES "Visual Studio" OR
-      NOT "${CMAKE_${lang}_COMPILER_ID};${CMAKE_${lang}_SIMULATE_ID}" STREQUAL 
"Clang;MSVC")
-    return()
-  endif()
-
-  # Test whether an MSVC-like command-line option works.
-  execute_process(COMMAND "${CMAKE_${lang}_COMPILER}" -?
-    RESULT_VARIABLE _clang_result
-    OUTPUT_VARIABLE _clang_stdout
-    ERROR_VARIABLE _clang_stderr)
-  if(_clang_result EQUAL 0)
-    return()
-  endif()
-
-  # Help the user configure the environment to use the MSVC-like Clang.
-  string(CONCAT _msg
-    "The Clang compiler tool\n"
-    "  \"${CMAKE_${lang}_COMPILER}\"\n"
-    "targets the MSVC ABI but has a GNU-like command-line interface.  "
-    "This is not supported.  "
-    "Use 'clang-cl' instead, e.g. by setting '${envvar}=clang-cl' in the 
environment."
-    )
-  execute_process(COMMAND rc -help
-    RESULT_VARIABLE _rc_result
-    OUTPUT_VARIABLE _rc_stdout
-    ERROR_VARIABLE _rc_stderr)
-  if(NOT _rc_result EQUAL 0)
-    string(APPEND _msg "  "
-      "Furthermore, use the MSVC command-line environment."
-      )
-  endif()
-  message(FATAL_ERROR "${_msg}")
-endfunction()

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

Summary of changes:
 CompileFlags.cmake                                 |   6 ++
 Help/release/dev/clang-gnulike-support.rst         |   5 +
 Modules/CMakeCCompiler.cmake.in                    |   1 +
 Modules/CMakeCXXCompiler.cmake.in                  |   1 +
 Modules/CMakeDetermineCCompiler.cmake              |   1 -
 Modules/CMakeDetermineCXXCompiler.cmake            |   1 -
 Modules/CMakeDetermineCompilerId.cmake             |  64 +++++------
 Modules/CMakeFindBinUtils.cmake                    |  21 +++-
 Modules/CMakeNinjaFindMake.cmake                   |   2 +-
 Modules/CMakeSwiftInformation.cmake                |   6 +-
 Modules/Compiler/Clang-CXX.cmake                   |  13 ++-
 Modules/FindOpenMP.cmake                           |   4 +
 Modules/FindZLIB.cmake                             |   4 +-
 Modules/Platform/Windows-Clang.cmake               | 117 ++++++++++++++++++++-
 Source/cmGlobalNinjaGenerator.cxx                  |  21 ++--
 Tests/AliasTarget/CMakeLists.txt                   |   2 +-
 Tests/COnly/CMakeLists.txt                         |   2 +-
 Tests/CompileOptions/CMakeLists.txt                |   2 +-
 Tests/Complex/CMakeLists.txt                       |   5 +
 Tests/ComplexOneConfig/CMakeLists.txt              |   5 +
 Tests/EnforceConfig.cmake.in                       |   7 +-
 .../WriteCompilerDetectionHeader/CMakeLists.txt    |   4 +-
 Tests/Plugin/CMakeLists.txt                        |  17 +--
 Tests/Preprocess/CMakeLists.txt                    |  14 ++-
 Tests/Preprocess/preprocess.c                      |   3 +-
 Tests/RunCMake/GenerateExportHeader/GEH.cmake      |   5 +
 Tests/RunCMake/Ninja/greeting.c                    |   1 +
 Tests/RunCMake/Ninja/greeting2.c                   |   1 +
 Tests/RunCMake/try_compile/LinkOptions.cmake       |   4 +-
 Tests/RunCMake/try_run/LinkOptions.cmake           |   4 +-
 Tests/Tutorial/Complete/CMakeLists.txt             |   3 +-
 Tests/Tutorial/Consumer/CMakeLists.txt             |   3 +-
 Tests/Tutorial/Step10/CMakeLists.txt               |   3 +-
 Tests/Tutorial/Step11/CMakeLists.txt               |   3 +-
 Tests/Tutorial/Step2/CMakeLists.txt                |   4 +-
 Tests/Tutorial/Step2/directions.txt                |   3 +-
 Tests/Tutorial/Step3/CMakeLists.txt                |   3 +-
 Tests/Tutorial/Step4/CMakeLists.txt                |   3 +-
 Tests/Tutorial/Step5/CMakeLists.txt                |   3 +-
 Tests/Tutorial/Step6/CMakeLists.txt                |   3 +-
 Tests/Tutorial/Step7/CMakeLists.txt                |   3 +-
 Tests/Tutorial/Step8/CMakeLists.txt                |   3 +-
 Tests/Tutorial/Step9/CMakeLists.txt                |   3 +-
 43 files changed, 277 insertions(+), 106 deletions(-)
 create mode 100644 Help/release/dev/clang-gnulike-support.rst


hooks/post-receive
-- 
CMake
_______________________________________________
Cmake-commits mailing list
Cmake-commits@cmake.org
https://cmake.org/mailman/listinfo/cmake-commits

Reply via email to