X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=configure.in;h=cd2110f70db68804e6c57b0238e38ace6d2e2959;hb=5aac2498eeacce2ab28302bca2103960a11474f7;hp=d9bca160fc8fb3152740f0365d6b59b2265040f4;hpb=107a919d0d15d51d774c92ac72879d869e0fa4ee;p=collectd.git diff --git a/configure.in b/configure.in index d9bca160..cd2110f7 100644 --- a/configure.in +++ b/configure.in @@ -56,7 +56,7 @@ AC_HEADER_STDC AC_HEADER_SYS_WAIT AC_HEADER_DIRENT -AC_CHECK_HEADERS(stdint.h stdio.h errno.h math.h stdarg.h syslog.h fcntl.h signal.h assert.h sys/types.h sys/socket.h sys/select.h poll.h netdb.h arpa/inet.h sys/resource.h sys/param.h kstat.h regex.h sys/ioctl.h) +AC_CHECK_HEADERS(stdint.h stdio.h errno.h math.h stdarg.h syslog.h fcntl.h signal.h assert.h sys/types.h sys/socket.h sys/select.h poll.h netdb.h arpa/inet.h sys/resource.h sys/param.h kstat.h regex.h sys/ioctl.h endian.h) # For ping library AC_CHECK_HEADERS(netinet/in_systm.h, [], [], @@ -311,7 +311,7 @@ AC_CHECK_HEADERS(linux/un.h, [], [], #endif ]) -AC_CHECK_HEADERS(pwd.h grp.h sys/un.h ctype.h limits.h sys/quota.h xfs/xqm.h fs_info.h fshelp.h paths.h mntent.h mnttab.h sys/fstyp.h sys/fs_types.h sys/mntent.h sys/mnttab.h sys/statfs.h sys/statvfs.h sys/vfs.h sys/vfstab.h kvm.h) +AC_CHECK_HEADERS(pwd.h grp.h sys/un.h ctype.h limits.h sys/quota.h xfs/xqm.h fs_info.h fshelp.h paths.h mntent.h mnttab.h sys/fstyp.h sys/fs_types.h sys/mntent.h sys/mnttab.h sys/statfs.h sys/statvfs.h sys/vfs.h sys/vfstab.h kvm.h wordexp.h) # For the dns plugin AC_CHECK_HEADERS(arpa/nameser.h) @@ -372,8 +372,69 @@ AC_CHECK_FUNCS(gettimeofday select strdup strtol getaddrinfo getnameinfo strchr AC_FUNC_STRERROR_R -AC_CHECK_FUNCS(getpwnam_r) -AC_CHECK_FUNCS(getgrnam_r) +AC_CACHE_CHECK([for strtok_r], + [have_strtok_r_default], + AC_LINK_IFELSE( + AC_LANG_PROGRAM( + [[[[ +#include +#include +#include + ]]]], + [[[[ + char buffer[] = "foo,bar,baz"; + char *token; + char *dummy; + char *saveptr; + + dummy = buffer; + saveptr = NULL; + while ((token = strtok_r (dummy, ",", &saveptr)) != NULL) + { + dummy = NULL; + printf ("token = %s;\n", token); + } + ]]]]), + [have_strtok_r_default="yes"], + [have_strtok_r_default="no"] + ) +) + +if test "x$have_strtok_r_default" = "xno" +then + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -D_REENTRANT=1" + + AC_CACHE_CHECK([if strtok_r needs _REENTRANT], + [have_strtok_r_reentrant], + AC_LINK_IFELSE( + AC_LANG_PROGRAM( + [[[[ +#include +#include +#include + ]]]], + [[[[ + char buffer[] = "foo,bar,baz"; + char *token; + char *dummy; + char *saveptr; + + dummy = buffer; + saveptr = NULL; + while ((token = strtok_r (dummy, ",", &saveptr)) != NULL) + { + dummy = NULL; + printf ("token = %s;\n", token); + } + ]]]]), + [have_strtok_r_reentrant="yes"], + [AC_MSG_FAILURE([strtok_r isn't available. Please file a bugreport!])] + ) + ) +fi + +AC_CHECK_FUNCS(getpwnam_r getgrnam_r setgroups regcomp regerror regexec regfree) socket_needs_socket="no" AC_CHECK_FUNCS(socket, [], AC_CHECK_LIB(socket, socket, [socket_needs_socket="yes"], AC_MSG_ERROR(cannot find socket))) @@ -383,8 +444,6 @@ nanosleep_needs_rt="no" AC_CHECK_FUNCS(nanosleep, [], AC_CHECK_LIB(rt, nanosleep, [nanosleep_needs_rt="yes"], AC_MSG_ERROR(cannot find nanosleep))) AM_CONDITIONAL(BUILD_WITH_LIBRT, test "x$nanosleep_needs_rt" = "xyes") -AC_CHECK_FUNCS(regcomp regerror regexec regfree) - AC_CHECK_FUNCS(sysctlbyname, [have_sysctlbyname="yes"], [have_sysctlbyname="no"]) AC_CHECK_FUNCS(host_statistics, [have_host_statistics="yes"], [have_host_statistics="no"]) AC_CHECK_FUNCS(processor_info, [have_processor_info="yes"], [have_processor_info="no"]) @@ -508,8 +567,160 @@ else AC_MSG_ERROR([Didn't find out how to statically initialize variables to NAN. Sorry.]) fi; fi; fi -# For mount interface -#AC_CHECK_FUNCS(getfsent getvfsent) +AC_ARG_WITH(fp-layout, [AS_HELP_STRING([--with-fp-layout], [set the memory layout of doubles. For crosscompiling only.])], +[ + if test "x$withval" = "xnothing"; then + fp_layout_type="nothing" + else if test "x$withval" = "xendianflip"; then + fp_layout_type="endianflip" + else if test "x$withval" = "xintswap"; then + fp_layout_type="intswap" + else + AC_MSG_ERROR([Invalid argument for --with-fp-layout. Valid arguments are: nothing, endianflip, intswap]); +fi; fi; fi +], +[fp_layout_type="unknown"]) + +if test "x$fp_layout_type" = "xunknown"; then + AC_CACHE_CHECK([if doubles are stored in x86 representation], + [fp_layout_need_nothing], + AC_RUN_IFELSE( + AC_LANG_PROGRAM( + [[[[ +#include +#include +#include +#include + ]]]], + [[[[ + uint64_t i0; + uint64_t i1; + uint8_t c[8]; + double d; + + d = 8.642135e130; + memcpy ((void *) &i0, (void *) &d, 8); + + i1 = i0; + memcpy ((void *) c, (void *) &i1, 8); + + if ((c[0] == 0x2f) && (c[1] == 0x25) + && (c[2] == 0xc0) && (c[3] == 0xc7) + && (c[4] == 0x43) && (c[5] == 0x2b) + && (c[6] == 0x1f) && (c[7] == 0x5b)) + return (0); + else + return (1); + ]]]]), + [fp_layout_need_nothing="yes"], + [fp_layout_need_nothing="no"] + ) + ) + if test "x$fp_layout_need_nothing" = "xyes"; then + fp_layout_type="nothing" + fi +fi +if test "x$fp_layout_type" = "xunknown"; then + AC_CACHE_CHECK([if endianflip converts to x86 representation], + [fp_layout_need_endianflip], + AC_RUN_IFELSE( + AC_LANG_PROGRAM( + [[[[ +#include +#include +#include +#include +#define endianflip(A) ((((uint64_t)(A) & 0xff00000000000000LL) >> 56) | \ + (((uint64_t)(A) & 0x00ff000000000000LL) >> 40) | \ + (((uint64_t)(A) & 0x0000ff0000000000LL) >> 24) | \ + (((uint64_t)(A) & 0x000000ff00000000LL) >> 8) | \ + (((uint64_t)(A) & 0x00000000ff000000LL) << 8) | \ + (((uint64_t)(A) & 0x0000000000ff0000LL) << 24) | \ + (((uint64_t)(A) & 0x000000000000ff00LL) << 40) | \ + (((uint64_t)(A) & 0x00000000000000ffLL) << 56)) + ]]]], + [[[[ + uint64_t i0; + uint64_t i1; + uint8_t c[8]; + double d; + + d = 8.642135e130; + memcpy ((void *) &i0, (void *) &d, 8); + + i1 = endianflip (i0); + memcpy ((void *) c, (void *) &i1, 8); + + if ((c[0] == 0x2f) && (c[1] == 0x25) + && (c[2] == 0xc0) && (c[3] == 0xc7) + && (c[4] == 0x43) && (c[5] == 0x2b) + && (c[6] == 0x1f) && (c[7] == 0x5b)) + return (0); + else + return (1); + ]]]]), + [fp_layout_need_endianflip="yes"], + [fp_layout_need_endianflip="no"] + ) + ) + if test "x$fp_layout_need_endianflip" = "xyes"; then + fp_layout_type="endianflip" + fi +fi +if test "x$fp_layout_type" = "xunknown"; then + AC_CACHE_CHECK([if intswap converts to x86 representation], + [fp_layout_need_intswap], + AC_RUN_IFELSE( + AC_LANG_PROGRAM( + [[[[ +#include +#include +#include +#include +#define intswap(A) ((((uint64_t)(A) & 0xffffffff00000000LL) >> 32) | \ + (((uint64_t)(A) & 0x00000000ffffffffLL) << 32)) + ]]]], + [[[[ + uint64_t i0; + uint64_t i1; + uint8_t c[8]; + double d; + + d = 8.642135e130; + memcpy ((void *) &i0, (void *) &d, 8); + + i1 = intswap (i0); + memcpy ((void *) c, (void *) &i1, 8); + + if ((c[0] == 0x2f) && (c[1] == 0x25) + && (c[2] == 0xc0) && (c[3] == 0xc7) + && (c[4] == 0x43) && (c[5] == 0x2b) + && (c[6] == 0x1f) && (c[7] == 0x5b)) + return (0); + else + return (1); + ]]]]), + [fp_layout_need_intswap="yes"], + [fp_layout_need_intswap="no"] + ) + ) + if test "x$fp_layout_need_intswap" = "xyes"; then + fp_layout_type="intswap" + fi +fi + +if test "x$fp_layout_type" = "xnothing"; then + AC_DEFINE(FP_LAYOUT_NEED_NOTHING, 1, + [Define if doubles are stored in x86 representation.]) +else if test "x$fp_layout_type" = "xendianflip"; then + AC_DEFINE(FP_LAYOUT_NEED_ENDIANFLIP, 1, + [Define if endianflip is needed to convert to x86 representation.]) +else if test "x$fp_layout_type" = "xintswap"; then + AC_DEFINE(FP_LAYOUT_NEED_INTSWAP, 1, + [Define if intswap is needed to convert to x86 representation.]) +else + AC_MSG_ERROR([Didn't find out how doubles are stored in memory. Sorry.]) +fi; fi; fi have_getfsstat="no" AC_CHECK_FUNCS(getfsstat, [have_getfsstat="yes"]) @@ -698,6 +909,8 @@ AC_ARG_WITH(rrdtool, [AS_HELP_STRING([--with-rrdtool@<:@=PREFIX@:>@], [Path to r librrd_cflags="-I$withval/include" librrd_ldflags="-L$withval/lib" with_rrdtool="yes" + else + with_rrdtool="$withval" fi ], [with_rrdtool="yes"]) if test "x$with_rrdtool" = "xyes" @@ -732,7 +945,7 @@ then ], [with_rrdtool="no (symbol 'rrd_update' not found)"], [-lm]) - ] + ], [-lm]) CPPFLAGS="$SAVE_CPPFLAGS" @@ -844,12 +1057,12 @@ then then with_libcurl="no ($with_curl_config failed)" else - SAVE_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS $with_curl_cflags" + SAVE_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $with_curl_cflags" AC_CHECK_HEADERS(curl/curl.h, [], [with_libcurl="no (curl/curl.h not found)"], []) - CFLAGS="$SAVE_CFLAGS" + CPPFLAGS="$SAVE_CPPFLAGS" fi fi if test "x$with_libcurl" = "xyes" @@ -891,8 +1104,6 @@ AC_CHECK_LIB(IOKit, IOServiceGetMatchingServices, AC_DEFINE_UNQUOTED(COLLECT_LIBIOKIT, [$collect_libiokit], [Wether or not to use the IOKit library]) AM_CONDITIONAL(BUILD_WITH_LIBIOKIT, test "x$with_libiokit" = "xyes") -with_libstatgrab="yes" -with_libdevstat="no" AC_ARG_WITH(libstatgrab, [AS_HELP_STRING([--with-libstatgrab@<:@=PREFIX@:>@], [Path to libstatgrab.])], [ if test "x$withval" != "xno" -a "x$withval" != "xyes" @@ -900,6 +1111,8 @@ AC_ARG_WITH(libstatgrab, [AS_HELP_STRING([--with-libstatgrab@<:@=PREFIX@:>@], [P LDFLAGS="$LDFLAGS -L$withval/lib" CPPFLAGS="$CPPFLAGS -I$withval/include" with_libstatgrab="yes" + else + with_libstatgrab="$withval" fi ], [ @@ -1038,12 +1251,12 @@ then then with_libmysql="no" else - SAVE_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS $with_mysql_cflags" + SAVE_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $with_mysql_cflags" AC_CHECK_HEADERS(mysql/mysql.h, [], [with_libmysql="no (mysql/mysql.h not found)"], []) - CFLAGS="$SAVE_CFLAGS" + CPPFLAGS="$SAVE_CPPFLAGS" fi fi if test "x$with_libmysql" = "xyes" @@ -1138,7 +1351,10 @@ AC_ARG_WITH(liboping, [AS_HELP_STRING([--with-liboping@<:@=PREFIX@:>@], [Path to then with_liboping="no" with_own_liboping="no" - fi + else if test "x$withval" = "xyes" + then + with_liboping="yes" + fi; fi ], [ with_liboping="yes" @@ -1172,6 +1388,8 @@ AC_ARG_WITH(libpcap, [AS_HELP_STRING([--with-libpcap@<:@=PREFIX@:>@], [Path to l LDFLAGS="$LDFLAGS -L$withval/lib" CPPFLAGS="$CPPFLAGS -I$withval/include" with_libpcap="yes" + else + with_libpcap="$withval" fi ], [ @@ -1210,15 +1428,27 @@ AC_ARG_WITH(libperl, [AS_HELP_STRING([--with-libperl@<:@=PREFIX@:>@], [Path to l CPPFLAGS="$CPPFLAGS -I$withval/include" perl_interpreter="$withval/bin/perl" with_libperl="yes" + else + with_libperl="$withval" fi ], [ with_libperl="yes" ]) +AC_MSG_CHECKING([for perl]) +perl_interpreter=`which "$perl_interpreter" 2> /dev/null` +if test -x "$perl_interpreter" +then + AC_MSG_RESULT([yes]) +else + perl_interpreter="" + AC_MSG_RESULT([no]) +fi + AC_SUBST(PERL, "$perl_interpreter") -if test "x$with_libperl" = "xyes" +if test "x$with_libperl" = "xyes" -a -n "$perl_interpreter" then SAVE_CFLAGS=$CFLAGS SAVE_LDFLAGS=$LDFLAGS @@ -1258,7 +1488,10 @@ then CFLAGS=$SAVE_CFLAGS LDFLAGS=$SAVE_LDFLAGS -fi +else if test -z "$perl_interpreter"; then + with_libperl="no (no perl interpreter found)" + have_libperl="no" +fi; fi AM_CONDITIONAL(BUILD_WITH_LIBPERL, test "x$with_libperl" = "xyes") if test "x$with_libperl" = "xyes" @@ -1303,6 +1536,8 @@ AC_ARG_WITH(libiptc, [AS_HELP_STRING([--with-libiptc@<:@=PREFIX@:>@], [Path to l LDFLAGS="$LDFLAGS -L$withval/lib" CPPFLAGS="$CPPFLAGS -I$withval/include" with_libiptc="yes" + else + with_libiptc="$withval" fi ], [ @@ -1367,12 +1602,12 @@ then then with_libnetsnmp="no ($with_snmp_config failed)" else - SAVE_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS $with_snmp_cflags" + SAVE_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $with_snmp_cflags" AC_CHECK_HEADERS(net-snmp/net-snmp-config.h, [], [with_libnetsnmp="no (net-snmp/net-snmp-config.h not found)"]) - CFLAGS="$SAVE_CFLAGS" + CPPFLAGS="$SAVE_CPPFLAGS" fi fi if test "x$with_libnetsnmp" = "xyes" @@ -1435,12 +1670,12 @@ then fi if test "x$with_libupsclient" = "xyes" then - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $with_upsclient_cflags" + SAVE_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $with_upsclient_cflags" AC_CHECK_HEADERS(upsclient.h, [], [with_libupsclient="no (upsclient.h not found)"]) - CFLAGS="$SAVE_CFLAGS" + CPPFLAGS="$SAVE_CPPFLAGS" fi if test "x$with_libupsclient" = "xyes" then @@ -1467,10 +1702,15 @@ then fi if test "x$with_libupsclient" = "xyes" then + SAVE_CPPFLAGS="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS $with_upsclient_cflags" + AC_CHECK_TYPES([UPSCONN_t, UPSCONN], [], [], [#include #include #include ]) + + CPPFLAGS="$SAVE_CPPFLAGS" fi AM_CONDITIONAL(BUILD_WITH_LIBUPSCLIENT, test "x$with_libupsclient" = "xyes") @@ -2084,11 +2324,19 @@ AC_ARG_WITH(perl-bindings, [AS_HELP_STRING([--with-perl-bindings@<:@=OPTIONS@:>@ then PERL_BINDINGS_OPTIONS="$withval" with_perl_bindings="yes" + else + PERL_BINDINGS_OPTIONS="" + with_perl_bindings="$withval" fi ], [ PERL_BINDINGS_OPTIONS="" - with_perl_bindings="yes" + if test -n "$perl_interpreter" + then + with_perl_bindings="yes" + else + with_perl_bindings="no (no perl interpreter found)" + fi ]) if test "x$with_perl_bindings" = "xyes" then @@ -2101,6 +2349,11 @@ AC_SUBST(PERL_BINDINGS_OPTIONS) AC_OUTPUT(Makefile src/Makefile src/collectd.conf src/liboconfig/Makefile src/liboping/Makefile bindings/Makefile) +if test "x$with_rrdtool" = "xyes" -a "x$librrd_threadsafe" != "xyes" +then + with_rrdtool="yes (warning: librrd is not thread-safe)" +fi + if test "x$with_liboping" = "xyes" -a "x$with_own_liboping" = "xyes" then with_liboping="yes (shipped version)"