diff --git a/configure.ac b/configure.ac index f8bfbe6b55..1985802c80 100644 --- a/configure.ac +++ b/configure.ac @@ -409,6 +409,8 @@ AC_LANG(C) AC_PROG_CC_C99 AM_PROG_CC_C_O +AC_C_VA_LIST_AS_ARRAY + if test "x${ac_cv_prog_cc_c99}" = "xno" ; then AC_MSG_ERROR([ecore requires a c99-capable compiler]) fi diff --git a/m4/ac_valist.m4 b/m4/ac_valist.m4 new file mode 100644 index 0000000000..a4d6a24932 --- /dev/null +++ b/m4/ac_valist.m4 @@ -0,0 +1,48 @@ +dnl That code is public domain and can be freely used or copied. +dnl Originally snatched from somewhere... + +dnl Macro for checking if va_list is an array + +dnl Usage: AC_C_VA_LIST_AS_ARRAY +dnl call AC_DEFINE for HAVE_VA_LIST_AS_ARRAY +dnl if for this architecture va_list is defined as an array + +AC_DEFUN([AC_C_VA_LIST_AS_ARRAY], +[ + +AC_MSG_CHECKING([whether va_list is defined as an array]) + +AC_CACHE_VAL([ac_cv_valistasarray], + [AC_TRY_RUN( + [ +#include +#include +void foo(int i, ...) +{ + va_list ap1, ap2; + va_start(ap1, i); + ap2 = ap1; + if (va_arg(ap2, int) != 123 || va_arg(ap1, int) != 123) + exit(1); + va_end(ap1); +} +int main(void) +{ + foo(0, 123); + return(0); +} + ], + [ac_cv_valistasarray="no"], + [ac_cv_valistasarray="yes"], + [ac_cv_valistasarray="no"] + )]) + +AC_MSG_RESULT($ac_cv_valistasarray) + +if test "x${ac_cv_valistasarray}" = "xyes" ; then + AC_DEFINE([HAVE_VA_LIST_AS_ARRAY], [1], [Define to 1 if va_list is an array]) +fi + +]) + +dnl End of ac_valist.m4