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 8eb1b66b1259d4940c66ab3665f1e64c75cb0271 (commit) via eab942590281310493aa9f82b460ee601bf87939 (commit) via 4c8a101e81a48dee6df7054dbe603da7685283a8 (commit) via 5fdd7b6b5fcd32b72b059415d66f0e991fd77aec (commit) via d1e9d12191038378496c44c89885162df3e7b297 (commit) via 71c09356b02fd43da38488a5a0c18738e087a436 (commit) via 7726767af37ed49eb68b1674ab1ecf12d85276ec (commit) via 1a902f240eebe23a846340a49fa4230a73a96b7d (commit) via 2ec615000b04b10f91469a4dddeddb1e5ed53479 (commit) via 384a9f6b0aeddaefc83b36429be0cf7c6edac36c (commit) via 99b38f32bf0c8aedd01ec79cc97e3f5ab0e7dbe3 (commit) via 1f913700e6f5dce49fbd48b997f771d1f8f6fe29 (commit) via 0a0c98ce0a45ca9fcba2830b7b06c571238f313c (commit) from ed3c228dc0ae7145a581c16278ffb2a534299403 (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=8eb1b66b1259d4940c66ab3665f1e64c75cb0271 commit 8eb1b66b1259d4940c66ab3665f1e64c75cb0271 Merge: ed3c228 eab9425 Author: Brad King <brad.k...@kitware.com> AuthorDate: Wed Mar 9 09:36:49 2016 -0500 Commit: CMake Topic Stage <kwro...@kitware.com> CommitDate: Wed Mar 9 09:36:49 2016 -0500 Merge topic 'vs-clang-cl' into next eab94259 Help: Add notes for topic 'vs-clang-cl' 4c8a101e Tests: do not build PrecompiledHeader on Clang/C2 5fdd7b6b Tests: fix PDBDirectoryAndName on Clang/C2 d1e9d121 Tests: fix Plugin building on Clang/C2 71c09356 Tests: fix complexOneConfig building on Clang/C2 7726767a Tests: fix Complex building on Clang/C2 1a902f24 Tests: fix Module.GenerateExportHeader building on Clang/C2 2ec61500 Tests: fix AliasTarget building on Clang/C2 384a9f6b VS 14: Add flag map for -std= to CppLanguageStandard tag in project files 99b38f32 Features: Clang has no cxx_decltype_incomplete_return_type in MSVC sim mode 1f913700 VS: in Clang/C2 toolset, setup correct compiler settings 0a0c98ce CMakeDetermineCompilerId: Add detection of clang.exe bundled with VS https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=eab942590281310493aa9f82b460ee601bf87939 commit eab942590281310493aa9f82b460ee601bf87939 Author: Brad King <brad.k...@kitware.com> AuthorDate: Tue Mar 8 09:48:23 2016 -0500 Commit: Brad King <brad.k...@kitware.com> CommitDate: Wed Mar 9 09:20:39 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=4c8a101e81a48dee6df7054dbe603da7685283a8 commit 4c8a101e81a48dee6df7054dbe603da7685283a8 Author: Mariusz Pluciński <mplucin...@mplucinski.com> AuthorDate: Tue Feb 23 23:20:32 2016 +0100 Commit: Brad King <brad.k...@kitware.com> CommitDate: Wed Mar 9 09:20:15 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=5fdd7b6b5fcd32b72b059415d66f0e991fd77aec commit 5fdd7b6b5fcd32b72b059415d66f0e991fd77aec Author: Mariusz Pluciński <mplucin...@mplucinski.com> AuthorDate: Sun Feb 21 01:17:29 2016 +0100 Commit: Brad King <brad.k...@kitware.com> CommitDate: Wed Mar 9 09:20:15 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=d1e9d12191038378496c44c89885162df3e7b297 commit d1e9d12191038378496c44c89885162df3e7b297 Author: Mariusz Pluciński <mplucin...@mplucinski.com> AuthorDate: Sun Feb 21 00:24:14 2016 +0100 Commit: Brad King <brad.k...@kitware.com> CommitDate: Wed Mar 9 09:20:15 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=71c09356b02fd43da38488a5a0c18738e087a436 commit 71c09356b02fd43da38488a5a0c18738e087a436 Author: Mariusz Pluciński <mplucin...@mplucinski.com> AuthorDate: Sat Feb 20 16:52:40 2016 +0100 Commit: Brad King <brad.k...@kitware.com> CommitDate: Wed Mar 9 09:20:15 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=7726767af37ed49eb68b1674ab1ecf12d85276ec commit 7726767af37ed49eb68b1674ab1ecf12d85276ec Author: Mariusz Pluciński <mplucin...@mplucinski.com> AuthorDate: Sat Feb 20 00:34:51 2016 +0100 Commit: Brad King <brad.k...@kitware.com> CommitDate: Wed Mar 9 09:20:14 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=1a902f240eebe23a846340a49fa4230a73a96b7d commit 1a902f240eebe23a846340a49fa4230a73a96b7d Author: Mariusz Pluciński <mplucin...@mplucinski.com> AuthorDate: Fri Feb 19 22:17:00 2016 +0100 Commit: Brad King <brad.k...@kitware.com> CommitDate: Wed Mar 9 09:20:14 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=2ec615000b04b10f91469a4dddeddb1e5ed53479 commit 2ec615000b04b10f91469a4dddeddb1e5ed53479 Author: Mariusz Pluciński <mplucin...@mplucinski.com> AuthorDate: Fri Feb 19 01:08:33 2016 +0100 Commit: Brad King <brad.k...@kitware.com> CommitDate: Wed Mar 9 09:20:14 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=384a9f6b0aeddaefc83b36429be0cf7c6edac36c commit 384a9f6b0aeddaefc83b36429be0cf7c6edac36c Author: Mariusz Pluciński <mplucin...@mplucinski.com> AuthorDate: Sat Feb 20 15:22:26 2016 +0100 Commit: Brad King <brad.k...@kitware.com> CommitDate: Wed Mar 9 09:20:14 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=99b38f32bf0c8aedd01ec79cc97e3f5ab0e7dbe3 commit 99b38f32bf0c8aedd01ec79cc97e3f5ab0e7dbe3 Author: Mariusz Pluciński <mplucin...@mplucinski.com> AuthorDate: Thu Feb 18 23:54:08 2016 +0100 Commit: Brad King <brad.k...@kitware.com> CommitDate: Wed Mar 9 09:20:14 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=1f913700e6f5dce49fbd48b997f771d1f8f6fe29 commit 1f913700e6f5dce49fbd48b997f771d1f8f6fe29 Author: Mariusz Pluciński <mplucin...@mplucinski.com> AuthorDate: Thu Feb 18 01:06:52 2016 +0100 Commit: Brad King <brad.k...@kitware.com> CommitDate: Wed Mar 9 09:20:13 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..3b79087 100644 --- a/Source/cmVisualStudio10TargetGenerator.cxx +++ b/Source/cmVisualStudio10TargetGenerator.cxx @@ -2078,7 +2078,17 @@ void cmVisualStudio10TargetGenerator::WriteClOptions( if(this->MSTools) { - this->WriteString("<ObjectFileName>$(IntDir)</ObjectFileName>\n", 3); + cmsys::RegularExpression clangToolset("v[0-9]+_clang_.*"); + if (clangToolset.find(this->GlobalGenerator->GetPlatformToolset())) + { + 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=0a0c98ce0a45ca9fcba2830b7b06c571238f313c commit 0a0c98ce0a45ca9fcba2830b7b06c571238f313c Author: Mariusz Pluciński <mplucin...@mplucinski.com> AuthorDate: Wed Feb 17 23:51:12 2016 +0100 Commit: Brad King <brad.k...@kitware.com> CommitDate: Wed Mar 9 09:20:13 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 | 12 +++++++- 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, 118 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 _______________________________________________ Cmake-commits mailing list Cmake-commits@cmake.org http://public.kitware.com/mailman/listinfo/cmake-commits