1 | dnl Check for support for variadic macros. |
---|
2 | dnl |
---|
3 | dnl This file defines two macros for probing for compiler support for variadic |
---|
4 | dnl macros. Provided are RRA_C_C99_VAMACROS, which checks for support for the |
---|
5 | dnl C99 variadic macro syntax, namely: |
---|
6 | dnl |
---|
7 | dnl #define macro(...) fprintf(stderr, __VA_ARGS__) |
---|
8 | dnl |
---|
9 | dnl and RRA_C_GNU_VAMACROS, which checks for support for the older GNU |
---|
10 | dnl variadic macro syntax, namely: |
---|
11 | dnl |
---|
12 | dnl #define macro(args...) fprintf(stderr, args) |
---|
13 | dnl |
---|
14 | dnl They set HAVE_C99_VAMACROS or HAVE_GNU_VAMACROS as appropriate. |
---|
15 | dnl |
---|
16 | dnl Written by Russ Allbery <rra@stanford.edu> |
---|
17 | dnl Copyright 2006, 2008, 2009 |
---|
18 | dnl Board of Trustees, Leland Stanford Jr. University |
---|
19 | dnl |
---|
20 | dnl See LICENSE for licensing terms. |
---|
21 | |
---|
22 | AC_DEFUN([_RRA_C_C99_VAMACROS_SOURCE], [[ |
---|
23 | #include <stdio.h> |
---|
24 | #define error(...) fprintf(stderr, __VA_ARGS__) |
---|
25 | |
---|
26 | int |
---|
27 | main(void) { |
---|
28 | error("foo"); |
---|
29 | error("foo %d", 0); |
---|
30 | return 0; |
---|
31 | } |
---|
32 | ]]) |
---|
33 | |
---|
34 | AC_DEFUN([RRA_C_C99_VAMACROS], |
---|
35 | [AC_CACHE_CHECK([for C99 variadic macros], [rra_cv_c_c99_vamacros], |
---|
36 | [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_RRA_C_C99_VAMACROS_SOURCE])], |
---|
37 | [rra_cv_c_c99_vamacros=yes], |
---|
38 | [rra_cv_c_c99_vamacros=no])]) |
---|
39 | AS_IF([test $rra_cv_c_c99_vamacros = yes], |
---|
40 | [AC_DEFINE([HAVE_C99_VAMACROS], 1, |
---|
41 | [Define if the compiler supports C99 variadic macros.])])]) |
---|
42 | |
---|
43 | AC_DEFUN([_RRA_C_GNU_VAMACROS_SOURCE], [[ |
---|
44 | #include <stdio.h> |
---|
45 | #define error(args...) fprintf(stderr, args) |
---|
46 | |
---|
47 | int |
---|
48 | main(void) { |
---|
49 | error("foo"); |
---|
50 | error("foo %d", 0); |
---|
51 | return 0; |
---|
52 | } |
---|
53 | ]]) |
---|
54 | |
---|
55 | AC_DEFUN([RRA_C_GNU_VAMACROS], |
---|
56 | [AC_CACHE_CHECK([for GNU-style variadic macros], [rra_cv_c_gnu_vamacros], |
---|
57 | [AC_COMPILE_IFELSE([AC_LANG_SOURCE([_RRA_C_GNU_VAMACROS_SOURCE])], |
---|
58 | [rra_cv_c_gnu_vamacros=yes], |
---|
59 | [rra_cv_c_gnu_vamacros=no])]) |
---|
60 | AS_IF([test $rra_cv_c_gnu_vamacros = yes], |
---|
61 | [AC_DEFINE([HAVE_GNU_VAMACROS], 1, |
---|
62 | [Define if the compiler supports GNU-style variadic macros.])])]) |
---|