1dnl @synopsis AX_CPP_VARARG_MACRO_GCC
2dnl
3dnl Test if the preprocessor understands GNU GCC-style vararg macros.
4dnl If it does, defines HAVE_CPP_VARARG_MACRO_GCC to 1.
5dnl
6dnl @version
7dnl @author James Yonan <jim@yonan.net>, Matthias Andree <matthias.andree@web.de>
8AC_DEFUN([AX_CPP_VARARG_MACRO_GCC], [dnl
9	AS_VAR_PUSHDEF([VAR], [ax_cv_cpp_vararg_macro_gcc])dnl
10	AC_CACHE_CHECK(
11		[for GNU GCC vararg macro support],
12		[VAR],
13		[AC_COMPILE_IFELSE(
14			[AC_LANG_PROGRAM(
15				[[
16#define macro(a, b...) func(a, b)
17int func(int a, int b, int c);
18				]],
19				[[
20int i = macro(1, 2, 3);
21				]]
22			)],
23			[VAR=yes],
24			[VAR=no]
25		)]
26	)dnl
27
28	AS_VAR_IF(
29		[VAR],
30		[yes],
31		[AC_DEFINE(
32			[HAVE_CPP_VARARG_MACRO_GCC],
33			[1], 
34			[Define to 1 if your compiler supports GNU GCC-style variadic macros]
35		)]
36	)dnl
37	AS_VAR_POPDEF([VAR])dnl
38])
39
40dnl @synopsis AX_CPP_VARARG_MACRO_ISO
41dnl
42dnl Test if the preprocessor understands ISO C 1999 vararg macros.
43dnl If it does, defines HAVE_CPP_VARARG_MACRO_ISO to 1.
44dnl
45dnl @version
46dnl @author James Yonan <jim@yonan.net>, Matthias Andree <matthias.andree@web.de>
47AC_DEFUN([AX_CPP_VARARG_MACRO_ISO], [dnl
48	AS_VAR_PUSHDEF([VAR],[ax_cv_cpp_vararg_macro_iso])dnl
49	AC_CACHE_CHECK(
50		[for ISO C 1999 vararg macro support],
51		[VAR],
52		[AC_COMPILE_IFELSE(
53			[AC_LANG_PROGRAM(
54				[[
55#define macro(a, ...) func(a, __VA_ARGS__)
56int func(int a, int b, int c);
57				]],
58				[[
59int i = macro(1, 2, 3);
60				]]
61			)],
62			[VAR=yes],
63			[VAR=no]
64		)]
65	)dnl
66
67	AS_VAR_IF(
68		[VAR],
69		[yes],
70		[AC_DEFINE(
71			[HAVE_CPP_VARARG_MACRO_ISO],
72			[1], 
73			[Define to 1 if your compiler supports ISO C99 variadic macros]
74		)]
75	)dnl
76	AS_VAR_POPDEF([VAR])dnl
77])
78