From 2731a91c98ad8b48aaecc2fa3039cc9601d48fbc Mon Sep 17 00:00:00 2001 From: Brad King Date: Mon, 8 May 2017 10:26:54 -0400 Subject: Update SunPro flags used for CMake itself to support C++11 --- CMakeLists.txt | 12 ++++++++---- CompileFlags.cmake | 9 ++++++++- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6b88538..eb46c3b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -55,11 +55,15 @@ if(NOT DEFINED CMAKE_C_STANDARD AND NOT CMake_NO_C_STANDARD) endif() endif() if(NOT DEFINED CMAKE_CXX_STANDARD AND NOT CMake_NO_CXX_STANDARD) - include(${CMake_SOURCE_DIR}/Source/Checks/cm_cxx14_cstdio.cmake) - if(NOT CMake_CXX14_CSTDIO_BROKEN) - set(CMAKE_CXX_STANDARD 14) + if (CMAKE_CXX_COMPILER_ID STREQUAL SunPro AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.14) + set(CMAKE_CXX_STANDARD 98) else() - set(CMAKE_CXX_STANDARD 11) + include(${CMake_SOURCE_DIR}/Source/Checks/cm_cxx14_cstdio.cmake) + if(NOT CMake_CXX14_CSTDIO_BROKEN) + set(CMAKE_CXX_STANDARD 14) + else() + set(CMAKE_CXX_STANDARD 11) + endif() endif() endif() if(NOT CMake_TEST_EXTERNAL_CMAKE) diff --git a/CompileFlags.cmake b/CompileFlags.cmake index d70e3af..d1f4f13 100644 --- a/CompileFlags.cmake +++ b/CompileFlags.cmake @@ -61,7 +61,14 @@ endif() if (CMAKE_CXX_COMPILER_ID STREQUAL SunPro) if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.13) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++03") + if (NOT CMAKE_CXX_STANDARD OR CMAKE_CXX_STANDARD EQUAL 98) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++03") + elseif(CMAKE_VERSION VERSION_LESS 3.8.20170502) + # CMake knows how to add this flag for compilation as C++11, + # but has not been taught that SunPro needs it for linking too. + # Add it in a place that will be used for both. + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") + endif() else() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -library=stlport4") endif() -- cgit v0.12