@cryptotaxi247 / netdata-1 / commits / db3f85d06

autoconf for detecting 32/64 bit CPU

Costa Tsaousis (ktsaou) committed Sep 28, 2016 at 01:47 UTC db3f85d062ae688dfed5d52970d2740e446a5220
5 files changed +74 -70
configure.ac
+2 -61
@@ -83,69 +83,10 @@ AC_TYPE_UINT16_T
83 AC_TYPE_UINT32_T
84 AC_C_INLINE
85 AC_FUNC_STRERROR_R
86 -
87 -# https://lists.gnu.org/archive/html/autoconf-commit/2012-12/msg00004.html
88 -# AC_C__GENERIC
89 -# -------------
90 -# Define HAVE_C__GENERIC if _Generic works, a la C11.
91 -AN_IDENTIFIER([_Generic], [AC_C__GENERIC])
92 -AC_DEFUN([AC_C__GENERIC],
93 -[AC_CACHE_CHECK([for _Generic], ac_cv_c__Generic,
94 -[AC_COMPILE_IFELSE(
95 - [AC_LANG_SOURCE(
96 - [[int
97 - main (int argc, char **argv)
98 - {
99 - int a = _Generic (argc, int: argc = 1);
100 - int *b = &_Generic (argc, default: argc);
101 - char ***c = _Generic (argv, int: argc, default: argv ? &argv : 0);
102 - _Generic (1 ? 0 : b, int: a, default: b) = &argc;
103 - _Generic (a = 1, default: a) = 3;
104 - return a + !b + !c;
105 - }
106 - ]])],
107 - [ac_cv_c__Generic=yes],
108 - [ac_cv_c__Generic=no])])
109 -if test $ac_cv_c__Generic = yes; then
110 - AC_DEFINE([HAVE_C__GENERIC], 1,
111 - [Define to 1 if C11-style _Generic works.])
112 -fi
113 -])# AC_C__GENERIC
114 -
86 AC_C__GENERIC
116 -
117 -# AC_C___ATOMIC
118 -# -------------
119 -# Define HAVE_C___ATOMIC if __atomic works.
120 -AN_IDENTIFIER([__atomic], [AC_C___ATOMIC])
121 -AC_DEFUN([AC_C___ATOMIC],
122 -[AC_CACHE_CHECK([for __atomic], ac_cv_c___atomic,
123 -[AC_COMPILE_IFELSE(
124 - [AC_LANG_SOURCE(
125 - [[int
126 - main (int argc, char **argv)
127 - {
128 - volatile unsigned long ul1 = 1, ul2 = 0, ul3 = 2;
129 - __atomic_compare_exchange(&ul1, &ul2, &ul3, 1, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST);
130 - __atomic_fetch_add(&ul1, 1, __ATOMIC_SEQ_CST);
131 - __atomic_fetch_sub(&ul3, 1, __ATOMIC_SEQ_CST);
132 - volatile unsigned long long ull1 = 1, ull2 = 0, ull3 = 2;
133 - __atomic_compare_exchange(&ull1, &ull2, &ull3, 1, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST);
134 - __atomic_fetch_add(&ull1, 1, __ATOMIC_SEQ_CST);
135 - __atomic_fetch_sub(&ull3, 1, __ATOMIC_SEQ_CST);
136 - return 0;
137 - }
138 - ]])],
139 - [ac_cv_c___atomic=yes],
140 - [ac_cv_c___atomic=no])])
141 -if test $ac_cv_c___atomic = yes; then
142 - AC_DEFINE([HAVE_C___ATOMIC], 1,
143 - [Define to 1 if __atomic operations work.])
144 -fi
145 -])# AC_C___ATOMIC
146 -
87 AC_C___ATOMIC
148 -
88 +AC_CANONICAL_HOST
89 +AC_CHECK_SIZEOF([void *])
90
91 AC_ARG_VAR([MATH_CFLAGS], [C compiler flags for math])
92 AC_ARG_VAR([MATH_LIBS], [linker flags for math])
m4/ac_c___atomic.m4 new
+30
@@ -0,0 +1,30 @@
1 +# AC_C___ATOMIC
2 +# -------------
3 +# Define HAVE_C___ATOMIC if __atomic works.
4 +AN_IDENTIFIER([__atomic], [AC_C___ATOMIC])
5 +AC_DEFUN([AC_C___ATOMIC],
6 +[AC_CACHE_CHECK([for __atomic], ac_cv_c___atomic,
7 +[AC_COMPILE_IFELSE(
8 + [AC_LANG_SOURCE(
9 + [[int
10 + main (int argc, char **argv)
11 + {
12 + volatile unsigned long ul1 = 1, ul2 = 0, ul3 = 2;
13 + __atomic_compare_exchange(&ul1, &ul2, &ul3, 1, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST);
14 + __atomic_fetch_add(&ul1, 1, __ATOMIC_SEQ_CST);
15 + __atomic_fetch_sub(&ul3, 1, __ATOMIC_SEQ_CST);
16 + volatile unsigned long long ull1 = 1, ull2 = 0, ull3 = 2;
17 + __atomic_compare_exchange(&ull1, &ull2, &ull3, 1, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST);
18 + __atomic_fetch_add(&ull1, 1, __ATOMIC_SEQ_CST);
19 + __atomic_fetch_sub(&ull3, 1, __ATOMIC_SEQ_CST);
20 + return 0;
21 + }
22 + ]])],
23 + [ac_cv_c___atomic=yes],
24 + [ac_cv_c___atomic=no])])
25 +if test $ac_cv_c___atomic = yes; then
26 + AC_DEFINE([HAVE_C___ATOMIC], 1,
27 + [Define to 1 if __atomic operations work.])
28 +fi
29 +])# AC_C___ATOMIC
30 +
m4/ac_c__generic.m4 new
+28
@@ -0,0 +1,28 @@
1 +# https://lists.gnu.org/archive/html/autoconf-commit/2012-12/msg00004.html
2 +# AC_C__GENERIC
3 +# -------------
4 +# Define HAVE_C__GENERIC if _Generic works, a la C11.
5 +AN_IDENTIFIER([_Generic], [AC_C__GENERIC])
6 +AC_DEFUN([AC_C__GENERIC],
7 +[AC_CACHE_CHECK([for _Generic], ac_cv_c__Generic,
8 +[AC_COMPILE_IFELSE(
9 + [AC_LANG_SOURCE(
10 + [[int
11 + main (int argc, char **argv)
12 + {
13 + int a = _Generic (argc, int: argc = 1);
14 + int *b = &_Generic (argc, default: argc);
15 + char ***c = _Generic (argv, int: argc, default: argv ? &argv : 0);
16 + _Generic (1 ? 0 : b, int: a, default: b) = &argc;
17 + _Generic (a = 1, default: a) = 3;
18 + return a + !b + !c;
19 + }
20 + ]])],
21 + [ac_cv_c__Generic=yes],
22 + [ac_cv_c__Generic=no])])
23 +if test $ac_cv_c__Generic = yes; then
24 + AC_DEFINE([HAVE_C__GENERIC], 1,
25 + [Define to 1 if C11-style _Generic works.])
26 +fi
27 +])# AC_C__GENERIC
28 +
src/appconfig.c
+8 -1
@@ -464,9 +464,16 @@ void generate_config(BUFFER *wb, int only_changed)
464 switch(i) {
465 case 0:
466 buffer_strcat(wb,
467 - "# NetData Configuration\n"
467 + "# netdata configuration\n"
468 + "#\n"
469 + "# You can download the latest version of this file, using:\n"
470 + "# wget -O /etc/netdata/netdata.conf http://localhost:19999/netdata.conf\n"
471 + "# or\n"
472 + "# curl -o /etc/netdata/netdata.conf http://localhost:19999/netdata.conf\n"
473 + "#\n"
474 "# You can uncomment and change any of the options below.\n"
475 "# The value shown in the commented settings, is the default value.\n"
476 + "#\n"
477 "\n# global netdata configuration\n");
478 break;
479
src/common.h
+6 -8
@@ -60,18 +60,16 @@
60 #include <zlib.h>
61 #endif
62
63 -#ifdef __GNUC__
64 -#define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
65 -
66 -#if __x86_64__ || __ppc64__
63 +#if (SIZEOF_VOID_P == 8)
64 #define ENVIRONMENT64
68 -#else
65 +#elif (SIZEOF_VOID_P == 4)
66 #define ENVIRONMENT32
67 +#else
68 +#error "Cannot detect if this is a 32 or 64 bit CPU"
69 #endif
70
72 -#else // !__GNUC__
73 -#define NETDATA_NO_ATOMIC_INSTRUCTIONS 1
74 -#define ENVIRONMENT32
71 +#ifdef __GNUC__
72 +#define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
73 #endif // __GNUC__
74
75 #include "avl.h"