Update tests, improved UDP performance.
[awesomized/libmemcached] / m4 / protocol_binary.m4
index ba7acaf5f52d01ceaf2a113ba54dbd2860ba3956..5c00b5563ac3c0af118d1c720e7f4e87a0cb78fd 100644 (file)
@@ -1,22 +1,34 @@
 dnl ---------------------------------------------------------------------------
 dnl Macro: PROTOCOL_BINARY_TEST
 dnl ---------------------------------------------------------------------------
+
 AC_DEFUN([PROTOCOL_BINARY_TEST],
-  [AC_LANG_PUSH([C])
-   save_CFLAGS="$CFLAGS"
-   CFLAGS="$CFLAGS -I${srcdir}"
-   AC_RUN_IFELSE([
-      AC_LANG_PROGRAM([[
+[
+  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.]))
+                   ],
+                   [ 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 ---------------------------------------------------------------------------