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"