d13758514c
Commit 7235334a (Project: Determine default language dialect for the compiler., 2015-09-15) introduced a mechanism to determine the default dialect used for the running compiler. If conditions in the <CompilerId>-<Lang>.cmake file are such that compile features for that version of the compiler should be supported, the _DEFAULT_STANDARD is set to the computed value. However, the CMakeForceCompiler module allows users to bypass execution of the compiler by CMake. In that case, do not set the _DEFAULT_STANDARD variable at all, which effectively disables the compile-features where the module is used. No compile features have ever been recorded where the module is used so no functionality is lost.
45 lines
1.5 KiB
CMake
45 lines
1.5 KiB
CMake
include(Compiler/Clang)
|
|
__compiler_clang(C)
|
|
|
|
cmake_policy(GET CMP0025 appleClangPolicy)
|
|
if(WIN32 OR (APPLE AND NOT appleClangPolicy STREQUAL NEW))
|
|
return()
|
|
endif()
|
|
|
|
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.4)
|
|
set(CMAKE_C90_STANDARD_COMPILE_OPTION "-std=c90")
|
|
set(CMAKE_C90_EXTENSION_COMPILE_OPTION "-std=gnu90")
|
|
|
|
set(CMAKE_C99_STANDARD_COMPILE_OPTION "-std=c99")
|
|
set(CMAKE_C99_EXTENSION_COMPILE_OPTION "-std=gnu99")
|
|
|
|
set(CMAKE_C11_STANDARD_COMPILE_OPTION "-std=c11")
|
|
set(CMAKE_C11_EXTENSION_COMPILE_OPTION "-std=gnu11")
|
|
endif()
|
|
|
|
if(NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.4)
|
|
if (NOT CMAKE_C_COMPILER_FORCED)
|
|
if (NOT CMAKE_C_STANDARD_COMPUTED_DEFAULT)
|
|
message(FATAL_ERROR "CMAKE_C_STANDARD_COMPUTED_DEFAULT should be set for ${CMAKE_C_COMPILER_ID} (${CMAKE_C_COMPILER}) version ${CMAKE_C_COMPILER_VERSION}")
|
|
endif()
|
|
set(CMAKE_C_STANDARD_DEFAULT ${CMAKE_C_STANDARD_COMPUTED_DEFAULT})
|
|
endif()
|
|
endif()
|
|
|
|
macro(cmake_record_c_compile_features)
|
|
macro(_get_clang_features std_version list)
|
|
record_compiler_features(C "${std_version}" ${list})
|
|
endmacro()
|
|
|
|
set(_result 0)
|
|
if (UNIX AND NOT CMAKE_C_COMPILER_VERSION VERSION_LESS 3.4)
|
|
_get_clang_features(${CMAKE_C11_STANDARD_COMPILE_OPTION} CMAKE_C11_COMPILE_FEATURES)
|
|
if (_result EQUAL 0)
|
|
_get_clang_features(${CMAKE_C99_STANDARD_COMPILE_OPTION} CMAKE_C99_COMPILE_FEATURES)
|
|
endif()
|
|
if (_result EQUAL 0)
|
|
_get_clang_features(${CMAKE_C90_STANDARD_COMPILE_OPTION} CMAKE_C90_COMPILE_FEATURES)
|
|
endif()
|
|
endif()
|
|
endmacro()
|