diff options
author | Bruno Haible <bruno@clisp.org> | 2006-05-08 13:13:13 +0000 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2006-05-08 13:13:13 +0000 |
commit | 4f9bc0db18ebf839e7ad88b13d84655816b4b805 (patch) | |
tree | a9c283560eeca53e87872fda599530215247b9d8 /m4/stdarg.m4 | |
parent | b9fc6a5b542fdcfc9482ef80a3e6cad8d47e0be2 (diff) | |
download | gnulib-4f9bc0db18ebf839e7ad88b13d84655816b4b805.tar.gz |
New module 'stdarg'.
Diffstat (limited to 'm4/stdarg.m4')
-rw-r--r-- | m4/stdarg.m4 | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/m4/stdarg.m4 b/m4/stdarg.m4 new file mode 100644 index 0000000000..3424d414b7 --- /dev/null +++ b/m4/stdarg.m4 @@ -0,0 +1,39 @@ +# stdarg.m4 serial 1 +dnl Copyright (C) 2006 Free Software Foundation, Inc. +dnl This file is free software; the Free Software Foundation +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +dnl From Bruno Haible. +dnl Provide a working va_copy in combination with <stdarg.h>. + +AC_DEFUN([gl_STDARG_H], +[ + AC_MSG_CHECKING([for va_copy]) + AC_CACHE_VAL([gl_cv_func_va_copy], [ + AC_TRY_COMPILE([#include <stdarg.h>], [ +#ifndef va_copy +void (*func) (va_list, va_list) = va_copy; +#endif +], + [gl_cv_func_va_copy=yes], [gl_cv_func_va_copy=no])]) + AC_MSG_RESULT([$gl_cv_func_va_copy]) + if test $gl_cv_func_va_copy = no; then + # Provide a substitute, either __va_copy or as a simple assignment. + AC_CACHE_VAL([gl_cv_func___va_copy], [ + AC_TRY_COMPILE([#include <stdarg.h>], [ +#ifndef __va_copy +error, bail out +#endif +], + [gl_cv_func___va_copy=yes], [gl_cv_func___va_copy=no])]) + if test $gl_cv_func___va_copy = yes; then + AC_DEFINE([va_copy], [__va_copy], + [Define as a macro for copying va_list variables.]) + else + AH_VERBATIM([#define gl_va_copy(a,b) (a) = (b)]) + AC_DEFINE([va_copy], [gl_va_copy], + [Define as a macro for copying va_list variables.]) + fi + fi +]) |