Explorar o código

Features: Disable support for Oracle SolarisStudio on non-Linux

On SunOS the -std=c++11 flag must be used for linking as well as
compiling.  Until we implement support for this we cannot support
the CXX_STANDARD property except on Linux (where it was tested).
Brad King %!s(int64=10) %!d(string=hai) anos
pai
achega
61bc0f7363
Modificáronse 2 ficheiros con 18 adicións e 14 borrados
  1. 1 1
      Help/manual/cmake-compile-features.7.rst
  2. 17 13
      Modules/Compiler/SunPro-CXX.cmake

+ 1 - 1
Help/manual/cmake-compile-features.7.rst

@@ -308,4 +308,4 @@ versions specified for each:
 * ``Clang``: Clang compiler versions 2.9 through 3.4.
 * ``GNU``: GNU compiler versions 4.4 through 5.0.
 * ``MSVC``: Microsoft Visual Studio versions 2010 through 2015.
-* ``SunPro``: Oracle SolarisStudio version 12.4.
+* ``SunPro``: Oracle SolarisStudio version 12.4 on a Linux host.

+ 17 - 13
Modules/Compiler/SunPro-CXX.cmake

@@ -31,17 +31,19 @@ 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()
+if (CMAKE_SYSTEM_NAME STREQUAL Linux)
+  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()
 
-if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.13)
-  if (NOT CMAKE_CXX_COMPILER_FORCED)
-    if (NOT CMAKE_CXX_STANDARD_COMPUTED_DEFAULT)
-      message(FATAL_ERROR "CMAKE_CXX_STANDARD_COMPUTED_DEFAULT should be set for ${CMAKE_CXX_COMPILER_ID} (${CMAKE_CXX_COMPILER}) version ${CMAKE_CXX_COMPILER_VERSION}")
+  if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.13)
+    if (NOT CMAKE_CXX_COMPILER_FORCED)
+      if (NOT CMAKE_CXX_STANDARD_COMPUTED_DEFAULT)
+        message(FATAL_ERROR "CMAKE_CXX_STANDARD_COMPUTED_DEFAULT should be set for ${CMAKE_CXX_COMPILER_ID} (${CMAKE_CXX_COMPILER}) version ${CMAKE_CXX_COMPILER_VERSION}")
+      endif()
+      set(CMAKE_CXX_STANDARD_DEFAULT ${CMAKE_CXX_STANDARD_COMPUTED_DEFAULT})
     endif()
-    set(CMAKE_CXX_STANDARD_DEFAULT ${CMAKE_CXX_STANDARD_COMPUTED_DEFAULT})
   endif()
 endif()
 
@@ -51,10 +53,12 @@ macro(cmake_record_cxx_compile_features)
   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)
+  if (CMAKE_SYSTEM_NAME STREQUAL Linux)
+    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()
   endif()
 endmacro()