From: Costa Tsaousis (ktsaou) Date: Tue, 27 Sep 2016 22:47:12 +0000 (+0300) Subject: autoconf for detecting 32/64 bit CPU X-Git-Tag: v1.4.0~17^2~2 X-Git-Url: https://arthur.barton.de/gitweb/?a=commitdiff_plain;ds=sidebyside;h=db3f85d062ae688dfed5d52970d2740e446a5220;p=netdata.git autoconf for detecting 32/64 bit CPU --- diff --git a/configure.ac b/configure.ac index 15d742a7..8239dd11 100644 --- a/configure.ac +++ b/configure.ac @@ -83,69 +83,10 @@ AC_TYPE_UINT16_T AC_TYPE_UINT32_T AC_C_INLINE AC_FUNC_STRERROR_R - -# https://lists.gnu.org/archive/html/autoconf-commit/2012-12/msg00004.html -# AC_C__GENERIC -# ------------- -# Define HAVE_C__GENERIC if _Generic works, a la C11. -AN_IDENTIFIER([_Generic], [AC_C__GENERIC]) -AC_DEFUN([AC_C__GENERIC], -[AC_CACHE_CHECK([for _Generic], ac_cv_c__Generic, -[AC_COMPILE_IFELSE( - [AC_LANG_SOURCE( - [[int - main (int argc, char **argv) - { - int a = _Generic (argc, int: argc = 1); - int *b = &_Generic (argc, default: argc); - char ***c = _Generic (argv, int: argc, default: argv ? &argv : 0); - _Generic (1 ? 0 : b, int: a, default: b) = &argc; - _Generic (a = 1, default: a) = 3; - return a + !b + !c; - } - ]])], - [ac_cv_c__Generic=yes], - [ac_cv_c__Generic=no])]) -if test $ac_cv_c__Generic = yes; then - AC_DEFINE([HAVE_C__GENERIC], 1, - [Define to 1 if C11-style _Generic works.]) -fi -])# AC_C__GENERIC - AC_C__GENERIC - -# AC_C___ATOMIC -# ------------- -# Define HAVE_C___ATOMIC if __atomic works. -AN_IDENTIFIER([__atomic], [AC_C___ATOMIC]) -AC_DEFUN([AC_C___ATOMIC], -[AC_CACHE_CHECK([for __atomic], ac_cv_c___atomic, -[AC_COMPILE_IFELSE( - [AC_LANG_SOURCE( - [[int - main (int argc, char **argv) - { - volatile unsigned long ul1 = 1, ul2 = 0, ul3 = 2; - __atomic_compare_exchange(&ul1, &ul2, &ul3, 1, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); - __atomic_fetch_add(&ul1, 1, __ATOMIC_SEQ_CST); - __atomic_fetch_sub(&ul3, 1, __ATOMIC_SEQ_CST); - volatile unsigned long long ull1 = 1, ull2 = 0, ull3 = 2; - __atomic_compare_exchange(&ull1, &ull2, &ull3, 1, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); - __atomic_fetch_add(&ull1, 1, __ATOMIC_SEQ_CST); - __atomic_fetch_sub(&ull3, 1, __ATOMIC_SEQ_CST); - return 0; - } - ]])], - [ac_cv_c___atomic=yes], - [ac_cv_c___atomic=no])]) -if test $ac_cv_c___atomic = yes; then - AC_DEFINE([HAVE_C___ATOMIC], 1, - [Define to 1 if __atomic operations work.]) -fi -])# AC_C___ATOMIC - AC_C___ATOMIC - +AC_CANONICAL_HOST +AC_CHECK_SIZEOF([void *]) AC_ARG_VAR([MATH_CFLAGS], [C compiler flags for math]) AC_ARG_VAR([MATH_LIBS], [linker flags for math]) diff --git a/m4/ac_c___atomic.m4 b/m4/ac_c___atomic.m4 new file mode 100644 index 00000000..046a5514 --- /dev/null +++ b/m4/ac_c___atomic.m4 @@ -0,0 +1,30 @@ +# AC_C___ATOMIC +# ------------- +# Define HAVE_C___ATOMIC if __atomic works. +AN_IDENTIFIER([__atomic], [AC_C___ATOMIC]) +AC_DEFUN([AC_C___ATOMIC], +[AC_CACHE_CHECK([for __atomic], ac_cv_c___atomic, +[AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[int + main (int argc, char **argv) + { + volatile unsigned long ul1 = 1, ul2 = 0, ul3 = 2; + __atomic_compare_exchange(&ul1, &ul2, &ul3, 1, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); + __atomic_fetch_add(&ul1, 1, __ATOMIC_SEQ_CST); + __atomic_fetch_sub(&ul3, 1, __ATOMIC_SEQ_CST); + volatile unsigned long long ull1 = 1, ull2 = 0, ull3 = 2; + __atomic_compare_exchange(&ull1, &ull2, &ull3, 1, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); + __atomic_fetch_add(&ull1, 1, __ATOMIC_SEQ_CST); + __atomic_fetch_sub(&ull3, 1, __ATOMIC_SEQ_CST); + return 0; + } + ]])], + [ac_cv_c___atomic=yes], + [ac_cv_c___atomic=no])]) +if test $ac_cv_c___atomic = yes; then + AC_DEFINE([HAVE_C___ATOMIC], 1, + [Define to 1 if __atomic operations work.]) +fi +])# AC_C___ATOMIC + diff --git a/m4/ac_c__generic.m4 b/m4/ac_c__generic.m4 new file mode 100644 index 00000000..0c4dd52c --- /dev/null +++ b/m4/ac_c__generic.m4 @@ -0,0 +1,28 @@ +# https://lists.gnu.org/archive/html/autoconf-commit/2012-12/msg00004.html +# AC_C__GENERIC +# ------------- +# Define HAVE_C__GENERIC if _Generic works, a la C11. +AN_IDENTIFIER([_Generic], [AC_C__GENERIC]) +AC_DEFUN([AC_C__GENERIC], +[AC_CACHE_CHECK([for _Generic], ac_cv_c__Generic, +[AC_COMPILE_IFELSE( + [AC_LANG_SOURCE( + [[int + main (int argc, char **argv) + { + int a = _Generic (argc, int: argc = 1); + int *b = &_Generic (argc, default: argc); + char ***c = _Generic (argv, int: argc, default: argv ? &argv : 0); + _Generic (1 ? 0 : b, int: a, default: b) = &argc; + _Generic (a = 1, default: a) = 3; + return a + !b + !c; + } + ]])], + [ac_cv_c__Generic=yes], + [ac_cv_c__Generic=no])]) +if test $ac_cv_c__Generic = yes; then + AC_DEFINE([HAVE_C__GENERIC], 1, + [Define to 1 if C11-style _Generic works.]) +fi +])# AC_C__GENERIC + diff --git a/src/appconfig.c b/src/appconfig.c index 34fb6d7d..dd51258c 100644 --- a/src/appconfig.c +++ b/src/appconfig.c @@ -464,9 +464,16 @@ void generate_config(BUFFER *wb, int only_changed) switch(i) { case 0: buffer_strcat(wb, - "# NetData Configuration\n" + "# netdata configuration\n" + "#\n" + "# You can download the latest version of this file, using:\n" + "# wget -O /etc/netdata/netdata.conf http://localhost:19999/netdata.conf\n" + "# or\n" + "# curl -o /etc/netdata/netdata.conf http://localhost:19999/netdata.conf\n" + "#\n" "# You can uncomment and change any of the options below.\n" "# The value shown in the commented settings, is the default value.\n" + "#\n" "\n# global netdata configuration\n"); break; diff --git a/src/common.h b/src/common.h index e98340ab..8af318cc 100644 --- a/src/common.h +++ b/src/common.h @@ -60,18 +60,16 @@ #include #endif -#ifdef __GNUC__ -#define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) - -#if __x86_64__ || __ppc64__ +#if (SIZEOF_VOID_P == 8) #define ENVIRONMENT64 -#else +#elif (SIZEOF_VOID_P == 4) #define ENVIRONMENT32 +#else +#error "Cannot detect if this is a 32 or 64 bit CPU" #endif -#else // !__GNUC__ -#define NETDATA_NO_ATOMIC_INSTRUCTIONS 1 -#define ENVIRONMENT32 +#ifdef __GNUC__ +#define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) #endif // __GNUC__ #include "avl.h"