Jim,

this is the configure.ac part of the variadic macro test patch, it seems
to work OK and cache the results.

I have added also some unrelated AC_CACHE_SAVE (supported since autoconf
2.13) to checkpoint the cache should some later test fail, so the user
can more quickly pick up when she typed "./configure -C".

This patch is against my previous one, so if it fails, try patch -F1 or
-F2 to narrow the context patch looks at. If that doesn't help, I can
send the whole file or a patch against current CVS.

Feel free to try it. To my astonishment, the SUNpro WorkShop compiler
seems to know ISO C99 but not the GCC-style variadic macros. I'll
investigate some more and might refine this test.

diff -u configure.ac configure.ac
--- configure.ac        19 Feb 2003 15:04:00 -0000
+++ configure.ac        19 Feb 2003 20:39:54 -0000
@@ -148,6 +148,38 @@
 AC_TYPE_UID_T
 AC_HEADER_TIME

+dnl See if the compiler supports variadic macros
+dnl GCC-style
+AC_MSG_CHECKING(if your preprocessor supports GCC-style variadic macros)
+AC_CACHE_VAL(openvpn_cv_c_varmac_gcc,
+AC_COMPILE_IFELSE([[
+                  #include <stdio.h>
+                  #define mymac(first, second...) printf(first, ## second)
+                  main() { mymac("%s", "test"); }
+                  ]],
+                  [openvpn_cv_c_varmac_gcc=yes],
+                  [openvpn_cv_c_varmac_gcc=no]))
+AC_MSG_RESULT($openvpn_cv_c_varmac_gcc)
+if test $openvpn_cv_c_varmac_gcc = yes ; then
+    AC_DEFINE(OPENVPN_VARMAC_GCC, [1], [Define to 1 if your preprocessor 
supports GCC-style variadic macros.])
+fi
+
+dnl ISO C99-style
+AC_MSG_CHECKING(if your preprocessor supports ISO C99 variadic macros)
+AC_CACHE_VAL(openvpn_cv_c_varmac_isoc99,
+AC_COMPILE_IFELSE([[
+                  #include <stdio.h>
+                  #define mymac(first, ...) printf(first, __VA_ARGS__)
+                  main() { mymac("%s", "test"); }
+                  ]],
+                  [openvpn_cv_c_varmac_isoc99=yes],
+                  [openvpn_cv_c_varmac_isoc99=no]))
+AC_MSG_RESULT($openvpn_cv_c_varmac_isoc99)
+if test $openvpn_cv_c_varmac_isoc99 = yes ; then
+    AC_DEFINE(OPENVPN_VARMAC_ISOC99, [1], [Define to 1 if your preprocessor 
supports ISO C99 variadic macros.])
+fi
+AC_CACHE_SAVE
+
 dnl Check for more header files.
 AC_HEADER_SYS_WAIT
 AC_CHECK_HEADERS(sys/time.h)
@@ -184,6 +216,7 @@
 AC_CHECK_HEADERS(netdb.h)
 AC_CHECK_HEADERS(sys/uio.h)
 AC_CHECK_HEADERS(linux/if_tun.h)
+AC_CACHE_SAVE

 dnl check that in_addr_t is defined
 AC_CHECK_TYPE(
@@ -220,6 +253,7 @@
        [AC_DEFINE(HAVE_IOVEC, 1, [struct iovec needed for IPv6 support])],
        [],
        [#include "syshead.h"])
+AC_CACHE_SAVE

 dnl check for other types
 TYPE_SOCKLEN_T
@@ -257,6 +291,7 @@
 AC_CHECK_FUNCS(readv)
 AC_CHECK_FUNCS(writev)
 AC_CHECK_FUNCS(setsockopt)
+AC_CACHE_SAVE

 dnl Required library functions
 AC_FUNC_MEMCMP

Reply via email to