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_DEFUN([PROTOCOL_BINARY_TEST], [
+ AC_LANG_PUSH([C++])
+ AC_CACHE_CHECK([for supported struct padding], [ac_cv_supported_struct_padding], [
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
+ [ #include <inttypes.h>
#include "libmemcached/memcached/protocol_binary.h"
- ]],[[
- protocol_binary_request_set request;
- if (sizeof(request) != sizeof(request.bytes)) {
- return 1;
- }
- ]])],, AC_MSG_ERROR([Unsupported struct padding done by compiler.]))
- CFLAGS="$save_CFLAGS"
- AC_LANG_POP
-])
+ ], [ protocol_binary_request_set request;
+ int a = 1;
+ switch (a) {
+ case sizeof(request):
+ case sizeof(request.bytes):
+ break;
+ default:
+ a = 2;
+ }
+ ])],
+ [ ac_cv_supported_struct_padding=no ],
+ [ ac_cv_supported_struct_padding=yes ])
+ ])
+ 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