exec plugin: Use `setgroups' to set the list of supplementary group IDs.
[collectd.git] / configure.in
index 1c591c2..2379cbe 100644 (file)
@@ -40,8 +40,8 @@ case $host_os in
        AC_DEFINE([KERNEL_SOLARIS], 1, [True if program is to be compiled for a Solaris kernel])
        ac_system="Solaris"
        ;;
-       *apple-darwin*)
-       ac_system="Mac OS X"
+       *darwin*)
+       ac_system="Darwin"
        ;;
        *)
        ac_system="unknown"
@@ -193,7 +193,7 @@ AC_CHECK_HEADERS(netinet/udp.h, [], [],
 
 # For cpu modules
 AC_CHECK_HEADERS(sys/dkstat.h)
-if test ac_system = "Mac OS X"
+if test "x$ac_system" = "xDarwin"
 then
        AC_CHECK_HEADERS(mach/mach_init.h mach/host_priv.h mach/mach_error.h mach/mach_host.h mach/mach_port.h mach/mach_types.h mach/message.h mach/processor_set.h mach/processor.h mach/processor_info.h mach/task.h mach/thread_act.h mach/vm_region.h mach/vm_map.h mach/vm_prot.h mach/vm_statistics.h mach/kern_return.h)
        AC_CHECK_HEADERS(CoreFoundation/CoreFoundation.h IOKit/IOKitLib.h IOKit/IOTypes.h IOKit/ps/IOPSKeys.h IOKit/IOBSD.h IOKit/storage/IOBlockStorageDriver.h)
@@ -365,8 +365,9 @@ AC_HEADER_TIME
 AC_PROG_GCC_TRADITIONAL
 AC_CHECK_FUNCS(gettimeofday select strdup strtol getaddrinfo getnameinfo strchr memcpy strstr strcmp strncmp strncpy strlen strncasecmp strcasecmp openlog closelog)
 
-AC_CHECK_FUNCS(getpwnam_r)
-AC_CHECK_FUNCS(getgrnam_r)
+AC_FUNC_STRERROR_R
+
+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)))
@@ -376,8 +377,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"])
@@ -668,35 +667,66 @@ m4_divert_once([HELP_WITH], [
 collectd additional packages:])
 
 # AC_ARG_WITH (package, help-string, [action-if-given], [action-if-not-given])
+librrd_cflags=""
+librrd_ldflags=""
+librrd_threadsafe="yes"
 AC_ARG_WITH(rrdtool, [AS_HELP_STRING([--with-rrdtool@<:@=PREFIX@:>@], [Path to rrdtool.])],
 [      if test "x$withval" != "xno" && test "x$withval" != "xyes"
        then
-               LDFLAGS="$LDFLAGS -L$withval/lib"
-               CPPFLAGS="$CPPFLAGS -I$withval/include"
+               librrd_cflags="-I$withval/include"
+               librrd_ldflags="-L$withval/lib"
                with_rrdtool="yes"
        fi
 ], [with_rrdtool="yes"])
 if test "x$with_rrdtool" = "xyes"
 then
-       AC_CHECK_LIB(rrd, rrd_update,
-       [
-               AC_DEFINE(HAVE_LIBRRD, 1, [Define to 1 if you have the rrd library (-lrrd).])
-       ],
-       [with_rrdtool="no (librrd not found)"], [-lm])
+       SAVE_CPPFLAGS="$CPPFLAGS"
+       SAVE_LDFLAGS="$LDFLAGS"
+
+       CPPFLAGS="$CPPFLAGS $librrd_cflags"
+       LDFLAGS="$LDFLAGS $librrd_ldflags"
+
+       AC_CHECK_HEADERS(rrd.h,, [with_rrdtool="no (rrd.h not found)"])
+
+       CPPFLAGS="$SAVE_CPPFLAGS"
+       LDFLAGS="$SAVE_LDFLAGS"
 fi
 if test "x$with_rrdtool" = "xyes"
 then
-       AC_CHECK_HEADERS(rrd.h,, [with_rrdtool="no (rrd.h not found)"])
+       SAVE_CPPFLAGS="$CPPFLAGS"
+       SAVE_LDFLAGS="$LDFLAGS"
+
+       CPPFLAGS="$CPPFLAGS $librrd_cflags"
+       LDFLAGS="$LDFLAGS $librrd_ldflags"
+
+       AC_CHECK_LIB(rrd_th, rrd_update_r,
+       [with_rrdtool="yes"
+        librrd_ldflags="$librrd_ldflags -lrrd_th -lm"
+       ],
+       [librrd_threadsafe="no"
+        AC_CHECK_LIB(rrd, rrd_update,
+        [with_rrdtool="yes"
+         librrd_ldflags="$librrd_ldflags -lrrd -lm"
+        ],
+        [with_rrdtool="no (symbol 'rrd_update' not found)"],
+        [-lm])
+       ]
+       [-lm])
+
+       CPPFLAGS="$SAVE_CPPFLAGS"
+       LDFLAGS="$SAVE_LDFLAGS"
 fi
 if test "x$with_rrdtool" = "xyes"
 then
-       collect_rrdtool=1
-else
-       collect_rrdtool=0
+       BUILD_WITH_LIBRRD_CFLAGS="$librrd_cflags"
+       BUILD_WITH_LIBRRD_LDFLAGS="$librrd_ldflags"
+       AC_SUBST(BUILD_WITH_LIBRRD_CFLAGS)
+       AC_SUBST(BUILD_WITH_LIBRRD_LDFLAGS)
+fi
+if test "x$librrd_threadsafe" = "xyes"
+then
+       AC_DEFINE(HAVE_THREADSAFE_LIBRRD, 1, [Define to 1 if you have the threadsafe rrd library (-lrrd_th).])
 fi
-AC_DEFINE_UNQUOTED(COLLECT_RRDTOOL, [$collect_rrdtool],
-       [Wether or not to use rrdtool library])
-AM_CONDITIONAL(BUILD_WITH_RRDTOOL, test "x$with_rrdtool" = "xyes")
 
 AC_ARG_WITH(libpthread, [AS_HELP_STRING([--with-libpthread=@<:@=PREFIX@:>@], [Path to libpthread.])],
 [      if test "x$withval" != "xno" -a "x$withval" != "xyes"
@@ -729,7 +759,7 @@ AC_DEFINE_UNQUOTED(HAVE_LIBPTHREAD, [$collect_pthread],
        [Wether or not to use pthread (POSIX threads) library])
 AM_CONDITIONAL(BUILD_WITH_LIBPTHREAD, test "x$with_libpthread" = "xyes")
 
-if test "$ac_system" = "Solaris"
+if test "x$ac_system" = "xSolaris"
 then
        with_kstat="yes"
        with_devinfo="yes"
@@ -768,13 +798,16 @@ AC_ARG_WITH(libcurl, [AS_HELP_STRING([--with-libcurl@<:@=PREFIX@:>@], [Path to l
        then
                with_libcurl="yes"
        else
-               if test -x "$withval"
+               if test -f "$withval" && test -x "$withval"
                then
                        with_curl_config="$withval"
+                       with_libcurl="yes"
                else if test -x "$withval/bin/curl-config"
                then
                        with_curl_config="$withval/bin/curl-config"
+                       with_libcurl="yes"
                fi; fi
+               with_libcurl="yes"
        fi; fi
 ],
 [
@@ -787,7 +820,7 @@ then
 
        if test $curl_config_status -ne 0
        then
-               with_libcurl="no"
+               with_libcurl="no ($with_curl_config failed)"
        else
                SAVE_CFLAGS=$CFLAGS
                CFLAGS="$CFLAGS $with_curl_cflags"
@@ -804,15 +837,10 @@ then
 
        if test $curl_config_status -ne 0
        then
-               with_libcurl="no"
+               with_libcurl="no ($with_curl_config failed)"
        else
                AC_CHECK_LIB(curl, curl_easy_init,
-                [
-                 # We need to do this to have `HAVE_LIBCURL' defined but
-                 # `-lcurl' NOT added to the default LDFLAGS.
-                       AC_DEFINE(HAVE_LIBCURL, 1,
-                                 [Define to 1 if you have the curl library.])
-                ],
+                [with_libcurl="yes"],
                 [with_libcurl="no (symbol 'curl_easy_init' not found)"],
                 [$with_curl_libs])
        fi
@@ -945,13 +973,14 @@ AC_ARG_WITH(libmysql, [AS_HELP_STRING([--with-libmysql@<:@=PREFIX@:>@], [Path to
        then
                with_libmysql="yes"
        else
-               if test -x "$withval";
+               if test -f "$withval" && test -x "$withval";
                then
                        with_mysql_config="$withval"
                else if test -x "$withval/bin/mysql_config"
                then
                        with_mysql_config="$withval/bin/mysql_config"
                fi; fi
+               with_libmysql="yes"
        fi; fi
 ],
 [
@@ -984,13 +1013,8 @@ then
                with_libmysql="no"
        else
                AC_CHECK_LIB(mysqlclient, mysql_init,
-                [
-                 # We need to do this to have `HAVE_LIBMYSQLCLIENT' defined
-                 # but `-lmysqlclient' NOT added to the default LDFLAGS.
-                       AC_DEFINE(HAVE_LIBMYSQLCLIENT, 1,
-                                 [Define to 1 if you have the mysqlclient library.])
-                ],
-                [with_libmysql="no (libmysql not found)"],
+                [with_libmysql="yes"],
+                [with_libmysql="no (symbol 'mysql_init' not found)"],
                 [$with_mysql_libs])
        fi
 fi
@@ -1231,29 +1255,67 @@ else
 fi
 AM_CONDITIONAL(BUILD_WITH_LIBIPTC, test "x$with_libiptc" = "xyes")
 
+with_snmp_config="net-snmp-config"
+with_snmp_cflags=""
+with_snmp_libs=""
 AC_ARG_WITH(libnetsnmp, [AS_HELP_STRING([--with-libnetsnmp@<:@=PREFIX@:>@], [Path to the Net-SNMPD library.])],
 [
-       if test "x$withval" != "xno" && test "x$withval" != "xyes"
+       if test "x$withval" = "xno"
+       then
+               with_libnetsnmp="no"
+       else if test "x$withval" = "xyes"
        then
-               LDFLAGS="$LDFLAGS -L$withval/lib"
-               CPPFLAGS="$CPPFLAGS -I$withval/include"
                with_libnetsnmp="yes"
-       fi
+       else
+               if test -x "$withval"
+               then
+                       with_snmp_config="$withval"
+                       with_libnetsnmp="yes"
+               else
+                       with_snmp_config="$withval/bin/net-snmp-config"
+                       with_libnetsnmp="yes"
+               fi
+       fi; fi
 ],
 [with_libnetsnmp="yes"])
 if test "x$with_libnetsnmp" = "xyes"
 then
-       AC_CHECK_LIB(netsnmp, init_snmp,
-       [
-               AC_DEFINE(HAVE_LIBSNMP, 1, [Define to 1 if you have the Net-SNMP library (-lnetsnmp).])
-       ], [with_libnetsnmp="no (libnetsnmp not found)"])
+       with_snmp_cflags=`$with_snmp_config --cflags 2>/dev/null`
+       snmp_config_status=$?
+
+       if test $snmp_config_status -ne 0
+       then
+               with_libnetsnmp="no ($with_snmp_config failed)"
+       else
+               SAVE_CFLAGS=$CFLAGS
+               CFLAGS="$CFLAGS $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"
+       fi
 fi
 if test "x$with_libnetsnmp" = "xyes"
 then
-       AC_CHECK_HEADERS(net-snmp/net-snmp-config.h,
-       [
-               AC_DEFINE(HAVE_NET_SNMP_NET_SNMP_CONFIG_H, 1, [Define to 1 if you have the <net-snmp/net-snmp-config.h> header file.])
-       ], [with_libnetsnmp="no (net-snmp/net-snmp-config.h not found)"])
+       with_snmp_libs=`$with_snmp_config --libs 2>/dev/null`
+       snmp_config_status=$?
+
+       if test $snmp_config_status -ne 0
+       then
+               with_libnetsnmp="no ($with_snmp_config failed)"
+       else
+               AC_CHECK_LIB(netsnmp, init_snmp,
+               [with_libnetsnmp="yes"],
+               [with_libnetsnmp="no (libnetsnmp not found)"],
+               [$with_snmp_libs])
+       fi
+fi
+if test "x$with_libnetsnmp" = "xyes"
+then
+       BUILD_WITH_LIBSNMP_CFLAGS="$with_snmp_cflags"
+       BUILD_WITH_LIBSNMP_LIBS="$with_snmp_libs"
+       AC_SUBST(BUILD_WITH_LIBSNMP_CFLAGS)
+       AC_SUBST(BUILD_WITH_LIBSNMP_LIBS)
 fi
 AM_CONDITIONAL(BUILD_WITH_LIBNETSNMP, test "x$with_libnetsnmp" = "xyes")
 
@@ -1266,11 +1328,16 @@ AC_ARG_WITH(libupsclient, [AS_HELP_STRING([--with-libupsclient@<:@=PREFIX@:>@],
        then
                with_libupsclient="no"
        else
-               with_libupsclient="yes"
-               if "x$withval" != "xyes"
+               if test "x$withval" != "xyes"
                then
-                       with_upsclient_config="$withval/bin/libupsclient-config"
+                       if test -f "$withval" && test -x "$withval";
+                       then
+                               with_upsclient_config="$withval"
+                       else
+                               with_upsclient_config="$withval/bin/libupsclient-config"
+                       fi
                fi
+               with_libupsclient="yes"
        fi
 ],
 [
@@ -1283,25 +1350,30 @@ then
 
        if test $upsclient_config_status -ne 0
        then
-               with_libupsclient="no"
+               with_libupsclient="no ($with_upsclient_config failed)"
        fi
 fi
 if test "x$with_libupsclient" = "xyes"
 then
+       SAVE_CFLAGS="$CFLAGS"
+       CFLAGS="$CFLAGS $with_upsclient_cflags"
+
+       AC_CHECK_HEADERS(upsclient.h, [], [with_libupsclient="no (upsclient.h not found)"])
+
+       CFLAGS="$SAVE_CFLAGS"
+fi
+if test "x$with_libupsclient" = "xyes"
+then
        with_upsclient_libs=`$with_upsclient_config --libs 2>/dev/null`
        upsclient_config_status=$?
 
        if test $upsclient_config_status -ne 0
        then
-               with_libupsclient="no"
+               with_libupsclient="no ($with_upsclient_config failed)"
        fi
 fi
 if test "x$with_libupsclient" = "xyes"
 then
-       CFLAGS_ORIG=$CFLAGS
-       CFLAGS="$CFLAGS $with_upsclient_cflags"
-       LDFLAGS_ORIG=$LDFLAGS
-       LDFLAGS="$LDFLAGS $with_upsclient_libs"
        AC_CHECK_LIB(upsclient, upscli_connect,
        [
                BUILD_WITH_LIBUPSCLIENT_CFLAGS="$with_upsclient_cflags"
@@ -1310,14 +1382,8 @@ then
                AC_SUBST(BUILD_WITH_LIBUPSCLIENT_LIBS)
        ],
        [
-               with_libupsclient="no"
-       ])
-       CFLAGS=$CFLAGS_ORIG
-       LDFLAGS=$LDFLAGS_ORIG
-fi
-if test "x$with_libupsclient" = "xyes"
-then
-       AC_DEFINE(HAVE_LIBUPSCLIENT, 1, [Define to 1 if you have the upsclient library (-lupsclient).])
+               with_libupsclient="no (symbol 'upscli_connect' not found)"
+       ], [$with_upsclient_libs])
 fi
 if test "x$with_libupsclient" = "xyes"
 then
@@ -1336,17 +1402,20 @@ AC_ARG_WITH(libxmms, [AS_HELP_STRING([--with-libxmms@<:@=PREFIX@:>@], [Path to l
 [
        if test "x$withval" != "xno" -a "x$withval" != "xyes"
        then
-               if test -x "$withval/bin/xmms-config"
+               if test -f "$withval" && test -x "$withval";
+               then
+                       with_xmms_config="$withval"
+               else if test -x "$withval/bin/xmms-config"
                then
                        with_xmms_config="$withval/bin/xmms-config"
-               fi
-       fi
-       if test "x$withval" = "xno"
+               fi; fi
+               with_libxmms="yes"
+       else if test "x$withval" = "xno"
        then
                with_libxmms="no"
        else
                with_libxmms="yes"
-       fi
+       fi; fi
 ],
 [
        with_libxmms="yes"
@@ -1429,12 +1498,56 @@ then
        SAVE_CFLAGS=$CFLAGS
        CFLAGS="$CFLAGS $with_libnetlink_cflags"
 
-       AC_CHECK_HEADERS(iproute/libnetlink.h, [], [with_libnetlink="no (iproute/libnetlink.h not found)"],
+       with_libnetlink="no (libnetlink.h not found)"
+
+       AC_CHECK_HEADERS(libnetlink.h iproute/libnetlink.h linux/libnetlink.h,
+       [
+        with_libnetlink="yes"
+        break
+       ], [],
 [#include <stdio.h>
 #include <sys/types.h>
+#include <asm/types.h>
 #include <sys/socket.h>
 #include <linux/netlink.h>
 #include <linux/rtnetlink.h>])
+       AC_CHECK_HEADERS(linux/gen_stats.h linux/pkt_sched.h, [], [],
+[#include <stdio.h>
+#include <sys/types.h>
+#include <asm/types.h>
+#include <sys/socket.h>])
+
+       AC_COMPILE_IFELSE(
+[#include <stdio.h>
+#include <sys/types.h>
+#include <asm/types.h>
+#include <sys/socket.h>
+#include <linux/netlink.h>
+#include <linux/rtnetlink.h>
+
+int main (void)
+{
+       int retval = TCA_STATS2;
+       return (retval);
+}],
+       [AC_DEFINE([HAVE_TCA_STATS2], 1, [True if the enum-member TCA_STATS2 exists])]
+       []);
+
+       AC_COMPILE_IFELSE(
+[#include <stdio.h>
+#include <sys/types.h>
+#include <asm/types.h>
+#include <sys/socket.h>
+#include <linux/netlink.h>
+#include <linux/rtnetlink.h>
+
+int main (void)
+{
+       int retval = TCA_STATS;
+       return (retval);
+}],
+       [AC_DEFINE([HAVE_TCA_STATS], 1, [True if the enum-member TCA_STATS exists])]
+       []);
 
        CFLAGS="$SAVE_CFLAGS"
 fi
@@ -1447,8 +1560,8 @@ then
 fi
 if test "x$with_libnetlink" = "xyes"
 then
-       BUILD_WITH_LIBNETLINK_CFLAGS="$with_curl_cflags"
-       BUILD_WITH_LIBNETLINK_LIBS="$with_curl_libs"
+       BUILD_WITH_LIBNETLINK_CFLAGS="$with_libnetlink_cflags"
+       BUILD_WITH_LIBNETLINK_LIBS="$with_libnetlink_libs"
        AC_SUBST(BUILD_WITH_LIBNETLINK_CFLAGS)
        AC_SUBST(BUILD_WITH_LIBNETLINK_LIBS)
 fi
@@ -1805,6 +1918,7 @@ Configuration:
     perl  . . . . . . . $enable_perl
     ping  . . . . . . . $enable_ping
     processes . . . . . $enable_processes
+    rrdtool . . . . . . $enable_rrdtool
     sensors . . . . . . $enable_sensors
     serial  . . . . . . $enable_serial
     snmp  . . . . . . . $enable_snmp