summaryrefslogtreecommitdiff
path: root/m4/stdarg.m4
diff options
context:
space:
mode:
authorBruno Haible <bruno@clisp.org>2006-05-08 13:13:13 +0000
committerBruno Haible <bruno@clisp.org>2006-05-08 13:13:13 +0000
commit4f9bc0db18ebf839e7ad88b13d84655816b4b805 (patch)
treea9c283560eeca53e87872fda599530215247b9d8 /m4/stdarg.m4
parentb9fc6a5b542fdcfc9482ef80a3e6cad8d47e0be2 (diff)
downloadgnulib-4f9bc0db18ebf839e7ad88b13d84655816b4b805.tar.gz
New module 'stdarg'.
Diffstat (limited to 'm4/stdarg.m4')
-rw-r--r--m4/stdarg.m439
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
+])