[Cmake-commits] CMake branch, next, updated. v3.5.0-426-ga79991d

Brad King brad.king at kitware.com
Thu Mar 10 09:11:56 EST 2016


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  a79991d422b3dbb8bd898875878c1d32c5695a69 (commit)
       via  491b41dd988915a3f00259fa704490dfa2f47dc9 (commit)
       via  ad6d27ac2aeaeb8fbcfc4d4476db33da1ce441f3 (commit)
       via  a0f0541f356da18bbcab28325dd5c1258190effc (commit)
       via  3541af67b71632f352a086524a73ee954a058ac0 (commit)
       via  1902c293baf37035e6f1d2bbd17bcbc98f87e1d9 (commit)
       via  cab2ec111b68a606e27c2a8c1cecf75d37d0aaf6 (commit)
       via  ada3736c786a058cd0b01beb294ac06017098946 (commit)
       via  123b7e1335cf7a306e359e5352f082ffe7df50f7 (commit)
       via  445d4d4bf4867fb5554caede704bc99de6269038 (commit)
       via  0a785eb4f488447fa94eb77fa2edbeaabba70170 (commit)
       via  2c2ec4883bd9829b3589ce0aebe466bae9e8b0e9 (commit)
       via  37afe00faad5cb64e666640526bdc6b5d224b853 (commit)
      from  40e94da75080840506480c418ca6569152a06204 (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=a79991d422b3dbb8bd898875878c1d32c5695a69
commit a79991d422b3dbb8bd898875878c1d32c5695a69
Merge: 40e94da 491b41d
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Thu Mar 10 09:11:54 2016 -0500
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Thu Mar 10 09:11:54 2016 -0500

    Merge topic 'vs-clang-cl' into next
    
    491b41dd Help: Add notes for topic 'vs-clang-cl'
    ad6d27ac Tests: do not build PrecompiledHeader on Clang/C2
    a0f0541f Tests: fix PDBDirectoryAndName on Clang/C2
    3541af67 Tests: fix Plugin building on Clang/C2
    1902c293 Tests: fix complexOneConfig building on Clang/C2
    cab2ec11 Tests: fix Complex building on Clang/C2
    ada3736c Tests: fix Module.GenerateExportHeader building on Clang/C2
    123b7e13 Tests: fix AliasTarget building on Clang/C2
    445d4d4b VS 14: Add flag map for -std= to CppLanguageStandard tag in project files
    0a785eb4 Features: Clang has no cxx_decltype_incomplete_return_type in MSVC sim mode
    2c2ec488 VS: in Clang/C2 toolset, setup correct compiler settings
    37afe00f CMakeDetermineCompilerId: Add detection of clang.exe bundled with VS


https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=491b41dd988915a3f00259fa704490dfa2f47dc9
commit 491b41dd988915a3f00259fa704490dfa2f47dc9
Author:     Brad King <brad.king at kitware.com>
AuthorDate: Tue Mar 8 09:48:23 2016 -0500
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Mar 10 09:11:42 2016 -0500

    Help: Add notes for topic 'vs-clang-cl'

diff --git a/Help/release/dev/vs-clang-cl.rst b/Help/release/dev/vs-clang-cl.rst
new file mode 100644
index 0000000..ac09188
--- /dev/null
+++ b/Help/release/dev/vs-clang-cl.rst
@@ -0,0 +1,5 @@
+vs-clang-cl
+-----------
+
+* The :generator:`Visual Studio 14 2015` generator learned to support the
+  Clang/C2 toolsets, e.g. with the ``-T v140_clang_3_7`` option.

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ad6d27ac2aeaeb8fbcfc4d4476db33da1ce441f3
commit ad6d27ac2aeaeb8fbcfc4d4476db33da1ce441f3
Author:     Mariusz Pluciński <mplucinski at mplucinski.com>
AuthorDate: Tue Feb 23 23:20:32 2016 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Mar 10 09:11:42 2016 -0500

    Tests: do not build PrecompiledHeader on Clang/C2

diff --git a/Tests/CMakeLists.txt b/Tests/CMakeLists.txt
index c7d2138..a4b8757 100644
--- a/Tests/CMakeLists.txt
+++ b/Tests/CMakeLists.txt
@@ -1744,7 +1744,9 @@ ${CMake_BINARY_DIR}/bin/cmake -DDIR=dev -P ${CMake_SOURCE_DIR}/Utilities/Release
   if(MSVC)
     ADD_TEST_MACRO(ForceInclude foo)
     ADD_TEST_MACRO(PDBDirectoryAndName myexe)
-    ADD_TEST_MACRO(PrecompiledHeader foo)
+    if(NOT CMAKE_C_COMPILER_ID STREQUAL "Clang")
+      ADD_TEST_MACRO(PrecompiledHeader foo)
+    endif()
   endif()
   if(MSVC OR
       "${CMAKE_GENERATOR}" MATCHES "(MSYS|MinGW) Makefiles")

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a0f0541f356da18bbcab28325dd5c1258190effc
commit a0f0541f356da18bbcab28325dd5c1258190effc
Author:     Mariusz Pluciński <mplucinski at mplucinski.com>
AuthorDate: Sun Feb 21 01:17:29 2016 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Mar 10 09:11:42 2016 -0500

    Tests: fix PDBDirectoryAndName on Clang/C2

diff --git a/Tests/PDBDirectoryAndName/CMakeLists.txt b/Tests/PDBDirectoryAndName/CMakeLists.txt
index 180f9fe..5fd69ef 100644
--- a/Tests/PDBDirectoryAndName/CMakeLists.txt
+++ b/Tests/PDBDirectoryAndName/CMakeLists.txt
@@ -1,4 +1,5 @@
 cmake_minimum_required(VERSION 2.8)
+cmake_policy(SET CMP0054 NEW)
 project(PDBDirectoryAndName C)
 
 # Make sure the proper compiler is in use.
@@ -62,6 +63,14 @@ list(APPEND my_targets myexe2)
 
 target_link_libraries(myexe2 mylibA mylibD)
 
+
+# Clang/C2 does not produce pdb files for static libraries
+if (CMAKE_C_COMPILER_ID STREQUAL "Clang" AND
+    CMAKE_C_SIMULATE_ID STREQUAL "MSVC")
+  list(REMOVE_ITEM my_targets mylibB mylibD)
+endif()
+
+
 #-----------------------------------------------------------------------------
 # Check that PDB files actually appear where expected.
 

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3541af67b71632f352a086524a73ee954a058ac0
commit 3541af67b71632f352a086524a73ee954a058ac0
Author:     Mariusz Pluciński <mplucinski at mplucinski.com>
AuthorDate: Sun Feb 21 00:24:14 2016 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Mar 10 09:11:41 2016 -0500

    Tests: fix Plugin building on Clang/C2

diff --git a/Tests/Plugin/CMakeLists.txt b/Tests/Plugin/CMakeLists.txt
index 2b7bac1..49ff317 100644
--- a/Tests/Plugin/CMakeLists.txt
+++ b/Tests/Plugin/CMakeLists.txt
@@ -1,4 +1,5 @@
 cmake_minimum_required (VERSION 2.6)
+cmake_policy(SET CMP0054 NEW)
 project(Plugin)
 
 # Test per-target output directory properties.
@@ -34,6 +35,12 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL HP AND
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -AA")
 endif ()
 
+# 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

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=1902c293baf37035e6f1d2bbd17bcbc98f87e1d9
commit 1902c293baf37035e6f1d2bbd17bcbc98f87e1d9
Author:     Mariusz Pluciński <mplucinski at mplucinski.com>
AuthorDate: Sat Feb 20 16:52:40 2016 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Mar 10 09:11:41 2016 -0500

    Tests: fix complexOneConfig building on Clang/C2

diff --git a/Tests/ComplexOneConfig/CMakeLists.txt b/Tests/ComplexOneConfig/CMakeLists.txt
index 3b73e70..2d92809 100644
--- a/Tests/ComplexOneConfig/CMakeLists.txt
+++ b/Tests/ComplexOneConfig/CMakeLists.txt
@@ -2,6 +2,7 @@
 # A more complex test case
 #
 cmake_minimum_required(VERSION 2.4)
+cmake_policy(SET CMP0054 NEW)
 project (Complex)
 
 # Try setting a new policy.  The IF test is for coverage.
@@ -401,6 +402,12 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL HP AND
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -AA")
 endif ()
 
+# 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 the libs and the main exe
 #

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=cab2ec111b68a606e27c2a8c1cecf75d37d0aaf6
commit cab2ec111b68a606e27c2a8c1cecf75d37d0aaf6
Author:     Mariusz Pluciński <mplucinski at mplucinski.com>
AuthorDate: Sat Feb 20 00:34:51 2016 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Mar 10 09:11:41 2016 -0500

    Tests: fix Complex building on Clang/C2

diff --git a/Tests/Complex/CMakeLists.txt b/Tests/Complex/CMakeLists.txt
index 9251ff3..83ca7f4 100644
--- a/Tests/Complex/CMakeLists.txt
+++ b/Tests/Complex/CMakeLists.txt
@@ -2,6 +2,7 @@
 # A more complex test case
 #
 cmake_minimum_required(VERSION 2.4)
+cmake_policy(SET CMP0054 NEW)
 project (Complex)
 
 # Test that renaming a built-in works when configured multiple times.
@@ -438,6 +439,12 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL HP AND
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -AA")
 endif ()
 
+# 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 the libs and the main exe
 #

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=ada3736c786a058cd0b01beb294ac06017098946
commit ada3736c786a058cd0b01beb294ac06017098946
Author:     Mariusz Pluciński <mplucinski at mplucinski.com>
AuthorDate: Fri Feb 19 22:17:00 2016 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Mar 10 09:11:41 2016 -0500

    Tests: fix Module.GenerateExportHeader building on Clang/C2

diff --git a/Tests/Module/GenerateExportHeader/CMakeLists.txt b/Tests/Module/GenerateExportHeader/CMakeLists.txt
index 7fce330..8b94ca7 100644
--- a/Tests/Module/GenerateExportHeader/CMakeLists.txt
+++ b/Tests/Module/GenerateExportHeader/CMakeLists.txt
@@ -1,4 +1,5 @@
 cmake_minimum_required(VERSION 2.8.5 FATAL_ERROR)
+cmake_policy(SET CMP0054 NEW)
 
 project(GenerateExportHeader)
 
@@ -66,6 +67,12 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL HP AND
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -AA")
 endif ()
 
+# 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()
+
 add_subdirectory(lib_shared_and_static)
 
 add_compiler_export_flags()
@@ -107,7 +114,10 @@ add_executable(GenerateExportHeader exportheader_test.cpp)
 
 target_link_libraries(GenerateExportHeader ${link_libraries})
 if (WIN32 OR CYGWIN)
-  if(MSVC AND COMPILER_HAS_DEPRECATED)
+  if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang" AND
+    CMAKE_CXX_SIMULATE_ID STREQUAL "MSVC")
+    set(_platform Win32-Clang)
+  elseif(MSVC AND COMPILER_HAS_DEPRECATED)
     set(_platform Win32)
   elseif((MINGW OR CYGWIN) AND COMPILER_HAS_DEPRECATED)
     set(_platform MinGW)
diff --git a/Tests/Module/GenerateExportHeader/reference/Win32-Clang/libshared_export.h b/Tests/Module/GenerateExportHeader/reference/Win32-Clang/libshared_export.h
new file mode 100644
index 0000000..d376631
--- /dev/null
+++ b/Tests/Module/GenerateExportHeader/reference/Win32-Clang/libshared_export.h
@@ -0,0 +1,41 @@
+
+#ifndef LIBSHARED_EXPORT_H
+#define LIBSHARED_EXPORT_H
+
+#ifdef LIBSHARED_STATIC_DEFINE
+#  define LIBSHARED_EXPORT
+#  define LIBSHARED_NO_EXPORT
+#else
+#  ifndef LIBSHARED_EXPORT
+#    ifdef libshared_EXPORTS
+        /* We are building this library */
+#      define LIBSHARED_EXPORT __declspec(dllexport)
+#    else
+        /* We are using this library */
+#      define LIBSHARED_EXPORT __declspec(dllimport)
+#    endif
+#  endif
+
+#  ifndef LIBSHARED_NO_EXPORT
+#    define LIBSHARED_NO_EXPORT
+#  endif
+#endif
+
+#ifndef LIBSHARED_DEPRECATED
+#  define LIBSHARED_DEPRECATED __attribute__ ((__deprecated__))
+#endif
+
+#ifndef LIBSHARED_DEPRECATED_EXPORT
+#  define LIBSHARED_DEPRECATED_EXPORT LIBSHARED_EXPORT LIBSHARED_DEPRECATED
+#endif
+
+#ifndef LIBSHARED_DEPRECATED_NO_EXPORT
+#  define LIBSHARED_DEPRECATED_NO_EXPORT LIBSHARED_NO_EXPORT LIBSHARED_DEPRECATED
+#endif
+
+#define DEFINE_NO_DEPRECATED 0
+#if DEFINE_NO_DEPRECATED
+# define LIBSHARED_NO_DEPRECATED
+#endif
+
+#endif
diff --git a/Tests/Module/GenerateExportHeader/reference/Win32-Clang/libstatic_export.h b/Tests/Module/GenerateExportHeader/reference/Win32-Clang/libstatic_export.h
new file mode 100644
index 0000000..fd021e9
--- /dev/null
+++ b/Tests/Module/GenerateExportHeader/reference/Win32-Clang/libstatic_export.h
@@ -0,0 +1,41 @@
+
+#ifndef LIBSTATIC_EXPORT_H
+#define LIBSTATIC_EXPORT_H
+
+#ifdef LIBSTATIC_STATIC_DEFINE
+#  define LIBSTATIC_EXPORT
+#  define LIBSTATIC_NO_EXPORT
+#else
+#  ifndef LIBSTATIC_EXPORT
+#    ifdef libstatic_EXPORTS
+        /* We are building this library */
+#      define LIBSTATIC_EXPORT
+#    else
+        /* We are using this library */
+#      define LIBSTATIC_EXPORT
+#    endif
+#  endif
+
+#  ifndef LIBSTATIC_NO_EXPORT
+#    define LIBSTATIC_NO_EXPORT
+#  endif
+#endif
+
+#ifndef LIBSTATIC_DEPRECATED
+#  define LIBSTATIC_DEPRECATED __attribute__ ((__deprecated__))
+#endif
+
+#ifndef LIBSTATIC_DEPRECATED_EXPORT
+#  define LIBSTATIC_DEPRECATED_EXPORT LIBSTATIC_EXPORT LIBSTATIC_DEPRECATED
+#endif
+
+#ifndef LIBSTATIC_DEPRECATED_NO_EXPORT
+#  define LIBSTATIC_DEPRECATED_NO_EXPORT LIBSTATIC_NO_EXPORT LIBSTATIC_DEPRECATED
+#endif
+
+#define DEFINE_NO_DEPRECATED 0
+#if DEFINE_NO_DEPRECATED
+# define LIBSTATIC_NO_DEPRECATED
+#endif
+
+#endif

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=123b7e1335cf7a306e359e5352f082ffe7df50f7
commit 123b7e1335cf7a306e359e5352f082ffe7df50f7
Author:     Mariusz Pluciński <mplucinski at mplucinski.com>
AuthorDate: Fri Feb 19 01:08:33 2016 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Mar 10 09:11:41 2016 -0500

    Tests: fix AliasTarget building on Clang/C2

diff --git a/Tests/AliasTarget/CMakeLists.txt b/Tests/AliasTarget/CMakeLists.txt
index e1d8966..47ccbdc 100644
--- a/Tests/AliasTarget/CMakeLists.txt
+++ b/Tests/AliasTarget/CMakeLists.txt
@@ -1,4 +1,5 @@
 cmake_minimum_required(VERSION 2.8.11)
+cmake_policy(SET CMP0054 NEW)
 project(AliasTarget)
 
 set(CMAKE_CXX_STANDARD 98)
@@ -10,6 +11,12 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL HP AND
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -AA")
 endif ()
 
+# 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()
+
 add_library(foo SHARED empty.cpp)
 add_library(PREFIX::Foo ALIAS foo)
 add_library(Another::Alias ALIAS foo)

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=445d4d4bf4867fb5554caede704bc99de6269038
commit 445d4d4bf4867fb5554caede704bc99de6269038
Author:     Mariusz Pluciński <mplucinski at mplucinski.com>
AuthorDate: Sat Feb 20 15:22:26 2016 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Mar 10 09:11:40 2016 -0500

    VS 14: Add flag map for -std= to CppLanguageStandard tag in project files
    
    This is used by the Clang/C2 toolset.

diff --git a/Source/cmVS14CLFlagTable.h b/Source/cmVS14CLFlagTable.h
index 1c9cf7c..173f624 100644
--- a/Source/cmVS14CLFlagTable.h
+++ b/Source/cmVS14CLFlagTable.h
@@ -174,6 +174,24 @@ static cmVS7FlagTable cmVS14CLFlagTable[] =
   {"CompileAsManaged", "clr:oldSyntax",
    "Common Language RunTime Support, Old Syntax", "OldSyntax", 0},
 
+  {"CppLanguageStandard", "",
+   "Default", "Default", 0},
+  {"CppLanguageStandard", "std=c++98",
+   "C++03", "c++98", 0},
+  {"CppLanguageStandard", "std=c++11",
+   "C++11", "c++11", 0},
+  {"CppLanguageStandard", "std=c++1y",
+   "C++14", "c++1y", 0 },
+  {"CppLanguageStandard", "std=c++14",
+   "C++14", "c++1y", 0 },
+  {"CppLanguageStandard", "std=gnu++98",
+   "C++03 (GNU Dialect)", "gnu++98", 0},
+  {"CppLanguageStandard", "std=gnu++11",
+   "C++11 (GNU Dialect)", "gnu++11", 0},
+  {"CppLanguageStandard", "std=gnu++1y",
+   "C++14 (GNU Dialect)", "gnu++1y", 0},
+  {"CppLanguageStandard", "std=gnu++14",
+   "C++14 (GNU Dialect)", "gnu++1y", 0},
 
   //Bool Properties
   {"CompileAsWinRT", "ZW", "", "true", 0},

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0a785eb4f488447fa94eb77fa2edbeaabba70170
commit 0a785eb4f488447fa94eb77fa2edbeaabba70170
Author:     Mariusz Pluciński <mplucinski at mplucinski.com>
AuthorDate: Thu Feb 18 23:54:08 2016 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Mar 10 09:11:40 2016 -0500

    Features: Clang has no cxx_decltype_incomplete_return_type in MSVC sim mode

diff --git a/Modules/Compiler/Clang-CXX-TestableFeatures.cmake b/Modules/Compiler/Clang-CXX-TestableFeatures.cmake
index b39475c..69965a6 100644
--- a/Modules/Compiler/Clang-CXX-TestableFeatures.cmake
+++ b/Modules/Compiler/Clang-CXX-TestableFeatures.cmake
@@ -8,7 +8,6 @@ set(testable_features
   cxx_constexpr
   cxx_contextual_conversions
   cxx_decltype
-  cxx_decltype_incomplete_return_types
   cxx_default_function_template_args
   cxx_defaulted_functions
   cxx_delegating_constructors
@@ -36,6 +35,9 @@ set(testable_features
   cxx_variable_templates
   cxx_variadic_templates
 )
+if(NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
+  list(APPEND testable_features cxx_decltype_incomplete_return_types)
+endif()
 
 foreach(feature ${testable_features})
   set(_cmake_feature_test_${feature} "${_cmake_oldestSupported} && __has_feature(${feature})")

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=2c2ec4883bd9829b3589ce0aebe466bae9e8b0e9
commit 2c2ec4883bd9829b3589ce0aebe466bae9e8b0e9
Author:     Mariusz Pluciński <mplucinski at mplucinski.com>
AuthorDate: Thu Feb 18 01:06:52 2016 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Mar 10 09:11:39 2016 -0500

    VS: in Clang/C2 toolset, setup correct compiler settings

diff --git a/Modules/Platform/Windows-MSVC.cmake b/Modules/Platform/Windows-MSVC.cmake
index a61413a..528cde3 100644
--- a/Modules/Platform/Windows-MSVC.cmake
+++ b/Modules/Platform/Windows-MSVC.cmake
@@ -194,8 +194,14 @@ else()
   if(_MSVC_C_ARCHITECTURE_FAMILY STREQUAL "ARM" OR _MSVC_CXX_ARCHITECTURE_FAMILY STREQUAL "ARM")
     set(CMAKE_C_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib")
   elseif(MSVC_VERSION GREATER 1310)
-    set(_RTC1 "/RTC1")
-    set(_FLAGS_CXX " /GR /EHsc")
+    if(CMAKE_VS_PLATFORM_TOOLSET MATCHES "v[0-9]+_clang_.*")
+      # Clang/C2 in MSVC14 Update 1 seems to not support -fsantinize (yet?)
+      # set(_RTC1 "-fsantinize=memory,safe-stack")
+      set(_FLAGS_CXX " -frtti -fexceptions")
+    else()
+      set(_RTC1 "/RTC1")
+      set(_FLAGS_CXX " /GR /EHsc")
+    endif()
     set(CMAKE_C_STANDARD_LIBRARIES_INIT "kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib")
   else()
     set(_RTC1 "/GZ")
@@ -296,11 +302,21 @@ macro(__windows_compiler_msvc lang)
   set(CMAKE_${lang}_LINK_EXECUTABLE
     "${_CMAKE_VS_LINK_EXE}<CMAKE_LINKER> ${CMAKE_CL_NOLOGO} <OBJECTS> ${CMAKE_START_TEMP_FILE} /out:<TARGET> /implib:<TARGET_IMPLIB> /pdb:<TARGET_PDB> /version:<TARGET_VERSION_MAJOR>.<TARGET_VERSION_MINOR>${_PLATFORM_LINK_FLAGS} <CMAKE_${lang}_LINK_FLAGS> <LINK_FLAGS> <LINK_LIBRARIES>${CMAKE_END_TEMP_FILE}")
 
-  set(CMAKE_${lang}_FLAGS_INIT "${_PLATFORM_DEFINES}${_PLATFORM_DEFINES_${lang}} /D_WINDOWS /W3${_FLAGS_${lang}}")
-  set(CMAKE_${lang}_FLAGS_DEBUG_INIT "/D_DEBUG /MDd /Zi /Ob0 /Od ${_RTC1}")
-  set(CMAKE_${lang}_FLAGS_RELEASE_INIT "/MD /O2 /Ob2 /D NDEBUG")
-  set(CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT "/MD /Zi /O2 /Ob1 /D NDEBUG")
-  set(CMAKE_${lang}_FLAGS_MINSIZEREL_INIT "/MD /O1 /Ob1 /D NDEBUG")
+  if(CMAKE_VS_PLATFORM_TOOLSET MATCHES "v[0-9]+_clang_.*")
+    # note: MSVC 14 2015 Update 1 sets -fno-ms-compatibility by default, but this does not allow to compile many projects
+    # that include MS's own headers. CMake itself is affected project too.
+    set(CMAKE_${lang}_FLAGS_INIT "${_PLATFORM_DEFINES}${_PLATFORM_DEFINES_${lang}} -fms-extensions -fms-compatibility -D_WINDOWS -Wall${_FLAGS_${lang}}")
+    set(CMAKE_${lang}_FLAGS_DEBUG_INIT "-D_DEBUG /MDd -gline-tables-only -fno-inline -O0 ${_RTC1}")
+    set(CMAKE_${lang}_FLAGS_RELEASE_INIT "/MD -O2 -D NDEBUG")
+    set(CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT "/MD -gline-tables-only -O2 -fno-inline -D NDEBUG")
+    set(CMAKE_${lang}_FLAGS_MINSIZEREL_INIT "/MD -Os -D NDEBUG")
+  else()
+    set(CMAKE_${lang}_FLAGS_INIT "${_PLATFORM_DEFINES}${_PLATFORM_DEFINES_${lang}} /D_WINDOWS /W3${_FLAGS_${lang}}")
+    set(CMAKE_${lang}_FLAGS_DEBUG_INIT "/D_DEBUG /MDd /Zi /Ob0 /Od ${_RTC1}")
+    set(CMAKE_${lang}_FLAGS_RELEASE_INIT "/MD /O2 /Ob2 /D NDEBUG")
+    set(CMAKE_${lang}_FLAGS_RELWITHDEBINFO_INIT "/MD /Zi /O2 /Ob1 /D NDEBUG")
+    set(CMAKE_${lang}_FLAGS_MINSIZEREL_INIT "/MD /O1 /Ob1 /D NDEBUG")
+  endif()
   set(CMAKE_${lang}_LINKER_SUPPORTS_PDB ON)
   set(CMAKE_NINJA_DEPTYPE_${lang} msvc)
 
diff --git a/Source/cmVS14CLFlagTable.h b/Source/cmVS14CLFlagTable.h
index 422f47b..1c9cf7c 100644
--- a/Source/cmVS14CLFlagTable.h
+++ b/Source/cmVS14CLFlagTable.h
@@ -28,6 +28,8 @@ static cmVS7FlagTable cmVS14CLFlagTable[] =
    "Custom", "Custom", 0},
   {"Optimization", "Od",
    "Disabled", "Disabled", 0},
+  {"Optimization", "Os",
+   "Minimize Size", "MinSize", 0},
   {"Optimization", "O1",
    "Minimize Size", "MinSpace", 0},
   {"Optimization", "O2",
diff --git a/Source/cmVisualStudio10TargetGenerator.cxx b/Source/cmVisualStudio10TargetGenerator.cxx
index 27a01a3..31873b5 100644
--- a/Source/cmVisualStudio10TargetGenerator.cxx
+++ b/Source/cmVisualStudio10TargetGenerator.cxx
@@ -2078,7 +2078,18 @@ void cmVisualStudio10TargetGenerator::WriteClOptions(
 
   if(this->MSTools)
     {
-    this->WriteString("<ObjectFileName>$(IntDir)</ObjectFileName>\n", 3);
+    cmsys::RegularExpression clangToolset("v[0-9]+_clang_.*");
+    const char* toolset = this->GlobalGenerator->GetPlatformToolset();
+    if (toolset && clangToolset.find(toolset))
+      {
+      this->WriteString("<ObjectFileName>"
+                        "$(IntDir)%(filename).obj"
+                        "</ObjectFileName>\n", 3);
+      }
+    else
+      {
+      this->WriteString("<ObjectFileName>$(IntDir)</ObjectFileName>\n", 3);
+      }
 
     // If not in debug mode, write the DebugInformationFormat field
     // without value so PDBs don't get generated uselessly.

https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=37afe00faad5cb64e666640526bdc6b5d224b853
commit 37afe00faad5cb64e666640526bdc6b5d224b853
Author:     Mariusz Pluciński <mplucinski at mplucinski.com>
AuthorDate: Wed Feb 17 23:51:12 2016 +0100
Commit:     Brad King <brad.king at kitware.com>
CommitDate: Thu Mar 10 09:11:36 2016 -0500

    CMakeDetermineCompilerId: Add detection of clang.exe bundled with VS
    
    When using a clang toolset we need to find `clang.exe` instead of
    `cl.exe`.

diff --git a/Modules/CMakeDetermineCompilerId.cmake b/Modules/CMakeDetermineCompilerId.cmake
index feae1c4..fbfd7a9 100644
--- a/Modules/CMakeDetermineCompilerId.cmake
+++ b/Modules/CMakeDetermineCompilerId.cmake
@@ -157,7 +157,11 @@ Id flags: ${testflags}
     set(vs_version ${CMAKE_MATCH_1})
     set(id_platform ${CMAKE_VS_PLATFORM_NAME})
     set(id_lang "${lang}")
-    set(id_cl cl.exe)
+    if(CMAKE_VS_PLATFORM_TOOLSET MATCHES "v[0-9]+_clang_.*")
+      set(id_cl clang.exe)
+    else()
+      set(id_cl cl.exe)
+    endif()
     if(CMAKE_VS_PLATFORM_NAME STREQUAL "Tegra-Android")
       set(v NsightTegra)
       set(ext vcxproj)

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

Summary of changes:
 Help/release/dev/vs-clang-cl.rst                   |    5 ++++
 Modules/CMakeDetermineCompilerId.cmake             |    6 +++-
 Modules/Compiler/Clang-CXX-TestableFeatures.cmake  |    4 ++-
 Modules/Platform/Windows-MSVC.cmake                |   30 +++++++++++++++-----
 Source/cmVS14CLFlagTable.h                         |   20 +++++++++++++
 Source/cmVisualStudio10TargetGenerator.cxx         |   13 ++++++++-
 Tests/AliasTarget/CMakeLists.txt                   |    7 +++++
 Tests/CMakeLists.txt                               |    4 ++-
 Tests/Complex/CMakeLists.txt                       |    7 +++++
 Tests/ComplexOneConfig/CMakeLists.txt              |    7 +++++
 Tests/Module/GenerateExportHeader/CMakeLists.txt   |   12 +++++++-
 .../{MinGW => Win32-Clang}/libshared_export.h      |    0
 .../{MinGW => Win32-Clang}/libstatic_export.h      |    0
 Tests/PDBDirectoryAndName/CMakeLists.txt           |    9 ++++++
 Tests/Plugin/CMakeLists.txt                        |    7 +++++
 15 files changed, 119 insertions(+), 12 deletions(-)
 create mode 100644 Help/release/dev/vs-clang-cl.rst
 copy Tests/Module/GenerateExportHeader/reference/{MinGW => Win32-Clang}/libshared_export.h (100%)
 copy Tests/Module/GenerateExportHeader/reference/{MinGW => Win32-Clang}/libstatic_export.h (100%)


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list