1
2enable_language(C)
3
4function(check_language_feature_flags lang level)
5  if(CMAKE_${lang}${level}_STANDARD_COMPILE_OPTION)
6    #this property is an internal implementation detail of CMake
7    get_property(known_features GLOBAL PROPERTY CMAKE_${lang}${level}_KNOWN_FEATURES)
8    list(LENGTH known_features len)
9    if(len LESS 1)
10      message(FATAL_ERROR "unable to find known features of ${lang}${level}")
11    endif()
12
13    string(TOLOWER ${lang} lang_lower)
14    set(known_name ${lang_lower}${level}_known_features)
15    set(meta_name  ${lang_lower}${level}_meta_feature)
16
17    add_library(${known_name} STATIC a.c)
18    target_compile_features(${known_name} PUBLIC ${known_features})
19    add_library(${meta_name} STATIC a.c)
20    target_compile_features(${meta_name} PUBLIC ${lang_lower}_std_${level})
21  endif()
22endfunction()
23
24
25check_language_feature_flags(C 90)
26check_language_feature_flags(C 99)
27check_language_feature_flags(C 11)
28