f97bf4370c
Record the availability of this feature for GNU 4.8 on (UNIX AND NOT APPLE) only. In the future, availability can be recorded for earlier GNU, for other platforms and for other compilers. Initially the affected configurations are as restricted as possible to allow for easy testing while extending the features vector in only one dimension. The error message when using the set_property API directly is not very good, but follow up commits will provide origin debugging of the property and a target_compile_features command which will provide a configure-time backtrace when possible.
38 lines
1.2 KiB
CMake
38 lines
1.2 KiB
CMake
include(Compiler/GNU)
|
|
__compiler_gnu(CXX)
|
|
|
|
if (WIN32)
|
|
if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.6)
|
|
set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fno-keep-inline-dllexport")
|
|
endif()
|
|
else()
|
|
if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.2)
|
|
set(CMAKE_CXX_COMPILE_OPTIONS_VISIBILITY_INLINES_HIDDEN "-fvisibility-inlines-hidden")
|
|
endif()
|
|
endif()
|
|
|
|
if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.3)
|
|
set(CMAKE_CXX98_STANDARD_COMPILE_OPTION "-std=c++98")
|
|
set(CMAKE_CXX98_EXTENSION_COMPILE_OPTION "-std=gnu++98")
|
|
endif()
|
|
|
|
if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.7)
|
|
set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++11")
|
|
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++11")
|
|
elseif(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.3)
|
|
set(CMAKE_CXX11_STANDARD_COMPILE_OPTION "-std=c++0x")
|
|
set(CMAKE_CXX11_EXTENSION_COMPILE_OPTION "-std=gnu++0x")
|
|
endif()
|
|
|
|
macro(cmake_record_cxx_compile_features)
|
|
macro(_get_gcc_features std_version list)
|
|
record_compiler_features(CXX "-std=${std_version}" ${list})
|
|
endmacro()
|
|
|
|
if (UNIX AND NOT APPLE AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8)
|
|
_get_gcc_features(c++11 CMAKE_CXX11_COMPILE_FEATURES)
|
|
else()
|
|
set(_result 0)
|
|
endif()
|
|
endmacro()
|