[Cmake-commits] CMake branch, master, updated. v3.11.0-500-g77705a2
Kitware Robot
kwrobot at kitware.com
Fri Apr 13 10:25:04 EDT 2018
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".
The branch, master has been updated
via 77705a2c2834e84a7413e01e5575201d1730b57a (commit)
via 3f82c5904d89a892a51476898439cf4d99660fb4 (commit)
via 8381bc12add724f1f262601b155485164b1842b1 (commit)
via 6cddf7ba324a4cc5ce102e1c48d27ee7e9022b16 (commit)
from 48d7aa2868ed3a8c15f83d9639a9dfd633c7608b (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=77705a2c2834e84a7413e01e5575201d1730b57a
commit 77705a2c2834e84a7413e01e5575201d1730b57a
Merge: 48d7aa2 3f82c59
Author: Brad King <brad.king at kitware.com>
AuthorDate: Fri Apr 13 14:22:18 2018 +0000
Commit: Kitware Robot <kwrobot at kitware.com>
CommitDate: Fri Apr 13 10:22:26 2018 -0400
Merge topic 'clang-cl-std'
3f82c5904d Clang: Add standard flags support when simulating MSVC
8381bc12ad Clang: Avoid extra C++ feature detection when simulating MSVC
6cddf7ba32 Clang: Refactor standard flags logic when simulating MSVC
Acked-by: Kitware Robot <kwrobot at kitware.com>
Merge-request: !1906
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3f82c5904d89a892a51476898439cf4d99660fb4
commit 3f82c5904d89a892a51476898439cf4d99660fb4
Author: Ruben Van Boxem <vanboxem.ruben at gmail.com>
AuthorDate: Sat Apr 7 10:42:28 2018 +0200
Commit: Brad King <brad.king at kitware.com>
CommitDate: Wed Apr 11 14:50:22 2018 -0400
Clang: Add standard flags support when simulating MSVC
When Clang 3.9 simulates MSVC 19.0 or higher it knows the `-std:` flags
that such versions of MSVC defines.
Fixes: #17866
diff --git a/Modules/Compiler/Clang-CXX.cmake b/Modules/Compiler/Clang-CXX.cmake
index b24aaf4..e99011b 100644
--- a/Modules/Compiler/Clang-CXX.cmake
+++ b/Modules/Compiler/Clang-CXX.cmake
@@ -53,6 +53,27 @@ if(NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
unset(_clang_version_std17)
__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)
+ # This version of clang-cl and the MSVC version it simulates have
+ # support for -std: flags.
+ set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "")
+ set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "")
+ set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "")
+ set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "")
+ set(CMAKE_CXX14_STANDARD_COMPILE_OPTION "-std:c++14")
+ set(CMAKE_CXX14_EXTENSION_COMPILE_OPTION "-std:c++14")
+ if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 6.0)
+ set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std:c++17")
+ set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std:c++17")
+ set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std:c++latest")
+ set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std:c++latest")
+ else()
+ set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std:c++latest")
+ set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std:c++latest")
+ endif()
+
+ __compiler_check_default_language_standard(CXX 3.9 14)
else()
# This version of clang-cl, or the MSVC version it simulates, does not have
# language standards. Set these options as empty strings so the feature
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=8381bc12add724f1f262601b155485164b1842b1
commit 8381bc12add724f1f262601b155485164b1842b1
Author: Brad King <brad.king at kitware.com>
AuthorDate: Wed Apr 11 14:46:09 2018 -0400
Commit: Brad King <brad.king at kitware.com>
CommitDate: Wed Apr 11 14:47:28 2018 -0400
Clang: Avoid extra C++ feature detection when simulating MSVC
Apply the optimization from commit v3.10.0-rc1~131^2 (MSVC: Avoid
unnecessary C++ feature detection steps, 2017-09-11) to the case of
Clang simulating a version of MSVC that does not define standards.
Issue: #17274
diff --git a/Modules/Compiler/Clang-CXX.cmake b/Modules/Compiler/Clang-CXX.cmake
index c5dd081..b24aaf4 100644
--- a/Modules/Compiler/Clang-CXX.cmake
+++ b/Modules/Compiler/Clang-CXX.cmake
@@ -70,4 +70,19 @@ else()
# There is no meaningful default for this
set(CMAKE_CXX_STANDARD_DEFAULT "")
+
+ # There are no compiler modes so we only need to test features once.
+ # Override the default macro for this special case. Pretend that
+ # all language standards are available so that at least compilation
+ # can be attempted.
+ macro(cmake_record_cxx_compile_features)
+ list(APPEND CMAKE_CXX_COMPILE_FEATURES
+ cxx_std_98
+ cxx_std_11
+ cxx_std_14
+ cxx_std_17
+ cxx_std_20
+ )
+ _record_compiler_features(CXX "" CMAKE_CXX_COMPILE_FEATURES)
+ endmacro()
endif()
https://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=6cddf7ba324a4cc5ce102e1c48d27ee7e9022b16
commit 6cddf7ba324a4cc5ce102e1c48d27ee7e9022b16
Author: Brad King <brad.king at kitware.com>
AuthorDate: Wed Apr 11 14:44:04 2018 -0400
Commit: Brad King <brad.king at kitware.com>
CommitDate: Wed Apr 11 14:45:16 2018 -0400
Clang: Refactor standard flags logic when simulating MSVC
Consolidate the compile options and standard defaults branches.
Add comments.
diff --git a/Modules/Compiler/Clang-CXX.cmake b/Modules/Compiler/Clang-CXX.cmake
index 77866e9..c5dd081 100644
--- a/Modules/Compiler/Clang-CXX.cmake
+++ b/Modules/Compiler/Clang-CXX.cmake
@@ -51,8 +51,12 @@ if(NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
endif()
unset(_clang_version_std17)
+
+ __compiler_check_default_language_standard(CXX 2.1 98)
else()
- # clang-cl does not know these options because it behaves like cl.exe
+ # This version of clang-cl, or the MSVC version it simulates, does not have
+ # language standards. Set these options as empty strings so the feature
+ # test infrastructure can at least check to see if they are defined.
set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "")
set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "")
set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "")
@@ -63,10 +67,7 @@ else()
set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "")
set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "")
set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "")
-endif()
-if(NOT "x${CMAKE_CXX_SIMULATE_ID}" STREQUAL "xMSVC")
- __compiler_check_default_language_standard(CXX 2.1 98)
-else()
+ # There is no meaningful default for this
set(CMAKE_CXX_STANDARD_DEFAULT "")
endif()
-----------------------------------------------------------------------
Summary of changes:
Modules/Compiler/Clang-CXX.cmake | 47 ++++++++++++++++++++++++++++++++++----
1 file changed, 42 insertions(+), 5 deletions(-)
hooks/post-receive
--
CMake
More information about the Cmake-commits
mailing list