bug fix for recursive decent into quit()
[m6w6/libmemcached] / m4 / bitfield.m4
1 AC_DEFUN([DETECT_BITFIELD],
2 [
3 AC_CACHE_CHECK([for working bitfield],[ac_cv_have_bitfield],[
4 AC_LANG_PUSH([C])
5 save_CFLAGS="${CFLAGS}"
6 CFLAGS="${AM_CFLAGS} ${NO_WERROR}"
7
8 AC_RUN_IFELSE([
9 AC_LANG_PROGRAM([[
10 #include <stdbool.h>
11 ]],[[
12 struct flags { bool b0:1; bool b1:1; bool b2:1; bool b3:1;
13 bool b4:1; bool b5:1; bool b6:1; bool b7:1;
14 } f = { .b0 = false, .b1 = false, .b2 = false, .b3 = false,
15 .b4 = false, .b5 = false, .b6 = false, .b7 = false };
16
17 f.b0 = true;
18 f.b1 = false;
19 f.b2 = true;
20 f.b3 = false;
21 f.b4 = true;
22 f.b5 = false;
23 f.b6 = true;
24 f.b7 = false;
25
26 if (f.b0 && !f.b1 && f.b2 && !f.b3 && f.b4 && !f.b5 && f.b6 && !f.b7) {
27 return 0;
28 }
29
30 return 1;
31 ]])
32 ], [
33 ac_cv_have_bitfield=yes
34 ],[
35 ac_cv_have_bitfield=no
36 ])])
37
38 CFLAGS=${save_CFLAGS}
39 AS_IF([test "x$ac_cv_have_bitfield" = "xyes"],
40 [
41 MEMCACHED_BITFIELD="#define MEMCACHED_BITFIELD :1"
42 HASHKIT_BITFIELD="#define HASHKIT_BITFIELD :1"
43 ],
44 [
45 MEMCACHED_BITFIELD="#define MEMCACHED_BITFIELD"
46 HASHKIT_BITFIELD="#define HASHKIT_BITFIELD"
47 ])
48 AC_SUBST([MEMCACHED_BITFIELD])
49 AC_SUBST([HASHKIT_BITFIELD])
50 AC_LANG_POP()
51 ])