You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

68 lines
1.5 KiB

dnl Two functions for checking for availability of C99 style
dnl __VA_ARGS__ and GNU style args... variadic macro support.
AC_DEFUN([AX_C99_VARIADIC_MACROS],
[
AH_TEMPLATE([HAS_C99_VARIADIC_MACROS],
[Defined if the compiler supports C99 style variadic macros with
__VA_ARGS__.])
AC_CACHE_CHECK([for C99 variadic macros], [ac_cv_c99_variadic_macros],
[
AC_LANG_ASSERT([C++])
AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM(
[[
#include <cstdio>
#include <cstdlib>
#include <cstddef>
]],
[[
using namespace std;
#define MACRO(buf, ...) (sprintf (buf, "%d", __VA_ARGS__))
char a[10];
MACRO(a, 1);
if (a[0] != '1')
abort ();
if (a[1] != 0)
abort ();
]]
)],
[ac_cv_c99_variadic_macros=yes],
[ac_cv_c99_variadic_macros=no])
])
])
AC_DEFUN([AX_GNU_VARIADIC_MACROS],
[
AH_TEMPLATE([HAS_GNU_VARIADIC_MACROS],
[Defined if the compiler supports GNU style variadic macros.])
AC_CACHE_CHECK([for GNU style variadic macros], [ac_cv_gnu_variadic_macros],
[
AC_LANG_ASSERT([C++])
AC_COMPILE_IFELSE(
[AC_LANG_PROGRAM(
[[
#include <cstdio>
#include <cstdlib>
#include <cstddef>
]],
[[
using namespace std;
#define MACRO(buf, args...) (sprintf (buf, "%d", args))
char a[10];
MACRO(a, 1);
if (a[0] != '1')
abort ();
if (a[1] != 0)
abort ();
]]
)],
[ac_cv_gnu_variadic_macros=yes],
[ac_cv_gnu_variadic_macros=no])
])
])