1dnl ######################################################################
2dnl check if compiler can handle variable-length argument macros
3AC_DEFUN([AMU_VARARGS_MACROS],
4[
5AC_CACHE_CHECK(if compiler can handle variable-length macros,
6ac_cv_varargs_macros,
7[
8# try C99 style
9AC_TRY_COMPILE(
10[
11#define foo(str,size,fmt,...)  bar(__FILE__,__LINE__,(str),(size),(fmt),__VA_ARGS__)
12],
13[
14char a[80];
15foo(a, sizeof(a), "%d,%d", 1, 2);
16], ac_cv_varargs_macros=c99,
17# else try gcc style
18AC_TRY_COMPILE(
19[
20#define foo(str,size,args...)  bar(__FILE__,__LINE__,(str),(size),(fmt),args)
21],
22[
23char a[80];
24foo(a, sizeof(a), "%d,%d", 1, 2);
25], ac_cv_varargs_macros=gcc, ac_cv_varargs_macros=none))
26])
27if test "$ac_cv_varargs_macros" = c99
28then
29  AC_DEFINE(HAVE_C99_VARARGS_MACROS, 1,
30	 [System supports C99-style variable-length argument macros])
31else
32  if test "$ac_cv_varargs_macros" = gcc
33  then
34    AC_DEFINE(HAVE_GCC_VARARGS_MACROS, 1,
35	 [System supports GCC-style variable-length argument macros])
36  fi
37fi
38])
39dnl ======================================================================
40