xref: /netbsd-src/external/bsd/am-utils/dist/m4/macros/check_varargs_macros.m4 (revision a53f50b9b44dc9467ccc9c464999b1d1c509cb0c)
1*a53f50b9Schristosdnl ######################################################################
2*a53f50b9Schristosdnl check if compiler can handle variable-length argument macros
3*a53f50b9SchristosAC_DEFUN([AMU_VARARGS_MACROS],
4*a53f50b9Schristos[
5*a53f50b9SchristosAC_CACHE_CHECK(if compiler can handle variable-length macros,
6*a53f50b9Schristosac_cv_varargs_macros,
7*a53f50b9Schristos[
8*a53f50b9Schristos# try C99 style
9*a53f50b9SchristosAC_TRY_COMPILE(
10*a53f50b9Schristos[
11*a53f50b9Schristos#define foo(str,size,fmt,...)  bar(__FILE__,__LINE__,(str),(size),(fmt),__VA_ARGS__)
12*a53f50b9Schristos],
13*a53f50b9Schristos[
14*a53f50b9Schristoschar a[80];
15*a53f50b9Schristosfoo(a, sizeof(a), "%d,%d", 1, 2);
16*a53f50b9Schristos], ac_cv_varargs_macros=c99,
17*a53f50b9Schristos# else try gcc style
18*a53f50b9SchristosAC_TRY_COMPILE(
19*a53f50b9Schristos[
20*a53f50b9Schristos#define foo(str,size,args...)  bar(__FILE__,__LINE__,(str),(size),(fmt),args)
21*a53f50b9Schristos],
22*a53f50b9Schristos[
23*a53f50b9Schristoschar a[80];
24*a53f50b9Schristosfoo(a, sizeof(a), "%d,%d", 1, 2);
25*a53f50b9Schristos], ac_cv_varargs_macros=gcc, ac_cv_varargs_macros=none))
26*a53f50b9Schristos])
27*a53f50b9Schristosif test "$ac_cv_varargs_macros" = c99
28*a53f50b9Schristosthen
29*a53f50b9Schristos  AC_DEFINE(HAVE_C99_VARARGS_MACROS, 1,
30*a53f50b9Schristos	 [System supports C99-style variable-length argument macros])
31*a53f50b9Schristoselse
32*a53f50b9Schristos  if test "$ac_cv_varargs_macros" = gcc
33*a53f50b9Schristos  then
34*a53f50b9Schristos    AC_DEFINE(HAVE_GCC_VARARGS_MACROS, 1,
35*a53f50b9Schristos	 [System supports GCC-style variable-length argument macros])
36*a53f50b9Schristos  fi
37*a53f50b9Schristosfi
38*a53f50b9Schristos])
39*a53f50b9Schristosdnl ======================================================================
40