WCDH: Make the header -Wundef safe for the C language.
The __STDC_VERSION__ macro may be defined or not depending on the implementation dialect of C. Test that it is defined before testing its value. The CXX tests do not need such a change because they define __cplusplus in all dialects.
This commit is contained in:
parent
598a316154
commit
d0af0faefb
|
@ -1,9 +1,9 @@
|
|||
|
||||
set(_cmake_oldestSupported "((__clang_major__ * 100) + __clang_minor__) >= 304")
|
||||
|
||||
set(Clang_C11 "${_cmake_oldestSupported} && __STDC_VERSION__ >= 201112L")
|
||||
set(Clang_C11 "${_cmake_oldestSupported} && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L")
|
||||
set(_cmake_feature_test_c_static_assert "${Clang_C11}")
|
||||
set(Clang_C99 "${_cmake_oldestSupported} && __STDC_VERSION__ >= 199901L")
|
||||
set(Clang_C99 "${_cmake_oldestSupported} && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L")
|
||||
set(_cmake_feature_test_c_restrict "${Clang_C99}")
|
||||
set(_cmake_feature_test_c_variadic_macros "${Clang_C99}")
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
|
||||
set(_cmake_oldestSupported "(__GNUC__ * 100 + __GNUC_MINOR__) >= 407")
|
||||
|
||||
set(GNU46_C11 "${_cmake_oldestSupported} && __STDC_VERSION__ >= 201112L")
|
||||
set(GNU46_C11 "${_cmake_oldestSupported} && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201112L")
|
||||
set(_cmake_feature_test_c_static_assert "${GNU46_C11}")
|
||||
# Since 4.4 at least:
|
||||
set(GNU44_C99 "${_cmake_oldestSupported} && __STDC_VERSION__ >= 199901L")
|
||||
set(GNU44_C99 "${_cmake_oldestSupported} && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L")
|
||||
set(_cmake_feature_test_c_restrict "${GNU44_C99}")
|
||||
set(_cmake_feature_test_c_variadic_macros "${GNU44_C99}")
|
||||
|
||||
|
|
|
@ -63,6 +63,13 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL GNU
|
|||
list(APPEND false_defs EXPECTED_COMPILER_CXX_VARIADIC_TEMPLATES)
|
||||
endif()
|
||||
|
||||
if (CMAKE_C_COMPILER_ID STREQUAL GNU
|
||||
OR CMAKE_C_COMPILER_ID STREQUAL Clang)
|
||||
add_executable(C_undefined c_undefined.c)
|
||||
set_property(TARGET C_undefined PROPERTY CXX_STANDARD 90)
|
||||
target_compile_options(C_undefined PRIVATE -Werror=undef)
|
||||
endif()
|
||||
|
||||
add_executable(WriteCompilerDetectionHeader main.cpp)
|
||||
set_property(TARGET WriteCompilerDetectionHeader PROPERTY CXX_STANDARD 98)
|
||||
set_defines(WriteCompilerDetectionHeader "${true_defs}" "${false_defs}")
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
|
||||
#include "test_compiler_detection.h"
|
||||
|
||||
int main()
|
||||
{
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue