Store up errno in a couple of spots.
[m6w6/libmemcached] / m4 / protocol_binary.m4
index 8b8f3f98b2edc018fd8e66bca728f4283c94597f..5c00b5563ac3c0af118d1c720e7f4e87a0cb78fd 100644 (file)
@@ -1,19 +1,35 @@
 dnl ---------------------------------------------------------------------------
 dnl Macro: PROTOCOL_BINARY_TEST
 dnl ---------------------------------------------------------------------------
-save_CFLAGS="$CFLAGS"
-CFLAGS="$CFLAGS -I${srcdir}"
-AC_RUN_IFELSE([ 
-   AC_LANG_PROGRAM([
-      #include "libmemcached/memcached/protocol_binary.h"
-   ], [
+
+AC_DEFUN([PROTOCOL_BINARY_TEST],
+[
+  AC_CACHE_CHECK([for supported struct padding], [ac_cv_supported_struct_padding], [
+    AC_LANG_PUSH([C])
+    save_CFLAGS="$CFLAGS"
+    CFLAGS="$CFLAGS -I${srcdir}"
+    AC_TRY_COMPILE([
+#include <inttypes.h>
+#include "libmemcached/memcached/protocol_binary.h"
+                   ], [
       protocol_binary_request_set request;
-      if (sizeof(request) != sizeof(request.bytes)) {
-         return 1;
+      int a = 1;
+      switch (a) {
+      case sizeof(request):
+      case sizeof(request.bytes):
+          break;
+      default:
+          a = 2;
       }
-   ])
-],, AC_MSG_ERROR([Unsupported struct padding done by compiler.])) 
-CFLAGS="$save_CFLAGS"
+                   ],
+                   [ ac_cv_supported_struct_padding=no ],
+                   [ ac_cv_supported_struct_padding=yes ])
+   CFLAGS="$save_CFLAGS"
+   AC_LANG_POP
+  ])
+  AS_IF([test "x$ac_cv_supported_struct_padding" = "xno"],[
+        AC_MSG_ERROR([Unsupported struct padding done by compiler.])])
+])
 
 dnl ---------------------------------------------------------------------------
 dnl End Macro: PROTOCOL_BINARY_TEST