X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=m4%2Fprotocol_binary.m4;h=9568f0deee66f9a87d7c1908fe077798431b4442;hb=9069819ac2940397e96210867e0666b801b97f60;hp=ba7acaf5f52d01ceaf2a113ba54dbd2860ba3956;hpb=519261ca98528ebc5d854ed839f400aa03a3dc5c;p=m6w6%2Flibmemcached diff --git a/m4/protocol_binary.m4 b/m4/protocol_binary.m4 index ba7acaf5..9568f0de 100644 --- a/m4/protocol_binary.m4 +++ b/m4/protocol_binary.m4 @@ -1,23 +1,29 @@ 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([[ -#include + +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 #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