X-Git-Url: https://arthur.barton.de/gitweb/?a=blobdiff_plain;f=configure.ac;h=db6c25936c20b76cb7a84942d91557b5c433cddd;hb=518fb596709b39a374820471cb146f481f0b8340;hp=5b187ca9d4afae70199bc267b1338e16bb4e9a3e;hpb=7df42cf10441b5f1340acc6f184eeed38ea33dca;p=netdata.git diff --git a/configure.ac b/configure.ac index 5b187ca9..db6c2593 100644 --- a/configure.ac +++ b/configure.ac @@ -51,11 +51,11 @@ AC_ARG_ENABLE( [plugin-nfacct], [AS_HELP_STRING([--enable-plugin-nfacct], [enable nfacct plugin, requires root])], , - [enable_plugin_nfacct="no"] + [enable_plugin_nfacct="detect"] ) AC_ARG_ENABLE( [plugin-freeipmi], - [AS_HELP_STRING([--enable-plugin-freeipmi], [freeipmi plugin, requires root])], + [AS_HELP_STRING([--enable-plugin-freeipmi], [enable freeipmi plugin])], , [enable_plugin_freeipmi="detect"] ) @@ -101,6 +101,12 @@ AC_ARG_ENABLE( , [enable_x86_sse="yes"] ) +AC_ARG_ENABLE( + [lto], + [AS_HELP_STRING([--disable-lto], [Link Time Optimizations @<:@default enabled@:>@])], + , + [enable_lto="detect"] +) # ----------------------------------------------------------------------------- @@ -145,6 +151,7 @@ AC_CHECK_HEADERS_ONCE([sys/prctl.h]) # ----------------------------------------------------------------------------- # operating system detection +AC_MSG_CHECKING([operating system]) case "$host_os" in freebsd*) build_target=freebsd @@ -161,33 +168,7 @@ esac AM_CONDITIONAL([FREEBSD], [test "${build_target}" = "freebsd"]) AM_CONDITIONAL([MACOS], [test "${build_target}" = "macos"]) AM_CONDITIONAL([LINUX], [test "${build_target}" = "linux"]) - - -# ----------------------------------------------------------------------------- -# compiler options - -AC_ARG_VAR([SSE_CANDIDATE], [C compiler flags for SSE]) -AS_CASE([$host_cpu], - [i?86], [SSE_CANDIDATE="yes"] -) -AC_SUBST([SSE_CANDIDATE]) -if test "${SSE_CANDIDATE}" = "yes" -a "${enable_x86_sse}" = "yes"; then - opt="-msse2 -mfpmath=sse" - AX_CHECK_COMPILE_FLAG($opt, [CFLAGS="$CFLAGS $opt"], []) -fi - -if test "${GCC}" = "yes"; then - AC_DEFINE_UNQUOTED([likely(x)], [__builtin_expect(!!(x), 1)], [gcc branch optimization]) - AC_DEFINE_UNQUOTED([unlikely(x)], [__builtin_expect(!!(x), 0)], [gcc branch optimization]) -else - AC_DEFINE_UNQUOTED([likely(x)], [(x)], [gcc branch optimization]) - AC_DEFINE_UNQUOTED([unlikely(x)], [(x)], [gcc branch optimization]) -fi - -if test "${enable_pedantic}" = "yes"; then - enable_strict="yes" - CFLAGS="${CFLAGS} -pedantic -Wall -Wextra -Wno-long-long" -fi +AC_MSG_RESULT([${build_target}]) # ----------------------------------------------------------------------------- @@ -199,27 +180,6 @@ CFLAGS="${CFLAGS} ${PTHREAD_CFLAGS}" CC="${PTHREAD_CC}" -# ----------------------------------------------------------------------------- -# memory allocation library - -AC_MSG_CHECKING([for memory allocator]) -TS_CHECK_JEMALLOC -if test "$has_jemalloc" = "1"; then - AC_DEFINE([ENABLE_JEMALLOC], [1], [compile and link with jemalloc]) - AC_MSG_RESULT([jemalloc]) -else - TS_CHECK_TCMALLOC - if test "$has_tcmalloc" = "1"; then - AC_DEFINE([ENABLE_TCMALLOC], [1], [compile and link with tcmalloc]) - AC_MSG_RESULT([tcmalloc]) - else - AC_MSG_RESULT([system]) - AC_C_MALLOPT - AC_C_MALLINFO - fi -fi - - # ----------------------------------------------------------------------------- # libm @@ -235,7 +195,7 @@ fi test "${with_math}" = "yes" -a -z "${MATH_LIBS}" && AC_MSG_ERROR([math required but not found]) AC_MSG_CHECKING([if libm should be used]) -if test "${with_math}" != "no"; then +if test "${with_math}" != "no" -a ! -z "${MATH_LIBS}"; then with_math="yes" AC_DEFINE([STORAGE_WITH_MATH], [1], [math usability]) OPTIONAL_MATH_CFLAGS="${MATH_CFLAGS}" @@ -258,7 +218,7 @@ PKG_CHECK_MODULES( test "${with_zlib}" = "yes" -a "${have_zlib}" != "yes" && AC_MSG_ERROR([zlib required but not found. Try installing 'zlib1g-dev' or 'zlib-devel'.]) AC_MSG_CHECKING([if zlib should be used]) -if test "${with_zlib}" != "no"; then +if test "${with_zlib}" != "no" -a "${have_zlib}" = "yes"; then with_zlib="yes" AC_DEFINE([NETDATA_WITH_ZLIB], [1], [zlib usability]) OPTIONAL_ZLIB_CLFAGS="${ZLIB_CFLAGS}" @@ -283,6 +243,54 @@ OPTIONAL_UUID_CLFAGS="${UUID_CFLAGS}" OPTIONAL_UUID_LIBS="${UUID_LIBS}" +# ----------------------------------------------------------------------------- +# compiler options + +AC_ARG_VAR([SSE_CANDIDATE], [C compiler flags for SSE]) +AS_CASE([$host_cpu], + [i?86], [SSE_CANDIDATE="yes"] +) +AC_SUBST([SSE_CANDIDATE]) +if test "${SSE_CANDIDATE}" = "yes" -a "${enable_x86_sse}" = "yes"; then + opt="-msse2 -mfpmath=sse" + AX_CHECK_COMPILE_FLAG(${opt}, [CFLAGS="${CFLAGS} ${opt}"], []) +fi + +if test "${GCC}" = "yes"; then + AC_DEFINE_UNQUOTED([likely(x)], [__builtin_expect(!!(x), 1)], [gcc branch optimization]) + AC_DEFINE_UNQUOTED([unlikely(x)], [__builtin_expect(!!(x), 0)], [gcc branch optimization]) +else + AC_DEFINE_UNQUOTED([likely(x)], [(x)], [gcc branch optimization]) + AC_DEFINE_UNQUOTED([unlikely(x)], [(x)], [gcc branch optimization]) +fi + +if test "${enable_pedantic}" = "yes"; then + enable_strict="yes" + CFLAGS="${CFLAGS} -pedantic -Wall -Wextra -Wno-long-long" +fi + + +# ----------------------------------------------------------------------------- +# memory allocation library + +AC_MSG_CHECKING([for memory allocator]) +TS_CHECK_JEMALLOC +if test "$has_jemalloc" = "1"; then + AC_DEFINE([ENABLE_JEMALLOC], [1], [compile and link with jemalloc]) + AC_MSG_RESULT([jemalloc]) +else + TS_CHECK_TCMALLOC + if test "$has_tcmalloc" = "1"; then + AC_DEFINE([ENABLE_TCMALLOC], [1], [compile and link with tcmalloc]) + AC_MSG_RESULT([tcmalloc]) + else + AC_MSG_RESULT([system]) + AC_C_MALLOPT + AC_C_MALLINFO + fi +fi + + # ----------------------------------------------------------------------------- # libcap @@ -296,13 +304,13 @@ PKG_CHECK_MODULES( [have_libcap=no] )], [have_libcap=no] - )] + )], [have_libcap=no] ) test "${with_libcap}" = "yes" -a "${have_libcap}" != "yes" && AC_MSG_ERROR([libcap required but not found.]) AC_MSG_CHECKING([if libcap should be used]) -if test "${with_libcap}" != "no"; then +if test "${with_libcap}" != "no" -a "${have_libcap}" = "yes"; then with_libcap="yes" AC_DEFINE([HAVE_CAPABILITY], [1], [libcap usability]) OPTIONAL_LIBCAP_CLFAGS="${LIBCAP_CFLAGS}" @@ -387,6 +395,34 @@ AC_MSG_RESULT([${enable_plugin_nfacct}]) AM_CONDITIONAL([ENABLE_PLUGIN_NFACCT], [test "${enable_plugin_nfacct}" = "yes"]) +# ----------------------------------------------------------------------------- +# Link-Time-Optimization + +if test "${enable_lto}" != "no"; then + opt="-flto" + AX_CHECK_COMPILE_FLAG(${opt}, [have_lto=yes], [have_lto=no]) +fi +if test "${have_lto}" = "yes"; then + oCFLAGS="${CFLAGS}" + CFLAGS="${CFLAGS} -flto ${OPTIONAL_MATH_CLFAGS} ${OPTIONAL_NFACCT_CLFAGS} ${OPTIONAL_ZLIB_CLFAGS} ${OPTIONAL_UUID_CLFAGS} ${OPTIONAL_LIBCAP_CFLAGS} ${OPTIONAL_IPMIMONITORING_CFLAGS}" + ac_cv_c_lto_cross_compile="${enable_lto}" + test "${ac_cv_c_lto_cross_compile}" != "yes" && ac_cv_c_lto_cross_compile="no" + AC_C_LTO + CFLAGS="${oCFLAGS}" + test "${ac_cv_c_lto}" != "yes" && have_lto="no" +fi +test "${enable_lto}" = "yes" -a "${have_lto}" != "yes" && \ + AC_MSG_ERROR([LTO is required but is not available.]) +AC_MSG_CHECKING([if LTO should be enabled]) +if test "${enable_lto}" != "no" -a "${have_lto}" = "yes"; then + enable_lto="yes" + CFLAGS="${CFLAGS} -flto" +else + enable_lto="no" +fi +AC_MSG_RESULT([${enable_lto}]) + + # ----------------------------------------------------------------------------- AC_DEFINE_UNQUOTED([NETDATA_USER], ["${with_user}"], [use this user to drop privileged])