From 52e27fe9c6421d36337c0b69df6ca2b3b2d72613 Mon Sep 17 00:00:00 2001 From: Sergei Nikulov Date: Fri, 11 Jan 2019 12:05:17 +0300 Subject: cmake: added checks for HAVE_VARIADIC_MACROS_C99 and HAVE_VARIADIC_MACROS_GCC --- CMake/CurlTests.c | 46 ++++++++++++++++++++++++++++++++++++++++++++-- CMakeLists.txt | 2 ++ 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/CMake/CurlTests.c b/CMake/CurlTests.c index 9388c835b..0756b2a31 100644 --- a/CMake/CurlTests.c +++ b/CMake/CurlTests.c @@ -553,8 +553,8 @@ main() { #include int main() { - struct timespec ts = {0, 0}; - clock_gettime(CLOCK_MONOTONIC, &ts); + struct timespec ts = {0, 0}; + clock_gettime(CLOCK_MONOTONIC, &ts); return 0; } #endif @@ -565,3 +565,45 @@ main() { return 0; } #endif +#ifdef HAVE_VARIADIC_MACROS_C99 +#define c99_vmacro3(first, ...) fun3(first, __VA_ARGS__) +#define c99_vmacro2(first, ...) fun2(first, __VA_ARGS__) + +int fun3(int arg1, int arg2, int arg3); +int fun2(int arg1, int arg2); + +int fun3(int arg1, int arg2, int arg3) { + return arg1 + arg2 + arg3; +} +int fun2(int arg1, int arg2) { + return arg1 + arg2; +} + +int +main() { + int res3 = c99_vmacro3(1, 2, 3); + int res2 = c99_vmacro2(1, 2); + return 0; +} +#endif +#ifdef HAVE_VARIADIC_MACROS_GCC +#define gcc_vmacro3(first, args...) fun3(first, args) +#define gcc_vmacro2(first, args...) fun2(first, args) + +int fun3(int arg1, int arg2, int arg3); +int fun2(int arg1, int arg2); + +int fun3(int arg1, int arg2, int arg3) { + return arg1 + arg2 + arg3; +} +int fun2(int arg1, int arg2) { + return arg1 + arg2; +} + +int +main() { + int res3 = gcc_vmacro3(1, 2, 3); + int res2 = gcc_vmacro2(1, 2); + return 0; +} +#endif diff --git a/CMakeLists.txt b/CMakeLists.txt index db443de31..bdd2a2980 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -972,6 +972,8 @@ foreach(CURL_TEST HAVE_INET_NTOA_R_DECL_REENTRANT HAVE_GETADDRINFO HAVE_FILE_OFFSET_BITS + HAVE_VARIADIC_MACROS_C99 + HAVE_VARIADIC_MACROS_GCC ) curl_internal_test(${CURL_TEST}) endforeach() -- cgit v1.2.3