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  0492ede11b4f4b396a5f2f5ccbcb0a7bcb0e2167 (commit)
       via  5abead04c62d1ca4ae3dc3436ccbd8049ddd7e0a (commit)
       via  67e76e82df0fe8466b4bf65265d0c6b7f6046dfb (commit)
       via  3046be77847ce54baae1d432dec224282dedcc16 (commit)
      from  2ae7b5534897c95a1722e82a0551d8b07ce591b8 (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 -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=0492ede11b4f4b396a5f2f5ccbcb0a7bcb0e2167
commit 0492ede11b4f4b396a5f2f5ccbcb0a7bcb0e2167
Merge: 2ae7b55 5abead0
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Mon Jan 26 15:00:57 2015 -0500
Commit:     CMake Topic Stage <kwro...@kitware.com>
CommitDate: Mon Jan 26 15:00:57 2015 -0500

    Merge topic 'feature-record-msvc' into next
    
    5abead04 Features: Record for MSVC 2010-2015
    67e76e82 Features: Fix test to reject missing expectation definitions
    3046be77 Features: Emit a test failure if 'override' is present but not 
expected


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=5abead04c62d1ca4ae3dc3436ccbd8049ddd7e0a
commit 5abead04c62d1ca4ae3dc3436ccbd8049ddd7e0a
Author:     Robert Maynard <robert.mayn...@kitware.com>
AuthorDate: Mon Jan 19 15:49:06 2015 -0500
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Mon Jan 26 14:58:42 2015 -0500

    Features: Record for MSVC 2010-2015
    
    Notes:
    
    * Initializer lists are only properly supported in 2015 and above.
      Previous Visual Studio releases said they supported initializer lists.
    
    * VS2012 and above conform to cxx_decltype_incomplete_return_types
      proposal but without support for auto return types the feature is
      unusable.  Activate support only in VS2015 and above.
    
    * VS2010 and above to conform to the updated cxx_contextual_conversions
      proposal.
    
    * In WCDH add MSVC Compatibility for cxx_align{of,as}.
    
    * Exclude MSVC from link feature cycle rejection test
    
      MSVC has no explicit flags to enable C++11/14/17 language standard
      levels.  Instead each version of the compiler documents a list of
      supported features that are always on.  Therefore no use of specific
      features will adjust the CXX_STANDARD level required for any target.
      Therefore we must exclude the RunCMake.CompileFeatures test case
      "LinkImplementationFeatureCycle" because it can never fail.
    
      Note that within the RunCMakeTest script no languages or toolchains are
      enabled so we cannot test if(MSVC) directly.  Instead test it during
      configuration of the test and pass in a variable telling RunCMakeTest
      whether to activate this test case.
    
    Co-Author: Stephen Kelly <steve...@gmail.com>

diff --git a/Modules/Compiler/MSVC-CXX-FeatureTests.cmake 
b/Modules/Compiler/MSVC-CXX-FeatureTests.cmake
new file mode 100644
index 0000000..476f244
--- /dev/null
+++ b/Modules/Compiler/MSVC-CXX-FeatureTests.cmake
@@ -0,0 +1,100 @@
+
+# Reference: http://msdn.microsoft.com/en-us/library/vstudio/hh567368.aspx
+# 
http://blogs.msdn.com/b/vcblog/archive/2013/06/28/c-11-14-stl-features-fixes-and-breaking-changes-in-vs-2013.aspx
+# 
http://blogs.msdn.com/b/vcblog/archive/2014/11/17/c-11-14-17-features-in-vs-2015-preview.aspx
+# http://www.visualstudio.com/en-us/news/vs2015-preview-vs.aspx
+
+
+set(_cmake_oldestSupported "_MSC_VER >= 1600")
+
+set(MSVC_2015 "_MSC_VER >= 1900")
+set(_cmake_feature_test_cxx_alignas "${MSVC_2015}")
+set(_cmake_feature_test_cxx_alignof "${MSVC_2015}")
+set(_cmake_feature_test_cxx_binary_literals "${MSVC_2015}")
+set(_cmake_feature_test_cxx_decltype_auto "${MSVC_2015}")
+# In theory decltype incomplete return types was added in 2012
+# but without support for decltype_auto and return type deduction this
+# feature is unusable
+set(_cmake_feature_test_cxx_decltype_incomplete_return_types "${MSVC_2015}")
+set(_cmake_feature_test_cxx_digit_separators "${MSVC_2015}")
+set(_cmake_feature_test_cxx_func_identifier "${MSVC_2015}")
+# 
http://blogs.msdn.com/b/vcblog/archive/2014/11/17/c-11-14-17-features-in-vs-2015-preview.aspx
+# Note 1. While previous version of VisualStudio said they supported this
+# they silently produced bad code, and are now marked as having partial
+# support
+set(_cmake_feature_test_cxx_generalized_initializers "${MSVC_2015}")
+set(_cmake_feature_test_cxx_generic_lambdas "${MSVC_2015}")
+set(_cmake_feature_test_cxx_inheriting_constructors "${MSVC_2015}")
+set(_cmake_feature_test_cxx_inline_namespaces "${MSVC_2015}")
+set(_cmake_feature_test_cxx_lambda_init_captures "${MSVC_2015}")
+set(_cmake_feature_test_cxx_noexcept "${MSVC_2015}")
+set(_cmake_feature_test_cxx_return_type_deduction "${MSVC_2015}")
+set(_cmake_feature_test_cxx_sizeof_member "${MSVC_2015}")
+set(_cmake_feature_test_cxx_thread_local "${MSVC_2015}")
+set(_cmake_feature_test_cxx_unicode_literals "${MSVC_2015}")
+set(_cmake_feature_test_cxx_unrestricted_unions "${MSVC_2015}")
+set(_cmake_feature_test_cxx_user_literals "${MSVC_2015}")
+
+set(MSVC_2013 "_MSC_VER >= 1800")
+set(_cmake_feature_test_cxx_alias_templates "${MSVC_2013}")
+set(_cmake_feature_test_cxx_default_function_template_args "${MSVC_2013}")
+set(_cmake_feature_test_cxx_defaulted_functions "${MSVC_2013}")
+set(_cmake_feature_test_cxx_delegating_constructors "${MSVC_2013}")
+set(_cmake_feature_test_cxx_deleted_functions "${MSVC_2013}")
+set(_cmake_feature_test_cxx_explicit_conversions "${MSVC_2013}")
+set(_cmake_feature_test_cxx_nonstatic_member_init "${MSVC_2013}")
+set(_cmake_feature_test_cxx_raw_string_literals "${MSVC_2013}")
+set(_cmake_feature_test_cxx_uniform_initialization "${MSVC_2013}")
+# Possibly broken:
+# http://thread.gmane.org/gmane.comp.lib.boost.devel/244986/focus=245333
+set(_cmake_feature_test_cxx_variadic_templates "${MSVC_2013}")
+
+set(MSVC_2012 "_MSC_VER >= 1700")
+set(_cmake_feature_test_cxx_enum_forward_declarations "${MSVC_2012}")
+set(_cmake_feature_test_cxx_final "${MSVC_2012}")
+set(_cmake_feature_test_cxx_range_for "${MSVC_2012}")
+set(_cmake_feature_test_cxx_strong_enums "${MSVC_2012}")
+
+set(MSVC_2010 "_MSC_VER >= 1600")
+set(_cmake_feature_test_cxx_auto_function "${MSVC_2010}")
+set(_cmake_feature_test_cxx_auto_type "${MSVC_2010}")
+# Microsoft now states they support contextual conversions
+# see footnote 6 at:
+# 
http://blogs.msdn.com/b/vcblog/archive/2014/11/17/c-11-14-17-features-in-vs-2015-preview.aspx
+set(_cmake_feature_test_cxx_contextual_conversions "${MSVC_2010}")
+set(_cmake_feature_test_cxx_decltype "${MSVC_2010}")
+set(_cmake_feature_test_cxx_extended_friend_declarations "${MSVC_2010}")
+set(_cmake_feature_test_cxx_extern_templates "${MSVC_2010}")
+set(_cmake_feature_test_cxx_lambdas "${MSVC_2010}")
+set(_cmake_feature_test_cxx_local_type_template_args "${MSVC_2010}")
+set(_cmake_feature_test_cxx_long_long_type "${MSVC_2010}")
+set(_cmake_feature_test_cxx_nullptr "${MSVC_2010}")
+set(_cmake_feature_test_cxx_override "${MSVC_2010}")
+set(_cmake_feature_test_cxx_right_angle_brackets "${MSVC_2010}")
+set(_cmake_feature_test_cxx_rvalue_references "${MSVC_2010}")
+set(_cmake_feature_test_cxx_static_assert "${MSVC_2010}")
+set(_cmake_feature_test_cxx_template_template_parameters "${MSVC_2010}")
+set(_cmake_feature_test_cxx_trailing_return_types "${MSVC_2010}")
+set(_cmake_feature_test_cxx_variadic_macros "${MSVC_2010}")
+
+# Currently unsupported:
+# http://herbsutter.com/2013/11/18/visual-c-compiler-november-2013-ctp/
+# 
http://blogs.msdn.com/b/vcblog/archive/2014/11/17/c-11-14-17-features-in-vs-2015-preview.aspx
+
+# set(_cmake_feature_test_cxx_reference_qualified_functions )
+# set(_cmake_feature_test_cxx_constexpr )
+# set(_cmake_feature_test_cxx_attributes )
+# set(_cmake_feature_test_cxx_aggregate_default_initializers )
+# set(_cmake_feature_test_cxx_attribute_deprecated )
+# set(_cmake_feature_test_cxx_defaulted_move_initializers )
+# set(_cmake_feature_test_cxx_nonstatic_member_init )
+# set(_cmake_feature_test_cxx_relaxed_constexpr )
+# set(_cmake_feature_test_cxx_variable_templates )
+
+
+# Unset all the variables that we don't need exposed.
+# _cmake_oldestSupported is required by WriteCompilerDetectionHeader
+set(MSVC_2015)
+set(MSVC_2013)
+set(MSVC_2012)
+set(MSVC_2010)
diff --git a/Modules/Compiler/MSVC-CXX.cmake b/Modules/Compiler/MSVC-CXX.cmake
new file mode 100644
index 0000000..88ca206
--- /dev/null
+++ b/Modules/Compiler/MSVC-CXX.cmake
@@ -0,0 +1,10 @@
+# No version of MSVC has full conformance to C++11. Therefore the
+# __cplusplus macro always evaluates to 98 even if the compilers come with
+# C++11/14/+ features enabled.  Later we should refactor the C++ side of
+# this within CMake to allow us to specify that there are no language level
+# flags for this compiler.
+set(CMAKE_CXX_STANDARD_DEFAULT 98)
+
+macro(cmake_record_cxx_compile_features)
+  record_compiler_features(CXX "" CMAKE_CXX_COMPILE_FEATURES)
+endmacro()
diff --git a/Modules/WriteCompilerDetectionHeader.cmake 
b/Modules/WriteCompilerDetectionHeader.cmake
index e81bc08..d18f47c 100644
--- a/Modules/WriteCompilerDetectionHeader.cmake
+++ b/Modules/WriteCompilerDetectionHeader.cmake
@@ -36,7 +36,7 @@
 #      PREFIX ClimbingStats
 #      OUTPUT_FILES_VAR support_files
 #      OUTPUT_DIR compilers
-#      COMPILERS GNU Clang
+#      COMPILERS GNU Clang MSVC
 #      FEATURES cxx_variadic_templates
 #    )
 #    install(FILES
@@ -100,7 +100,7 @@
 #    write_compiler_detection_header(
 #      FILE climbingstats_compiler_detection.h
 #      PREFIX ClimbingStats
-#      COMPILERS GNU Clang AppleClang
+#      COMPILERS GNU Clang AppleClang MSVC
 #      FEATURES cxx_variadic_templates
 #    )
 #
@@ -321,6 +321,7 @@ function(write_compiler_detection_header
     GNU
     Clang
     AppleClang
+    MSVC
     SunPro
   )
 
@@ -528,6 +529,8 @@ function(write_compiler_detection_header
 #    define ${def_value} alignas(X)
 #  elif ${prefix_arg}_COMPILER_IS_GNU || ${prefix_arg}_COMPILER_IS_Clang || 
${prefix_arg}_COMPILER_IS_AppleClang
 #    define ${def_value} __attribute__ ((__aligned__(X)))
+#  elif ${prefix_arg}_COMPILER_IS_MSVC
+#    define ${def_value} __declspec(align(X))
 #  else
 #    define ${def_value}
 #  endif
@@ -540,6 +543,8 @@ function(write_compiler_detection_header
 #    define ${def_value} alignof(X)
 #  elif ${prefix_arg}_COMPILER_IS_GNU || ${prefix_arg}_COMPILER_IS_Clang || 
${prefix_arg}_COMPILER_IS_AppleClang
 #    define ${def_value} __alignof__(X)
+#  elif ${prefix_arg}_COMPILER_IS_MSVC
+#    define ${def_value} __alignof(X)
 #  endif
 \n")
       endif()
diff --git a/Tests/CompileFeatures/CMakeLists.txt 
b/Tests/CompileFeatures/CMakeLists.txt
index 5cd0836..5f93abc 100644
--- a/Tests/CompileFeatures/CMakeLists.txt
+++ b/Tests/CompileFeatures/CMakeLists.txt
@@ -207,6 +207,29 @@ if (CMAKE_CXX_COMPILE_FEATURES)
         -DEXPECT_INHERITING_CONSTRUCTORS_AND_FINAL=0
       )
     endif()
+  elseif(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
+    if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.0)
+      add_definitions(
+        -DEXPECT_OVERRIDE_CONTROL=1
+        -DEXPECT_INHERITING_CONSTRUCTORS=1
+        -DEXPECT_FINAL=1
+        -DEXPECT_INHERITING_CONSTRUCTORS_AND_FINAL=1
+      )
+    elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 17.0)
+      add_definitions(
+        -DEXPECT_OVERRIDE_CONTROL=1
+        -DEXPECT_INHERITING_CONSTRUCTORS=0
+        -DEXPECT_FINAL=1
+        -DEXPECT_INHERITING_CONSTRUCTORS_AND_FINAL=0
+      )
+    else()
+      add_definitions(
+        -DEXPECT_OVERRIDE_CONTROL=0
+        -DEXPECT_INHERITING_CONSTRUCTORS=0
+        -DEXPECT_FINAL=0
+        -DEXPECT_INHERITING_CONSTRUCTORS_AND_FINAL=0
+      )
+    endif()
   elseif (CMAKE_CXX_COMPILER_ID STREQUAL "SunPro")
     add_definitions(
       -DEXPECT_OVERRIDE_CONTROL=1
diff --git a/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt 
b/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt
index b5e46c0..43e89ab 100644
--- a/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt
+++ b/Tests/Module/WriteCompilerDetectionHeader/CMakeLists.txt
@@ -11,7 +11,7 @@ get_property(c_known_features GLOBAL PROPERTY 
CMAKE_C_KNOWN_FEATURES)
 write_compiler_detection_header(
   FILE "${CMAKE_CURRENT_BINARY_DIR}/test_compiler_detection.h"
   PREFIX TEST
-  COMPILERS GNU Clang AppleClang SunPro
+  COMPILERS GNU Clang AppleClang MSVC SunPro
   VERSION 3.1
   PROLOG "// something"
   EPILOG "// more"
@@ -67,6 +67,18 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU"
   list(APPEND false_defs EXPECTED_COMPILER_CXX_VARIADIC_TEMPLATES)
 endif()
 
+# for msvc the compiler version determines which c++11 features are available.
+# Both variadic templates and delegating constructors support exist in
+# all versions that we write compile headers for.
+if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" AND
+    ";${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)
+else(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
+  list(APPEND false_defs EXPECTED_COMPILER_CXX_DELEGATING_CONSTRUCTORS)
+  list(APPEND false_defs EXPECTED_COMPILER_CXX_VARIADIC_TEMPLATES)
+endif()
+
 if (CMAKE_C_COMPILER_ID STREQUAL "GNU"
     OR CMAKE_C_COMPILER_ID STREQUAL "Clang"
     OR CMAKE_C_COMPILER_ID STREQUAL "AppleClang")
@@ -84,7 +96,7 @@ write_compiler_detection_header(
   PREFIX MULTI
   OUTPUT_FILES_VAR multi_files
   OUTPUT_DIR 
"${CMAKE_CURRENT_BINARY_DIR}/compiler_multi_files/compiler_support"
-  COMPILERS GNU Clang AppleClang SunPro
+  COMPILERS GNU Clang AppleClang MSVC SunPro
   VERSION 3.1
   FEATURES
     ${cxx_known_features} ${c_known_features}
diff --git a/Tests/RunCMake/CMakeLists.txt b/Tests/RunCMake/CMakeLists.txt
index 3a61751..3e2624e 100644
--- a/Tests/RunCMake/CMakeLists.txt
+++ b/Tests/RunCMake/CMakeLists.txt
@@ -84,6 +84,9 @@ add_RunCMake_test(ObjectLibrary)
 add_RunCMake_test(TargetObjects)
 add_RunCMake_test(TargetSources)
 add_RunCMake_test(find_dependency)
+if(MSVC)
+  set(CompileFeatures_ARGS "-DNO_LinkImplementationFeatureCycle=1")
+endif()
 add_RunCMake_test(CompileFeatures)
 add_RunCMake_test(WriteCompilerDetectionHeader)
 if(NOT WIN32)
diff --git a/Tests/RunCMake/CompileFeatures/RunCMakeTest.cmake 
b/Tests/RunCMake/CompileFeatures/RunCMakeTest.cmake
index 1892a5c..4c04e78 100644
--- a/Tests/RunCMake/CompileFeatures/RunCMakeTest.cmake
+++ b/Tests/RunCMake/CompileFeatures/RunCMakeTest.cmake
@@ -27,7 +27,9 @@ if (NOT CXX_FEATURES)
   run_cmake(NoSupportedCxxFeatures)
   run_cmake(NoSupportedCxxFeaturesGenex)
 else()
-  run_cmake(LinkImplementationFeatureCycle)
+  if(NOT NO_LinkImplementationFeatureCycle)
+    run_cmake(LinkImplementationFeatureCycle)
+  endif()
   run_cmake(LinkImplementationFeatureCycleSolved)
 
   if (";${CXX_FEATURES};" MATCHES ";cxx_final;")

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=67e76e82df0fe8466b4bf65265d0c6b7f6046dfb
commit 67e76e82df0fe8466b4bf65265d0c6b7f6046dfb
Author:     Brad King <brad.k...@kitware.com>
AuthorDate: Mon Jan 26 14:25:22 2015 -0500
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Mon Jan 26 14:41:33 2015 -0500

    Features: Fix test to reject missing expectation definitions
    
    Whenever feature support is added to a compiler, the CompileFeatures
    test needs to be updated to set expected availability of features.
    Add #error directives to ensure the test fails if expectations are
    not set.
    
    Suggested-by: Stephen Kelly <steve...@gmail.com>

diff --git a/Tests/CompileFeatures/genex_test.cpp 
b/Tests/CompileFeatures/genex_test.cpp
index 7919eb4..2161bca 100644
--- a/Tests/CompileFeatures/genex_test.cpp
+++ b/Tests/CompileFeatures/genex_test.cpp
@@ -1,3 +1,15 @@
+#ifndef EXPECT_FINAL
+# error EXPECT_FINAL not defined
+#endif
+#ifndef EXPECT_INHERITING_CONSTRUCTORS
+# error EXPECT_INHERITING_CONSTRUCTORS not defined
+#endif
+#ifndef EXPECT_INHERITING_CONSTRUCTORS_AND_FINAL
+# error EXPECT_INHERITING_CONSTRUCTORS_AND_FINAL not defined
+#endif
+#ifndef EXPECT_OVERRIDE_CONTROL
+# error EXPECT_OVERRIDE_CONTROL not defined
+#endif
 
 #if !HAVE_OVERRIDE_CONTROL
 #if EXPECT_OVERRIDE_CONTROL

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=3046be77847ce54baae1d432dec224282dedcc16
commit 3046be77847ce54baae1d432dec224282dedcc16
Author:     Stephen Kelly <steve...@gmail.com>
AuthorDate: Sat Jan 24 15:22:23 2015 +0100
Commit:     Brad King <brad.k...@kitware.com>
CommitDate: Mon Jan 26 14:41:33 2015 -0500

    Features: Emit a test failure if 'override' is present but not expected

diff --git a/Tests/CompileFeatures/genex_test.cpp 
b/Tests/CompileFeatures/genex_test.cpp
index d9c8eec..7919eb4 100644
--- a/Tests/CompileFeatures/genex_test.cpp
+++ b/Tests/CompileFeatures/genex_test.cpp
@@ -4,6 +4,9 @@
 #error "Expect override control feature"
 #endif
 #else
+#if !EXPECT_OVERRIDE_CONTROL
+#error "Expect no override control feature"
+#endif
 
 struct A
 {

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

Summary of changes:


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

Reply via email to