diff options
Diffstat (limited to 'Tests/CompileFeatures')
-rw-r--r-- | Tests/CompileFeatures/CMakeLists.txt | 10 | ||||
-rw-r--r-- | Tests/CompileFeatures/c_function_prototypes.c | 9 | ||||
-rw-r--r-- | Tests/CompileFeatures/c_restrict.c | 7 | ||||
-rw-r--r-- | Tests/CompileFeatures/c_static_assert.c | 2 | ||||
-rw-r--r-- | Tests/CompileFeatures/c_variadic_macros.c | 15 | ||||
-rw-r--r-- | Tests/CompileFeatures/main.c | 12 |
6 files changed, 53 insertions, 2 deletions
diff --git a/Tests/CompileFeatures/CMakeLists.txt b/Tests/CompileFeatures/CMakeLists.txt index adf50d5..0e1e6c9 100644 --- a/Tests/CompileFeatures/CMakeLists.txt +++ b/Tests/CompileFeatures/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.0) project(CompileFeatures) -if (NOT CMAKE_CXX_COMPILE_FEATURES) +if (NOT CMAKE_C_COMPILE_FEATURES AND NOT CMAKE_CXX_COMPILE_FEATURES) file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp" "int main(int,char**) { return 0; }\n" ) @@ -22,6 +22,10 @@ macro(run_test feature lang) endif() endmacro() +get_property(c_features GLOBAL PROPERTY CMAKE_C_KNOWN_FEATURES) +foreach(feature ${c_features}) + run_test(${feature} C) +endforeach() get_property(cxx_features GLOBAL PROPERTY CMAKE_CXX_KNOWN_FEATURES) foreach(feature ${cxx_features}) run_test(${feature} CXX) @@ -34,9 +38,11 @@ if (CMAKE_CXX_COMPILER_ID STREQUAL GNU ) endif() +set(C_ext c) +set(C_standard_flag 11) set(CXX_ext cpp) set(CXX_standard_flag 11) -foreach(lang CXX) +foreach(lang CXX C) if (CMAKE_${lang}_COMPILE_FEATURES) foreach(feature ${${lang}_non_features}) message("Testing feature : ${feature}") diff --git a/Tests/CompileFeatures/c_function_prototypes.c b/Tests/CompileFeatures/c_function_prototypes.c new file mode 100644 index 0000000..ab3c948 --- /dev/null +++ b/Tests/CompileFeatures/c_function_prototypes.c @@ -0,0 +1,9 @@ + +int someFunc(int a, int b); + +int someFunc(int a, int b) +{ + (void)a; + (void)b; + return 0; +} diff --git a/Tests/CompileFeatures/c_restrict.c b/Tests/CompileFeatures/c_restrict.c new file mode 100644 index 0000000..7bc7566 --- /dev/null +++ b/Tests/CompileFeatures/c_restrict.c @@ -0,0 +1,7 @@ + +int f (int * restrict a, int * restrict b) +{ + (void)a; + (void)b; + return 0; +} diff --git a/Tests/CompileFeatures/c_static_assert.c b/Tests/CompileFeatures/c_static_assert.c new file mode 100644 index 0000000..afab504 --- /dev/null +++ b/Tests/CompileFeatures/c_static_assert.c @@ -0,0 +1,2 @@ + +_Static_assert(1, "Static assert test"); diff --git a/Tests/CompileFeatures/c_variadic_macros.c b/Tests/CompileFeatures/c_variadic_macros.c new file mode 100644 index 0000000..4da111e --- /dev/null +++ b/Tests/CompileFeatures/c_variadic_macros.c @@ -0,0 +1,15 @@ + +int someFunc(int i1, char c, int i2) +{ + (void)i1; + (void)c; + (void)i2; + return 0; +} + +#define FUNC_WRAPPER(...) someFunc(__VA_ARGS__) + +void otherFunc() +{ + FUNC_WRAPPER(42, 'a', 7); +} diff --git a/Tests/CompileFeatures/main.c b/Tests/CompileFeatures/main.c new file mode 100644 index 0000000..831c5eb2 --- /dev/null +++ b/Tests/CompileFeatures/main.c @@ -0,0 +1,12 @@ + +int foo(int * restrict a, int * restrict b) +{ + (void)a; + (void)b; + return 0; +} + +int main() +{ + return 0; +} |