[Cmake-commits] CMake branch, next, updated. v3.1.0-2030-g5f64769

Stephen Kelly steveire at gmail.com
Fri Jan 16 13:27:19 EST 2015


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  5f6476915690e0c21429f9fb4f0dac05ca0f961a (commit)
       via  44a0ffb2c5f11f7d3d0b6653de138ae19a1911be (commit)
       via  7b9e7f815c192d8302592a3c486998f3d0f145dc (commit)
       via  96ce7525d5f710d3ffed07b9e8d51c0662902a17 (commit)
       via  17286b875d478719ce52a0e550c58ee86cd7c865 (commit)
      from  eef78202042c69e102612aa158b4f070fd0e87b4 (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=5f6476915690e0c21429f9fb4f0dac05ca0f961a
commit 5f6476915690e0c21429f9fb4f0dac05ca0f961a
Merge: eef7820 44a0ffb
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Jan 16 13:27:18 2015 -0500
Commit:     CMake Topic Stage <kwrobot at kitware.com>
CommitDate: Fri Jan 16 13:27:18 2015 -0500

    Merge topic 'SolarisStudio-compile-features' into next
    
    44a0ffb2 Features: Record for SolarisStudio 12.4.
    7b9e7f81 Features: Adjust cxx_variadic_templates unit test for SolarisStudio.
    96ce7525 Features: Use variable in cxx_inheriting_constructors test.
    17286b87 Features: Ensure that the cxx_auto_type test is correct.


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=44a0ffb2c5f11f7d3d0b6653de138ae19a1911be
commit 44a0ffb2c5f11f7d3d0b6653de138ae19a1911be
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Jan 16 19:26:37 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Fri Jan 16 19:26:37 2015 +0100

    Features: Record for SolarisStudio 12.4.
    
    It has similar C++11 capabilities compared to GCC 4.8.

diff --git a/Modules/Compiler/SunPro-CXX-FeatureTests.cmake b/Modules/Compiler/SunPro-CXX-FeatureTests.cmake
new file mode 100644
index 0000000..8e97e1d
--- /dev/null
+++ b/Modules/Compiler/SunPro-CXX-FeatureTests.cmake
@@ -0,0 +1,52 @@
+
+# Based on GNU 4.8.2
+# http://docs.oracle.com/cd/E37069_01/html/E37071/gncix.html
+# Reference: http://gcc.gnu.org/projects/cxx0x.html
+
+set(_cmake_oldestSupported "__SUNPRO_CC >= 0x5130")
+
+set(SolarisStudio124_CXX11 "(__SUNPRO_CC >= 0x5130) && __cplusplus >= 201103L")
+set(_cmake_feature_test_cxx_alignas "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_alignof "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_attributes "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_inheriting_constructors "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_thread_local "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_alias_templates "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_delegating_constructors "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_extended_friend_declarations "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_final "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_noexcept "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_nonstatic_member_init "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_override "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_constexpr "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_defaulted_move_initializers "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_enum_forward_declarations "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_nullptr "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_range_for "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_unrestricted_unions "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_explicit_conversions "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_lambdas "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_local_type_template_args "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_raw_string_literals "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_auto_type "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_defaulted_functions "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_deleted_functions "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_generalized_initializers "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_inline_namespaces "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_sizeof_member "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_strong_enums "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_trailing_return_types "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_unicode_literals "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_uniform_initialization "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_variadic_templates "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_decltype "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_default_function_template_args "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_long_long_type "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_right_angle_brackets "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_rvalue_references "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_static_assert "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_extern_templates "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_func_identifier "${SolarisStudio124_CXX11}")
+set(_cmake_feature_test_cxx_variadic_macros "${SolarisStudio124_CXX11}")
+
+set(_cmake_feature_test_cxx_template_template_parameters "${_cmake_oldestSupported} && __cplusplus")
diff --git a/Modules/Compiler/SunPro-CXX.cmake b/Modules/Compiler/SunPro-CXX.cmake
index 5968712..cb37713 100644
--- a/Modules/Compiler/SunPro-CXX.cmake
+++ b/Modules/Compiler/SunPro-CXX.cmake
@@ -31,3 +31,24 @@ set(CMAKE_CXX_CREATE_ASSEMBLY_SOURCE "<CMAKE_CXX_COMPILER> <FLAGS> -S <SOURCE> -
 set(CMAKE_CXX_CREATE_STATIC_LIBRARY
   "<CMAKE_CXX_COMPILER> -xar -o <TARGET> <OBJECTS> "
   "<CMAKE_RANLIB> <TARGET> ")
+
+if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.13)
+  set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++11")
+  set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=c++11")
+endif()
+
+set(CMAKE_CXX_STANDARD_DEFAULT 98)
+
+macro(cmake_record_cxx_compile_features)
+  macro(_get_solaris_studio_features std_version list)
+    record_compiler_features(CXX "${std_version}" ${list})
+  endmacro()
+
+  set(_result 0)
+  if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.13)
+    _get_solaris_studio_features(${CMAKE_CXX11_STANDARD_COMPILE_OPTION} CMAKE_CXX11_COMPILE_FEATURES)
+    if (_result EQUAL 0)
+      _get_solaris_studio_features("" CMAKE_CXX98_COMPILE_FEATURES)
+    endif()
+  endif()
+endmacro()
diff --git a/Tests/CompileFeatures/CMakeLists.txt b/Tests/CompileFeatures/CMakeLists.txt
index 106f29c..182954e 100644
--- a/Tests/CompileFeatures/CMakeLists.txt
+++ b/Tests/CompileFeatures/CMakeLists.txt
@@ -51,6 +51,17 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang"
   )
 endif()
 
+if (CMAKE_CXX_COMPILER_ID STREQUAL SunPro)
+  list(REMOVE_ITEM CXX_non_features
+    cxx_attribute_deprecated
+    cxx_contextual_conversions
+    cxx_extended_friend_declarations
+    cxx_long_long_type
+    cxx_sizeof_member
+    cxx_variadic_macros
+  )
+endif()
+
 if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU"
     AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8)
   # The cxx_alignof feature happens to work (for *this* testcase) with
@@ -188,6 +199,13 @@ if (CMAKE_CXX_COMPILE_FEATURES)
         -DEXPECT_INHERITING_CONSTRUCTORS_AND_FINAL=0
       )
     endif()
+  elseif (CMAKE_CXX_COMPILER_ID STREQUAL "SunPro")
+    add_definitions(
+      -DEXPECT_OVERRIDE_CONTROL=1
+      -DEXPECT_INHERITING_CONSTRUCTORS=1
+      -DEXPECT_FINAL=1
+      -DEXPECT_INHERITING_CONSTRUCTORS_AND_FINAL=1
+    )
   endif()
 
   add_executable(CompileFeaturesGenex genex_test.cpp)

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=7b9e7f815c192d8302592a3c486998f3d0f145dc
commit 7b9e7f815c192d8302592a3c486998f3d0f145dc
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Fri Jan 16 19:21:36 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Fri Jan 16 19:26:25 2015 +0100

    Features: Adjust cxx_variadic_templates unit test for SolarisStudio.
    
    The change in commit 1f19ac4d (Features: Adjust cxx_variadic_templates
    unit test for GNU < 4.7., 2015-01-11) pacified GNU 4.6, but leaves
    SolarisStudio 12.4 complaining:
    
     "cxx_variadic_templates.cpp", line 5: Error: Partial specialization for Interface<Is...> has identical arguments.
     1 Error(s) detected.
    
    Implement a preprocessor test for using the partial specialization
    workaround needed by GNU 4.6.

diff --git a/Tests/CompileFeatures/cxx_variadic_templates.cpp b/Tests/CompileFeatures/cxx_variadic_templates.cpp
index a80e157..e1f641b 100644
--- a/Tests/CompileFeatures/cxx_variadic_templates.cpp
+++ b/Tests/CompileFeatures/cxx_variadic_templates.cpp
@@ -1,21 +1,30 @@
+#if defined(__GNUC__) && ((__GNUC__ * 100 + __GNUC_MINOR__) < 407)
+#define OLD_GNU
+#endif
+
+#ifdef OLD_GNU
 template<int... Is>
 struct Interface;
+#endif
 
-template<int I>
-struct Interface<I>
+template<int I, int... Is>
+struct Interface
+#ifdef OLD_GNU
+                <I, Is...>
+#endif
 {
   static int accumulate()
   {
-    return I;
+    return I + Interface<Is...>::accumulate();
   }
 };
 
-template<int I, int... Is>
-struct Interface<I, Is...>
+template<int I>
+struct Interface<I>
 {
   static int accumulate()
   {
-    return I + Interface<Is...>::accumulate();
+    return I;
   }
 };
 

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=96ce7525d5f710d3ffed07b9e8d51c0662902a17
commit 96ce7525d5f710d3ffed07b9e8d51c0662902a17
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Mon Jan 12 21:49:56 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Fri Jan 16 18:54:18 2015 +0100

    Features: Use variable in cxx_inheriting_constructors test.
    
    Avoid warning with SolarisStudio.

diff --git a/Tests/CompileFeatures/cxx_inheriting_constructors.cpp b/Tests/CompileFeatures/cxx_inheriting_constructors.cpp
index a83b624..cfce880 100644
--- a/Tests/CompileFeatures/cxx_inheriting_constructors.cpp
+++ b/Tests/CompileFeatures/cxx_inheriting_constructors.cpp
@@ -13,6 +13,6 @@ struct B : public A
 
 void someFunc()
 {
-  int i;
+  int i = 0;
   B b(i);
 }

http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=17286b875d478719ce52a0e550c58ee86cd7c865
commit 17286b875d478719ce52a0e550c58ee86cd7c865
Author:     Stephen Kelly <steveire at gmail.com>
AuthorDate: Mon Jan 12 21:47:01 2015 +0100
Commit:     Stephen Kelly <steveire at gmail.com>
CommitDate: Fri Jan 16 18:54:18 2015 +0100

    Features: Ensure that the cxx_auto_type test is correct.
    
    SolarisStudio considers 'auto' to be a storage class specifier in
    C++98 mode (as appropriate), and considers variables without a specified
    type to be of type int.  So, it treats
    
     auto x = 3.14;
    
    as
    
     auto int x = 3.14;
    
    which in C++98 mode is equivalent to
    
     int x = 3.14;
    
    and it does not fail to compile as expected.
    
    Change the test to use a reference so that the type must be known.

diff --git a/Tests/CompileFeatures/cxx_auto_type.cpp b/Tests/CompileFeatures/cxx_auto_type.cpp
index 7dbf04f..1f36a79 100644
--- a/Tests/CompileFeatures/cxx_auto_type.cpp
+++ b/Tests/CompileFeatures/cxx_auto_type.cpp
@@ -1,5 +1,12 @@
 
+double foo_ = 3.14;
+
+double& foo()
+{
+  return foo_;
+}
+
 void someFunc()
 {
-  auto x = 3.14;
+  auto& x = foo();
 }

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

Summary of changes:
 Modules/Compiler/SunPro-CXX-FeatureTests.cmake     |   52 ++++++++++++++++++++
 Modules/Compiler/SunPro-CXX.cmake                  |   21 ++++++++
 Tests/CompileFeatures/CMakeLists.txt               |   18 +++++++
 Tests/CompileFeatures/cxx_auto_type.cpp            |    9 +++-
 .../cxx_inheriting_constructors.cpp                |    2 +-
 Tests/CompileFeatures/cxx_variadic_templates.cpp   |   21 +++++---
 6 files changed, 115 insertions(+), 8 deletions(-)
 create mode 100644 Modules/Compiler/SunPro-CXX-FeatureTests.cmake


hooks/post-receive
-- 
CMake


More information about the Cmake-commits mailing list