Merge pull request #3178 from ashie/fix-match-regex-for-empty-meta
[collectd.git] / configure.ac
1 dnl Process this file with autoconf to produce a configure script.
2 AC_PREREQ([2.60])
3 AC_INIT([collectd],[m4_esyscmd(./version-gen.sh)])
4 AC_CONFIG_SRCDIR(src/target_set.c)
5 AC_CONFIG_HEADERS(src/config.h)
6 AC_CONFIG_AUX_DIR([build-aux])
7 AC_CONFIG_MACRO_DIR([m4])
8
9 dnl older automake's default of ARFLAGS=cru is noisy on newer binutils;
10 dnl we don't really need the 'u' even in older toolchains.  Then there is
11 dnl older libtool, which spelled it AR_FLAGS
12 m4_divert_text([DEFAULTS], [: "${ARFLAGS=cr} ${AR_FLAGS=cr}"])
13
14 LT_INIT([dlopen disable-static])
15
16 AM_INIT_AUTOMAKE([subdir-objects tar-pax dist-bzip2 no-dist-gzip foreign])
17 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
18 AC_LANG(C)
19
20 AC_PREFIX_DEFAULT("/opt/collectd")
21
22 AC_SYS_LARGEFILE
23
24 #
25 # Checks for programs.
26 #
27 AC_PROG_CC_C99([],
28   [AC_MSG_ERROR([No compiler found that supports C99])]
29 )
30
31 AX_COMPILER_VENDOR
32
33 AC_PROG_CXX
34 AC_PROG_CPP
35 AC_PROG_EGREP
36 AC_PROG_INSTALL
37 AC_PROG_LN_S
38 AC_PROG_MAKE_SET
39 AM_PROG_CC_C_O
40
41 AC_PROG_LEX
42 AC_PROG_YACC
43
44 AC_PATH_PROG([VALGRIND], [valgrind])
45
46 # Warn when pkg.m4 is missing
47 m4_pattern_forbid([^_?PKG_[A-Z_]+$],[*** pkg.m4 missing, please install pkg-config])
48
49 PKG_PROG_PKG_CONFIG
50
51 AC_CACHE_CHECK([if Bison is the parser generator],
52   [collectd_cv_prog_bison],
53   [
54     AS_IF([$YACC --version 2>/dev/null | $EGREP -q '^bison '],
55       [collectd_cv_prog_bison=yes],
56       [collectd_cv_prog_bison=no]
57     )
58   ]
59 )
60
61 if test "x$collectd_cv_prog_bison" = "xno" && test ! -f "${srcdir}/src/liboconfig/parser.c"; then
62   AC_MSG_ERROR([bison is missing and you do not have ${srcdir}/src/liboconfig/parser.c. Please install bison])
63 fi
64
65 if test "x$lt_cv_dlopen" = "xno"; then
66   AC_MSG_ERROR([Your system does not support dlopen])
67 fi
68
69 AC_SUBST([DLOPEN_LIBS], [$lt_cv_dlopen_libs])
70
71
72 AC_MSG_CHECKING([for kernel type ($host_os)])
73 case $host_os in
74   *aix*)
75     AC_DEFINE([KERNEL_AIX], [1], [True if program is to be compiled for a AIX kernel])
76     ac_system="AIX"
77     ;;
78   *darwin*)
79     AC_DEFINE([KERNEL_DARWIN], [1], [True if program is to be compiled for a Darwin kernel])
80     ac_system="Darwin"
81     ;;
82   *freebsd*)
83     AC_DEFINE([KERNEL_FREEBSD], [1], [True if program is to be compiled for a FreeBSD kernel])
84     ac_system="FreeBSD"
85     ;;
86   *linux*)
87     AC_DEFINE([KERNEL_LINUX], [1], [True if program is to be compiled for a Linux kernel])
88     ac_system="Linux"
89     ;;
90   *netbsd*)
91     AC_DEFINE([KERNEL_NETBSD], [1], [True if program is to be compiled for a NetBSD kernel])
92     ac_system="NetBSD"
93     ;;
94   *openbsd*)
95     AC_DEFINE([KERNEL_OPENBSD], [1], [True if program is to be compiled for an OpenBSD kernel])
96     ac_system="OpenBSD"
97     ;;
98   *solaris*)
99     AC_DEFINE([KERNEL_SOLARIS], [1], [True if program is to be compiled for a Solaris kernel])
100     ac_system="Solaris"
101     ;;
102   *mingw32*)
103     AC_DEFINE([KERNEL_WIN32], [1], [True if program is to be compiled for a Windows kernel])
104     ac_system="Windows"
105     ;;
106   *)
107     ac_system="unknown"
108     ;;
109 esac
110 AC_MSG_RESULT([$ac_system])
111
112 AM_CONDITIONAL([BUILD_AIX], [test "x$ac_system" = "xAIX"])
113 AM_CONDITIONAL([BUILD_DARWIN], [test "x$ac_system" = "xDarwin"])
114 AM_CONDITIONAL([BUILD_FREEBSD], [test "x$ac_system" = "xFreeBSD"])
115 AM_CONDITIONAL([BUILD_LINUX], [test "x$ac_system" = "xLinux"])
116 AM_CONDITIONAL([BUILD_OPENBSD], [test "x$ac_system" = "xOpenBSD"])
117 AM_CONDITIONAL([BUILD_SOLARIS], [test "x$ac_system" = "xSolaris"])
118 AM_CONDITIONAL([BUILD_WIN32], [test "x$ac_system" = "xWindows"])
119
120 if test "x$ac_system" = "xSolaris"; then
121   AC_DEFINE([_POSIX_PTHREAD_SEMANTICS], [1], [Define to enforce POSIX thread semantics under Solaris.])
122   AC_DEFINE([_REENTRANT], [1], [Define to enable reentrancy interfaces.])
123
124   AC_MSG_CHECKING([whether compiler builds 64bit binaries])
125   AC_COMPILE_IFELSE(
126     [
127       AC_LANG_PROGRAM(
128         [
129           #ifndef _LP64
130           # error "Compiler not in 64bit mode."
131           #endif
132         ]
133       )
134     ],
135     [AC_MSG_RESULT([yes])],
136     [
137       AC_MSG_RESULT([no])
138       AC_MSG_NOTICE([Solaris detected. Please consider building a 64-bit binary.])
139     ]
140   )
141 fi
142
143 if test "x$ac_system" = "xAIX"; then
144   AC_DEFINE([_THREAD_SAFE_ERRNO], [1], [Define to use the thread-safe version of errno under AIX.])
145 fi
146
147 # Where to install .pc files.
148 pkgconfigdir="${libdir}/pkgconfig"
149 AC_SUBST([pkgconfigdir])
150
151 #
152 # Checks for header files.
153 #
154 AC_HEADER_SYS_WAIT
155 AC_HEADER_DIRENT
156
157 AC_CHECK_HEADERS_ONCE([ \
158   arpa/inet.h \
159   endian.h \
160   fcntl.h \
161   fnmatch.h \
162   fs_info.h \
163   fshelp.h \
164   grp.h \
165   kstat.h \
166   kvm.h \
167   libgen.h \
168   mntent.h \
169   mnttab.h \
170   netdb.h \
171   paths.h \
172   poll.h \
173   pthread_np.h \
174   pwd.h \
175   regex.h \
176   sys/endian.h \
177   sys/fs_types.h \
178   sys/fstyp.h \
179   sys/ioctl.h \
180   sys/isa_defs.h \
181   sys/mntent.h \
182   sys/mnttab.h \
183   sys/param.h \
184   sys/resource.h \
185   sys/select.h \
186   sys/socket.h \
187   sys/statfs.h \
188   sys/statvfs.h \
189   sys/types.h \
190   sys/un.h \
191   sys/vfs.h \
192   sys/vfstab.h \
193   sys/vmmeter.h \
194   syslog.h \
195   wordexp.h
196 ])
197
198 if test "x$ac_system" = "xNetBSD"; then
199   # For entropy plugin on newer NetBSD
200   AC_CHECK_HEADERS([sys/rndio.h], [], [],
201     [[
202       #if HAVE_SYS_TYPES_H
203       # include <sys/types.h>
204       #endif
205       #if HAVE_SYS_IOCTL_H
206       # include <sys/ioctl.h>
207       #endif
208       #if HAVE_SYS_PARAM_H
209       # include <sys/param.h>
210       #endif
211     ]]
212   )
213 fi
214
215 # For ping library
216 AC_CHECK_HEADERS([netinet/in_systm.h], [], [],
217   [[
218     #include <stdint.h>
219     #if HAVE_SYS_TYPES_H
220     # include <sys/types.h>
221     #endif
222   ]]
223 )
224
225 AC_CHECK_HEADERS([netinet/in.h], [], [],
226   [[
227     #include <stdint.h>
228     #if HAVE_SYS_TYPES_H
229     # include <sys/types.h>
230     #endif
231     #if HAVE_NETINET_IN_SYSTM_H
232     # include <netinet/in_systm.h>
233     #endif
234   ]]
235 )
236
237 AC_CHECK_HEADERS([netinet/ip.h], [], [],
238   [[
239     #include <stdint.h>
240     #if HAVE_SYS_TYPES_H
241     # include <sys/types.h>
242     #endif
243     #if HAVE_NETINET_IN_SYSTM_H
244     # include <netinet/in_systm.h>
245     #endif
246     #if HAVE_NETINET_IN_H
247     # include <netinet/in.h>
248     #endif
249   ]]
250 )
251
252 AC_CHECK_HEADERS([netinet/ip_icmp.h], [], [],
253   [[
254     #include <stdint.h>
255     #if HAVE_SYS_TYPES_H
256     # include <sys/types.h>
257     #endif
258     #if HAVE_NETINET_IN_SYSTM_H
259     # include <netinet/in_systm.h>
260     #endif
261     #if HAVE_NETINET_IN_H
262     # include <netinet/in.h>
263     #endif
264     #if HAVE_NETINET_IP_H
265     # include <netinet/ip.h>
266     #endif
267   ]]
268 )
269
270 AC_CHECK_HEADERS([netinet/ip_var.h], [], [],
271   [[
272     #include <stdint.h>
273     #if HAVE_SYS_TYPES_H
274     # include <sys/types.h>
275     #endif
276     #if HAVE_NETINET_IN_SYSTM_H
277     # include <netinet/in_systm.h>
278     #endif
279     #if HAVE_NETINET_IN_H
280     # include <netinet/in.h>
281     #endif
282     #if HAVE_NETINET_IP_H
283     # include <netinet/ip.h>
284     #endif
285   ]]
286 )
287
288 AC_CHECK_HEADERS([netinet/ip6.h], [], [],
289   [[
290     #include <stdint.h>
291     #if HAVE_SYS_TYPES_H
292     # include <sys/types.h>
293     #endif
294     #if HAVE_NETINET_IN_SYSTM_H
295     # include <netinet/in_systm.h>
296     #endif
297     #if HAVE_NETINET_IN_H
298     # include <netinet/in.h>
299     #endif
300   ]]
301 )
302
303 AC_CHECK_HEADERS([netinet/icmp6.h], [], [],
304   [[
305     #include <stdint.h>
306     #if HAVE_SYS_TYPES_H
307     # include <sys/types.h>
308     #endif
309     #if HAVE_NETINET_IN_SYSTM_H
310     # include <netinet/in_systm.h>
311     #endif
312     #if HAVE_NETINET_IN_H
313     # include <netinet/in.h>
314     #endif
315     #if HAVE_NETINET_IP6_H
316     # include <netinet/ip6.h>
317     #endif
318   ]]
319 )
320
321 AC_CHECK_HEADERS([netinet/tcp.h], [], [],
322   [[
323     #include <stdint.h>
324     #if HAVE_SYS_TYPES_H
325     # include <sys/types.h>
326     #endif
327     #if HAVE_NETINET_IN_SYSTM_H
328     # include <netinet/in_systm.h>
329     #endif
330     #if HAVE_NETINET_IN_H
331     # include <netinet/in.h>
332     #endif
333     #if HAVE_NETINET_IP_H
334     # include <netinet/ip.h>
335     #endif
336   ]]
337 )
338
339 AC_CHECK_HEADERS([netinet/udp.h], [], [],
340   [[
341     #include <stdint.h>
342     #if HAVE_SYS_TYPES_H
343     # include <sys/types.h>
344     #endif
345     #if HAVE_NETINET_IN_SYSTM_H
346     # include <netinet/in_systm.h>
347     #endif
348     #if HAVE_NETINET_IN_H
349     # include <netinet/in.h>
350     #endif
351     #if HAVE_NETINET_IP_H
352     # include <netinet/ip.h>
353     #endif
354   ]]
355 )
356
357 # For cpu modules
358 AC_CHECK_HEADERS([sys/dkstat.h])
359 if test "x$ac_system" = "xDarwin"; then
360   AC_CHECK_HEADERS(
361     [ \
362       mach/mach_init.h \
363       mach/host_priv.h \
364       mach/mach_error.h \
365       mach/mach_host.h \
366       mach/mach_port.h \
367       mach/mach_types.h \
368       mach/message.h \
369       mach/processor_set.h \
370       mach/processor.h \
371       mach/processor_info.h \
372       mach/task.h \
373       mach/thread_act.h \
374       mach/vm_region.h \
375       mach/vm_map.h \
376       mach/vm_prot.h \
377       mach/vm_statistics.h \
378       mach/kern_return.h \
379       CoreFoundation/CoreFoundation.h \
380       IOKit/IOKitLib.h \
381       IOKit/IOTypes.h \
382       IOKit/ps/IOPSKeys.h \
383       IOKit/IOBSD.h \
384       IOKit/storage/IOBlockStorageDriver.h
385     ]
386   )
387
388   # For the battery plugin
389   AC_CHECK_HEADERS([IOKit/ps/IOPowerSources.h], [], [],
390     [[
391       #if HAVE_IOKIT_IOKITLIB_H
392       #  include <IOKit/IOKitLib.h>
393       #endif
394       #if HAVE_IOKIT_IOTYPES_H
395       #  include <IOKit/IOTypes.h>
396       #endif
397     ]]
398   )
399 fi
400
401 AC_CHECK_HEADERS([sys/sysctl.h], [], [],
402   [[
403     #if HAVE_SYS_TYPES_H
404     #  include <sys/types.h>
405     #endif
406     #if HAVE_SYS_PARAM_H
407     # include <sys/param.h>
408     #endif
409   ]]
410 )
411
412 # For interface plugin
413 AC_CHECK_HEADERS([ifaddrs.h])
414 AC_CHECK_HEADERS([net/if.h], [], [],
415   [[
416     #if HAVE_SYS_TYPES_H
417     #  include <sys/types.h>
418     #endif
419     #if HAVE_SYS_SOCKET_H
420     #  include <sys/socket.h>
421     #endif
422   ]]
423 )
424
425 if test "x$ac_system" = "xLinux"; then
426   # For hddtemp module
427   AC_CHECK_HEADERS([linux/major.h])
428
429   # For md module (Linux only)
430   AC_CHECK_HEADERS([linux/raid/md_u.h],
431     [have_linux_raid_md_u_h="yes"],
432     [have_linux_raid_md_u_h="no"],
433     [[
434       #include <sys/ioctl.h>
435       #include <linux/major.h>
436       #include <linux/types.h>
437     ]]
438   )
439   AC_CHECK_HEADERS([sys/sysmacros.h])
440
441   AC_CHECK_HEADERS([linux/wireless.h],
442     [have_linux_wireless_h="yes"],
443     [have_linux_wireless_h="no"],
444     [[
445       #include <dirent.h>
446       #include <sys/ioctl.h>
447       #include <sys/socket.h>
448     ]]
449   )
450
451   AC_CHECK_HEADERS([linux/if.h], [], [],
452     [[
453       #if HAVE_SYS_TYPES_H
454       #  include <sys/types.h>
455       #endif
456       #if HAVE_SYS_SOCKET_H
457       #  include <sys/socket.h>
458       #endif
459     ]]
460   )
461
462   AC_CHECK_HEADERS([linux/inet_diag.h], [], [],
463     [[
464       #if HAVE_SYS_TYPES_H
465       #  include <sys/types.h>
466       #endif
467       #if HAVE_SYS_SOCKET_H
468       #  include <sys/socket.h>
469       #endif
470     ]]
471   )
472
473   AC_CHECK_HEADERS([linux/netdevice.h], [], [],
474     [[
475       #if HAVE_SYS_TYPES_H
476       #  include <sys/types.h>
477       #endif
478       #if HAVE_SYS_SOCKET_H
479       #  include <sys/socket.h>
480       #endif
481       #if HAVE_LINUX_IF_H
482       # include <linux/if.h>
483       #endif
484     ]]
485   )
486
487   # For ethstat module
488   AC_CHECK_HEADERS([linux/sockios.h],
489     [have_linux_sockios_h="yes"],
490     [have_linux_sockios_h="no"],
491     [[
492       #if HAVE_SYS_IOCTL_H
493       # include <sys/ioctl.h>
494       #endif
495       #if HAVE_NET_IF_H
496       # include <net/if.h>
497       #endif
498     ]]
499   )
500
501   AC_CHECK_HEADERS([linux/ethtool.h],
502     [have_linux_ethtool_h="yes"],
503     [have_linux_ethtool_h="no"],
504     [[
505       #if HAVE_SYS_IOCTL_H
506       # include <sys/ioctl.h>
507       #endif
508       #if HAVE_NET_IF_H
509       # include <net/if.h>
510       #endif
511       #if HAVE_LINUX_SOCKIOS_H
512       # include <linux/sockios.h>
513       #endif
514     ]]
515   )
516
517   # For ipvs module
518   AC_CHECK_HEADERS_ONCE([linux/ip_vs.h])
519
520   # For the email plugin
521   AC_CHECK_HEADERS([linux/un.h], [], [],
522     [[
523       #if HAVE_SYS_SOCKET_H
524       #  include <sys/socket.h>
525       #endif
526     ]]
527   )
528   # For the turbostat plugin
529   AC_CHECK_HEADERS([cpuid.h],
530     [have_cpuid_h="yes"],
531     [have_cpuid_h="no (cpuid.h not found)"]
532   )
533
534   AC_CHECK_HEADERS([sys/capability.h],
535     [have_capability="yes"],
536     [have_capability="no (<sys/capability.h> not found)"]
537   )
538
539   if test "x$have_capability" = "xyes"; then
540     AC_CHECK_LIB([cap], [cap_get_proc],
541       [have_capability="yes"],
542       [have_capability="no (cap_get_proc() not found)"]
543     )
544   fi
545
546   if test "x$have_capability" = "xyes"; then
547     AC_CHECK_DECL([CAP_IS_SUPPORTED],
548       [have_capability="yes"],
549       [have_capability="no (CAP_IS_SUPPORTED not found)"],
550       [[#include <sys/capability.h>]]
551     )
552   fi
553
554   if test "x$have_capability" = "xyes"; then
555     AC_DEFINE([HAVE_CAPABILITY], [1], [Define to 1 if you have cap_get_proc() (-lcap).])
556   fi
557
558   # For pcie_errors plugin
559   AC_CHECK_HEADERS([linux/pci_regs.h],
560     [have_pci_regs_h="yes"],
561     [have_pci_regs_h="no (linux/pci_regs.h not found)"]
562   )
563
564 else
565   have_linux_raid_md_u_h="no"
566   have_linux_wireless_h="no"
567 fi
568
569 AM_CONDITIONAL([BUILD_WITH_CAPABILITY], [test "x$have_capability" = "xyes"])
570
571 # For the swap module
572 have_sys_swap_h="yes"
573 AC_CHECK_HEADERS([sys/swap.h vm/anon.h],
574   [],
575   [have_sys_swap_h="no"],
576   [[
577     #undef _FILE_OFFSET_BITS
578     #undef _LARGEFILE64_SOURCE
579     #if HAVE_SYS_TYPES_H
580     #  include <sys/types.h>
581     #endif
582     #if HAVE_SYS_PARAM_H
583     # include <sys/param.h>
584     #endif
585   ]]
586 )
587
588 # For load module
589 # For the processes plugin
590 # For users module
591 AC_CHECK_HEADERS([sys/loadavg.h linux/config.h utmp.h utmpx.h])
592
593 # For quota module
594 AC_CHECK_HEADERS([sys/ucred.h], [], [],
595   [[
596     #if HAVE_SYS_TYPES_H
597     #  include <sys/types.h>
598     #endif
599     #if HAVE_SYS_PARAM_H
600     # include <sys/param.h>
601     #endif
602   ]]
603 )
604
605 # For mount interface
606 AC_CHECK_HEADERS([sys/mount.h], [], [],
607   [[
608     #if HAVE_SYS_TYPES_H
609     #  include <sys/types.h>
610     #endif
611     #if HAVE_SYS_PARAM_H
612     # include <sys/param.h>
613     #endif
614   ]]
615 )
616
617 # --enable-xfs {{{
618 AC_ARG_ENABLE([xfs],
619   [AS_HELP_STRING([--enable-xfs], [xfs support in df plugin @<:@default=yes@:>@])],
620   [],
621   [enable_xfs="auto"]
622 )
623
624 if test "x$enable_xfs" != "xno"; then
625   AC_CHECK_HEADERS([xfs/xqm.h],
626     [],
627     [
628       if test "x$enable_xfs" = "xyes"; then
629         AC_MSG_ERROR([xfs/xqm.h not found])
630       fi
631     ],
632     [[#define _GNU_SOURCE]]
633   )
634 fi
635
636 # }}}
637
638 AC_CHECK_HEADERS([net/if_arp.h], [], [],
639   [[
640     #if HAVE_SYS_SOCKET_H
641     # include <sys/socket.h>
642     #endif
643   ]]
644 )
645
646 AC_CHECK_HEADERS([net/ppp_defs.h])
647 AC_CHECK_HEADERS([net/if_ppp.h], [], [],
648   [[
649     #if HAVE_NET_PPP_DEFS_H
650     # include <net/ppp_defs.h>
651     #endif
652   ]]
653 )
654
655 AC_CHECK_HEADERS([netinet/if_ether.h], [], [],
656   [[
657     #include <stdint.h>
658     #if HAVE_SYS_TYPES_H
659     # include <sys/types.h>
660     #endif
661     #if HAVE_SYS_SOCKET_H
662     # include <sys/socket.h>
663     #endif
664     #if HAVE_NET_IF_H
665     # include <net/if.h>
666     #endif
667     #if HAVE_NETINET_IN_H
668     # include <netinet/in.h>
669     #endif
670   ]]
671 )
672
673 AC_CHECK_HEADERS([net/pfvar.h],
674   [have_net_pfvar_h="yes"],
675   [have_net_pfvar_h="no"],
676   [[
677     #if HAVE_SYS_IOCTL_H
678     # include <sys/ioctl.h>
679     #endif
680     #if HAVE_SYS_SOCKET_H
681     # include <sys/socket.h>
682     #endif
683     #if HAVE_NET_IF_H
684     # include <net/if.h>
685     #endif
686     #if HAVE_NETINET_IN_H
687     # include <netinet/in.h>
688     #endif
689   ]]
690 )
691
692 # For the multimeter plugin
693 AC_CHECK_HEADERS([termios.h],
694   [have_termios_h="yes"],
695   [have_termios_h="no"]
696 )
697
698 # For cpusleep plugin
699 AC_CACHE_CHECK([whether clock_boottime and clock_monotonic are supported],
700   [c_cv_have_clock_boottime_monotonic],
701   [
702     AC_COMPILE_IFELSE(
703       [AC_LANG_PROGRAM(
704         [[#include <time.h>]],
705         [[
706           struct timespec b, m;
707           clock_gettime(CLOCK_BOOTTIME, &b );
708           clock_gettime(CLOCK_MONOTONIC, &m );
709         ]]
710       )
711       ],
712       [c_cv_have_clock_boottime_monotonic="yes"],
713       [c_cv_have_clock_boottime_monotonic="no"]
714     )
715   ]
716 )
717
718
719 #
720 # Checks for typedefs, structures, and compiler characteristics.
721 #
722 AC_C_CONST
723 AC_TYPE_PID_T
724 AC_TYPE_SIZE_T
725 AC_TYPE_UID_T
726 AC_HEADER_TIME
727
728 test_cxx_flags() {
729   AC_LANG_PUSH([C++])
730   AC_LANG_CONFTEST(
731     [AC_LANG_SOURCE([[int main(void){}]]) ]
732   )
733   $CXX -c conftest.cpp $CXXFLAGS $@ > /dev/null 2> /dev/null
734   ret=$?
735   rm -f conftest.o
736   AC_LANG_POP([C++])
737   return $ret
738 }
739
740 #
741 # Checks for library functions.
742 #
743 AC_CHECK_FUNCS_ONCE([ \
744     asprintf \
745     closelog \
746     getaddrinfo \
747     getgrnam_r \
748     getnameinfo \
749     getpwnam \
750     getpwnam_r \
751     gettimeofday \
752     if_indextoname \
753     openlog \
754     regcomp \
755     regerror \
756     regexec \
757     regfree \
758     select \
759     setenv \
760     setgroups \
761     strcasecmp \
762     strdup \
763     strncasecmp \
764     sysconf
765   ]
766 )
767
768 AC_FUNC_STRERROR_R
769
770 if test "x$GCC" = "xyes"; then
771   SAVE_CFLAGS="$CFLAGS"
772   CFLAGS="$CFLAGS -Wall -Werror"
773 fi
774 SAVE_LDFLAGS="$LDFLAGS"
775 LDFLAGS=""
776 if test "x$ac_system" = "xWindows"; then
777   # This is exported from build.sh
778   LDFLAGS="$LDFLAGS -L${GNULIB_DIR}"
779 fi
780
781 AC_CACHE_CHECK([for strtok_r],
782   [c_cv_have_strtok_r_default],
783   [
784     AC_LINK_IFELSE(
785       [
786         AC_LANG_PROGRAM(
787           [[
788             #include <stdlib.h>
789             #include <stdio.h>
790             #include <string.h>
791           ]],
792           [[
793             char buffer[] = "foo,bar,baz";
794             char *token;
795             char *dummy;
796             char *saveptr;
797
798             dummy = buffer;
799             saveptr = NULL;
800             while ((token = strtok_r (dummy, ",", &saveptr)) != NULL)
801             {
802               dummy = NULL;
803               printf ("token = %s;\n", token);
804             }
805           ]]
806         )
807       ],
808       [c_cv_have_strtok_r_default="yes"],
809       [c_cv_have_strtok_r_default="no"]
810     )
811   ]
812 )
813
814 if test "x$c_cv_have_strtok_r_default" = "xno"; then
815   CFLAGS="$CFLAGS -D_REENTRANT=1"
816
817   AC_CACHE_CHECK([if strtok_r needs _REENTRANT],
818     [c_cv_have_strtok_r_reentrant],
819     [
820       AC_LINK_IFELSE(
821         [
822           AC_LANG_PROGRAM(
823             [[
824               #include <stdlib.h>
825               #include <stdio.h>
826               #include <string.h>
827             ]],
828             [[
829               char buffer[] = "foo,bar,baz";
830               char *token;
831               char *dummy;
832               char *saveptr;
833
834               dummy = buffer;
835               saveptr = NULL;
836               while ((token = strtok_r (dummy, ",", &saveptr)) != NULL)
837               {
838                 dummy = NULL;
839                 printf ("token = %s;\n", token);
840               }
841             ]]
842           )
843         ],
844         [c_cv_have_strtok_r_reentrant="yes"],
845         [AC_MSG_FAILURE([strtok_r is not available. Please file a bugreport!])]
846       )
847     ]
848   )
849 fi
850
851 CFLAGS="$SAVE_CFLAGS"
852 LDFLAGS="$SAVE_LDFLAGS"
853 if test "x$c_cv_have_strtok_r_reentrant" = "xyes"; then
854   CFLAGS="$CFLAGS -D_REENTRANT=1"
855 fi
856
857 AC_CHECK_FUNCS([socket],
858   [],
859   [
860     AC_CHECK_LIB([socket], [socket],
861       [socket_needs_socket="yes"],
862       [
863         AC_CHECK_LIB([gnu], [rpl_socket],
864           [socket_needs_gnulib="yes"],
865           [AC_MSG_ERROR([cannot find socket() in libsocket])]
866         )
867       ]
868     )
869   ]
870 )
871 AM_CONDITIONAL([BUILD_WITH_LIBSOCKET], [test "x$socket_needs_socket" = "xyes"])
872 AM_CONDITIONAL([BUILD_WITH_GNULIB], [test "x$socket_needs_gnulib" = "xyes"])
873
874 clock_gettime_needs_posix4="no"
875 AC_CHECK_FUNCS([clock_gettime],
876   [have_clock_gettime="yes"],
877   [have_clock_gettime="no"]
878 )
879
880 if test "x$have_clock_gettime" = "xno"; then
881   AC_CHECK_LIB([rt], [clock_gettime],
882     [
883       clock_gettime_needs_rt="yes"
884       have_clock_gettime="yes"
885     ]
886   )
887 fi
888
889 if test "x$have_clock_gettime" = "xno"; then
890   AC_CHECK_LIB([posix4], [clock_gettime],
891     [
892       clock_gettime_needs_posix4="yes"
893       have_clock_gettime="yes"
894     ]
895   )
896 fi
897
898 if test "x$have_clock_gettime" = "xyes"; then
899   AC_DEFINE([HAVE_CLOCK_GETTIME], [1], [Define if the clock_gettime(2) function is available.])
900 fi
901
902 AC_CHECK_FUNCS([nanosleep], [],
903   AC_CHECK_LIB([rt], [nanosleep],
904     [nanosleep_needs_rt="yes"],
905     [
906       AC_CHECK_LIB([posix4], [nanosleep],
907         [nanosleep_needs_posix4="yes"],
908         [AC_MSG_ERROR([cannot find nanosleep])]
909       )
910     ]
911   )
912 )
913
914 AM_CONDITIONAL([BUILD_WITH_LIBRT], [test "x$clock_gettime_needs_rt" = "xyes" || test "x$nanosleep_needs_rt" = "xyes"])
915 AM_CONDITIONAL([BUILD_WITH_LIBPOSIX4], [test "x$clock_gettime_needs_posix4" = "xyes" || test "x$nanosleep_needs_posix4" = "xyes"])
916
917 AC_CHECK_FUNCS([getifaddrs], [have_getifaddrs="yes"], [have_getifaddrs="no"])
918 AC_CHECK_FUNCS([getloadavg], [have_getloadavg="yes"], [have_getloadavg="no"])
919 AC_CHECK_FUNCS([getutent], [have_getutent="yes"], [have_getutent="no"])
920 AC_CHECK_FUNCS([getutxent], [have_getutxent="yes"], [have_getutxent="no"])
921 AC_CHECK_FUNCS([host_statistics], [have_host_statistics="yes"], [have_host_statistics="no"])
922 AC_CHECK_FUNCS([processor_info], [have_processor_info="yes"], [have_processor_info="no"])
923 AC_CHECK_FUNCS([statfs], [have_statfs="yes"], [have_statfs="no"])
924 AC_CHECK_FUNCS([statvfs], [have_statvfs="yes"], [have_statvfs="no"])
925 AC_CHECK_FUNCS([sysctl], [have_sysctl="yes"], [have_sysctl="no"])
926 AC_CHECK_FUNCS([sysctlbyname], [have_sysctlbyname="yes"], [have_sysctlbyname="no"])
927 AC_CHECK_FUNCS([syslog], [have_syslog="yes"], [have_syslog="no"])
928 AC_CHECK_FUNCS([thread_info], [have_thread_info="yes"], [have_thread_info="no"])
929
930 # Check for strptime {{{
931 if test "x$GCC" = "xyes"; then
932   SAVE_CFLAGS="$CFLAGS"
933   CFLAGS="$CFLAGS -Wall -Wextra -Werror"
934 fi
935
936 AC_CHECK_FUNCS([strptime], [have_strptime="yes"], [have_strptime="no"])
937 if test "x$have_strptime" = "xyes"; then
938   AC_CACHE_CHECK([whether strptime is exported by default],
939     [c_cv_have_strptime_default],
940     [
941       AC_COMPILE_IFELSE(
942         [
943           AC_LANG_PROGRAM(
944             [[#include <time.h>]],
945             [[
946               struct tm stm;
947               (void)strptime ("2010-12-30%13:42:42", "%Y-%m-%dT%T", &stm);
948             ]]
949           )
950         ],
951         [c_cv_have_strptime_default="yes"],
952         [c_cv_have_strptime_default="no"])
953     ]
954   )
955 fi
956
957 if test "x$have_strptime" = "xyes" && test "x$c_cv_have_strptime_default" = "xno"; then
958   AC_CACHE_CHECK([whether strptime needs standards mode],
959     [c_cv_have_strptime_standards],
960     [
961       AC_COMPILE_IFELSE(
962         [
963           AC_LANG_PROGRAM(
964             [[
965               #ifndef _ISOC99_SOURCE
966               # define _ISOC99_SOURCE 1
967               #endif
968               #ifndef _POSIX_C_SOURCE
969               # define _POSIX_C_SOURCE 200112L
970               #endif
971               #ifndef _XOPEN_SOURCE
972               # define _XOPEN_SOURCE 500
973               #endif
974               #include <time.h>
975             ]],
976             [[
977               struct tm stm;
978               (void)strptime ("2010-12-30%13:42:42", "%Y-%m-%dT%T", &stm);
979             ]]
980           )
981         ],
982         [c_cv_have_strptime_standards="yes"],
983         [c_cv_have_strptime_standards="no"]
984       )
985     ]
986   )
987
988   if test "x$c_cv_have_strptime_standards" = "xyes"; then
989     AC_DEFINE([STRPTIME_NEEDS_STANDARDS], [1],
990       [Set to true if strptime is only exported in X/Open mode (GNU libc).]
991     )
992   else
993     have_strptime="no"
994   fi
995 fi
996
997 if test "x$GCC" = "xyes"; then
998   CFLAGS="$SAVE_CFLAGS"
999 fi
1000 # }}} Check for strptime
1001
1002 # Check for timegm {{{
1003
1004 # These checks need -Werror because implicit function declarations are only a
1005 # warning ...
1006 SAVE_CFLAGS="$CFLAGS"
1007 CFLAGS="$CFLAGS -Werror"
1008
1009 AC_CACHE_CHECK([for timegm],
1010   [c_cv_have_timegm],
1011   AC_LINK_IFELSE(
1012     [AC_LANG_PROGRAM(
1013 [[[
1014 #if STRPTIME_NEEDS_STANDARDS
1015 # ifndef _ISOC99_SOURCE
1016 #  define _ISOC99_SOURCE 1
1017 # endif
1018 # ifndef _POSIX_C_SOURCE
1019 #  define _POSIX_C_SOURCE 200112L
1020 # endif
1021 # ifndef _XOPEN_SOURCE
1022 #  define _XOPEN_SOURCE 500
1023 # endif
1024 #endif
1025 #include <time.h>
1026 ]]],
1027 [[[
1028  time_t t = timegm(&(struct tm){0});
1029  if (t == ((time_t) -1)) {
1030    return 1;
1031  }
1032 ]]]
1033     )],
1034     [c_cv_have_timegm="yes"],
1035     [c_cv_have_timegm="no"]
1036   )
1037 )
1038
1039 if test "x$c_cv_have_timegm" != "xyes"
1040 then
1041   AC_CACHE_CHECK([for timegm with _BSD_SOURCE],
1042     [c_cv_have_timegm_bsd],
1043     AC_LINK_IFELSE(
1044       [AC_LANG_PROGRAM(
1045 [[[
1046 #if STRPTIME_NEEDS_STANDARDS
1047 # ifndef _ISOC99_SOURCE
1048 #  define _ISOC99_SOURCE 1
1049 # endif
1050 # ifndef _POSIX_C_SOURCE
1051 #  define _POSIX_C_SOURCE 200112L
1052 # endif
1053 # ifndef _XOPEN_SOURCE
1054 #  define _XOPEN_SOURCE 500
1055 # endif
1056 #endif
1057 #ifndef _BSD_SOURCE
1058 # define _BSD_SOURCE 1
1059 #endif
1060 #include <time.h>
1061 ]]],
1062 [[[
1063  time_t t = timegm(&(struct tm){0});
1064  if (t == ((time_t) -1)) {
1065    return 1;
1066  }
1067 ]]]
1068       )],
1069       [c_cv_have_timegm_bsd="yes"
1070        c_cv_have_timegm="yes"],
1071       [c_cv_have_timegm_bsd="no"]
1072     )
1073   )
1074 fi
1075
1076 if test "x$c_cv_have_timegm" = "xyes"
1077 then
1078   AC_DEFINE(HAVE_TIMEGM, 1, [Define if the timegm(3) function is available.])
1079   if test "x$c_cv_have_timegm_bsd" = "xyes"
1080   then
1081     AC_DEFINE(TIMEGM_NEEDS_BSD, 1, [Set to true if timegm is only exported in BSD mode.])
1082   fi
1083 fi
1084
1085 CFLAGS="$SAVE_CFLAGS"
1086 # }}} Check for timegm
1087
1088 AC_MSG_CHECKING([for sysctl kern.cp_times])
1089 if test -x /sbin/sysctl; then
1090   /sbin/sysctl kern.cp_times >/dev/null 2>&1
1091   if test $? -eq 0; then
1092     AC_MSG_RESULT([yes])
1093     AC_DEFINE([HAVE_SYSCTL_KERN_CP_TIMES], [1], [Define if sysctl supports kern.cp_times])
1094   else
1095     AC_MSG_RESULT([no])
1096   fi
1097 else
1098   AC_MSG_RESULT([no])
1099 fi
1100
1101 AC_MSG_CHECKING([for sysctl kern.cp_time])
1102 if test -x /sbin/sysctl; then
1103   /sbin/sysctl kern.cp_time >/dev/null 2>&1
1104   if test $? -eq 0
1105   then
1106     AC_MSG_RESULT([yes])
1107     AC_DEFINE([HAVE_SYSCTL_KERN_CP_TIME], [1], [Define if sysctl supports kern.cp_time])
1108   else
1109     AC_MSG_RESULT([no])
1110   fi
1111 else
1112   AC_MSG_RESULT([no])
1113 fi
1114
1115 AC_CHECK_FUNCS([swapctl], [have_swapctl="yes"], [have_swapctl="no"])
1116 if test "x$have_swapctl" = "xyes"; then
1117   AC_CACHE_CHECK([whether swapctl takes two arguments],
1118     [c_cv_have_swapctl_two_args],
1119     [
1120       AC_COMPILE_IFELSE(
1121         [
1122           AC_LANG_PROGRAM(
1123             [[
1124               #if HAVE_SYS_SWAP_H && !defined(_LP64) && _FILE_OFFSET_BITS == 64
1125               #  undef _FILE_OFFSET_BITS
1126               #  undef _LARGEFILE64_SOURCE
1127               #endif
1128               #include <sys/stat.h>
1129               #include <sys/param.h>
1130               #include <sys/swap.h>
1131               #include <unistd.h>
1132             ]],
1133             [[int num = swapctl(0, NULL);]]
1134           )
1135         ],
1136         [c_cv_have_swapctl_two_args="yes"],
1137         [c_cv_have_swapctl_two_args="no"]
1138       )
1139     ]
1140   )
1141
1142   AC_CACHE_CHECK([whether swapctl takes three arguments],
1143     [c_cv_have_swapctl_three_args],
1144     [
1145       AC_COMPILE_IFELSE(
1146         [
1147           AC_LANG_PROGRAM(
1148             [[
1149               #if HAVE_SYS_SWAP_H && !defined(_LP64) && _FILE_OFFSET_BITS == 64
1150               #  undef _FILE_OFFSET_BITS
1151               #  undef _LARGEFILE64_SOURCE
1152               #endif
1153               #include <sys/stat.h>
1154               #include <sys/param.h>
1155               #include <sys/swap.h>
1156               #include <unistd.h>
1157             ]],
1158             [[int num = swapctl(0, NULL, 0);]]
1159           )
1160         ],
1161         [c_cv_have_swapctl_three_args="yes"],
1162         [c_cv_have_swapctl_three_args="no"]
1163       )
1164     ]
1165   )
1166 fi
1167
1168 # Check for different versions of `swapctl' here..
1169 if test "x$have_swapctl" = "xyes"; then
1170   if test "x$c_cv_have_swapctl_two_args" = "xyes"; then
1171     AC_DEFINE([HAVE_SWAPCTL_TWO_ARGS], [1], [Define if the function swapctl exists and takes two arguments.])
1172   fi
1173
1174   if test "x$c_cv_have_swapctl_three_args" = "xyes"; then
1175     AC_DEFINE([HAVE_SWAPCTL_THREE_ARGS], [1], [Define if the function swapctl exists and takes three arguments.])
1176   fi
1177 fi
1178
1179 # Check for NAN
1180 AC_ARG_WITH([nan-emulation],
1181   [AS_HELP_STRING([--with-nan-emulation], [use emulated NAN. For crosscompiling only.])],
1182   [
1183     if test "x$withval" = "xno"; then
1184       nan_type="none"
1185     else if test "x$withval" = "xyes"; then
1186       nan_type="zero"
1187     else
1188       nan_type="$withval"
1189     fi; fi
1190   ],
1191   [nan_type="none"]
1192 )
1193
1194 if test "x$nan_type" = "xnone"; then
1195   AC_CACHE_CHECK([whether NAN is defined by default],
1196     [c_cv_have_nan_default],
1197     [
1198       AC_COMPILE_IFELSE(
1199         [
1200           AC_LANG_PROGRAM(
1201             [[
1202               #include <stdlib.h>
1203               #include <math.h>
1204               static double foo = NAN;
1205             ]],
1206             [[
1207               if (isnan (foo))
1208                 return 0;
1209               return 1;
1210             ]]
1211           )
1212         ],
1213         [c_cv_have_nan_default="yes"],
1214         [c_cv_have_nan_default="no"]
1215       )
1216     ]
1217   )
1218 fi
1219
1220 if test "x$c_cv_have_nan_default" = "xyes"; then
1221   nan_type="default"
1222 fi
1223
1224 if test "x$nan_type" = "xnone"; then
1225   AC_CACHE_CHECK([whether NAN is defined by __USE_ISOC99],
1226     [c_cv_have_nan_isoc],
1227     [
1228       AC_COMPILE_IFELSE(
1229         [
1230           AC_LANG_PROGRAM(
1231             [[
1232               #include <stdlib.h>
1233               #define __USE_ISOC99 1
1234               #include <math.h>
1235               static double foo = NAN;
1236             ]],
1237             [[
1238               if (isnan (foo))
1239                 return 0;
1240               return 1;
1241             ]]
1242           )
1243         ],
1244         [c_cv_have_nan_isoc="yes"],
1245         [c_cv_have_nan_isoc="no"]
1246       )
1247     ]
1248   )
1249 fi
1250
1251 if test "x$c_cv_have_nan_isoc" = "xyes"; then
1252   nan_type="isoc99"
1253 fi
1254
1255 if test "x$nan_type" = "xnone"; then
1256   SAVE_LDFLAGS="$LDFLAGS"
1257   LDFLAGS="$LDFLAGS -lm"
1258   AC_CACHE_CHECK([whether NAN can be defined by 0/0],
1259     [c_cv_have_nan_zero],
1260     [
1261       AC_RUN_IFELSE(
1262         [
1263           AC_LANG_PROGRAM(
1264             [[
1265               #include <stdlib.h>
1266               #include <math.h>
1267               #ifdef NAN
1268               # undef NAN
1269               #endif
1270               #define NAN (0.0 / 0.0)
1271               #ifndef isnan
1272               # define isnan(f) ((f) != (f))
1273               #endif
1274               static double foo = NAN;
1275             ]],
1276             [[
1277               if (isnan (foo))
1278                 return 0;
1279               return 1;
1280             ]]
1281           )
1282         ],
1283         [c_cv_have_nan_zero="yes"],
1284         [c_cv_have_nan_zero="no"]
1285       )
1286     ]
1287   )
1288   LDFLAGS=$SAVE_LDFLAGS
1289 fi
1290
1291 if test "x$c_cv_have_nan_zero" = "xyes"; then
1292   nan_type="zero"
1293 fi
1294
1295 if test "x$nan_type" = "xdefault"; then
1296   AC_DEFINE([NAN_STATIC_DEFAULT], [1],
1297     [Define if NAN is defined by default and can initialize static variables.]
1298   )
1299 else if test "x$nan_type" = "xisoc99"; then
1300   AC_DEFINE([NAN_STATIC_ISOC], [1],
1301     [Define if NAN is defined by __USE_ISOC99 and can initialize static variables.]
1302   )
1303 else if test "x$nan_type" = "xzero"; then
1304   AC_DEFINE([NAN_ZERO_ZERO], [1],
1305     [Define if NAN can be defined as (0.0 / 0.0)]
1306   )
1307 else
1308   AC_MSG_ERROR([Didn't find out how to statically initialize variables to NAN. Sorry.])
1309 fi; fi; fi
1310
1311 AC_ARG_WITH([fp-layout],
1312   [
1313     AS_HELP_STRING([--with-fp-layout],
1314       [set the memory layout of doubles. For crosscompiling only.]
1315     )
1316   ],
1317   [
1318     if test "x$withval" = "xnothing"; then
1319       fp_layout_type="nothing"
1320     else if test "x$withval" = "xendianflip"; then
1321       fp_layout_type="endianflip"
1322     else if test "x$withval" = "xintswap"; then
1323       fp_layout_type="intswap"
1324     else
1325       AC_MSG_ERROR([Invalid argument for --with-fp-layout. Valid arguments are: nothing, endianflip, intswap]);
1326     fi; fi; fi
1327   ],
1328   [fp_layout_type="unknown"]
1329 )
1330
1331 if test "x$fp_layout_type" = "xunknown"; then
1332   AC_CACHE_CHECK([if doubles are stored in x86 representation],
1333     [c_cv_fp_layout_need_nothing],
1334     [
1335       AC_RUN_IFELSE(
1336         [
1337           AC_LANG_PROGRAM(
1338             [[
1339               #include <stdlib.h>
1340               #include <stdio.h>
1341               #include <string.h>
1342               #include <stdint.h>
1343               #include <inttypes.h>
1344               #include <stdbool.h>
1345             ]],
1346             [[
1347               uint64_t i0;
1348               uint64_t i1;
1349               uint8_t c[8];
1350               double d;
1351
1352               d = 8.642135e130;
1353               memcpy ((void *) &i0, (void *) &d, 8);
1354
1355               i1 = i0;
1356               memcpy ((void *) c, (void *) &i1, 8);
1357
1358               if ((c[0] == 0x2f) && (c[1] == 0x25)
1359                   && (c[2] == 0xc0) && (c[3] == 0xc7)
1360                   && (c[4] == 0x43) && (c[5] == 0x2b)
1361                   && (c[6] == 0x1f) && (c[7] == 0x5b))
1362                 return 0;
1363               return 1;
1364             ]]
1365           )
1366         ],
1367         [c_cv_fp_layout_need_nothing="yes"],
1368         [c_cv_fp_layout_need_nothing="no"]
1369       )
1370     ]
1371   )
1372 fi
1373
1374 if test "x$c_cv_fp_layout_need_nothing" = "xyes"; then
1375   fp_layout_type="nothing"
1376 fi
1377
1378 if test "x$fp_layout_type" = "xunknown"; then
1379   AC_CACHE_CHECK([if endianflip converts to x86 representation],
1380     [c_cv_fp_layout_need_endianflip],
1381     [
1382       AC_RUN_IFELSE(
1383         [
1384           AC_LANG_PROGRAM(
1385             [[
1386               #include <stdlib.h>
1387               #include <stdio.h>
1388               #include <string.h>
1389               #include <stdint.h>
1390               #include <inttypes.h>
1391               #include <stdbool.h>
1392               #define endianflip(A) ((((uint64_t)(A) & 0xff00000000000000LL) >> 56) | \
1393                                      (((uint64_t)(A) & 0x00ff000000000000LL) >> 40) | \
1394                                      (((uint64_t)(A) & 0x0000ff0000000000LL) >> 24) | \
1395                                      (((uint64_t)(A) & 0x000000ff00000000LL) >> 8)  | \
1396                                      (((uint64_t)(A) & 0x00000000ff000000LL) << 8)  | \
1397                                      (((uint64_t)(A) & 0x0000000000ff0000LL) << 24) | \
1398                                      (((uint64_t)(A) & 0x000000000000ff00LL) << 40) | \
1399                                      (((uint64_t)(A) & 0x00000000000000ffLL) << 56))
1400             ]],
1401             [[
1402               uint64_t i0;
1403               uint64_t i1;
1404               uint8_t c[8];
1405               double d;
1406
1407               d = 8.642135e130;
1408               memcpy ((void *) &i0, (void *) &d, 8);
1409
1410               i1 = endianflip (i0);
1411               memcpy ((void *) c, (void *) &i1, 8);
1412
1413               if ((c[0] == 0x2f) && (c[1] == 0x25)
1414                   && (c[2] == 0xc0) && (c[3] == 0xc7)
1415                   && (c[4] == 0x43) && (c[5] == 0x2b)
1416                   && (c[6] == 0x1f) && (c[7] == 0x5b))
1417                 return 0;
1418               return 1;
1419             ]]
1420           )
1421         ],
1422         [c_cv_fp_layout_need_endianflip="yes"],
1423         [c_cv_fp_layout_need_endianflip="no"]
1424       ]
1425     )
1426   )
1427 fi
1428
1429 if test "x$c_cv_fp_layout_need_endianflip" = "xyes"; then
1430   fp_layout_type="endianflip"
1431 fi
1432
1433 if test "x$fp_layout_type" = "xunknown"; then
1434   AC_CACHE_CHECK([if intswap converts to x86 representation],
1435     [c_cv_fp_layout_need_intswap],
1436     [
1437       AC_RUN_IFELSE(
1438         [
1439           AC_LANG_PROGRAM(
1440             [[
1441               #include <stdlib.h>
1442               #include <stdio.h>
1443               #include <string.h>
1444               #include <stdint.h>
1445               #include <inttypes.h>
1446               #include <stdbool.h>
1447               #define intswap(A)    ((((uint64_t)(A) & 0xffffffff00000000LL) >> 32) | \
1448                                      (((uint64_t)(A) & 0x00000000ffffffffLL) << 32))
1449             ]],
1450             [[
1451               uint64_t i0;
1452               uint64_t i1;
1453               uint8_t c[8];
1454               double d;
1455
1456               d = 8.642135e130;
1457               memcpy ((void *) &i0, (void *) &d, 8);
1458
1459               i1 = intswap (i0);
1460               memcpy ((void *) c, (void *) &i1, 8);
1461
1462               if ((c[0] == 0x2f) && (c[1] == 0x25)
1463                   && (c[2] == 0xc0) && (c[3] == 0xc7)
1464                   && (c[4] == 0x43) && (c[5] == 0x2b)
1465                   && (c[6] == 0x1f) && (c[7] == 0x5b))
1466                 return 0;
1467               return 1;
1468             ]]
1469           )
1470         ],
1471         [c_cv_fp_layout_need_intswap="yes"],
1472         [c_cv_fp_layout_need_intswap="no"]
1473       )
1474     ]
1475   )
1476 fi
1477
1478 if test "x$c_cv_fp_layout_need_intswap" = "xyes"; then
1479   fp_layout_type="intswap"
1480 fi
1481
1482 if test "x$fp_layout_type" = "xnothing"; then
1483   AC_DEFINE([FP_LAYOUT_NEED_NOTHING], [1],
1484     [Define if doubles are stored in x86 representation.]
1485   )
1486 else if test "x$fp_layout_type" = "xendianflip"; then
1487   AC_DEFINE([FP_LAYOUT_NEED_ENDIANFLIP], [1],
1488     [Define if endianflip is needed to convert to x86 representation.]
1489   )
1490 else if test "x$fp_layout_type" = "xintswap"; then
1491   AC_DEFINE([FP_LAYOUT_NEED_INTSWAP], [1],
1492     [Define if intswap is needed to convert to x86 representation.]
1493   )
1494 else
1495   AC_MSG_ERROR([Didn't find out how doubles are stored in memory. Sorry.])
1496 fi; fi; fi
1497
1498 # For cpusleep plugin
1499 AC_CACHE_CHECK([whether clock_boottime and clock_monotonic are supported],
1500   [c_cv_have_clock_boottime_monotonic],
1501   [
1502     AC_COMPILE_IFELSE(
1503       [AC_LANG_PROGRAM(
1504         [[#include <time.h>]],
1505         [[
1506           struct timespec b, m;
1507           clock_gettime(CLOCK_BOOTTIME, &b );
1508           clock_gettime(CLOCK_MONOTONIC, &m );
1509         ]]
1510       )
1511       ],
1512       [c_cv_have_clock_boottime_monotonic="yes"],
1513       [c_cv_have_clock_boottime_monotonic="no"]
1514     )
1515   ]
1516 )
1517
1518 # --with-useragent {{{
1519 AC_ARG_WITH([useragent],
1520   [AS_HELP_STRING([--with-useragent@<:@=AGENT@:>@], [User agent to use on http requests])],
1521   [
1522     if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
1523       AC_DEFINE_UNQUOTED([COLLECTD_USERAGENT], ["$withval"], [User agent for http requests])
1524     fi
1525   ]
1526 )
1527
1528 # }}}
1529
1530 # --with-data-max-name-len {{{
1531 AC_ARG_WITH([data-max-name-len],
1532   [AS_HELP_STRING([--with-data-max-name-len@<:@=VALUE@:>@], [Maximum length of data buffers])],
1533   [
1534     if test "x$withval" != "x" && test $withval -gt 0; then
1535       AC_DEFINE_UNQUOTED([DATA_MAX_NAME_LEN], [$withval], [Maximum length of data buffers])
1536     else
1537       AC_MSG_ERROR([DATA_MAX_NAME_LEN must be a positive integer -- $withval given])
1538     fi
1539   ],
1540   [AC_DEFINE([DATA_MAX_NAME_LEN], [128], [Maximum length of data buffers])]
1541 )
1542 # }}}
1543
1544 AC_CHECK_FUNCS([getfsstat], [have_getfsstat="yes"], [have_getfsstat="no"])
1545 AC_CHECK_FUNCS(getvfsstat, [have_getvfsstat="yes"], [have_getvfsstat="no"])
1546 AC_CHECK_FUNCS(listmntent, [have_listmntent="yes"], [have_listmntent="no"])
1547 AC_CHECK_FUNCS(getmntent_r, [have_getmntent_r="yes"], [have_getmntent_r="no"])
1548
1549 AC_CHECK_FUNCS(getmntent, [have_getmntent="libc"], [have_getmntent="no"])
1550 if test "x$have_getmntent" = "xno"; then
1551   AC_CHECK_LIB([sun], [getmntent],
1552     [have_getmntent="sun"],
1553     [have_gemntent="no"]
1554   )
1555 fi
1556
1557 if test "x$have_getmntent" = "xno"; then
1558   AC_CHECK_LIB([seq], [getmntent],
1559     [have_getmntent="seq"],
1560     [have_getmntent="no"]
1561   )
1562 fi
1563
1564 if test "x$have_getmntent" = "xno"; then
1565   AC_CHECK_LIB([gen], [getmntent],
1566     [have_getmntent="gen"],
1567     [have_getmntent="no"]
1568   )
1569 fi
1570
1571 if test "x$have_getmntent" = "xlibc"; then
1572   AC_CACHE_CHECK([whether getmntent takes one argument],
1573     [c_cv_have_one_getmntent],
1574     [
1575       AC_COMPILE_IFELSE(
1576         [
1577           AC_LANG_PROGRAM(
1578             [[#include "$srcdir/src/utils/mount/mount.h"]],
1579             [[
1580               FILE *fh;
1581               struct mntent *me;
1582               fh = setmntent ("/etc/mtab", "r");
1583               me = getmntent (fh);
1584               return me->mnt_passno;
1585             ]]
1586           )
1587         ],
1588         [c_cv_have_one_getmntent="yes"],
1589         [c_cv_have_one_getmntent="no"]
1590       )
1591     ]
1592   )
1593
1594   AC_CACHE_CHECK([whether getmntent takes two arguments],
1595     [c_cv_have_two_getmntent],
1596     [
1597       AC_COMPILE_IFELSE(
1598         [
1599           AC_LANG_PROGRAM(
1600             [[#include "$srcdir/src/utils/mount/mount.h"]],
1601             [[
1602               FILE *fh;
1603               struct mnttab mt;
1604               int status;
1605               fh = fopen ("/etc/mnttab", "r");
1606               status = getmntent (fh, &mt);
1607               return status;
1608             ]]
1609           )
1610         ],
1611         [c_cv_have_two_getmntent="yes"],
1612         [c_cv_have_two_getmntent="no"]
1613       )
1614     ]
1615   )
1616 fi
1617
1618 # Check for different versions of `getmntent' here..
1619
1620 if test "x$have_getmntent" = "xlibc"; then
1621   if test "x$c_cv_have_one_getmntent" = "xyes"; then
1622     AC_DEFINE([HAVE_ONE_GETMNTENT], [1],
1623       [Define if the function getmntent exists and takes one argument.]
1624     )
1625   fi
1626
1627   if test "x$c_cv_have_two_getmntent" = "xyes"; then
1628     AC_DEFINE([HAVE_TWO_GETMNTENT], [1],
1629       [Define if the function getmntent exists and takes two arguments.]
1630     )
1631   fi
1632 fi
1633
1634 if test "x$have_getmntent" = "xsun"; then
1635   AC_DEFINE([HAVE_SUN_GETMNTENT], [1],
1636     [Define if the function getmntent exists. It is the version from libsun.]
1637   )
1638 fi
1639
1640 if test "x$have_getmntent" = "xgen"; then
1641   AC_DEFINE([HAVE_GEN_GETMNTENT], [1],
1642     [Define if the function getmntent exists. It is the version from libgen.]
1643   )
1644 fi
1645
1646 # Check for htonll
1647 AC_CACHE_CHECK([whether htonll is defined],
1648   [c_cv_have_htonll],
1649   [
1650     AC_LINK_IFELSE(
1651       [
1652         AC_LANG_PROGRAM(
1653           [[
1654             #include <inttypes.h>
1655             #include <sys/types.h>
1656             #include <netinet/in.h>
1657           ]],
1658           [[return htonll(0);]]
1659         )
1660       ],
1661       [c_cv_have_htonll="yes"],
1662       [c_cv_have_htonll="no"]
1663     )
1664   ]
1665 )
1666
1667 if test "x$c_cv_have_htonll" = "xyes"; then
1668   AC_DEFINE([HAVE_HTONLL], [1], [Define if the function htonll exists.])
1669 fi
1670
1671 # Check for structures
1672 AC_CHECK_MEMBERS([struct if_data.ifi_ibytes, struct if_data.ifi_opackets, struct if_data.ifi_ierrors],
1673   [AC_DEFINE([HAVE_STRUCT_IF_DATA], [1], [Define if struct if_data exists and is usable.])],
1674   [],
1675   [[
1676     #include <sys/types.h>
1677     #include <sys/socket.h>
1678     #include <net/if.h>
1679   ]]
1680 )
1681
1682 AC_CHECK_MEMBERS([struct net_device_stats.rx_bytes, struct net_device_stats.tx_packets, struct net_device_stats.rx_errors],
1683   [AC_DEFINE([HAVE_STRUCT_NET_DEVICE_STATS], [1], [Define if struct net_device_stats exists and is usable.])],
1684   [],
1685   [[
1686     #include <sys/types.h>
1687     #include <sys/socket.h>
1688     #include <linux/if.h>
1689     #include <linux/netdevice.h>
1690   ]]
1691 )
1692
1693 AC_CHECK_MEMBERS([struct inet_diag_req.id, struct inet_diag_req.idiag_states],
1694   [AC_DEFINE([HAVE_STRUCT_LINUX_INET_DIAG_REQ], [1], [Define if struct inet_diag_req exists and is usable.])],
1695   [],
1696   [[#include <linux/inet_diag.h>]]
1697 )
1698
1699 AC_CHECK_MEMBERS([struct ip_mreqn.imr_ifindex], [],
1700   [],
1701   [[
1702     #include <netinet/in.h>
1703     #include <net/if.h>
1704   ]]
1705 )
1706
1707 AC_CHECK_MEMBERS([struct kinfo_proc.ki_pid, struct kinfo_proc.ki_rssize, struct kinfo_proc.ki_rusage],
1708   [
1709     AC_DEFINE([HAVE_STRUCT_KINFO_PROC_FREEBSD], [1], [Define if struct kinfo_proc exists in the FreeBSD variant.])
1710     have_struct_kinfo_proc_freebsd="yes"
1711   ],
1712   [],
1713   [[
1714     #include <kvm.h>
1715     #include <sys/param.h>
1716     #include <sys/sysctl.h>
1717     #include <sys/user.h>
1718   ]]
1719 )
1720
1721 AC_CHECK_MEMBERS([struct kinfo_proc.p_pid, struct kinfo_proc.p_vm_rssize],
1722   [
1723     AC_DEFINE([HAVE_STRUCT_KINFO_PROC_OPENBSD], [1], [Define if struct kinfo_proc exists in the OpenBSD variant.])
1724     have_struct_kinfo_proc_openbsd="yes"
1725   ],
1726   [],
1727   [[
1728     #include <sys/param.h>
1729     #include <sys/sysctl.h>
1730     #include <kvm.h>
1731   ]]
1732 )
1733
1734 AC_CHECK_MEMBERS([struct kinfo_proc2.p_pid, struct kinfo_proc2.p_uru_maxrss],
1735   [
1736     AC_DEFINE([HAVE_STRUCT_KINFO_PROC2_NETBSD], [1], [Define if struct kinfo_proc2 exists in the NetBSD variant.])
1737     have_struct_kinfo_proc2_netbsd="yes"
1738   ],
1739   [],
1740   [[
1741     #include <sys/param.h>
1742     #include <sys/sysctl.h>
1743     #include <kvm.h>
1744   ]]
1745 )
1746
1747 AC_CHECK_MEMBERS([struct udphdr.uh_dport, struct udphdr.uh_sport],
1748   [],
1749   [],
1750   [[
1751     #define _BSD_SOURCE
1752     #define _DEFAULT_SOURCE
1753     #include <stdint.h>
1754     #if HAVE_SYS_TYPES_H
1755     # include <sys/types.h>
1756     #endif
1757     #if HAVE_NETINET_IN_SYSTM_H
1758     # include <netinet/in_systm.h>
1759     #endif
1760     #if HAVE_NETINET_IN_H
1761     # include <netinet/in.h>
1762     #endif
1763     #if HAVE_NETINET_IP_H
1764     # include <netinet/ip.h>
1765     #endif
1766     #if HAVE_NETINET_UDP_H
1767     # include <netinet/udp.h>
1768     #endif
1769   ]]
1770 )
1771
1772 AC_CHECK_MEMBERS([struct udphdr.dest, struct udphdr.source],
1773   [],
1774   [],
1775   [[
1776     #define _BSD_SOURCE
1777     #define _DEFAULT_SOURCE
1778     #include <stdint.h>
1779     #if HAVE_SYS_TYPES_H
1780     # include <sys/types.h>
1781     #endif
1782     #if HAVE_NETINET_IN_SYSTM_H
1783     # include <netinet/in_systm.h>
1784     #endif
1785     #if HAVE_NETINET_IN_H
1786     # include <netinet/in.h>
1787     #endif
1788     #if HAVE_NETINET_IP_H
1789     # include <netinet/ip.h>
1790     #endif
1791     #if HAVE_NETINET_UDP_H
1792     # include <netinet/udp.h>
1793     #endif
1794   ]]
1795 )
1796
1797 AC_CHECK_MEMBERS([kstat_io_t.nwritten, kstat_io_t.writes, kstat_io_t.nwrites, kstat_io_t.wtime],
1798   [],
1799   [],
1800   [[# include <kstat.h>]]
1801 )
1802
1803 # check for pthread_setname_np
1804 SAVE_LDFLAGS="$LDFLAGS"
1805 LDFLAGS="$LDFLAGS -lpthread"
1806
1807 AC_MSG_CHECKING([for pthread_setname_np])
1808 have_pthread_setname_np="no"
1809 AC_LINK_IFELSE(
1810   [
1811     AC_LANG_PROGRAM(
1812       [[
1813         #define _GNU_SOURCE
1814         #include <pthread.h>
1815       ]],
1816       [[pthread_setname_np((pthread_t) {0}, "conftest");]]
1817     )
1818   ],
1819   [
1820     have_pthread_setname_np="yes"
1821     AC_DEFINE(HAVE_PTHREAD_SETNAME_NP, 1, [pthread_setname_np() is available.])
1822   ]
1823 )
1824
1825 AC_MSG_RESULT([$have_pthread_setname_np])
1826
1827 # check for pthread_set_name_np(3) (FreeBSD)
1828 AC_MSG_CHECKING([for pthread_set_name_np])
1829 have_pthread_set_name_np="no"
1830 AC_LINK_IFELSE(
1831   [
1832     AC_LANG_PROGRAM(
1833       [[#include <pthread_np.h>]],
1834       [[pthread_set_name_np((pthread_t) {0}, "conftest");]]
1835     )
1836    ],
1837   [
1838     have_pthread_set_name_np="yes"
1839     AC_DEFINE(HAVE_PTHREAD_SET_NAME_NP, 1, [pthread_set_name_np() is available.])
1840   ]
1841 )
1842 AC_MSG_RESULT([$have_pthread_set_name_np])
1843
1844 LDFLAGS="$SAVE_LDFLAGS"
1845
1846 AC_CHECK_TYPES([struct ip6_ext],
1847   [have_ip6_ext="yes"],
1848   [have_ip6_ext="no"],
1849   [[
1850     #include <stdint.h>
1851     #if HAVE_SYS_TYPES_H
1852     # include <sys/types.h>
1853     #endif
1854     #if HAVE_NETINET_IN_SYSTM_H
1855     # include <netinet/in_systm.h>
1856     #endif
1857     #if HAVE_NETINET_IN_H
1858     # include <netinet/in.h>
1859     #endif
1860     #if HAVE_NETINET_IP6_H
1861     # include <netinet/ip6.h>
1862     #endif
1863   ]]
1864 )
1865
1866 if test "x$have_ip6_ext" = "xno"; then
1867   SAVE_CFLAGS="$CFLAGS"
1868   CFLAGS="$CFLAGS -DSOLARIS2=8"
1869   AC_CHECK_TYPES([struct ip6_ext],
1870     [have_ip6_ext="yes, with -DSOLARIS2=8"],
1871     [have_ip6_ext="no"],
1872     [[
1873       #include <stdint.h>
1874       #if HAVE_SYS_TYPES_H
1875       # include <sys/types.h>
1876       #endif
1877       #if HAVE_NETINET_IN_SYSTM_H
1878       # include <netinet/in_systm.h>
1879       #endif
1880       #if HAVE_NETINET_IN_H
1881       # include <netinet/in.h>
1882       #endif
1883       #if HAVE_NETINET_IP6_H
1884       # include <netinet/ip6.h>
1885       #endif
1886     ]]
1887   )
1888   if test "x$have_ip6_ext" = "xno"; then
1889     CFLAGS="$SAVE_CFLAGS"
1890   fi
1891 fi
1892
1893 # libi2c-dev
1894 if test "x$ac_system" = "xLinux"; then
1895   with_libi2c_libs=""
1896   AC_CHECK_HEADERS([i2c/smbus.h],
1897     [with_libi2c_libs="-li2c"]
1898   )
1899   AC_CHECK_DECL([i2c_smbus_read_i2c_block_data],
1900     [with_libi2c="yes"],
1901     [with_libi2c="no (symbol i2c_smbus_read_i2c_block_data not found - have you installed libi2c-dev ?)"],
1902     [[
1903       #include <stdlib.h>
1904       #include <linux/i2c-dev.h>
1905       #if HAVE_I2C_SMBUS_H
1906       # include <i2c/smbus.h>
1907       #endif
1908     ]]
1909   )
1910   BUILD_WITH_LIBI2C_LIBS="$with_libi2c_libs"
1911   AC_SUBST([BUILD_WITH_LIBI2C_LIBS])
1912 else
1913   with_libi2c="no (Linux only)"
1914 fi
1915
1916 #
1917 # Checks for libraries begin here
1918 #
1919
1920 # Check for libpthread
1921 SAVE_LIBS="$LIBS"
1922 AC_CHECK_LIB([pthread],
1923   [pthread_create],
1924   [],
1925   [AC_MSG_ERROR([Symbol 'pthread_create' not found in libpthread])],
1926   []
1927 )
1928 PTHREAD_LIBS="$LIBS"
1929 LIBS="$SAVE_LIBS"
1930 AC_SUBST([PTHREAD_LIBS])
1931
1932 AC_CHECK_HEADERS([pthread.h],
1933   [],
1934   [AC_MSG_ERROR([pthread.h not found])]
1935 )
1936
1937 m4_divert_once([HELP_WITH], [
1938 Collectd additional packages:])
1939
1940 if test "x$ac_system" = "xAIX"; then
1941   with_perfstat="yes"
1942   with_procinfo="yes"
1943 else
1944   with_perfstat="no (AIX only)"
1945   with_procinfo="no (AIX only)"
1946 fi
1947
1948 if test "x$with_perfstat" = "xyes"; then
1949   AC_CHECK_LIB([perfstat], [perfstat_reset],
1950     [with_perfstat="yes"],
1951     [with_perfstat="no (perfstat not found)"]
1952   )
1953 fi
1954
1955 if test "x$with_perfstat" = "xyes"; then
1956   AC_DEFINE([HAVE_PERFSTAT], [1], [Define to 1 if you have the 'perfstat' library (-lperfstat)])
1957   # struct members pertaining to donation have been added to libperfstat somewhere between AIX5.3ML5 and AIX5.3ML9
1958   AC_CHECK_MEMBER([perfstat_partition_type_t.b.donate_enabled],
1959     [],
1960     [],
1961     [[#include <libperfstat.h]]
1962   )
1963   if test "x$av_cv_member_perfstat_partition_type_t_b_donate_enabled" = "xyes"; then
1964     AC_DEFINE([PERFSTAT_SUPPORTS_DONATION], [1], [Define to 1 if your version of the 'perfstat' library supports donation])
1965   fi
1966 fi
1967 AM_CONDITIONAL([BUILD_WITH_PERFSTAT], [test "x$with_perfstat" = "xyes"])
1968
1969 # Processes plugin under AIX.
1970 if test "x$with_procinfo" = "xyes"; then
1971   AC_CHECK_HEADERS([procinfo.h],
1972     [AC_DEFINE([HAVE_PROCINFO_H], [1], [Define to 1 if you have the procinfo.h])],
1973     [with_procinfo="no (procinfo.h not found)"]
1974   )
1975 fi
1976
1977 if test "x$ac_system" = "xSolaris"; then
1978   with_kstat="yes"
1979   with_devinfo="yes"
1980 else
1981   with_kstat="no (Solaris only)"
1982   with_devinfo="no (Solaris only)"
1983 fi
1984
1985 if test "x$with_kstat" = "xyes"; then
1986   AC_CHECK_LIB([kstat], [kstat_open],
1987     [with_kstat="yes"],
1988     [with_kstat="no (libkstat not found)"]
1989   )
1990 fi
1991
1992 if test "x$with_kstat" = "xyes"; then
1993   AC_CHECK_LIB([devinfo], [di_init],
1994     [with_devinfo="yes"],
1995     [with_devinfo="no (not found)"]
1996   )
1997   AC_CHECK_HEADERS([kstat.h],
1998     [AC_DEFINE(HAVE_LIBKSTAT, [1], [Define to 1 if you have the 'kstat' library (-lkstat)])],
1999     [with_kstat="no (kstat.h not found)"]
2000   )
2001 fi
2002
2003 AM_CONDITIONAL([BUILD_WITH_LIBDEVINFO], [test "x$with_devinfo" = "xyes"])
2004 AM_CONDITIONAL([BUILD_WITH_LIBKSTAT], [test "x$with_kstat" = "xyes"])
2005
2006 if test "x$ac_system" = "xDarwin"; then
2007   with_libiokit="yes"
2008 else
2009   with_libiokit="no"
2010 fi
2011 AM_CONDITIONAL([BUILD_WITH_LIBIOKIT], [test "x$with_libiokit" = "xyes"])
2012
2013 with_libkvm="no"
2014 AC_CHECK_LIB([kvm], [kvm_getprocs],
2015   [with_kvm_getprocs="yes"],
2016   [with_kvm_getprocs="no"]
2017 )
2018
2019 if test "x$with_kvm_getprocs" = "xyes"; then
2020   AC_DEFINE([HAVE_LIBKVM_GETPROCS], [1],
2021     [Define to 1 if you have the 'kvm' library with the 'kvm_getprocs' symbol (-lkvm)]
2022   )
2023   with_libkvm="yes"
2024 fi
2025
2026 AM_CONDITIONAL([BUILD_WITH_LIBKVM_GETPROCS], [test "x$with_kvm_getprocs" = "xyes"])
2027
2028 AC_CHECK_LIB([kvm], [kvm_getswapinfo],
2029   [with_kvm_getswapinfo="yes"],
2030   [with_kvm_getswapinfo="no"]
2031 )
2032
2033 if test "x$with_kvm_getswapinfo" = "xyes"; then
2034   AC_DEFINE([HAVE_LIBKVM_GETSWAPINFO], [1],
2035     [Define to 1 if you have the 'kvm' library with the 'kvm_getswapinfo' symbol (-lkvm)]
2036   )
2037   with_libkvm="yes"
2038 fi
2039
2040 AM_CONDITIONAL([BUILD_WITH_LIBKVM_GETSWAPINFO], [test "x$with_kvm_getswapinfo" = "xyes"])
2041
2042 AC_CHECK_LIB([kvm], [kvm_nlist],
2043   [with_kvm_nlist="yes"],
2044   [with_kvm_nlist="no"]
2045 )
2046
2047 if test "x$with_kvm_nlist" = "xyes"; then
2048   AC_CHECK_HEADERS([bsd/nlist.h nlist.h])
2049   AC_DEFINE([HAVE_LIBKVM_NLIST], [1],
2050     [Define to 1 if you have the 'kvm' library with the 'kvm_nlist' symbol (-lkvm)]
2051   )
2052   with_libkvm="yes"
2053 fi
2054
2055 AM_CONDITIONAL([BUILD_WITH_LIBKVM_NLIST], [test "x$with_kvm_nlist" = "xyes"])
2056
2057 AC_CHECK_LIB([kvm], [kvm_openfiles],
2058   [with_kvm_openfiles="yes"],
2059   [with_kvm_openfiles="no"]
2060 )
2061
2062 if test "x$with_kvm_openfiles" = "xyes"; then
2063   AC_DEFINE([HAVE_LIBKVM_NLIST], [1],
2064     [Define to 1 if you have the 'kvm' library with the 'kvm_openfiles' symbol (-lkvm)]
2065   )
2066   with_libkvm="yes"
2067 fi
2068
2069 # --with-cuda {{{
2070 AC_ARG_WITH([cuda],
2071   [AS_HELP_STRING([--with-cuda@<:@=PREFIX@:>@], [Path to cuda.])],
2072   [
2073     if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
2074       with_cuda_cppflags="-I$withval/include"
2075       with_cuda_ldflags="-I$withval/lib"
2076       with_cuda="yes"
2077     else
2078       with_cuda="$withval"
2079     fi
2080   ],
2081   [with_cuda="no"]
2082 )
2083
2084 if test "x$with_cuda" = "xyes"; then
2085   SAVE_CPPFLAGS="$CPPFLAGS"
2086   CPPFLAGS="$CPPFLAGS $with_cuda_cppflags"
2087
2088   AC_CHECK_HEADERS([nvml.h],
2089     [with_cuda="yes"],
2090     [with_cuda="no (nvml.h not found)"]
2091   )
2092
2093   CPPFLAGS="$SAVE_CPPFLAGS"
2094 fi
2095
2096 if test "x$with_cuda" = "xyes"; then
2097   BUILD_WITH_CUDA_CPPFLAGS="$CUDA_CPPFLAGS"
2098   BUILD_WITH_CUDA_LDFLAGS="$CUDA_LDFLAGS"
2099   BUILD_WITH_CUDA_LIBS="-lnvidia-ml"
2100 fi
2101
2102 AC_SUBST([BUILD_WITH_CUDA_CPPFLAGS])
2103 AC_SUBST([BUILD_WITH_CUDA_LDFLAGS])
2104 AC_SUBST([BUILD_WITH_CUDA_LIBS])
2105
2106 # }}}
2107
2108 # --with-libaquaero5 {{{
2109 AC_ARG_WITH([libaquaero5],
2110   [AS_HELP_STRING([--with-libaquaero5@<:@=PREFIX@:>@], [Path to aquatools-ng source code.])],
2111   [
2112     if test "x$withval" = "xyes"; then
2113       with_libaquaero5="yes"
2114     else if test "x$withval" = "xno"; then
2115       with_libaquaero5="no"
2116     else
2117       with_libaquaero5="yes"
2118       LIBAQUAERO5_CFLAGS="$LIBAQUAERO5_CFLAGS -I$withval/src"
2119       LIBAQUAERO5_LDFLAGS="$LIBAQUAERO5_LDFLAGS -L$withval/obj"
2120     fi; fi
2121   ],
2122   [with_libaquaero5="yes"]
2123 )
2124
2125 SAVE_CPPFLAGS="$CPPFLAGS"
2126 SAVE_LDFLAGS="$LDFLAGS"
2127 CPPFLAGS="$CPPFLAGS $LIBAQUAERO5_CFLAGS"
2128 LDFLAGS="$LDFLAGS $LIBAQUAERO5_LDFLAGS"
2129
2130 if test "x$with_libaquaero5" = "xyes"; then
2131   AC_CHECK_HEADERS([libaquaero5.h],
2132     [with_libaquaero5="yes"],
2133     [with_libaquaero5="no (libaquaero5.h not found)"]
2134   )
2135 fi
2136
2137 if test "x$with_libaquaero5" = "xyes"; then
2138   AC_CHECK_LIB([aquaero5], libaquaero5_poll,
2139     [with_libaquaero5="yes"],
2140     [with_libaquaero5="no (symbol 'libaquaero5_poll' not found)"]
2141   )
2142 fi
2143
2144 CPPFLAGS="$SAVE_CPPFLAGS"
2145 LDFLAGS="$SAVE_LDFLAGS"
2146
2147 if test "x$with_libaquaero5" = "xyes"; then
2148   BUILD_WITH_LIBAQUAERO5_CFLAGS="$LIBAQUAERO5_CFLAGS"
2149   BUILD_WITH_LIBAQUAERO5_LDFLAGS="$LIBAQUAERO5_LDFLAGS"
2150 fi
2151 AC_SUBST([BUILD_WITH_LIBAQUAERO5_CFLAGS])
2152 AC_SUBST([BUILD_WITH_LIBAQUAERO5_LDFLAGS])
2153 # }}}
2154
2155 # --with-libhiredis {{{
2156 AC_ARG_WITH([libhiredis],
2157   [AS_HELP_STRING([--with-libhiredis@<:@=PREFIX@:>@], [Path to libhiredis.])],
2158   [
2159     if test "x$withval" = "xyes"; then
2160       with_libhiredis="yes"
2161     else if test "x$withval" = "xno"; then
2162       with_libhiredis="no"
2163     else
2164       with_libhiredis="yes"
2165       LIBHIREDIS_CPPFLAGS="$LIBHIREDIS_CPPFLAGS -I$withval/include"
2166       LIBHIREDIS_LDFLAGS="$LIBHIREDIS_LDFLAGS -L$withval/lib"
2167     fi; fi
2168   ],
2169   [with_libhiredis="yes"]
2170 )
2171
2172 SAVE_CPPFLAGS="$CPPFLAGS"
2173 SAVE_LDFLAGS="$LDFLAGS"
2174 CPPFLAGS="$CPPFLAGS $LIBHIREDIS_CPPFLAGS"
2175 LDFLAGS="$LDFLAGS $LIBHIREDIS_LDFLAGS"
2176
2177 if test "x$with_libhiredis" = "xyes"; then
2178   AC_CHECK_HEADERS([hiredis/hiredis.h],
2179     [with_libhiredis="yes"],
2180     [with_libhiredis="no (hiredis.h not found)"]
2181   )
2182 fi
2183
2184 if test "x$with_libhiredis" = "xyes"; then
2185   AC_CHECK_LIB([hiredis], [redisCommand],
2186     [with_libhiredis="yes"],
2187     [with_libhiredis="no (symbol 'redisCommand' not found)"]
2188   )
2189 fi
2190
2191 CPPFLAGS="$SAVE_CPPFLAGS"
2192 LDFLAGS="$SAVE_LDFLAGS"
2193
2194 if test "x$with_libhiredis" = "xyes"; then
2195   BUILD_WITH_LIBHIREDIS_CPPFLAGS="$LIBHIREDIS_CPPFLAGS"
2196   BUILD_WITH_LIBHIREDIS_LDFLAGS="$LIBHIREDIS_LDFLAGS"
2197 fi
2198
2199 AC_SUBST([BUILD_WITH_LIBHIREDIS_CPPFLAGS])
2200 AC_SUBST([BUILD_WITH_LIBHIREDIS_LDFLAGS])
2201 # }}}
2202
2203 # --with-libcurl {{{
2204 with_curl_config="curl-config"
2205 with_curl_cflags=""
2206 with_curl_libs=""
2207 AC_ARG_WITH(libcurl,
2208   [AS_HELP_STRING([--with-libcurl@<:@=PREFIX@:>@], [Path to libcurl.])],
2209   [
2210     if test "x$withval" = "xno"; then
2211       with_libcurl="no"
2212     else if test "x$withval" = "xyes"; then
2213       with_libcurl="yes"
2214     else
2215       if test -f "$withval" && test -x "$withval"; then
2216         with_curl_config="$withval"
2217         with_libcurl="yes"
2218       else if test -x "$withval/bin/curl-config"; then
2219         with_curl_config="$withval/bin/curl-config"
2220         with_libcurl="yes"
2221       fi; fi
2222       with_libcurl="yes"
2223     fi; fi
2224   ],
2225   [with_libcurl="yes"]
2226 )
2227
2228 if test "x$with_libcurl" = "xyes"; then
2229   with_curl_cflags=`$with_curl_config --cflags 2>/dev/null`
2230   curl_config_status=$?
2231
2232   if test $curl_config_status -ne 0; then
2233     with_libcurl="no ($with_curl_config failed)"
2234   else
2235     SAVE_CPPFLAGS="$CPPFLAGS"
2236     CPPFLAGS="$CPPFLAGS $with_curl_cflags"
2237
2238     AC_CHECK_HEADERS([curl/curl.h],
2239       [with_libcurl="yes"],
2240       [with_libcurl="no (curl/curl.h not found)"]
2241     )
2242
2243     CPPFLAGS="$SAVE_CPPFLAGS"
2244   fi
2245 fi
2246
2247 if test "x$with_libcurl" = "xyes"; then
2248   with_curl_libs=`$with_curl_config --libs 2>/dev/null`
2249   curl_config_status=$?
2250
2251   if test $curl_config_status -ne 0; then
2252     with_libcurl="no ($with_curl_config failed)"
2253   else
2254     AC_CHECK_LIB([curl], [curl_easy_init],
2255       [with_libcurl="yes"],
2256       [with_libcurl="no (symbol 'curl_easy_init' not found)"],
2257       [$with_curl_libs]
2258     )
2259
2260     AC_CHECK_DECL([CURLOPT_USERNAME],
2261       [have_curlopt_username="yes"],
2262       [have_curlopt_username="no"],
2263       [[#include <curl/curl.h>]]
2264     )
2265
2266     AC_CHECK_DECL(CURLOPT_TIMEOUT_MS,
2267       [have_curlopt_timeout="yes"],
2268       [have_curlopt_timeout="no"],
2269       [[#include <curl/curl.h>]]
2270     )
2271   fi
2272 fi
2273
2274 if test "x$with_libcurl" = "xyes"; then
2275   SAVE_CPPFLAGS="$CPPFLAGS"
2276   SAVE_LDFLAGS="$LDFLAGS"
2277   CPPFLAGS="$CPPFLAGS $with_curl_cflags"
2278   LDFLAGS="$LDFLAGS $with_curl_libs"
2279   AC_CACHE_CHECK([for CURLINFO_APPCONNECT_TIME],
2280     [c_cv_have_curlinfo_appconnect_time],
2281     [
2282       AC_LINK_IFELSE(
2283         [
2284           AC_LANG_PROGRAM(
2285             [[#include <curl/curl.h>]],
2286             [[
2287               int val = CURLINFO_APPCONNECT_TIME;
2288               return val;
2289             ]]
2290           )
2291         ],
2292         [c_cv_have_curlinfo_appconnect_time="yes"],
2293         [c_cv_have_curlinfo_appconnect_time="no"]
2294       )
2295     ]
2296   )
2297   CPPFLAGS="$SAVE_CPPFLAGS"
2298   LDFLAGS="$SAVE_LDFLAGS"
2299 fi
2300
2301 if test "x$c_cv_have_curlinfo_appconnect_time" = "xyes"; then
2302   AC_DEFINE([HAVE_CURLINFO_APPCONNECT_TIME], [1],
2303     [Define if curl.h defines CURLINFO_APPCONNECT_TIME.]
2304   )
2305 fi
2306
2307 if test "x$with_libcurl" = "xyes"; then
2308   BUILD_WITH_LIBCURL_CFLAGS="$with_curl_cflags"
2309   BUILD_WITH_LIBCURL_LIBS="$with_curl_libs"
2310
2311   if test "x$have_curlopt_username" = "xyes"; then
2312     AC_DEFINE([HAVE_CURLOPT_USERNAME], [1],
2313       [Define if libcurl supports CURLOPT_USERNAME option.]
2314     )
2315   fi
2316
2317   if test "x$have_curlopt_timeout" = "xyes"; then
2318     AC_DEFINE([HAVE_CURLOPT_TIMEOUT_MS], [1],
2319       [Define if libcurl supports CURLOPT_TIMEOUT_MS option.]
2320     )
2321   fi
2322 fi
2323
2324 AC_SUBST(BUILD_WITH_LIBCURL_CFLAGS)
2325 AC_SUBST(BUILD_WITH_LIBCURL_LIBS)
2326
2327 AM_CONDITIONAL([BUILD_WITH_LIBCURL], [test "x$with_libcurl" = "xyes"])
2328 # }}}
2329
2330 # --with-libdbi {{{
2331 AC_ARG_WITH([libdbi],
2332   [AS_HELP_STRING([--with-libdbi@<:@=PREFIX@:>@], [Path to libdbi.])],
2333   [
2334     if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
2335       with_libdbi_cppflags="-I$withval/include"
2336       with_libdbi_ldflags="-L$withval/lib"
2337       with_libdbi="yes"
2338     else
2339       with_libdbi="$withval"
2340     fi
2341   ],
2342   [with_libdbi="yes"]
2343 )
2344
2345 if test "x$with_libdbi" = "xyes"; then
2346   SAVE_CPPFLAGS="$CPPFLAGS"
2347   CPPFLAGS="$CPPFLAGS $with_libdbi_cppflags"
2348
2349   AC_CHECK_HEADERS([dbi/dbi.h],
2350     [with_libdbi="yes"],
2351     [with_libdbi="no (dbi/dbi.h not found)"]
2352   )
2353
2354   CPPFLAGS="$SAVE_CPPFLAGS"
2355 fi
2356
2357 if test "x$with_libdbi" = "xyes"; then
2358   SAVE_LDFLAGS="$LDFLAGS"
2359   LDFLAGS="$LDFLAGS $with_libdbi_ldflags"
2360
2361   AC_CHECK_LIB([dbi], [dbi_initialize],
2362     [with_libdbi="yes"],
2363     [with_libdbi="no (Symbol 'dbi_initialize' not found)"]
2364   )
2365
2366   LDFLAGS="$SAVE_LDFLAGS"
2367 fi
2368
2369 BUILD_WITH_LIBDBI_CPPFLAGS="$with_libdbi_cppflags"
2370 BUILD_WITH_LIBDBI_LDFLAGS="$with_libdbi_ldflags"
2371 BUILD_WITH_LIBDBI_LIBS="-ldbi"
2372 AC_SUBST(BUILD_WITH_LIBDBI_CPPFLAGS)
2373 AC_SUBST(BUILD_WITH_LIBDBI_LDFLAGS)
2374 AC_SUBST(BUILD_WITH_LIBDBI_LIBS)
2375 # }}}
2376
2377 # --with-libdpdk {{{
2378 AC_ARG_VAR([LIBDPDK_CPPFLAGS], [Preprocessor flags for libdpdk])
2379 AC_ARG_VAR([LIBDPDK_CFLAGS], [Compiler flags for libdpdk])
2380 AC_ARG_VAR([LIBDPDK_LDFLAGS], [Linker flags for libdpdk])
2381 AC_ARG_VAR([LIBDPDK_LIBS], [Libraries to link for libdpdk])
2382
2383 AC_ARG_WITH([libdpdk],
2384   [AS_HELP_STRING([--without-libdpdk], [Disable libdpdk.])],
2385   [with_libdpdk="$withval"],
2386   [with_libdpdk="yes"]
2387 )
2388
2389 if test "x$with_libdpdk" != "xno"; then
2390   PKG_CHECK_MODULES([DPDK], [libdpdk], [],
2391     [AC_MSG_NOTICE([no DPDK pkg-config, using defaults])])
2392   if test "x$LIBDPDK_CPPFLAGS" = "x"; then
2393     LIBDPDK_CPPFLAGS="-I/usr/include/dpdk"
2394   fi
2395   if test "x$LIBDPDK_CFLAGS" = "x"; then
2396     LIBDPDK_CFLAGS="$DPDK_CFLAGS"
2397     LIBDPDK_CPPFLAGS="$LIBDPDK_CPPFLAGS $DPDK_CFLAGS"
2398   fi
2399   if test "x$LIBDPDK_LIBS" = "x"; then
2400     if test "x$DPDK_LIBS" != "x"; then
2401       LIBDPDK_LIBS="$DPDK_LIBS"
2402     else
2403       LIBDPDK_LIBS="-ldpdk"
2404     fi
2405   fi
2406   SAVE_CPPFLAGS="$CPPFLAGS"
2407   CPPFLAGS="$LIBDPDK_CPPFLAGS $CPPFLAGS"
2408   SAVE_CFLAGS="$CFLAGS"
2409   CFLAGS="$LIBDPDK_CFLAGS $CFLAGS"
2410   AC_CHECK_HEADERS([rte_config.h],
2411     [
2412       with_libdpdk="yes"
2413       AC_PREPROC_IFELSE(
2414         [
2415           AC_LANG_SOURCE(
2416             [[
2417               #include <rte_version.h>
2418               #if RTE_VERSION < RTE_VERSION_NUM(16,7,0,0)
2419               #error "required DPDK >= 16.07"
2420               #endif
2421             ]]
2422           )
2423         ],
2424         [dpdk_keepalive="yes"],
2425         [dpdk_keepalive="no (DPDK version < 16.07)"]
2426       )
2427     ],
2428     [with_libdpdk="no (rte_config.h not found)"]
2429   )
2430   CPPFLAGS="$SAVE_CPPFLAGS"
2431   CFLAGS="$SAVE_CFLAGS"
2432 fi
2433
2434 if test "x$with_libdpdk" = "xyes"; then
2435   SAVE_LIBS="$LIBS"
2436   LIBS="$LIBDPDK_LIBS $LIBS"
2437   SAVE_LDFLAGS="$LDFLAGS"
2438   LDFLAGS="$LIBDPDK_LDFLAGS $LDFLAGS"
2439   SAVE_CPPFLAGS="$CPPFLAGS"
2440   CPPFLAGS="$LIBDPDK_CPPFLAGS $CPPFLAGS"
2441   SAVE_CFLAGS="$CFLAGS"
2442   CFLAGS="$LIBDPDK_CFLAGS $CFLAGS"
2443   AC_LINK_IFELSE(
2444     [
2445       AC_LANG_PROGRAM(
2446         [[
2447           #include <rte_eal.h>
2448         ]],
2449         [[return rte_eal_init(0, NULL);]]
2450       )
2451     ],
2452     [with_libdpdk="yes"],
2453     [with_libdpdk="no (symbol 'rte_eal_init' not found)"]
2454   )
2455   LIBS="$SAVE_LIBS"
2456   LDFLAGS="$SAVE_LDFLAGS"
2457   CPPFLAGS="$SAVE_CPPFLAGS"
2458   CFLAGS="$SAVE_CFLAGS"
2459 fi
2460
2461 # }}}
2462
2463 # --with-libesmtp {{{
2464 AC_ARG_WITH([libesmtp],
2465   [AS_HELP_STRING([--with-libesmtp@<:@=PREFIX@:>@], [Path to libesmtp.])],
2466   [
2467     if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
2468       with_libesmtp_cppflags="-I$withval/include"
2469       with_libesmtp_ldflags="-L$withval/lib"
2470       with_libesmtp="yes"
2471     else
2472       with_libesmtp="$withval"
2473     fi
2474   ],
2475   [with_libesmtp="yes"]
2476 )
2477
2478 if test "x$with_libesmtp" = "xyes"; then
2479   SAVE_CPPFLAGS="$CPPFLAGS"
2480   CPPFLAGS="$CPPFLAGS $with_libesmtp_cppflags"
2481
2482   AC_CHECK_HEADERS([libesmtp.h],
2483     [with_libesmtp="yes"],
2484     [with_libesmtp="no (libesmtp.h not found)"]
2485   )
2486
2487   CPPFLAGS="$SAVE_CPPFLAGS"
2488 fi
2489
2490 if test "x$with_libesmtp" = "xyes"; then
2491   SAVE_LDFLAGS="$LDFLAGS"
2492   LDFLAGS="$LDFLAGS $with_esmtp_ldflags"
2493
2494   AC_CHECK_LIB([esmtp], [smtp_create_session],
2495     [with_libesmtp="yes"],
2496     [with_libesmtp="no (Symbol 'smtp_create_session' not found)"]
2497   )
2498
2499   LDFLAGS="$SAVE_LDFLAGS"
2500 fi
2501
2502 BUILD_WITH_LIBESMTP_CPPFLAGS="$with_libesmtp_cppflags"
2503 BUILD_WITH_LIBESMTP_LDFLAGS="$with_libesmtp_ldflags"
2504 BUILD_WITH_LIBESMTP_LIBS="-lesmtp"
2505 AC_SUBST(BUILD_WITH_LIBESMTP_CPPFLAGS)
2506 AC_SUBST(BUILD_WITH_LIBESMTP_LDFLAGS)
2507 AC_SUBST(BUILD_WITH_LIBESMTP_LIBS)
2508 # }}}
2509
2510 # --with-libganglia {{{
2511 AC_ARG_WITH([libganglia],
2512   [AS_HELP_STRING([--with-libganglia@<:@=PREFIX@:>@], [Path to libganglia.])],
2513   [
2514     if test -f "$withval" && test -x "$withval"; then
2515       with_libganglia_config="$withval"
2516       with_libganglia="yes"
2517     else if test -f "$withval/bin/ganglia-config" && test -x "$withval/bin/ganglia-config"; then
2518       with_libganglia_config="$withval/bin/ganglia-config"
2519       with_libganglia="yes"
2520     else if test -d "$withval"; then
2521       GANGLIA_CPPFLAGS="-I$withval/include"
2522       GANGLIA_LDFLAGS="-L$withval/lib"
2523       with_libganglia="yes"
2524     else
2525       with_libganglia="$withval"
2526     fi; fi; fi
2527   ],
2528   [with_libganglia="yes"]
2529 )
2530
2531 if test "x$with_libganglia" = "xyes"; then
2532   if test "x$with_libganglia_config" != "x"; then
2533     if test "x$GANGLIA_CPPFLAGS" = "x"; then
2534       GANGLIA_CPPFLAGS=`"$with_libganglia_config" --cflags 2>/dev/null`
2535     fi
2536
2537     if test "x$GANGLIA_LDFLAGS" = "x"; then
2538       GANGLIA_LDFLAGS=`"$with_libganglia_config" --ldflags 2>/dev/null`
2539     fi
2540
2541     if test "x$GANGLIA_LIBS" = "x"; then
2542       GANGLIA_LIBS=`"$with_libganglia_config" --libs 2>/dev/null`
2543     fi
2544   else
2545     GANGLIA_LIBS="-lganglia"
2546   fi
2547 fi
2548
2549 SAVE_CPPFLAGS="$CPPFLAGS"
2550 SAVE_LDFLAGS="$LDFLAGS"
2551 CPPFLAGS="$CPPFLAGS $GANGLIA_CPPFLAGS"
2552 LDFLAGS="$LDFLAGS $GANGLIA_LDFLAGS"
2553
2554 if test "x$with_libganglia" = "xyes"; then
2555   AC_CHECK_HEADERS([gm_protocol.h],
2556     [with_libganglia="yes"],
2557     [with_libganglia="no (gm_protocol.h not found)"]
2558   )
2559 fi
2560
2561 if test "x$with_libganglia" = "xyes"; then
2562   AC_CHECK_LIB([ganglia], [xdr_Ganglia_value_msg],
2563     [with_libganglia="yes"],
2564     [with_libganglia="no (symbol xdr_Ganglia_value_msg not found)"]
2565   )
2566 fi
2567
2568 CPPFLAGS="$SAVE_CPPFLAGS"
2569 LDFLAGS="$SAVE_LDFLAGS"
2570
2571 AC_SUBST(GANGLIA_CPPFLAGS)
2572 AC_SUBST(GANGLIA_LDFLAGS)
2573 AC_SUBST(GANGLIA_LIBS)
2574 # }}}
2575
2576 # --with-libgcrypt {{{
2577 GCRYPT_CPPFLAGS="$GCRYPT_CPPFLAGS"
2578 GCRYPT_LDFLAGS="$GCRYPT_LDFLAGS"
2579 GCRYPT_LIBS="$GCRYPT_LIBS"
2580 AC_ARG_WITH([libgcrypt],
2581   [AS_HELP_STRING([--with-libgcrypt@<:@=PREFIX@:>@], [Path to libgcrypt.])],
2582   [
2583     if test -f "$withval" && test -x "$withval"; then
2584       with_libgcrypt_config="$withval"
2585       with_libgcrypt="yes"
2586     else if test -f "$withval/bin/gcrypt-config" && test -x "$withval/bin/gcrypt-config"; then
2587       with_libgcrypt_config="$withval/bin/gcrypt-config"
2588       with_libgcrypt="yes"
2589     else if test -d "$withval"; then
2590       GCRYPT_CPPFLAGS="$GCRYPT_CPPFLAGS -I$withval/include"
2591       GCRYPT_LDFLAGS="$GCRYPT_LDFLAGS -L$withval/lib"
2592       with_libgcrypt="yes"
2593     else
2594       with_libgcrypt_config="gcrypt-config"
2595       with_libgcrypt="$withval"
2596     fi; fi; fi
2597   ],
2598   [
2599     with_libgcrypt_config="libgcrypt-config"
2600     with_libgcrypt="yes"
2601   ]
2602 )
2603
2604 if test "x$with_libgcrypt" = "xyes" && test "x$with_libgcrypt_config" != "x"; then
2605   if test "x$GCRYPT_CPPFLAGS" = "x"; then
2606     GCRYPT_CPPFLAGS=`"$with_libgcrypt_config" --cflags 2>/dev/null`
2607   fi
2608
2609   if test "x$GCRYPT_LIBS" = "x"; then
2610     GCRYPT_LIBS=`"$with_libgcrypt_config" --libs 2>/dev/null`
2611   fi
2612 fi
2613
2614 SAVE_CPPFLAGS="$CPPFLAGS"
2615 SAVE_LDFLAGS="$LDFLAGS"
2616 SAVE_LIBS="$LIBS"
2617 CPPFLAGS="$CPPFLAGS $GCRYPT_CPPFLAGS"
2618 LDFLAGS="$LDFLAGS $GCRYPT_LDFLAGS"
2619 LIBS="$LIBS $GCRYPT_LIBS"
2620
2621 if test "x$with_libgcrypt" = "xyes"; then
2622   AC_CHECK_HEADERS([gcrypt.h],
2623     [with_libgcrypt="yes"],
2624     [with_libgcrypt="no (gcrypt.h not found)"]
2625   )
2626 fi
2627
2628 if test "x$with_libgcrypt" = "xyes"; then
2629   AC_CHECK_LIB(gcrypt, gcry_md_hash_buffer,
2630     [with_libgcrypt="yes"],
2631     [with_libgcrypt="no (symbol gcry_md_hash_buffer not found)"]
2632   )
2633 fi
2634
2635 CPPFLAGS="$SAVE_CPPFLAGS"
2636 LDFLAGS="$SAVE_LDFLAGS"
2637 LIBS="$SAVE_LIBS"
2638
2639 AC_SUBST([GCRYPT_CPPFLAGS])
2640 AC_SUBST([GCRYPT_LDFLAGS])
2641 AC_SUBST([GCRYPT_LIBS])
2642 AM_CONDITIONAL([BUILD_WITH_LIBGCRYPT], [test "x$with_libgcrypt" = "xyes"])
2643 # }}}
2644
2645 # --with-libgps {{{
2646 AC_ARG_WITH([libgps],
2647   [AS_HELP_STRING([--with-libgps@<:@=PREFIX@:>@], [Path to libgps.])],
2648   [
2649     if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
2650       with_libgps_cflags="-I$withval/include"
2651       with_libgps_ldflags="-L$withval/lib"
2652       with_libgps="yes"
2653     else
2654       with_libgps="$withval"
2655     fi
2656   ],
2657   [with_libgps="yes"]
2658 )
2659
2660 if test "x$with_libgps" = "xyes"; then
2661   SAVE_CFLAGS="$CFLAGS"
2662   CFLAGS="$CFLAGS $with_libgps_cflags"
2663
2664   AC_CHECK_HEADERS([gps.h],
2665     [with_libgps="yes"],
2666     [with_libgps="no (gps.h not found)"]
2667   )
2668
2669   CFLAGS="$SAVE_CFLAGS"
2670 fi
2671
2672 if test "x$with_libgps" = "xyes"; then
2673   SAVE_LDFLAGS="$LDFLAGS"
2674   LDFLAGS="$LDFLAGS $with_libgps_ldflags"
2675
2676   AC_CHECK_LIB([gps], [gps_open],
2677     [with_libgps="yes"],
2678     [with_libgps="no (symbol gps_open not found)"]
2679   )
2680
2681   LDFLAGS="$SAVE_LDFLAGS"
2682 fi
2683
2684 if test "x$with_libgps" = "xyes"; then
2685   BUILD_WITH_LIBGPS_CFLAGS="$with_libgps_cflags"
2686   BUILD_WITH_LIBGPS_LDFLAGS="$with_libgps_ldflags"
2687   BUILD_WITH_LIBGPS_LIBS="-lgps"
2688 fi
2689
2690 AC_SUBST([BUILD_WITH_LIBGPS_CFLAGS])
2691 AC_SUBST([BUILD_WITH_LIBGPS_LDFLAGS])
2692 AC_SUBST([BUILD_WITH_LIBGPS_LIBS])
2693
2694 # }}}
2695
2696 # --with-libgrpc++ {{{
2697 AC_ARG_WITH([libgrpc++],
2698   [AS_HELP_STRING([--with-libgrpc++@<:@=PREFIX@:>@], [Path to libgrpc++.])],
2699   [
2700     with_grpcpp="$withval"
2701     if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
2702       with_libgrpcpp_cppflags="-I$withval/include"
2703       with_libgrpcpp_ldflags="-L$withval/lib"
2704       with_libgrpcpp_bin="$withval/bin"
2705       with_libgrpcpp="yes"
2706     fi
2707     if test "x$withval" = "xno"; then
2708       with_libgrpcpp="no (disabled on command line)"
2709     fi
2710   ],
2711   [withval="yes"]
2712 )
2713 if test "x$withval" = "xyes"; then
2714 PKG_CHECK_MODULES([GRPCPP], [grpc++],
2715   [with_libgrpcpp="yes"],
2716   [with_libgrpcpp="no (pkg-config could not find libgrpc++)"]
2717 )
2718 fi
2719
2720 if test "x$withval" != "xno"; then
2721   AC_MSG_CHECKING([whether $CXX accepts -std=c++11])
2722   if test_cxx_flags -std=c++11; then
2723     AC_MSG_RESULT([yes])
2724   else
2725     AC_MSG_RESULT([no])
2726     with_libgrpcpp="no (requires C++11 support)"
2727   fi
2728 fi
2729
2730 if test "x$with_libgrpcpp" = "xyes"; then
2731   AC_LANG_PUSH(C++)
2732   SAVE_CPPFLAGS="$CPPFLAGS"
2733   CPPFLAGS="-std=c++11 $with_libgrpcpp_cppflags $GRPCPP_CFLAGS $CPPFLAGS"
2734   AC_CHECK_HEADERS([grpc++/grpc++.h],
2735     [with_libgrpcpp="yes"],
2736     [with_libgrpcpp="no (<grpc++/grpc++.h> not found)"]
2737   )
2738   CPPFLAGS="$SAVE_CPPFLAGS"
2739   AC_LANG_POP(C++)
2740 fi
2741
2742 if test "x$with_libgrpcpp" = "xyes"; then
2743   AC_LANG_PUSH(C++)
2744   SAVE_CPPFLAGS="$CPPFLAGS"
2745   SAVE_LDFLAGS="$LDFLAGS"
2746   SAVE_LIBS="$LIBS"
2747   CPPFLAGS="-std=c++11 $with_libgrpcpp_cppflags $GRPCPP_CFLAGS $CPPFLAGS"
2748   LDFLAGS="$with_libgrpcpp_ldflags"
2749   if test "x$GRPCPP_LIBS" = "x"; then
2750     LIBS="-lgrpc++"
2751   else
2752     LIBS="$GRPCPP_LIBS"
2753   fi
2754   AC_LINK_IFELSE(
2755     [
2756       AC_LANG_PROGRAM(
2757         [[#include <grpc++/grpc++.h>]],
2758         [[grpc::ServerBuilder sb;]]
2759       )
2760     ],
2761     [
2762       with_libgrpcpp="yes"
2763       if test "x$GRPCPP_LIBS" = "x"; then
2764         GRPCPP_LIBS="-lgrpc++"
2765       fi
2766     ],
2767     [with_libgrpcpp="no (libgrpc++ not found)"]
2768   )
2769   CPPFLAGS="$SAVE_CPPFLAGS"
2770   LDFLAGS="$SAVE_LDFLAGS"
2771   LIBS="$SAVE_LIBS"
2772   AC_LANG_POP(C++)
2773 fi
2774
2775 BUILD_WITH_LIBGRPCPP_CPPFLAGS="-std=c++11 $with_libgrpcpp_cppflags $GRPCPP_CFLAGS"
2776 BUILD_WITH_LIBGRPCPP_LDFLAGS="$with_libgrpcpp_ldflags"
2777 BUILD_WITH_LIBGRPCPP_LIBS="$GRPCPP_LIBS"
2778 AC_SUBST([BUILD_WITH_LIBGRPCPP_CPPFLAGS])
2779 AC_SUBST([BUILD_WITH_LIBGRPCPP_LDFLAGS])
2780 AC_SUBST([BUILD_WITH_LIBGRPCPP_LIBS])
2781 # }}}
2782
2783 AC_ARG_VAR([GRPC_CPP_PLUGIN], [path to the grpc_cpp_plugin binary])
2784 if test "x$with_libgrpcpp_bin" = "x"; then
2785   AC_PATH_PROG([GRPC_CPP_PLUGIN], [grpc_cpp_plugin])
2786 else
2787   AC_PATH_PROG([GRPC_CPP_PLUGIN], [grpc_cpp_plugin], [], "$with_libgrpcpp_bin:$PATH")
2788 fi
2789 AM_CONDITIONAL([HAVE_GRPC_CPP], [test "x$GRPC_CPP_PLUGIN" != "x"])
2790
2791 # --with-libiptc {{{
2792 AC_ARG_WITH([libiptc],
2793   [AS_HELP_STRING([--with-libiptc@<:@=PREFIX@:>@], [Path to libiptc.])],
2794   [
2795     if test "x$withval" = "xyes"; then
2796       with_libiptc="pkgconfig"
2797     else if test "x$withval" = "xno"; then
2798       with_libiptc="no"
2799     else
2800       with_libiptc="yes"
2801       with_libiptc_cflags="-I$withval/include"
2802       with_libiptc_libs="-L$withval/lib"
2803     fi; fi
2804   ],
2805   [
2806     if test "x$ac_system" = "xLinux"; then
2807       with_libiptc="pkgconfig"
2808     else
2809       with_libiptc="no (Linux only)"
2810     fi
2811   ]
2812 )
2813
2814 if test "x$with_libiptc" = "xpkgconfig"; then
2815   $PKG_CONFIG --exists 'libiptc' 2>/dev/null
2816   if test $? -ne 0; then
2817     with_libiptc="no (pkg-config doesn't know libiptc)"
2818   fi
2819 fi
2820
2821 if test "x$with_libiptc" = "xpkgconfig"; then
2822   with_libiptc_cflags="`$PKG_CONFIG --cflags 'libiptc'`"
2823   if test $? -ne 0; then
2824     with_libiptc="no ($PKG_CONFIG failed)"
2825   fi
2826
2827   with_libiptc_libs="`$PKG_CONFIG --libs 'libiptc'`"
2828   if test $? -ne 0; then
2829     with_libiptc="no ($PKG_CONFIG failed)"
2830   fi
2831 fi
2832
2833 SAVE_CPPFLAGS="$CPPFLAGS"
2834 CPPFLAGS="$CPPFLAGS $with_libiptc_cflags"
2835
2836 # check whether the header file for libiptc is available.
2837 if test "x$with_libiptc" = "xpkgconfig"; then
2838   AC_CHECK_HEADERS([libiptc/libiptc.h libiptc/libip6tc.h],
2839     [],
2840     [with_libiptc="no (header file missing)"]
2841   )
2842 fi
2843
2844 # If the header file is available, check for the required type declaractions.
2845 # They may be missing in old versions of libiptc. In that case, they will be
2846 # declared in the iptables plugin.
2847 if test "x$with_libiptc" = "xpkgconfig"; then
2848   AC_CHECK_TYPES([iptc_handle_t, ip6tc_handle_t], [], [])
2849 fi
2850
2851 # Check for the iptc_init symbol in the library.
2852 # This could be in iptc or ip4tc
2853 if test "x$with_libiptc" = "xpkgconfig"; then
2854   SAVE_LIBS="$LIBS"
2855   AC_SEARCH_LIBS([iptc_init], [iptc ip4tc],
2856     [with_libiptc="pkgconfig"],
2857     [with_libiptc="no"],
2858     [$with_libiptc_libs]
2859   )
2860   LIBS="$SAVE_LIBS"
2861 fi
2862
2863 if test "x$with_libiptc" = "xpkgconfig"; then
2864   with_libiptc="yes"
2865 fi
2866
2867 CPPFLAGS="$SAVE_CPPFLAGS"
2868
2869 if test "x$with_libiptc" = "xyes"; then
2870   BUILD_WITH_LIBIPTC_CPPFLAGS="$with_libiptc_cflags"
2871   BUILD_WITH_LIBIPTC_LDFLAGS="$with_libiptc_libs"
2872 fi
2873 AC_SUBST([BUILD_WITH_LIBIPTC_CPPFLAGS])
2874 AC_SUBST([BUILD_WITH_LIBIPTC_LDFLAGS])
2875 # }}}
2876
2877 # --with-java {{{
2878 with_java_home="$JAVA_HOME"
2879 if test "x$with_java_home" = "x"; then
2880   with_java_home="/usr/lib/jvm"
2881 fi
2882
2883 JAVAC="$JAVAC"
2884 JAR="$JAR"
2885 AC_ARG_WITH([java],
2886   [AS_HELP_STRING([--with-java@<:@=PREFIX@:>@], [Path to Java home.])],
2887   [
2888     if test "x$withval" = "xno"; then
2889       with_java="no"
2890     else if test "x$withval" = "xyes"; then
2891       with_java="yes"
2892     else
2893       with_java_home="$withval"
2894       with_java="yes"
2895     fi; fi
2896   ],
2897   [with_java="yes"]
2898 )
2899
2900 AX_COMPARE_VERSION([$am__api_version],[lt],[1.12],
2901   [JAVA_TIMESTAMP_FILE="classdist_noinst.stamp"],
2902   [JAVA_TIMESTAMP_FILE="classnoinst.stamp"])
2903 if test "x$with_java" = "xyes"; then
2904   if test -d "$with_java_home"; then
2905     AC_MSG_CHECKING([for jni.h])
2906     TMPVAR=`find -L "$with_java_home" -name jni.h -type f -exec 'dirname' '{}' ';' 2>/dev/null | LC_ALL=C sort | head -n 1`
2907     if test "x$TMPVAR" != "x"; then
2908       AC_MSG_RESULT([found in $TMPVAR])
2909       JAVA_CPPFLAGS="$JAVA_CPPFLAGS -I$TMPVAR"
2910     else
2911       AC_MSG_RESULT([not found])
2912     fi
2913
2914     AC_MSG_CHECKING([for jni_md.h])
2915     TMPVAR=`find -L "$with_java_home" -name jni_md.h -type f -exec 'dirname' '{}' ';' 2>/dev/null | LC_ALL=C sort | head -n 1`
2916     if test "x$TMPVAR" != "x"; then
2917       AC_MSG_RESULT([found in $TMPVAR])
2918       JAVA_CPPFLAGS="$JAVA_CPPFLAGS -I$TMPVAR"
2919     else
2920       AC_MSG_RESULT([not found])
2921     fi
2922
2923     AC_MSG_CHECKING([for libjvm.so])
2924     TMPVAR=`find -L "$with_java_home" -type f \( -name libjvm.so -o -name libjvm.dylib \) -exec 'dirname' '{}' ';' 2>/dev/null | LC_ALL=C sort | head -n 1`
2925     if test "x$TMPVAR" != "x"; then
2926       AC_MSG_RESULT([found in $TMPVAR])
2927       JAVA_LDFLAGS="$JAVA_LDFLAGS -L$TMPVAR -Wl,-rpath -Wl,$TMPVAR"
2928     else
2929       AC_MSG_RESULT([not found])
2930     fi
2931
2932     if test "x$JAVAC" = "x"; then
2933       AC_MSG_CHECKING([for javac])
2934       TMPVAR=`find -L "$with_java_home" -name javac -type f 2>/dev/null | LC_ALL=C sort | head -n 1`
2935       if test "x$TMPVAR" != "x"; then
2936         JAVAC="$TMPVAR"
2937         AC_MSG_RESULT([$JAVAC])
2938       else
2939         AC_MSG_RESULT([not found])
2940       fi
2941     fi
2942
2943     if test "x$JAR" = "x"; then
2944       AC_MSG_CHECKING([for jar])
2945       TMPVAR=`find -L "$with_java_home" -name jar -type f 2>/dev/null | LC_ALL=C sort | head -n 1`
2946       if test "x$TMPVAR" != "x"; then
2947         JAR="$TMPVAR"
2948         AC_MSG_RESULT([$JAR])
2949       else
2950         AC_MSG_RESULT([not found])
2951       fi
2952     fi
2953   else if test "x$with_java_home" != "x"; then
2954     AC_MSG_WARN([JAVA_HOME: No such directory: $with_java_home])
2955   fi; fi
2956 fi
2957
2958 if test "x$JAVAC" = "x"; then
2959   with_javac_path="$PATH"
2960   if test "x$with_java_home" != "x"; then
2961     with_javac_path="$with_java_home:with_javac_path"
2962     if test -d "$with_java_home/bin"; then
2963       with_javac_path="$with_java_home/bin:with_javac_path"
2964     fi
2965   fi
2966
2967   AC_PATH_PROG([JAVAC], [javac], [], "$with_javac_path")
2968 fi
2969
2970 if test "x$JAVAC" = "x"; then
2971   with_java="no (javac not found)"
2972 fi
2973
2974 if test "x$JAR" = "x"; then
2975   with_jar_path="$PATH"
2976   if test "x$with_java_home" != "x"; then
2977     with_jar_path="$with_java_home:$with_jar_path"
2978     if test -d "$with_java_home/bin"; then
2979       with_jar_path="$with_java_home/bin:$with_jar_path"
2980     fi
2981   fi
2982
2983   AC_PATH_PROG([JAR], [jar], [], "$with_jar_path")
2984 fi
2985
2986 if test "x$JAR" = "x"; then
2987   with_java="no (jar not found)"
2988 fi
2989
2990 SAVE_CPPFLAGS="$CPPFLAGS"
2991 SAVE_CFLAGS="$CFLAGS"
2992 SAVE_LDFLAGS="$LDFLAGS"
2993 SAVE_LIBS="$LIBS"
2994 CPPFLAGS="$CPPFLAGS $JAVA_CPPFLAGS"
2995 CFLAGS="$CFLAGS $JAVA_CFLAGS"
2996 LDFLAGS="$LDFLAGS $JAVA_LDFLAGS"
2997 LIBS="$LIBS $JAVA_LIBS"
2998
2999 if test "x$with_java" = "xyes"; then
3000   AC_CHECK_HEADERS([jni.h],
3001     [with_jave="yes"],
3002     [with_java="no (jni.h not found)"])
3003 fi
3004
3005 if test "x$with_java" = "xyes"; then
3006   AC_CHECK_LIB([jvm], [JNI_CreateJavaVM],
3007     [with_java="yes"],
3008     [with_java="no (Symbol 'JNI_CreateJavaVM' not found)"],
3009     [$JAVA_LIBS $PTHREAD_LIBS]
3010   )
3011 fi
3012
3013 if test "x$with_java" = "xyes"; then
3014   JAVA_LIBS="$JAVA_LIBS -ljvm"
3015 fi
3016
3017 CPPFLAGS="$SAVE_CPPFLAGS"
3018 CFLAGS="$SAVE_CFLAGS"
3019 LDFLAGS="$SAVE_LDFLAGS"
3020 LIBS="$SAVE_LIBS"
3021
3022 AC_SUBST([JAVA_CPPFLAGS])
3023 AC_SUBST([JAVA_CFLAGS])
3024 AC_SUBST([JAVA_LDFLAGS])
3025 AC_SUBST([JAVA_LIBS])
3026 AC_SUBST([JAVA_TIMESTAMP_FILE])
3027 AM_CONDITIONAL([BUILD_WITH_JAVA], [test "x$with_java" = "xyes"])
3028 # }}}
3029
3030 # --with-libldap {{{
3031 AC_ARG_WITH([libldap],
3032   [AS_HELP_STRING([--with-libldap@<:@=PREFIX@:>@], [Path to libldap.])],
3033   [
3034     if test "x$withval" = "xyes"; then
3035       with_libldap="yes"
3036     else if test "x$withval" = "xno"; then
3037       with_libldap="no"
3038     else
3039       with_libldap="yes"
3040       LIBLDAP_CPPFLAGS="$LIBLDAP_CPPFLAGS -I$withval/include"
3041       LIBLDAP_LDFLAGS="$LIBLDAP_LDFLAGS -L$withval/lib"
3042     fi; fi
3043   ],
3044   [with_libldap="yes"]
3045 )
3046
3047 SAVE_CPPFLAGS="$CPPFLAGS"
3048 SAVE_LDFLAGS="$LDFLAGS"
3049
3050 CPPFLAGS="$CPPFLAGS $LIBLDAP_CPPFLAGS"
3051 LDFLAGS="$LDFLAGS $LIBLDAP_LDFLAGS"
3052
3053 if test "x$with_libldap" = "xyes"; then
3054   AC_CHECK_HEADERS([ldap.h],
3055     [with_libldap="yes"],
3056     [with_libldap="no ('ldap.h' not found)"]
3057   )
3058 fi
3059
3060 if test "x$with_libldap" = "xyes"; then
3061   AC_CHECK_LIB([ldap], [ldap_initialize],
3062     [with_libldap="yes"],
3063     [with_libldap="no (symbol 'ldap_initialize' not found)"]
3064   )
3065 fi
3066
3067 CPPFLAGS="$SAVE_CPPFLAGS"
3068 LDFLAGS="$SAVE_LDFLAGS"
3069
3070 if test "x$with_libldap" = "xyes"
3071 then
3072   BUILD_WITH_LIBLDAP_CPPFLAGS="$LIBLDAP_CPPFLAGS"
3073   BUILD_WITH_LIBLDAP_LDFLAGS="$LIBLDAP_LDFLAGS"
3074 fi
3075 AC_SUBST([BUILD_WITH_LIBLDAP_CPPFLAGS])
3076 AC_SUBST([BUILD_WITH_LIBLDAP_LDFLAGS])
3077 # }}}
3078
3079 # --with-liblua {{{
3080 AC_ARG_VAR([LIBLUA_PKG_CONFIG_NAME], [Name of liblua used by pkg-config])
3081 if test "x$LIBLUA_PKG_CONFIG_NAME" != "x"
3082 then
3083   PKG_CHECK_MODULES([LUA], [$LIBLUA_PKG_CONFIG_NAME],
3084     [with_liblua="yes"],
3085     [with_liblua="no"]
3086   )
3087 else
3088   PKG_CHECK_MODULES([LUA], [lua],
3089     [with_liblua="yes"],
3090     [
3091       PKG_CHECK_MODULES([LUA], [lua-5.3],
3092         [with_liblua="yes"],
3093         [
3094           PKG_CHECK_MODULES([LUA], [lua5.3],
3095             [with_liblua="yes"],
3096             [
3097               PKG_CHECK_MODULES([LUA], [lua53],
3098                 [with_liblua="yes"],
3099                 [
3100                   PKG_CHECK_MODULES([LUA], [lua-5.2],
3101                     [with_liblua="yes"],
3102                     [
3103                       PKG_CHECK_MODULES([LUA], [lua5.2],
3104                         [with_liblua="yes"],
3105                         [
3106                           PKG_CHECK_MODULES([LUA], [lua52],
3107                             [with_liblua="yes"],
3108                             [
3109                               PKG_CHECK_MODULES([LUA], [lua-5.1],
3110                                 [with_liblua="yes"],
3111                                 [
3112                                   PKG_CHECK_MODULES([LUA], [lua5.1],
3113                                     [with_liblua="yes"],
3114                                     [
3115                                       PKG_CHECK_MODULES([LUA], [lua51],
3116                                         [with_liblua="yes"],
3117                                         [with_liblua="no (pkg-config cannot find liblua)"]
3118                                       )
3119                                     ]
3120                                   )
3121                                 ]
3122                               )
3123                             ]
3124                           )
3125                         ]
3126                       )
3127                     ]
3128                   )
3129                 ]
3130               )
3131             ]
3132           )
3133         ]
3134       )
3135     ]
3136   )
3137 fi
3138
3139 if test "x$with_liblua" = "xyes"
3140 then
3141   SAVE_CPPFLAGS="$CPPFLAGS"
3142   CPPFLAGS="$CPPFLAGS $LUA_CFLAGS"
3143
3144   AC_CHECK_HEADERS([lua.h lauxlib.h lualib.h],
3145     [with_liblua="yes"],
3146     [with_liblua="no (header not found)"]
3147   )
3148
3149   CPPFLAGS="$SAVE_CPPFLAGS"
3150 fi
3151
3152 if test "x$with_liblua" = "xyes"
3153 then
3154   SAVE_LIBS="$LIBS"
3155   LIBS="$LIBS $LUA_LIBS"
3156
3157   AC_CHECK_FUNC([lua_settop],
3158     [with_liblua="yes"],
3159     [with_liblua="no (symbol 'lua_settop' not found)"]
3160   )
3161
3162   LIBS="$SAVE_LIBS"
3163 fi
3164
3165 if test "x$with_liblua" = "xyes"
3166 then
3167     BUILD_WITH_LIBLUA_CFLAGS="$LUA_CFLAGS"
3168     BUILD_WITH_LIBLUA_LIBS="$LUA_LIBS"
3169 fi
3170 AC_SUBST(BUILD_WITH_LIBLUA_CFLAGS)
3171 AC_SUBST(BUILD_WITH_LIBLUA_LIBS)
3172 # }}}
3173
3174 # --with-liblvm2app {{{
3175 AC_ARG_WITH([liblvm2app],
3176   [AS_HELP_STRING([--with-liblvm2app@<:@=PREFIX@:>@], [Path to liblvm2app.])],
3177   [
3178     if test "x$withval" = "xno"; then
3179       with_liblvm2app="no"
3180     else
3181       with_liblvm2app="yes"
3182       if test "x$withval" != "xyes"; then
3183         with_liblvm2app_cppflags="-I$withval/include"
3184         with_liblvm2app_ldflags="-L$withval/lib"
3185       fi
3186     fi
3187   ],
3188   [
3189     if test "x$ac_system" = "xLinux"; then
3190       with_liblvm2app="yes"
3191     else
3192       with_liblvm2app="no (Linux only library)"
3193     fi
3194   ]
3195 )
3196
3197 if test "x$with_liblvm2app" = "xyes"; then
3198   SAVE_CPPFLAGS="$CPPFLAGS"
3199   CPPFLAGS="$CPPFLAGS $with_liblvm2app_cppflags"
3200
3201   AC_CHECK_HEADERS([lvm2app.h],
3202     [with_liblvm2app="yes"],
3203     [with_liblvm2app="no (lvm2app.h not found)"]
3204   )
3205
3206   CPPFLAGS="$SAVE_CPPFLAGS"
3207 fi
3208
3209 if test "x$with_liblvm2app" = "xyes"; then
3210   SAVE_CPPFLAGS="$CPPFLAGS"
3211   SAVE_LDFLAGS="$LDFLAGS"
3212   CPPFLAGS="$CPPFLAGS $with_liblvm2app_cppflags"
3213   LDFLAGS="$LDFLAGS $with_liblvm2app_ldflags"
3214
3215   AC_CHECK_LIB([lvm2app], [lvm_lv_get_property],
3216     [with_liblvm2app="yes"],
3217     [with_liblvm2app="no (Symbol 'lvm_lv_get_property' not found)"]
3218   )
3219
3220   CPPFLAGS="$SAVE_CPPFLAGS"
3221   LDFLAGS="$SAVE_LDFLAGS"
3222 fi
3223
3224 if test "x$with_liblvm2app" = "xyes"; then
3225   BUILD_WITH_LIBLVM2APP_CPPFLAGS="$with_liblvm2app_cppflags"
3226   BUILD_WITH_LIBLVM2APP_LDFLAGS="$with_liblvm2app_ldflags"
3227   BUILD_WITH_LIBLVM2APP_LIBS="-llvm2app"
3228 fi
3229
3230 AC_SUBST([BUILD_WITH_LIBLVM2APP_CPPFLAGS])
3231 AC_SUBST([BUILD_WITH_LIBLVM2APP_LDFLAGS])
3232 AC_SUBST([BUILD_WITH_LIBLVM2APP_LIBS])
3233 # }}}
3234
3235 # --with-libmemcached {{{
3236 AC_ARG_WITH([libmemcached],
3237   [AS_HELP_STRING([--with-libmemcached@<:@=PREFIX@:>@], [Path to libmemcached.])],
3238   [
3239     if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
3240       with_libmemcached_cppflags="-I$withval/include"
3241       with_libmemcached_ldflags="-L$withval/lib"
3242       with_libmemcached="yes"
3243     else
3244       with_libmemcached="$withval"
3245     fi
3246   ],
3247   [with_libmemcached="yes"]
3248 )
3249
3250 if test "x$with_libmemcached" = "xyes"; then
3251   SAVE_CPPFLAGS="$CPPFLAGS"
3252   CPPFLAGS="$CPPFLAGS $with_libmemcached_cppflags"
3253
3254   AC_CHECK_HEADERS([libmemcached/memcached.h],
3255     [with_libmemcached="yes"],
3256     [with_libmemcached="no (libmemcached/memcached.h not found)"]
3257   )
3258
3259   CPPFLAGS="$SAVE_CPPFLAGS"
3260 fi
3261
3262 if test "x$with_libmemcached" = "xyes"; then
3263   SAVE_CPPFLAGS="$CPPFLAGS"
3264   SAVE_LDFLAGS="$LDFLAGS"
3265   CPPFLAGS="$CPPFLAGS $with_libmemcached_cppflags"
3266   LDFLAGS="$LDFLAGS $with_libmemcached_ldflags"
3267
3268   AC_CHECK_LIB([memcached], [memcached_create],
3269     [with_libmemcached="yes"],
3270     [with_libmemcached="no (Symbol 'memcached_create' not found)"]
3271   )
3272
3273   CPPFLAGS="$SAVE_CPPFLAGS"
3274   LDFLAGS="$SAVE_LDFLAGS"
3275 fi
3276
3277 if test "x$with_libmemcached" = "xyes"; then
3278   BUILD_WITH_LIBMEMCACHED_CPPFLAGS="$with_libmemcached_cppflags"
3279   BUILD_WITH_LIBMEMCACHED_LDFLAGS="$with_libmemcached_ldflags"
3280   BUILD_WITH_LIBMEMCACHED_LIBS="-lmemcached"
3281 fi
3282
3283 AC_SUBST([BUILD_WITH_LIBMEMCACHED_CPPFLAGS])
3284 AC_SUBST([BUILD_WITH_LIBMEMCACHED_LDFLAGS])
3285 AC_SUBST([BUILD_WITH_LIBMEMCACHED_LIBS])
3286 # }}}
3287
3288 # --with-libmicrohttpd {{{
3289 with_libmicrohttpd_cppflags=""
3290 with_libmicrohttpd_ldflags=""
3291 AC_ARG_WITH([libmicrohttpd], [AS_HELP_STRING([--with-libmicrohttpd@<:@=PREFIX@:>@], [Path to libmicrohttpd.])],
3292   [
3293     if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
3294       with_libmicrohttpd_cppflags="-I$withval/include"
3295       with_libmicrohttpd_ldflags="-L$withval/lib"
3296       with_libmicrohttpd="yes"
3297     fi
3298     if test "x$withval" = "xno"; then
3299       with_libmicrohttpd="no (disabled on command line)"
3300     fi
3301   ],
3302   [withval="yes"]
3303 )
3304 if test "x$withval" = "xyes"; then
3305   PKG_CHECK_MODULES([MICROHTTPD], [libmicrohttpd],
3306     [with_libmicrohttpd="yes"],
3307     [with_libmicrohttpd="no (pkg-config could not find libmicrohttpd)"]
3308   )
3309 fi
3310
3311 if test "x$MICROHTTPD_LIBS" = "x"; then
3312   MICROHTTPD_LIBS="-lmicrohttpd"
3313 fi
3314
3315 SAVE_CPPFLAGS="$CPPFLAGS"
3316 SAVE_LDFLAGS="$LDFLAGS"
3317 SAVE_LIBS="$LIBS"
3318 CPPFLAGS="$with_libmicrohttpd_cppflags $MICROHTTPD_CFLAGS"
3319 LDFLAGS="$with_libmicrohttpd_ldflags $LDFLAGS"
3320 LIBS="$LIBS $MICROHTTPD_LIBS"
3321
3322 if test "x$with_libmicrohttpd" = "xyes"; then
3323   AC_CHECK_HEADERS([microhttpd.h],
3324    [with_libmicrohttpd="yes"],
3325    [with_libmicrohttpd="no (<microhttpd.h> not found)"]
3326   )
3327 fi
3328
3329 if test "x$with_libmicrohttpd" = "xyes"; then
3330   AC_CHECK_LIB([microhttpd], [MHD_start_daemon],
3331     [with_libmicrohttpd="yes"],
3332     [with_libmicrohttpd="no (libmicrohttpd not found)"]
3333   )
3334 fi
3335
3336 CPPFLAGS="$SAVE_CPPFLAGS"
3337 LDFLAGS="$SAVE_LDFLAGS"
3338 LIBS="$SAVE_LIBS"
3339
3340 BUILD_WITH_LIBMICROHTTPD_CPPFLAGS="$with_libmicrohttpd_cppflags $MICROHTTPD_CFLAGS"
3341 BUILD_WITH_LIBMICROHTTPD_LDFLAGS="$with_libmicrohttpd_ldflags"
3342 BUILD_WITH_LIBMICROHTTPD_LIBS="$MICROHTTPD_LIBS"
3343 AC_SUBST([BUILD_WITH_LIBMICROHTTPD_CPPFLAGS])
3344 AC_SUBST([BUILD_WITH_LIBMICROHTTPD_LDFLAGS])
3345 AC_SUBST([BUILD_WITH_LIBMICROHTTPD_LIBS])
3346 # }}}
3347
3348 # --with-libmodbus {{{
3349 AC_ARG_WITH([libmodbus],
3350   [AS_HELP_STRING([--with-libmodbus@<:@=PREFIX@:>@], [Path to the modbus library.])],
3351   [
3352     if test "x$withval" = "xno"; then
3353       with_libmodbus="no"
3354     else if test "x$withval" = "xyes"; then
3355       with_libmodbus="use_pkgconfig"
3356     else if test -d "$with_libmodbus/lib"; then
3357       AC_MSG_NOTICE([Not checking for libmodbus: Manually configured])
3358       with_libmodbus_cflags="-I$withval/include"
3359       with_libmodbus_libs="-L$withval/lib -lmodbus"
3360       with_libmodbus="yes"
3361     fi; fi; fi
3362   ],
3363   [with_libmodbus="use_pkgconfig"]
3364 )
3365
3366 # configure using pkg-config
3367 if test "x$with_libmodbus" = "xuse_pkgconfig"; then
3368   $PKG_CONFIG --exists 'libmodbus' 2>/dev/null
3369   if test $? -ne 0; then
3370     with_libmodbus="no (pkg-config doesn't know libmodbus)"
3371   fi
3372 fi
3373
3374 if test "x$with_libmodbus" = "xuse_pkgconfig"; then
3375   with_libmodbus_cflags="`$PKG_CONFIG --cflags 'libmodbus'`"
3376   if test $? -ne 0; then
3377     with_libmodbus="no ($PKG_CONFIG failed)"
3378   fi
3379
3380   with_libmodbus_libs="`$PKG_CONFIG --libs 'libmodbus'`"
3381   if test $? -ne 0; then
3382     with_libmodbus="no ($PKG_CONFIG failed)"
3383   fi
3384 fi
3385
3386 if test "x$with_libmodbus" = "xuse_pkgconfig"; then
3387   with_libmodbus="yes"
3388 fi
3389
3390 if test "x$with_libmodbus" = "xyes"; then
3391   SAVE_CPPFLAGS="$CPPFLAGS"
3392   CPPFLAGS="$CPPFLAGS $with_libmodbus_cflags"
3393
3394   AC_CHECK_HEADERS([modbus.h],
3395     [with_libmodbus="yes"],
3396     [with_libmodbus="no (modbus.h not found)"]
3397   )
3398
3399   CPPFLAGS="$SAVE_CPPFLAGS"
3400 fi
3401
3402 if test "x$with_libmodbus" = "xyes"; then
3403   SAVE_LDFLAGS="$LDFLAGS"
3404   LDFLAGS="$LDFLAGS $with_libmodbus_libs"
3405
3406   AC_CHECK_LIB([modbus], [modbus_connect],
3407     [with_libmodbus="yes"],
3408     [with_libmodbus="no (symbol modbus_connect not found)"]
3409   )
3410
3411   LDFLAGS="$SAVE_LDFLAGS"
3412 fi
3413
3414 if test "x$with_libmodbus" = "xyes"; then
3415   BUILD_WITH_LIBMODBUS_CFLAGS="$with_libmodbus_cflags"
3416   BUILD_WITH_LIBMODBUS_LIBS="$with_libmodbus_libs"
3417 fi
3418
3419 AC_SUBST([BUILD_WITH_LIBMODBUS_CFLAGS])
3420 AC_SUBST([BUILD_WITH_LIBMODBUS_LIBS])
3421 # }}}
3422
3423 # --with-libmongoc {{{
3424 AC_ARG_WITH([libmongoc],
3425   [AS_HELP_STRING([--with-libmongoc@<:@=PREFIX@:>@], [Path to libmongoc.])],
3426   [
3427     if test "x$withval" = "xyes"; then
3428       with_libmongoc="yes"
3429     else if test "x$withval" = "xno"; then
3430       with_libmongoc="no"
3431     else
3432       with_libmongoc="no"
3433     fi; fi
3434   ],
3435   [with_libmongoc="yes"]
3436 )
3437
3438 if test "x$with_libmongoc" = "xyes"; then
3439   PKG_CHECK_MODULES([LIBMONGOC], [libmongoc-1.0],
3440     [with_libmongoc="yes"],
3441     [with_libmongoc="no (pkg-config could not find libmongoc)"]
3442   )
3443 fi
3444
3445 if test "x$with_libmongoc" = "xyes"; then
3446   SAVE_CPPFLAGS="$CPPFLAGS"
3447
3448   CPPFLAGS="$CPPFLAGS $LIBMONGOC_CFLAGS"
3449
3450   AC_CHECK_HEADERS([mongoc.h],
3451     [with_libmongoc="yes"],
3452     [with_libmongoc="no ('mongoc.h' not found)"]
3453   )
3454
3455   CPPFLAGS="$SAVE_CPPFLAGS"
3456 fi
3457
3458 if test "x$with_libmongoc" = "xyes"; then
3459   SAVE_CPPFLAGS="$CPPFLAGS"
3460   SAVE_LDFLAGS="$LDFLAGS"
3461
3462   CPPFLAGS="$CPPFLAGS $LIBMONGOC_CFLAGS"
3463   LDFLAGS="$LDFLAGS $LIBMONGOC_LDFLAGS"
3464
3465   AC_CHECK_LIB([mongoc-1.0], [mongoc_init],
3466     [with_libmongoc="yes"],
3467     [with_libmongoc="no (symbol 'mongoc_init' not found)"]
3468   )
3469
3470   CPPFLAGS="$SAVE_CPPFLAGS"
3471   LDFLAGS="$SAVE_LDFLAGS"
3472 fi
3473
3474 if test "x$with_libmongoc" = "xyes"; then
3475   BUILD_WITH_LIBMONGOC_CFLAGS="$LIBMONGOC_CFLAGS"
3476   BUILD_WITH_LIBMONGOC_LDFLAGS="$LIBMONGOC_LDFLAGS"
3477   BUILD_WITH_LIBMONGOC_LIBS="$LIBMONGOC_LIBS"
3478 fi
3479
3480 AC_SUBST([BUILD_WITH_LIBMONGOC_CFLAGS])
3481 AC_SUBST([BUILD_WITH_LIBMONGOC_LDFLAGS])
3482 AC_SUBST([BUILD_WITH_LIBMONGOC_LIBS])
3483 # }}}
3484
3485 # --with-libmosquitto {{{
3486 AC_ARG_WITH([libmosquitto],
3487   [AS_HELP_STRING([--with-libmosquitto@<:@=PREFIX@:>@], [Path to libmosquitto.])],
3488   [
3489     if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
3490       with_libmosquitto_cppflags="-I$withval/include"
3491       with_libmosquitto_ldflags="-L$withval/lib"
3492       with_libmosquitto="yes"
3493     else
3494       with_libmosquitto="$withval"
3495     fi
3496   ],
3497   [with_libmosquitto="yes"]
3498 )
3499
3500 if test "x$with_libmosquitto" = "xyes"; then
3501   SAVE_CPPFLAGS="$CPPFLAGS"
3502   CPPFLAGS="$CPPFLAGS $with_libmosquitto_cppflags"
3503
3504   AC_CHECK_HEADERS([mosquitto.h],
3505     [with_libmosquitto="yes"],
3506     [with_libmosquitto="no (mosquitto.h not found)"]
3507   )
3508
3509   CPPFLAGS="$SAVE_CPPFLAGS"
3510 fi
3511
3512 if test "x$with_libmosquitto" = "xyes"; then
3513   SAVE_LDFLAGS="$LDFLAGS"
3514   LDFLAGS="$LDFLAGS $with_libmosquitto_ldflags"
3515
3516   AC_CHECK_LIB([mosquitto], [mosquitto_connect],
3517     [with_libmosquitto="yes"],
3518     [with_libmosquitto="no (libmosquitto not found)"]
3519   )
3520
3521   LDFLAGS="$SAVE_LDFLAGS"
3522 fi
3523
3524 if test "x$with_libmosquitto" = "xyes"; then
3525   BUILD_WITH_LIBMOSQUITTO_CPPFLAGS="$with_libmosquitto_cppflags"
3526   BUILD_WITH_LIBMOSQUITTO_LDFLAGS="$with_libmosquitto_ldflags"
3527   BUILD_WITH_LIBMOSQUITTO_LIBS="-lmosquitto"
3528 fi
3529
3530 AC_SUBST([BUILD_WITH_LIBMOSQUITTO_CPPFLAGS])
3531 AC_SUBST([BUILD_WITH_LIBMOSQUITTO_LDFLAGS])
3532 AC_SUBST([BUILD_WITH_LIBMOSQUITTO_LIBS])
3533 # }}}
3534
3535 # --with-libmysql {{{
3536 with_mysql_config="mysql_config"
3537 AC_ARG_WITH([libmysql],
3538   [AS_HELP_STRING([--with-libmysql@<:@=PREFIX@:>@], [Path to libmysql.])],
3539   [
3540     if test "x$withval" = "xno"; then
3541       with_libmysql="no"
3542     else if test "x$withval" = "xyes"; then
3543       with_libmysql="yes"
3544     else
3545       if test -f "$withval" && test -x "$withval"; then
3546         with_mysql_config="$withval"
3547       else if test -x "$withval/bin/mysql_config"; then
3548         with_mysql_config="$withval/bin/mysql_config"
3549       fi; fi
3550       with_libmysql="yes"
3551     fi; fi
3552   ],
3553   [with_libmysql="yes"]
3554 )
3555
3556 if test "x$with_libmysql" = "xyes"; then
3557   with_mysql_cflags=`$with_mysql_config --include 2>/dev/null`
3558   if test $? -ne 0; then
3559     with_libmysql="no ($with_mysql_config failed)"
3560   else
3561     SAVE_CPPFLAGS="$CPPFLAGS"
3562     CPPFLAGS="$CPPFLAGS $with_mysql_cflags"
3563
3564     AC_CHECK_HEADERS([mysql.h],
3565       [have_mysql_h="yes"],
3566       [have_mysql_h="no"]
3567     )
3568
3569     if test "x$have_mysql_h" != "xyes"; then
3570       AC_CHECK_HEADERS([mysql/mysql.h],
3571         [have_mysql_mysql_h="yes"],
3572         [],
3573       )
3574     fi
3575
3576     if test "x$have_mysql_h" != "xyes" && test "x$have_mysql_mysql_h" != "xyes"; then
3577       with_libmysql="no (mysql.h not found)"
3578     fi
3579
3580     CPPFLAGS="$SAVE_CPPFLAGS"
3581   fi
3582 fi
3583
3584 if test "x$with_libmysql" = "xyes"; then
3585   with_mysql_libs=`$with_mysql_config --libs_r 2>/dev/null`
3586   if test $? -ne 0; then
3587     with_libmysql="no ($with_mysql_config failed)"
3588   else
3589     SAVE_LIBS="$LIBS"
3590     LIBS="$with_mysql_libs"
3591
3592     AC_SEARCH_LIBS([mysql_get_server_version],
3593       [],
3594       [with_libmysql="yes"],
3595       [with_libmysql="no (symbol 'mysql_get_server_version' not found in ${LIBS})"],
3596       []
3597     )
3598     LIBS="$SAVE_LIBS"
3599   fi
3600 fi
3601
3602 if test "x$with_libmysql" = "xyes"; then
3603   BUILD_WITH_LIBMYSQL_CFLAGS="$with_mysql_cflags"
3604   BUILD_WITH_LIBMYSQL_LIBS="$with_mysql_libs"
3605 fi
3606
3607 AC_SUBST([BUILD_WITH_LIBMYSQL_CFLAGS])
3608 AC_SUBST([BUILD_WITH_LIBMYSQL_LIBS])
3609 # }}}
3610
3611 # --with-libmnl {{{
3612 AC_ARG_WITH([libmnl],
3613   [AS_HELP_STRING([--with-libmnl@<:@=PREFIX@:>@], [Path to libmnl.])],
3614   [
3615     if test "x$withval" = "xyes"; then
3616       with_libmnl="yes"
3617      else if test "x$withval" = "xno"; then
3618        with_libmnl="no"
3619      else
3620        if test -d "$withval/include"; then
3621          with_libmnl_cflags="-I$withval/include"
3622          with_libmnl_libs="-L$withval/lib -lmnl"
3623          with_libmnl="yes"
3624        else
3625          AC_MSG_ERROR("no such directory: $withval/include")
3626        fi
3627      fi; fi
3628   ],
3629   [
3630     if test "x$ac_system" = "xLinux"; then
3631       with_libmnl="yes"
3632     else
3633       with_libmnl="no (Linux only library)"
3634     fi
3635   ]
3636 )
3637
3638 if test "x$with_libmnl" = "xyes"; then
3639   if $PKG_CONFIG --exists libmnl 2>/dev/null; then
3640     with_libmnl_cflags="$with_libmnl_ldflags `$PKG_CONFIG --cflags libmnl`"
3641     with_libmnl_libs="$with_libmnl_libs `$PKG_CONFIG --libs libmnl`"
3642   fi
3643
3644   AC_CHECK_HEADERS([libmnl.h libmnl/libmnl.h],
3645     [
3646       with_libmnl="yes"
3647       break
3648     ],
3649     [],
3650     [[
3651       #include <stdio.h>
3652       #include <sys/types.h>
3653       #include <asm/types.h>
3654       #include <sys/socket.h>
3655       #include <linux/netlink.h>
3656       #include <linux/rtnetlink.h>]]
3657   )
3658
3659   AC_CHECK_HEADERS([linux/gen_stats.h linux/pkt_sched.h],
3660     [],
3661     [],
3662     [[
3663       #include <stdio.h>
3664       #include <sys/types.h>
3665       #include <asm/types.h>
3666       #include <sys/socket.h>
3667     ]]
3668   )
3669
3670   AC_COMPILE_IFELSE(
3671     [
3672       AC_LANG_PROGRAM(
3673         [[
3674           #include <stdio.h>
3675           #include <sys/types.h>
3676           #include <asm/types.h>
3677           #include <sys/socket.h>
3678           #include <linux/netlink.h>
3679           #include <linux/rtnetlink.h>
3680         ]],
3681         [[
3682           int retval = TCA_STATS2;
3683           return retval;
3684         ]]
3685       )
3686     ],
3687     [AC_DEFINE([HAVE_TCA_STATS2], [1], [True if the enum-member TCA_STATS2 exists])]
3688   )
3689
3690   AC_COMPILE_IFELSE(
3691     [
3692       AC_LANG_PROGRAM(
3693         [[
3694           #include <stdio.h>
3695           #include <sys/types.h>
3696           #include <asm/types.h>
3697           #include <sys/socket.h>
3698           #include <linux/netlink.h>
3699           #include <linux/rtnetlink.h>
3700         ]],
3701         [[
3702           int retval = TCA_STATS;
3703           return retval;
3704         ]]
3705       )
3706     ],
3707     [AC_DEFINE([HAVE_TCA_STATS], 1, [True if the enum-member TCA_STATS exists])]
3708   )
3709
3710   AC_CHECK_MEMBERS([struct rtnl_link_stats64.tx_window_errors],
3711     [AC_DEFINE(HAVE_RTNL_LINK_STATS64, 1, [Define if struct rtnl_link_stats64 exists and is usable.])],
3712     [],
3713     [[#include <linux/if_link.h>]]
3714   )
3715
3716   AC_CHECK_MEMBERS([struct rtnl_link_stats.rx_nohandler],
3717     [],
3718     [],
3719     [[#include <linux/if_link.h>]]
3720   )
3721
3722   AC_CHECK_MEMBERS([struct rtnl_link_stats64.rx_nohandler],
3723     [],
3724     [],
3725     [[#include <linux/if_link.h>]]
3726   )
3727
3728   AC_CHECK_LIB([mnl], [mnl_nlmsg_get_payload],
3729     [with_libmnl="yes"],
3730     [with_libmnl="no (symbol 'mnl_nlmsg_get_payload' not found)"],
3731     [$with_libmnl_libs]
3732   )
3733 fi
3734
3735 if test "x$with_libmnl" = "xyes"; then
3736   BUILD_WITH_LIBMNL_CFLAGS="$with_libmnl_cflags"
3737   BUILD_WITH_LIBMNL_LIBS="$with_libmnl_libs"
3738 fi
3739 AC_SUBST([BUILD_WITH_LIBMNL_CFLAGS])
3740 AC_SUBST([BUILD_WITH_LIBMNL_LIBS])
3741 AM_CONDITIONAL([HAVE_LIBMNL], [test "x$with_libmnl" = "xyes"])
3742 # }}}
3743
3744 # --with-libnetapp {{{
3745 AC_ARG_VAR([LIBNETAPP_CPPFLAGS], [C preprocessor flags required to build with libnetapp])
3746 AC_ARG_VAR([LIBNETAPP_LDFLAGS],  [Linker flags required to build with libnetapp])
3747 AC_ARG_VAR([LIBNETAPP_LIBS],     [Other libraries required to link against libnetapp])
3748 AC_ARG_WITH([libnetapp],
3749   [AS_HELP_STRING([--with-libnetapp@<:@=PREFIX@:>@], [Path to libnetapp.])],
3750   [
3751    if test -d "$withval"; then
3752      LIBNETAPP_CPPFLAGS="$LIBNETAPP_CPPFLAGS -I$withval/include"
3753      LIBNETAPP_LDFLAGS="$LIBNETAPP_LDFLAGS -L$withval/lib"
3754      with_libnetapp="yes"
3755    else
3756      with_libnetapp="$withval"
3757    fi
3758   ],
3759   [with_libnetapp="yes"]
3760 )
3761
3762 SAVE_CPPFLAGS="$CPPFLAGS"
3763 SAVE_LDFLAGS="$LDFLAGS"
3764 CPPFLAGS="$CPPFLAGS $LIBNETAPP_CPPFLAGS"
3765 LDFLAGS="$LDFLAGS $LIBNETAPP_LDFLAGS"
3766
3767 if test "x$with_libnetapp" = "xyes"; then
3768   AC_CHECK_HEADERS([netapp_api.h],
3769     [with_libnetapp="yes"],
3770     [with_libnetapp="no (netapp_api.h not found)"]
3771   )
3772 fi
3773
3774 if test "x$with_libnetapp" = "xyes"; then
3775   if test "x$LIBNETAPP_LIBS" = "x"; then
3776     LIBNETAPP_LIBS="$PTHREAD_LIBS -lxml -ladt -lssl -lm -lcrypto -lz"
3777   fi
3778
3779   AC_CHECK_LIB([netapp], [na_server_invoke_elem],
3780     [with_libnetapp="yes"],
3781     [with_libnetapp="no (symbol na_server_invoke_elem not found)"],
3782     [$LIBNETAPP_LIBS]
3783   )
3784
3785   LIBNETAPP_LIBS="-lnetapp $LIBNETAPP_LIBS"
3786 fi
3787
3788 CPPFLAGS="$SAVE_CPPFLAGS"
3789 LDFLAGS="$SAVE_LDFLAGS"
3790
3791 AC_SUBST([LIBNETAPP_CPPFLAGS])
3792 AC_SUBST([LIBNETAPP_LDFLAGS])
3793 AC_SUBST([LIBNETAPP_LIBS])
3794 # }}}
3795
3796 # --with-libnetsnmp {{{
3797 AC_ARG_WITH([libnetsnmp],
3798   [AS_HELP_STRING([--with-libnetsnmp@<:@=PREFIX@:>@], [Path to libnetsnmp.])],
3799   [
3800     if test "x$withval" = "xno"; then
3801      with_libnetsnmp="no"
3802     else if test "x$withval" = "xyes"; then
3803      with_libnetsnmp="yes"
3804     else
3805       with_libnetsnmp_cppflags="-I$withval/include"
3806       with_libnetsnmp_ldflags="-I$withval/lib"
3807       with_libnetsnmp="yes"
3808     fi; fi
3809   ],
3810   [with_libnetsnmp="yes"]
3811 )
3812
3813 if test "x$with_libnetsnmp" = "xyes"; then
3814   SAVE_CPPFLAGS="$CPPFLAGS"
3815   CPPFLAGS="$CPPFLAGS $with_libnetsnmp_cppflags"
3816
3817   AC_CHECK_HEADERS([net-snmp/net-snmp-config.h],
3818     [with_libnetsnmp="yes"],
3819     [with_libnetsnmp="no (net-snmp/net-snmp-config.h not found)"]
3820   )
3821
3822   AC_CHECK_HEADERS([net-snmp/net-snmp-includes.h],
3823     [with_libnetsnmp="yes"],
3824     [with_libnetsnmp="no (net-snmp/net-snmp-includes.h not found)"],
3825     [[
3826       #if HAVE_NET_SNMP_NET_SNMP_CONFIG_H
3827       # include <net-snmp/net-snmp-config.h>
3828       #endif
3829     ]]
3830   )
3831
3832   CPPFLAGS="$SAVE_CPPFLAGS"
3833 fi
3834
3835 if test "x$with_libnetsnmp" = "xyes"; then
3836   SAVE_LDFLAGS="$LDFLAGS"
3837   LDFLAGS="$LDFLAGS $with_libnetsnmp_ldflags"
3838
3839   AC_CHECK_LIB([netsnmp], [init_snmp],
3840     [with_libnetsnmp="yes"],
3841     [with_libnetsnmp="no (libnetsnmp not found)"]
3842   )
3843
3844   LDFLAGS="$SAVE_LDFLAGS"
3845 fi
3846
3847 if test "x$with_libnetsnmp" = "xyes"; then
3848   SAVE_LDFLAGS="$LDFLAGS"
3849   LDFLAGS="$LDFLAGS $with_libnetsnmp_ldflags"
3850
3851   AC_CHECK_LIB([netsnmp], [netsnmp_get_version],
3852     [with_libnetsnmp="yes"],
3853     [with_libnetsnmp="no (couldn't get libnetsnmp version)"]
3854   )
3855
3856   LDFLAGS="$SAVE_LDFLAGS"
3857 fi
3858
3859 if test "x$with_libnetsnmp" = "xyes"; then
3860   SAVE_CPPFLAGS="$CPPFLAGS"
3861   SAVE_LDFLAGS="$LDFLAGS"
3862   SAVE_LIBS="$LIBS"
3863   CPPFLAGS="$CPPFLAGS $with_libnetsnmp_cppflags"
3864   if test "x$GCC" = "xyes"; then
3865     CPPFLAGS="$CPPFLAGS -Wall -Werror"
3866   fi
3867   LDFLAGS="$LDFLAGS $with_libnetsnmp_ldflags"
3868   LIBS="$LIBS -lnetsnmp"
3869
3870   AC_CACHE_CHECK([whether netsnmp library has old API],
3871     [c_cv_have_netsnmp_old_api],
3872     [
3873       AC_LINK_IFELSE(
3874         [
3875           AC_LANG_PROGRAM(
3876             [[
3877               #include <net-snmp/net-snmp-config.h>
3878               #include <net-snmp/net-snmp-includes.h>
3879             ]],
3880             [[
3881               netsnmp_variable_list *key = SNMP_MALLOC_TYPEDEF(netsnmp_variable_list);;
3882               int val;
3883               u_char type = ASN_INTEGER;
3884               snmp_set_var_value(key, &val, sizeof(val));
3885               snmp_set_var_typed_value(key, type, &val, sizeof(val));
3886               return 0;
3887             ]]
3888           )
3889         ],
3890         [c_cv_have_netsnmp_old_api="no"],
3891         [c_cv_have_netsnmp_old_api="yes"]
3892       )
3893     ]
3894   )
3895
3896   if test "x$c_cv_have_netsnmp_old_api" = "xyes"; then
3897     AC_DEFINE([HAVE_NETSNMP_OLD_API], [1],
3898               ["Define 1 if you have old netsnmp API]")
3899   fi
3900
3901   CPPFLAGS="$SAVE_CPPFLAGS"
3902   LDFLAGS="$SAVE_LDFLAGS"
3903   LIBS="$SAVE_LIBS"
3904 fi
3905
3906 if test "x$with_libnetsnmp" = "xyes"; then
3907   BUILD_WITH_LIBNETSNMP_CPPFLAGS="$with_libnetsnmp_cppflags"
3908   BUILD_WITH_LIBNETSNMP_LDFLAGS="$with_libnetsnmp_ldflags"
3909   BUILD_WITH_LIBNETSNMP_LIBS="-lnetsnmp"
3910 fi
3911
3912 AC_SUBST([BUILD_WITH_LIBNETSNMP_CPPFLAGS])
3913 AC_SUBST([BUILD_WITH_LIBNETSNMP_LDFLAGS])
3914 AC_SUBST([BUILD_WITH_LIBNETSNMP_LIBS])
3915 # }}}
3916
3917 # --with-libnetsnmpagent {{{
3918 AC_ARG_WITH([libnetsnmpagent],
3919   [AS_HELP_STRING([--with-libnetsnmpagent@<:@=PREFIX@:>@], [Path to libnetsnmpagent.])],
3920   [
3921     if test "x$withval" = "xno"; then
3922       with_libnetsnmpagent="no"
3923     else if test "x$withval" = "xyes"; then
3924       with_libnetsnmpagent="yes"
3925     else
3926       with_libnetsnmpagent_cppflags="-I$withval/include"
3927       with_libnetsnmpagent_ldflags="-I$withval/lib"
3928       with_libnetsnmpagent="yes"
3929     fi; fi
3930   ],
3931   [with_libnetsnmpagent="yes"]
3932 )
3933
3934 if test "x$with_libnetsnmpagent" = "xyes"; then
3935   SAVE_CPPFLAGS="$CPPFLAGS"
3936   CPPFLAGS="$CPPFLAGS $with_libnetsnmpagent_cppflags"
3937
3938   AC_CHECK_HEADERS([net-snmp/agent/net-snmp-agent-includes.h],
3939     [],
3940     [with_libnetsnmpagent="no (net-snmp/agent/net-snmp-agent-includes.h not found)"],
3941     [[
3942       #if HAVE_NET_SNMP_NET_SNMP_CONFIG_H
3943       # include <net-snmp/net-snmp-config.h>
3944       #endif
3945       #if HAVE_NET_SNMP_NET_SNMP_INCLUDES_H
3946       # include <net-snmp/net-snmp-includes.h>
3947       #endif
3948     ]]
3949   )
3950
3951   CPPFLAGS="$SAVE_CPPFLAGS"
3952 fi
3953
3954 if test "x$with_libnetsnmpagent" = "xyes"; then
3955   SAVE_LDFLAGS="$LDFLAGS"
3956   LDFLAGS="$LDFLAGS $with_libnetsnmpagent_ldflags"
3957
3958   # older versions of libnetsnmpagent fail to link
3959   # against the helpers library, so do that explicitly
3960   AC_CHECK_LIB([netsnmphelpers], [netsnmp_init_helpers],
3961     [libnetsnmphelpers="-lnetsnmphelpers"],
3962     [libnetsnmphelpers=""]
3963   )
3964
3965   AC_CHECK_LIB([netsnmpagent], [init_agent],
3966     [with_libnetsnmpagent="yes"],
3967     [with_libnetsnmpagent="no (libnetsnmpagent not found)"],
3968     [$libnetsnmphelpers]
3969   )
3970
3971   LDFLAGS="$SAVE_LDFLAGS"
3972 fi
3973
3974 if test "x$with_libnetsnmpagent" = "xyes"; then
3975   BUILD_WITH_LIBNETSNMPAGENT_LIBS="-lnetsnmpagent $libnetsnmphelpers"
3976 fi
3977
3978 AC_SUBST([BUILD_WITH_LIBNETSNMPAGENT_CPPFLAGS])
3979 AC_SUBST([BUILD_WITH_LIBNETSNMPAGENT_LDFLAGS])
3980 AC_SUBST([BUILD_WITH_LIBNETSNMPAGENT_LIBS])
3981 # }}}
3982
3983 # --with-liboping {{{
3984 AC_ARG_WITH([liboping],
3985   [AS_HELP_STRING([--with-liboping@<:@=PREFIX@:>@], [Path to liboping.])],
3986   [
3987     if test "x$withval" = "xyes"; then
3988       with_liboping="yes"
3989     else if test "x$withval" = "xno"; then
3990       with_liboping="no"
3991     else
3992       with_liboping="yes"
3993       LIBOPING_CPPFLAGS="-I$withval/include"
3994       LIBOPING_LDFLAGS="-L$withval/lib"
3995     fi; fi
3996   ],
3997   [with_liboping="yes"]
3998 )
3999
4000 SAVE_CPPFLAGS="$CPPFLAGS"
4001 SAVE_LDFLAGS="$LDFLAGS"
4002 CPPFLAGS="$CPPFLAGS $LIBOPING_CPPFLAGS"
4003 LDFLAGS="$LDFLAGS $LIBOPING_LDFLAGS"
4004
4005 if test "x$with_liboping" = "xyes"; then
4006   AC_CHECK_HEADERS([oping.h],
4007     [with_liboping="yes"],
4008     [with_liboping="no (oping.h not found)"]
4009   )
4010 fi
4011
4012 if test "x$with_liboping" = "xyes"; then
4013   AC_CHECK_LIB([oping], [ping_construct],
4014     [with_liboping="yes"],
4015     [with_liboping="no (symbol 'ping_construct' not found)"]
4016   )
4017 fi
4018
4019 CPPFLAGS="$SAVE_CPPFLAGS"
4020 LDFLAGS="$SAVE_LDFLAGS"
4021
4022 if test "x$with_liboping" = "xyes"; then
4023   BUILD_WITH_LIBOPING_CPPFLAGS="$LIBOPING_CPPFLAGS"
4024   BUILD_WITH_LIBOPING_LDFLAGS="$LIBOPING_LDFLAGS"
4025 fi
4026
4027 AC_SUBST([BUILD_WITH_LIBOPING_CPPFLAGS])
4028 AC_SUBST([BUILD_WITH_LIBOPING_LDFLAGS])
4029 # }}}
4030
4031 # --with-oracle {{{
4032 AC_ARG_WITH([oracle],
4033   [AS_HELP_STRING([--with-oracle@<:@=ORACLE_HOME@:>@], [Path to Oracle.])],
4034   [
4035     if test "x$withval" = "xyes"; then
4036       if test "x$ORACLE_HOME" = "x"; then
4037         AC_MSG_WARN([Use of the Oracle library has been forced, but the environment variable ORACLE_HOME is not set.])
4038       fi
4039       with_oracle="yes"
4040     else if test "x$withval" = "xno"; then
4041       with_oracle="no"
4042     else
4043       with_oracle="yes"
4044       ORACLE_HOME="$withval"
4045     fi; fi
4046   ],
4047   [
4048     if test "x$ORACLE_HOME" = "x"; then
4049       with_oracle="no (ORACLE_HOME is not set)"
4050     else
4051       with_oracle="yes"
4052     fi
4053   ]
4054 )
4055
4056 if test "x$ORACLE_HOME" != "x"; then
4057   with_oracle_cppflags="-I$ORACLE_HOME/rdbms/public"
4058   if test -e "$ORACLE_HOME/lib/ldflags"; then
4059     with_oracle_libs=`cat "$ORACLE_HOME/lib/ldflags"`
4060   fi
4061   with_oracle_libs="-L$ORACLE_HOME/lib -lclntsh"
4062 fi
4063
4064 if test "x$with_oracle" = "xyes"; then
4065   SAVE_CPPFLAGS="$CPPFLAGS"
4066   CPPFLAGS="$CPPFLAGS $with_oracle_cppflags"
4067
4068   AC_CHECK_HEADERS([oci.h],
4069     [with_oracle="yes"],
4070     [with_oracle="no (oci.h not found)"]
4071   )
4072
4073   CPPFLAGS="$SAVE_CPPFLAGS"
4074 fi
4075
4076 if test "x$with_oracle" = "xyes"; then
4077   SAVE_CPPFLAGS="$CPPFLAGS"
4078   SAVE_LIBS="$LIBS"
4079   CPPFLAGS="$CPPFLAGS $with_oracle_cppflags"
4080   LIBS="$LIBS $with_oracle_libs"
4081
4082   AC_CHECK_FUNC([OCIEnvCreate],
4083     [with_oracle="yes"],
4084     [with_oracle="no (Symbol 'OCIEnvCreate' not found)"]
4085   )
4086
4087   CPPFLAGS="$SAVE_CPPFLAGS"
4088   LIBS="$SAVE_LIBS"
4089 fi
4090
4091 if test "x$with_oracle" = "xyes"; then
4092   BUILD_WITH_ORACLE_CPPFLAGS="$with_oracle_cppflags"
4093   BUILD_WITH_ORACLE_LIBS="$with_oracle_libs"
4094 fi
4095
4096 AC_SUBST([BUILD_WITH_ORACLE_CPPFLAGS])
4097 AC_SUBST([BUILD_WITH_ORACLE_LIBS])
4098 # }}}
4099
4100 # --with-libowcapi {{{
4101 AC_ARG_WITH([libowcapi],
4102   [AS_HELP_STRING([--with-libowcapi@<:@=PREFIX@:>@], [Path to libowcapi.])],
4103   [
4104     if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
4105       with_libowcapi_cppflags="-I$withval/include"
4106       with_libowcapi_ldflags="-L$withval/lib"
4107       with_libowcapi="yes"
4108     else
4109       with_libowcapi="$withval"
4110     fi
4111   ],
4112   [with_libowcapi="yes"]
4113 )
4114
4115 if test "x$with_libowcapi" = "xyes"; then
4116   SAVE_CPPFLAGS="$CPPFLAGS"
4117   CPPFLAGS="$CPPFLAGS $with_libowcapi_cppflags"
4118
4119   AC_CHECK_HEADERS([owcapi.h],
4120     [with_libowcapi="yes"],
4121     [with_libowcapi="no (owcapi.h not found)"]
4122   )
4123
4124   CPPFLAGS="$SAVE_CPPFLAGS"
4125 fi
4126
4127 if test "x$with_libowcapi" = "xyes"; then
4128   SAVE_LDFLAGS="$LDFLAGS"
4129   LDFLAGS="$LDFLAGS $with_libowcapi_ldflags"
4130
4131   AC_CHECK_LIB([owcapi], [OW_get],
4132     [with_libowcapi="yes"],
4133     [with_libowcapi="no (libowcapi not found)"]
4134   )
4135
4136   LDFLAGS="$SAVE_LDFLAGS"
4137 fi
4138
4139 if test "x$with_libowcapi" = "xyes"; then
4140   BUILD_WITH_LIBOWCAPI_CPPFLAGS="$with_libowcapi_cppflags"
4141   BUILD_WITH_LIBOWCAPI_LDFLAGS="$with_libowcapi_ldflags"
4142   BUILD_WITH_LIBOWCAPI_LIBS="-lowcapi"
4143 fi
4144
4145 AC_SUBST([BUILD_WITH_LIBOWCAPI_CPPFLAGS])
4146 AC_SUBST([BUILD_WITH_LIBOWCAPI_LDFLAGS])
4147 AC_SUBST([BUILD_WITH_LIBOWCAPI_LIBS])
4148 # }}}
4149
4150 # --with-libpcap {{{
4151 AC_ARG_WITH([libpcap],
4152   [AS_HELP_STRING([--with-libpcap@<:@=PREFIX@:>@], [Path to libpcap.])],
4153   [
4154     if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
4155       with_libpcap_cppflags="-I$withval/include"
4156       with_libpcap_ldflags="$LDFLAGS -L$withval/lib"
4157       with_libpcap="yes"
4158     else
4159       with_libpcap="$withval"
4160     fi
4161   ],
4162   [with_libpcap="yes"]
4163 )
4164
4165 if test "x$with_libpcap" = "xyes"; then
4166   SAVE_CPPFLAGS="$CPPFLAGS"
4167   CPPFLAGS="$CPPFLAGS $with_libpcap_cppflags"
4168
4169   AC_CHECK_HEADERS([pcap.h],
4170     [with_libpcap="yes"],
4171     [with_libpcap="no (pcap.h not found)"]
4172   )
4173
4174   CPPFLAGS="$SAVE_CPPFLAGS"
4175 fi
4176
4177 if test "x$with_libpcap" = "xyes"; then
4178   SAVE_LDFLAGS="$LDFLAGS"
4179   LDFLAGS="$LDFLAGS $with_libpcap_ldflags"
4180
4181   AC_CHECK_LIB([pcap], [pcap_open_live],
4182     [with_libpcap="yes"],
4183     [with_libpcap="no (libpcap not found)"]
4184   )
4185
4186   LDFLAGS="$SAVE_LDFLAGS"
4187 fi
4188
4189 if test "x$with_libpcap" = "xyes"; then
4190   AC_CACHE_CHECK([whether libpcap has PCAP_ERROR_IFACE_NOT_UP],
4191     [c_cv_libpcap_have_pcap_error_iface_not_up],
4192     [
4193       AC_COMPILE_IFELSE(
4194         [
4195           AC_LANG_PROGRAM(
4196             [[#include <pcap.h>]],
4197             [[
4198               int val = PCAP_ERROR_IFACE_NOT_UP;
4199               return val;
4200             ]]
4201           )
4202         ],
4203         [c_cv_libpcap_have_pcap_error_iface_not_up="yes"],
4204         [c_cv_libpcap_have_pcap_error_iface_not_up="no"]
4205       )
4206     ]
4207   )
4208 fi
4209
4210 if test "x$c_cv_libpcap_have_pcap_error_iface_not_up" != "xyes"; then
4211   with_libpcap="no (pcap.h misses PCAP_ERROR_IFACE_NOT_UP)"
4212 fi
4213
4214 if test "x$with_libpcap" = "xyes"; then
4215   BUILD_WITH_LIBPCAP_CPPFLAGS="$with_libpcap_cppflags"
4216   BUILD_WITH_LIBPCAP_LDFLAGS="$with_libpcap_ldflags"
4217   BUILD_WITH_LIBPCAP_LIBS="-lpcap"
4218 fi
4219
4220 AC_SUBST([BUILD_WITH_LIBPCAP_CPPFLAGS])
4221 AC_SUBST([BUILD_WITH_LIBPCAP_LDFLAGS])
4222 AC_SUBST([BUILD_WITH_LIBPCAP_LIBS])
4223 # }}}
4224
4225 # --with-libperl {{{
4226 AC_ARG_WITH([libperl],
4227   [AS_HELP_STRING([--with-libperl@<:@=PREFIX@:>@], [Path to libperl.])],
4228   [
4229     if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
4230       LDFLAGS="$LDFLAGS -L$withval/lib"
4231       CPPFLAGS="$CPPFLAGS -I$withval/include"
4232       with_libperl="yes"
4233     else
4234       with_libperl="$withval"
4235     fi
4236   ],
4237   [with_libperl="yes"]
4238 )
4239
4240 AC_ARG_VAR([PERL], [path to Perl interpreter])
4241 AC_PATH_PROG([PERL], [perl])
4242
4243 if test "x$PERL" = "x"; then
4244   with_libperl="no (no Perl interpreter found)"
4245 fi
4246
4247 if test "x$with_libperl" = "xyes"; then
4248   SAVE_CFLAGS="$CFLAGS"
4249   SAVE_LIBS="$LIBS"
4250   dnl ARCHFLAGS="" -> disable multi -arch on OSX (see Config_heavy.pl:fetch_string)
4251   PERL_CFLAGS=`ARCHFLAGS="" $PERL -MExtUtils::Embed -e perl_inc`
4252   PERL_LIBS=`ARCHFLAGS="" $PERL -MExtUtils::Embed -e ldopts`
4253   CFLAGS="$CFLAGS $PERL_CFLAGS"
4254   LIBS="$LIBS $PERL_LIBS"
4255
4256   AC_CACHE_CHECK([for libperl],
4257     [c_cv_have_libperl],
4258     [
4259       AC_LINK_IFELSE(
4260         [
4261           AC_LANG_PROGRAM(
4262             [[
4263               #define PERL_NO_GET_CONTEXT
4264               #include <EXTERN.h>
4265               #include <perl.h>
4266               #include <XSUB.h>
4267             ]],
4268             [[
4269               dTHX;
4270               load_module (PERL_LOADMOD_NOIMPORT,
4271                 newSVpv ("Collectd::Plugin::FooBar", 24),
4272                 Nullsv);
4273             ]]
4274           )
4275         ],
4276         [c_cv_have_libperl="yes"],
4277         [c_cv_have_libperl="no"]
4278       )
4279     ]
4280   )
4281
4282   CFLAGS="$SAVE_CFLAGS"
4283   LIBS="$SAVE_LIBS"
4284
4285   if test "x$c_cv_have_libperl" = "xno"; then
4286     with_libperl="no"
4287   fi
4288 fi
4289
4290 if test "x$with_libperl" = "xyes"; then
4291   SAVE_CFLAGS="$CFLAGS"
4292   SAVE_LIBS="$LIBS"
4293   CFLAGS="$CFLAGS $PERL_CFLAGS"
4294   LIBS="$LIBS $PERL_LIBS"
4295
4296   AC_CACHE_CHECK([if Perl supports ithreads],
4297     [c_cv_have_perl_ithreads],
4298     [
4299       AC_LINK_IFELSE(
4300         [
4301           AC_LANG_PROGRAM(
4302             [[
4303               #include <EXTERN.h>
4304               #include <perl.h>
4305               #include <XSUB.h>
4306
4307               #if !defined(USE_ITHREADS)
4308               # error "Perl does not support ithreads!"
4309               #endif /* !defined(USE_ITHREADS) */
4310             ]],
4311             []
4312           )
4313         ],
4314         [c_cv_have_perl_ithreads="yes"],
4315         [c_cv_have_perl_ithreads="no"]
4316       )
4317     ]
4318   )
4319
4320   CFLAGS="$SAVE_CFLAGS"
4321   LIBS="$SAVE_LIBS"
4322 fi
4323
4324 if test "x$with_libperl" = "xyes"; then
4325   # trigger an error if Perl_load_module*() uses __attribute__nonnull__(3)
4326   # (see issues #41 and #42)
4327   SAVE_CFLAGS="$CFLAGS"
4328   SAVE_LIBS="$LIBS"
4329   CFLAGS="$CFLAGS $PERL_CFLAGS"
4330   if test "x$GCC" = "xyes"; then
4331     CFLAGS="$CFLAGS -Wall -Werror"
4332   fi
4333   LIBS="$LIBS $PERL_LIBS"
4334
4335   AC_CACHE_CHECK([for broken Perl_load_module()],
4336     [c_cv_have_broken_perl_load_module],
4337     [
4338       AC_LINK_IFELSE(
4339         [
4340           AC_LANG_PROGRAM(
4341             [[
4342               #define PERL_NO_GET_CONTEXT
4343               #include <EXTERN.h>
4344               #include <perl.h>
4345               #include <XSUB.h>
4346             ]],
4347             [[
4348               dTHX;
4349               load_module (PERL_LOADMOD_NOIMPORT,
4350                 newSVpv ("Collectd::Plugin::FooBar", 24),
4351                 Nullsv);
4352             ]]
4353           )
4354         ],
4355         [c_cv_have_broken_perl_load_module="no"],
4356         [c_cv_have_broken_perl_load_module="yes"]
4357       )
4358     ]
4359   )
4360
4361   CFLAGS="$SAVE_CFLAGS"
4362   LIBS="$SAVE_LIBS"
4363 fi
4364
4365 if test "x$c_cv_have_broken_perl_load_module" = "xyes"; then
4366   PERL_CFLAGS="$PERL_CFLAGS -Wno-nonnull"
4367 fi
4368
4369 if test "x$with_libperl" = "xyes"; then
4370   SAVE_CFLAGS="$CFLAGS"
4371   SAVE_LIBS="$LIBS"
4372   CFLAGS="$CFLAGS $PERL_CFLAGS"
4373   LIBS="$LIBS $PERL_LIBS"
4374
4375   AC_CHECK_MEMBER(
4376     [struct mgvtbl.svt_local],
4377     [have_struct_mgvtbl_svt_local="yes"],
4378     [have_struct_mgvtbl_svt_local="no"],
4379     [[
4380       #include <EXTERN.h>
4381       #include <perl.h>
4382       #include <XSUB.h>
4383     ]]
4384   )
4385
4386   if test "x$have_struct_mgvtbl_svt_local" = "xyes"; then
4387     AC_DEFINE([HAVE_PERL_STRUCT_MGVTBL_SVT_LOCAL], [1], [Define if Perls struct mgvtbl has member svt_local.])
4388   fi
4389
4390   CFLAGS="$SAVE_CFLAGS"
4391   LIBS="$SAVE_LIBS"
4392 fi
4393 AC_SUBST([PERL_CFLAGS])
4394 AC_SUBST([PERL_LIBS])
4395
4396 # }}}
4397
4398 # --with-libpq {{{
4399 with_pg_config="pg_config"
4400 AC_ARG_WITH([libpq],
4401   [AS_HELP_STRING([--with-libpq@<:@=PREFIX@:>@], [Path to libpq.])],
4402   [
4403     if test "x$withval" = "xno" || test "x$withval" = "xyes"; then
4404       with_libpq="$withval"
4405     else
4406       if test -f "$withval" && test -x "$withval"; then
4407         with_pg_config="$withval"
4408       else if test -x "$withval/bin/pg_config"; then
4409         with_pg_config="$withval/bin/pg_config"
4410       fi; fi
4411       with_libpq="yes"
4412     fi
4413   ],
4414   [with_libpq="yes"]
4415 )
4416
4417 if test "x$with_libpq" = "xyes"; then
4418   with_libpq_includedir=`$with_pg_config --includedir 2> /dev/null`
4419   pg_config_status=$?
4420
4421   if test $pg_config_status -eq 0; then
4422     if test -n "$with_libpq_includedir"; then
4423       for dir in $with_libpq_includedir; do
4424         with_libpq_cppflags="$with_libpq_cppflags -I$dir"
4425       done
4426     fi
4427   else
4428     AC_MSG_WARN([$with_pg_config returned with status $pg_config_status])
4429   fi
4430
4431   SAVE_CPPFLAGS="$CPPFLAGS"
4432   CPPFLAGS="$CPPFLAGS $with_libpq_cppflags"
4433
4434   AC_CHECK_HEADERS([libpq-fe.h],
4435     [with_libpq="yes"],
4436     [with_libpq="no (libpq-fe.h not found)"]
4437   )
4438
4439   CPPFLAGS="$SAVE_CPPFLAGS"
4440 fi
4441
4442 if test "x$with_libpq" = "xyes"; then
4443   with_libpq_libdir=`$with_pg_config --libdir 2> /dev/null`
4444   pg_config_status=$?
4445
4446   if test $pg_config_status -eq 0
4447   then
4448     if test -n "$with_libpq_libdir"; then
4449       for dir in $with_libpq_libdir; do
4450         with_libpq_ldflags="$with_libpq_ldflags -L$dir"
4451       done
4452     fi
4453   else
4454     AC_MSG_WARN([$with_pg_config returned with status $pg_config_status])
4455   fi
4456
4457   SAVE_LDFLAGS="$LDFLAGS"
4458   LDFLAGS="$LDFLAGS $with_libpq_ldflags"
4459
4460   AC_CHECK_LIB([pq], [PQserverVersion],
4461     [with_libpq="yes"],
4462     [with_libpq="no (symbol 'PQserverVersion' not found)"])
4463
4464   LDFLAGS="$SAVE_LDFLAGS"
4465 fi
4466
4467 if test "x$with_libpq" = "xyes"; then
4468   BUILD_WITH_LIBPQ_CPPFLAGS="$with_libpq_cppflags"
4469   BUILD_WITH_LIBPQ_LDFLAGS="$with_libpq_ldflags"
4470   BUILD_WITH_LIBPQ_LIBS="-lpq"
4471 fi
4472
4473 AC_SUBST([BUILD_WITH_LIBPQ_CPPFLAGS])
4474 AC_SUBST([BUILD_WITH_LIBPQ_LDFLAGS])
4475 AC_SUBST([BUILD_WITH_LIBPQ_LIBS])
4476 # }}}
4477
4478 # --with-libpqos {{{
4479 AC_ARG_WITH([libpqos],
4480   [AS_HELP_STRING([--with-libpqos@<:@=PREFIX@:>@], [Path to libpqos.])],
4481   [
4482     if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
4483       with_libpqos_cppflags="-I$withval/include"
4484       with_libpqos_ldflags="-L$withval/lib"
4485       with_libpqos="yes"
4486     else
4487       with_libpqos="$withval"
4488     fi
4489   ],
4490   [with_libpqos="yes"]
4491 )
4492
4493 if test "x$with_libpqos" = "xyes"; then
4494   SAVE_CPPFLAGS="$CPPFLAGS"
4495   CPPFLAGS="$CPPFLAGS $with_libpqos_cppflags"
4496
4497   AC_CHECK_HEADERS([pqos.h],
4498     [with_libpqos="yes"],
4499     [with_libpqos="no (pqos.h not found)"]
4500   )
4501
4502   CPPFLAGS="$SAVE_CPPFLAGS"
4503 fi
4504
4505 if test "x$with_libpqos" = "xyes"; then
4506   SAVE_LDFLAGS="$LDFLAGS"
4507   LDFLAGS="$LDFLAGS $with_libpqos_ldflags"
4508
4509   AC_CHECK_LIB([pqos], [pqos_init],
4510     [with_libpqos="yes"],
4511     [with_libpqos="no (Can't find libpqos)"]
4512   )
4513
4514   LDFLAGS="$SAVE_LDFLAGS"
4515 fi
4516
4517 if test "x$with_libpqos" = "xyes"; then
4518   SAVE_CPPFLAGS="$CPPFLAGS"
4519   CPPFLAGS="$CPPFLAGS $with_libpqos_cppflags"
4520   AC_PREPROC_IFELSE(
4521     [
4522       AC_LANG_SOURCE(
4523         [[
4524           #include <pqos.h>
4525           #if PQOS_VERSION < 106
4526           #error "required PQOS version >= 1.06"
4527           #endif
4528         ]]
4529       )
4530     ],
4531     [with_libpqos="yes"],
4532     [with_libpqos="no (pqos library version 1.06 or higher is required)"]
4533   )
4534
4535   CPPFLAGS="$SAVE_CPPFLAGS"
4536 fi
4537
4538 if test "x$with_libpqos" = "xyes"; then
4539   BUILD_WITH_LIBPQOS_CPPFLAGS="$with_libpqos_cppflags"
4540   BUILD_WITH_LIBPQOS_LDFLAGS="$with_libpqos_ldflags"
4541   BUILD_WITH_LIBPQOS_LIBS="-lpqos"
4542 fi
4543
4544 AC_SUBST([BUILD_WITH_LIBPQOS_CPPFLAGS])
4545 AC_SUBST([BUILD_WITH_LIBPQOS_LDFLAGS])
4546 AC_SUBST([BUILD_WITH_LIBPQOS_LIBS])
4547 # }}}
4548
4549 # --with-libjevents {{{
4550 with_libjevents_cppflags=""
4551 with_libjevents_ldflags=""
4552 AC_ARG_WITH([libjevents],
4553   [AS_HELP_STRING([--with-libjevents@<:@=PREFIX@:>@], [Path to libjevents.])],
4554   [
4555     if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
4556       with_libjevents_cppflags="-I$withval/include"
4557       with_libjevents_ldflags="-L$withval/lib"
4558       with_libjevents="yes"
4559     else
4560       with_libjevents="$withval"
4561     fi
4562   ],
4563   [with_libjevents="yes"]
4564 )
4565
4566 if test "x$with_libjevents" = "xyes"; then
4567   SAVE_CPPFLAGS="$CPPFLAGS"
4568   CPPFLAGS="$CPPFLAGS $with_libjevents_cppflags"
4569
4570   AC_CHECK_HEADERS([jevents.h], [with_libjevents="yes"], [with_libjevents="no (jevents.h not found)"])
4571
4572   CPPFLAGS="$SAVE_CPPFLAGS"
4573 fi
4574 if test "x$with_libjevents" = "xyes"; then
4575   SAVE_LDFLAGS="$LDFLAGS"
4576   LDFLAGS="$LDFLAGS $with_libjevents_ldflags"
4577
4578   AC_CHECK_LIB([jevents], [json_events], [with_libjevents="yes"], [with_libjevents="no (Can't find libjevents)"])
4579
4580   LDFLAGS="$SAVE_LDFLAGS"
4581 fi
4582 if test "x$with_libjevents" = "xyes"; then
4583   BUILD_WITH_LIBJEVENTS_CPPFLAGS="$with_libjevents_cppflags"
4584   BUILD_WITH_LIBJEVENTS_LDFLAGS="$with_libjevents_ldflags"
4585   BUILD_WITH_LIBJEVENTS_LIBS="-ljevents"
4586 fi
4587 AC_SUBST([BUILD_WITH_LIBJEVENTS_CPPFLAGS])
4588 AC_SUBST([BUILD_WITH_LIBJEVENTS_LDFLAGS])
4589 AC_SUBST([BUILD_WITH_LIBJEVENTS_LIBS])
4590 # }}}
4591
4592 # --with-libprotobuf {{{
4593 with_libprotobuf_cppflags=""
4594 with_libprotobuf_ldflags=""
4595 AC_ARG_WITH([libprotobuf],
4596   [AS_HELP_STRING([--with-libprotobuf@<:@=PREFIX@:>@], [Path to libprotobuf.])],
4597   [
4598     if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
4599       with_libprotobuf_cppflags="-I$withval/include"
4600       with_libprotobuf_ldflags="-L$withval/lib"
4601       with_libprotobuf="yes"
4602     fi
4603     if test "x$withval" = "xno"; then
4604       with_libprotobuf="no (disabled on command line)"
4605     fi
4606   ],
4607   [withval="yes"]
4608 )
4609
4610 if test "x$withval" = "xyes"; then
4611   PKG_CHECK_MODULES([PROTOBUF], [protobuf],
4612     [with_libprotobuf="yes"],
4613     [with_libprotobuf="no (pkg-config could not find libprotobuf)"]
4614   )
4615 fi
4616
4617 if test "x$withval" != "xno"; then
4618   SAVE_LDFLAGS="$LDFLAGS"
4619   SAVE_LIBS="$LIBS"
4620   LDFLAGS="$with_libprotobuf_ldflags"
4621   LIBS="$PROTOBUF_LIBS $LIBS"
4622   AC_LANG_PUSH([C++])
4623   AC_CHECK_LIB([protobuf], [main],
4624     [
4625       SAVE_CPPFLAGS="$CPPFLAGS"
4626       CPPFLAGS="$with_libprotobuf_cppflags $PROTOBUF_CFLAGS"
4627       if test "x$PROTOBUF_LIBS" = "x"
4628       then
4629         PROTOBUF_LIBS="-lprotobuf"
4630       fi
4631       AC_CHECK_HEADERS([google/protobuf/util/time_util.h],
4632         [with_libprotobuf="yes"],
4633         [with_libprotobuf="no (<google/protobuf/util/time_util.h> not found)"]
4634       )
4635       CPPFLAGS="$SAVE_CPPFLAGS"
4636     ],
4637     [with_libprotobuf="no (libprotobuf not found)"]
4638   )
4639   AC_LANG_POP([C++])
4640   LDFLAGS="$SAVE_LDFLAGS"
4641   LIBS="$SAVE_LIBS"
4642 fi
4643
4644 BUILD_WITH_LIBPROTOBUF_CPPFLAGS="$with_libprotobuf_cppflags $PROTOBUF_CFLAGS"
4645 BUILD_WITH_LIBPROTOBUF_LDFLAGS="$with_libprotobuf_ldflags"
4646 BUILD_WITH_LIBPROTOBUF_LIBS="$PROTOBUF_LIBS"
4647 AC_SUBST([BUILD_WITH_LIBPROTOBUF_CPPFLAGS])
4648 AC_SUBST([BUILD_WITH_LIBPROTOBUF_LDFLAGS])
4649 AC_SUBST([BUILD_WITH_LIBPROTOBUF_LIBS])
4650 # }}}
4651
4652 AC_ARG_VAR([PROTOC], [path to the protoc binary])
4653 AC_PATH_PROG([PROTOC], [protoc])
4654 have_protoc3="no"
4655 if test "x$PROTOC" != "x"; then
4656   AC_MSG_CHECKING([for protoc 3.0.0+])
4657   if $PROTOC --version | $EGREP libprotoc.3 >/dev/null; then
4658     protoc3="yes (`$PROTOC --version`)"
4659     have_protoc3="yes"
4660   else
4661     protoc3="no (`$PROTOC --version`)"
4662   fi
4663   AC_MSG_RESULT([$protoc3])
4664 fi
4665 AM_CONDITIONAL([HAVE_PROTOC3], [test "x$have_protoc3" = "xyes"])
4666
4667 # --with-libprotobuf-c {{{
4668 AC_ARG_WITH([libprotobuf-c],
4669   [AS_HELP_STRING([--with-libprotobuf-c@<:@=PREFIX@:>@], [Path to libprotobuf-c.])],
4670   [
4671     if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
4672       with_libprotobuf_c_cppflags="-I$withval/include"
4673       with_libprotobuf_c_ldflags="-L$withval/lib"
4674       with_libprotobuf_c="yes"
4675     fi
4676
4677     if test "x$withval" = "xno"; then
4678       with_libprotobuf_c="no (disabled on command line)"
4679     fi
4680   ],
4681   [withval="yes"]
4682 )
4683
4684 if test "x$withval" = "xyes"; then
4685   PKG_CHECK_MODULES([PROTOBUF_C], [libprotobuf-c],
4686     [with_libprotobuf_c="yes"],
4687     [with_libprotobuf_c="no (pkg-config could not find libprotobuf-c)"]
4688   )
4689 fi
4690
4691 if test "x$withval" != "xno"; then
4692   SAVE_LDFLAGS="$LDFLAGS"
4693   SAVE_LIBS="$LIBS"
4694   LDFLAGS="$with_libprotobuf_c_ldflags"
4695   LIBS="$PROTOBUF_C_LIBS $LIBS"
4696   AC_CHECK_LIB([protobuf-c], [protobuf_c_message_pack],
4697     [
4698       SAVE_CPPFLAGS="$CPPFLAGS"
4699       CPPFLAGS="$with_libprotobuf_c_cppflags $PROTOBUF_C_CFLAGS"
4700       if test "x$PROTOBUF_C_LIBS" = "x"; then
4701         PROTOBUF_C_LIBS="-lprotobuf-c"
4702       fi
4703
4704       AC_CHECK_HEADERS([protobuf-c/protobuf-c.h google/protobuf-c/protobuf-c.h],
4705         [
4706           with_libprotobuf_c="yes"
4707           break
4708         ],
4709         [with_libprotobuf_c="no (<protobuf-c.h> not found)"]
4710       )
4711
4712       CPPFLAGS="$SAVE_CPPFLAGS"
4713     ],
4714     [with_libprotobuf_c="no (libprotobuf-c not found)"]
4715   )
4716   LDFLAGS="$SAVE_LDFLAGS"
4717   LIBS="$SAVE_LIBS"
4718 fi
4719
4720 BUILD_WITH_LIBPROTOBUF_C_CPPFLAGS="$with_libprotobuf_c_cppflags $PROTOBUF_C_CFLAGS"
4721 BUILD_WITH_LIBPROTOBUF_C_LDFLAGS="$with_libprotobuf_c_ldflags"
4722 BUILD_WITH_LIBPROTOBUF_C_LIBS="$PROTOBUF_C_LIBS"
4723 AC_SUBST([BUILD_WITH_LIBPROTOBUF_C_CPPFLAGS])
4724 AC_SUBST([BUILD_WITH_LIBPROTOBUF_C_LDFLAGS])
4725 AC_SUBST([BUILD_WITH_LIBPROTOBUF_C_LIBS])
4726 # }}}
4727
4728 AC_ARG_VAR([PROTOC_C], [path to the protoc-c binary])
4729 AC_PATH_PROG([PROTOC_C], [protoc-c])
4730 if test "x$PROTOC_C" = "x"
4731 then
4732   have_protoc_c="no (protoc-c compiler not found)"
4733 else
4734   have_protoc_c="yes"
4735 fi
4736
4737 # --with-libpython {{{
4738 AC_ARG_VAR([LIBPYTHON_CPPFLAGS], [Preprocessor flags for libpython])
4739 AC_ARG_VAR([LIBPYTHON_LDFLAGS], [Linker flags for libpython])
4740 AC_ARG_VAR([LIBPYTHON_LIBS], [Libraries for libpython])
4741
4742 AC_ARG_WITH([libpython],
4743   [AS_HELP_STRING([--with-libpython], [if we should build with libpython @<:@default=yes@:>@])],
4744   [with_libpython="$withval"],
4745   [with_libpython="check"]
4746 )
4747
4748 if test "$with_libpython" != "no"; then
4749   if test "$LIBPYTHON_CPPFLAGS" = "" && test "$LIBPYTHON_LDFLAGS" = ""; then
4750     AC_ARG_VAR([PYTHON_CONFIG], [path to python-config])
4751     AC_PATH_PROGS([PYTHON_CONFIG],
4752       [python3-config python2-config python-config]
4753     )
4754     if test "$PYTHON_CONFIG" = ""; then
4755       if test "$with_libpython" = "yes"; then
4756         AC_MSG_ERROR([Unable to find python-config])
4757       fi
4758       with_libpython="no"
4759     fi
4760   fi
4761 fi
4762
4763 if test "$PYTHON_CONFIG" != ""; then
4764   LIBPYTHON_CPPFLAGS="`${PYTHON_CONFIG} --includes`"
4765   if test $? -ne 0; then
4766     with_libpython="no"
4767   fi
4768   LIBPYTHON_LDFLAGS="`${PYTHON_CONFIG} --ldflags`"
4769   if test $? -ne 0; then
4770     with_libpython="no"
4771   fi
4772   LIBPYTHON_LIBS="`${PYTHON_CONFIG} --libs --embed`" || LIBPYTHON_LIBS="`${PYTHON_CONFIG} --libs`"
4773   if test $? -ne 0; then
4774     with_libpython="no"
4775   fi
4776 fi
4777
4778 if test "$with_libpython" != "xno"; then
4779   SAVE_CPPFLAGS="$CPPFLAGS"
4780   SAVE_LDFLAGS="$LDFLAGS"
4781   SAVE_LIBS="$LIBS"
4782   CPPFLAGS="$LIBPYTHON_CPPFLAGS $CPPFLAGS"
4783   LDFLAGS="$LIBPYTHON_LDFLAGS $LDFLAGS"
4784   LIBS="$LIBPYTHON_LIBS $LIBS"
4785
4786   AC_CHECK_HEADERS([Python.h],
4787     [
4788       AC_MSG_CHECKING([for libpython])
4789       AC_LINK_IFELSE([AC_LANG_PROGRAM(
4790           [[#include <Python.h>]],
4791           [[Py_Initialize();]])
4792         ],
4793         [with_libpython="yes"],
4794         [with_libpython="no"]
4795       )
4796       AC_MSG_RESULT([$with_libpython])
4797     ],
4798     [with_libpython="no"]
4799   )
4800
4801   CPPFLAGS="$SAVE_CPPFLAGS"
4802   LDFLAGS="$SAVE_LDFLAGS"
4803   LIBS="$SAVE_LIBS"
4804 fi
4805 # }}} --with-libpython
4806
4807 # --with-libqpid_proton {{{
4808 AC_ARG_WITH([libqpid_proton],
4809   [AS_HELP_STRING([--with-libqpid_proton@<:@=PREFIX@:>@], [Path to libqpid_proton.])],
4810   [
4811     if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
4812       with_libqpid_proton_cppflags="-I$withval/include"
4813       with_libqpid_proton_ldflags="-L$withval/lib"
4814       with_libqpid_proton="yes"
4815     else
4816       with_libqpid_proton="$withval"
4817     fi
4818   ],
4819   [with_libqpid_proton="yes"]
4820 )
4821
4822 if test "x$with_libqpid_proton" = "xyes"; then
4823   SAVE_CPPFLAGS="$CPPFLAGS"
4824   CPPFLAGS="$CPPFLAGS $with_libqpid_proton_cppflags"
4825
4826   AC_CHECK_HEADERS([proton/proactor.h],
4827     [with_libqpid_proton="yes"],
4828     [with_libqpid_proton="no (proton/proactor.h not found)"]
4829   )
4830
4831   CPPFLAGS="$SAVE_CPPFLAGS"
4832 fi
4833
4834 if test "x$with_libqpid_proton" = "xyes"; then
4835   SAVE_LDFLAGS="$LDFLAGS"
4836   LDFLAGS="$LDFLAGS $with_libqpid_proton_ldflags"
4837
4838   AC_CHECK_LIB([qpid-proton], [pn_connection],
4839     [with_libqpid_proton="yes"],
4840     [with_libqpid_proton="no (Symbol 'pn_connection' not found)"])
4841
4842   LDFLAGS="$SAVE_LDFLAGS"
4843 fi
4844
4845 if test "x$with_libqpid_proton" = "xyes"; then
4846   BUILD_WITH_LIBQPIDPROTON_CPPFLAGS="$with_libqpid_proton_cppflags"
4847   BUILD_WITH_LIBQPIDPROTON_LDFLAGS="$with_libqpid_proton_ldflags"
4848   BUILD_WITH_LIBQPIDPROTON_LIBS="-lqpid-proton"
4849 fi
4850
4851 AC_SUBST(BUILD_WITH_LIBQPIDPROTON_CPPFLAGS)
4852 AC_SUBST(BUILD_WITH_LIBQPIDPROTON_LDFLAGS)
4853 AC_SUBST(BUILD_WITH_LIBQPIDPROTON_LIBS)
4854
4855 # }}}
4856
4857 # --with-librabbitmq {{{
4858 AC_ARG_WITH([librabbitmq],
4859   [AS_HELP_STRING([--with-librabbitmq@<:@=PREFIX@:>@], [Path to librabbitmq.])],
4860   [
4861     if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
4862       with_librabbitmq_cppflags="-I$withval/include"
4863       with_librabbitmq_ldflags="-L$withval/lib"
4864       with_librabbitmq="yes"
4865     else
4866       with_librabbitmq="$withval"
4867     fi
4868   ],
4869   [with_librabbitmq="yes"]
4870 )
4871
4872 if test "x$with_librabbitmq" = "xyes"; then
4873   SAVE_CPPFLAGS="$CPPFLAGS"
4874   CPPFLAGS="$CPPFLAGS $with_librabbitmq_cppflags"
4875
4876   AC_CHECK_HEADERS([amqp.h],
4877     [with_librabbitmq="yes"],
4878     [with_librabbitmq="no (amqp.h not found)"]
4879   )
4880
4881   CPPFLAGS="$SAVE_CPPFLAGS"
4882 fi
4883
4884 if test "x$with_librabbitmq" = "xyes"; then
4885   # librabbitmq up to version 0.9.1 provides "library_errno", later
4886   # versions use "library_error". The library does not provide a version
4887   # macro :(.
4888
4889   SAVE_CPPFLAGS="$CPPFLAGS"
4890   CPPFLAGS="$CPPFLAGS $with_librabbitmq_cppflags"
4891
4892   AC_CHECK_MEMBERS([amqp_rpc_reply_t.library_errno],
4893     [],
4894     [],
4895     [[
4896       #include <stdlib.h>
4897       #include <stdio.h>
4898       #include <stdint.h>
4899       #include <inttypes.h>
4900       #include <amqp.h>
4901     ]]
4902   )
4903   CPPFLAGS="$SAVE_CPPFLAGS"
4904
4905   SAVE_LDFLAGS="$LDFLAGS"
4906   LDFLAGS="$LDFLAGS $with_librabbitmq_ldflags"
4907
4908   AC_CHECK_LIB([rabbitmq], [amqp_basic_publish],
4909     [with_librabbitmq="yes"],
4910     [with_librabbitmq="no (Symbol 'amqp_basic_publish' not found)"]
4911   )
4912
4913   LDFLAGS="$SAVE_LDFLAGS"
4914 fi
4915
4916 if test "x$with_librabbitmq" = "xyes"; then
4917   SAVE_CPPFLAGS="$CPPFLAGS"
4918   SAVE_LDFLAGS="$LDFLAGS"
4919   SAVE_LIBS="$LIBS"
4920   CPPFLAGS="$CPPFLAGS $with_librabbitmq_cppflags"
4921   LDFLAGS="$LDFLAGS $with_librabbitmq_ldflags"
4922   LIBS="-lrabbitmq"
4923
4924   AC_CHECK_HEADERS([amqp_tcp_socket.h amqp_socket.h])
4925   AC_CHECK_FUNC([amqp_tcp_socket_new],
4926     [
4927       AC_DEFINE([HAVE_AMQP_TCP_SOCKET], [1],
4928         [Define if librabbitmq provides the new TCP socket interface.])
4929     ]
4930   )
4931
4932   AC_CHECK_DECLS([amqp_socket_close],
4933     [],
4934     [],
4935     [[
4936       #include <amqp.h>
4937       #ifdef HAVE_AMQP_TCP_SOCKET_H
4938       # include <amqp_tcp_socket.h>
4939       #endif
4940       #ifdef HAVE_AMQP_SOCKET_H
4941       # include <amqp_socket.h>
4942       #endif
4943     ]]
4944   )
4945
4946   CPPFLAGS="$SAVE_CPPFLAGS"
4947   LDFLAGS="$SAVE_LDFLAGS"
4948   LIBS="$SAVE_LIBS"
4949 fi
4950
4951 if test "x$with_librabbitmq" = "xyes"; then
4952   BUILD_WITH_LIBRABBITMQ_CPPFLAGS="$with_librabbitmq_cppflags"
4953   BUILD_WITH_LIBRABBITMQ_LDFLAGS="$with_librabbitmq_ldflags"
4954   BUILD_WITH_LIBRABBITMQ_LIBS="-lrabbitmq"
4955 fi
4956
4957 AC_SUBST(BUILD_WITH_LIBRABBITMQ_CPPFLAGS)
4958 AC_SUBST(BUILD_WITH_LIBRABBITMQ_LDFLAGS)
4959 AC_SUBST(BUILD_WITH_LIBRABBITMQ_LIBS)
4960
4961 # }}}
4962
4963 # --with-librdkafka {{{
4964 AC_ARG_WITH([librdkafka],
4965   [AS_HELP_STRING([--with-librdkafka@<:@=PREFIX@:>@], [Path to librdkafka.])],
4966   [
4967     if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
4968       with_librdkafka_cppflags="-I$withval/include"
4969       with_librdkafka_ldflags="-L$withval/lib"
4970       with_librdkafka_rpath="$withval/lib"
4971       with_librdkafka="yes"
4972     else
4973       with_librdkafka="$withval"
4974     fi
4975   ],
4976   [with_librdkafka="yes"]
4977 )
4978
4979 if test "x$with_librdkafka" = "xyes"; then
4980   SAVE_CPPFLAGS="$CPPFLAGS"
4981   CPPFLAGS="$CPPFLAGS $with_librdkafka_cppflags"
4982
4983   AC_CHECK_HEADERS([librdkafka/rdkafka.h],
4984     [with_librdkafka="yes"],
4985     [with_librdkafka="no (librdkafka/rdkafka.h not found)"]
4986   )
4987
4988   CPPFLAGS="$SAVE_CPPFLAGS"
4989 fi
4990
4991 if test "x$with_librdkafka" = "xyes"; then
4992   SAVE_LDFLAGS="$LDFLAGS"
4993   LDFLAGS="$LDFLAGS $with_librdkafka_ldflags"
4994
4995   AC_CHECK_LIB([rdkafka], [rd_kafka_new],
4996     [with_librdkafka="yes"],
4997     [with_librdkafka="no (Symbol 'rd_kafka_new' not found)"])
4998
4999   AC_CHECK_LIB([rdkafka], [rd_kafka_conf_set_log_cb],
5000     [with_librdkafka_log_cb="yes"],
5001     [with_librdkafka_log_cb="no"])
5002
5003   AC_CHECK_LIB([rdkafka], [rd_kafka_set_logger],
5004     [with_librdkafka_logger="yes"],
5005     [with_librdkafka_logger="no"]
5006   )
5007
5008   LDFLAGS="$SAVE_LDFLAGS"
5009 fi
5010
5011 if test "x$with_librdkafka" = "xyes"; then
5012   BUILD_WITH_LIBRDKAFKA_CPPFLAGS="$with_librdkafka_cppflags"
5013   BUILD_WITH_LIBRDKAFKA_LDFLAGS="$with_librdkafka_ldflags"
5014
5015   if test "x$with_librdkafka_rpath" != "x"; then
5016     BUILD_WITH_LIBRDKAFKA_LIBS="-Wl,-rpath,$with_librdkafka_rpath -lrdkafka"
5017   else
5018     BUILD_WITH_LIBRDKAFKA_LIBS="-lrdkafka"
5019   fi
5020
5021   if test "x$with_librdkafka_log_cb" = "xyes"; then
5022     AC_DEFINE(HAVE_LIBRDKAFKA_LOG_CB, 1, [Define if librdkafka log facility is present and usable.])
5023   else if test "x$with_librdkafka_logger" = "xyes"; then
5024     AC_DEFINE(HAVE_LIBRDKAFKA_LOGGER, 1, [Define if librdkafka log facility is present and usable.])
5025   fi; fi
5026 fi
5027
5028 AC_SUBST([BUILD_WITH_LIBRDKAFKA_CPPFLAGS])
5029 AC_SUBST([BUILD_WITH_LIBRDKAFKA_LDFLAGS])
5030 AC_SUBST([BUILD_WITH_LIBRDKAFKA_LIBS])
5031 # }}}
5032
5033 # --with-librouteros {{{
5034 AC_ARG_WITH([librouteros],
5035   [AS_HELP_STRING([--with-librouteros@<:@=PREFIX@:>@], [Path to librouteros.])],
5036   [
5037     if test "x$withval" = "xyes" || test "x$withval" = "xno"; then
5038       with_librouteros="$witval"
5039     else
5040       with_librouteros_cppflags="-I$withval/include"
5041       with_librouteros_ldflags="-L$withval/lib"
5042       with_librouteros="yes"
5043    fi
5044   ],
5045   [with_librouteros="yes"]
5046 )
5047
5048 if test "x$with_librouteros" = "xyes"; then
5049   SAVE_CPPFLAGS="$CPPFLAGS"
5050   CPPFLAGS="$CPPFLAGS $with_librouteros_cppflags"
5051
5052   AC_CHECK_HEADERS([routeros_api.h],
5053     [with_librouteros="yes"],
5054     [with_librouteros="no (routeros_api.h not found)"]
5055   )
5056
5057   CPPFLAGS="$SAVE_CPPFLAGS"
5058 fi
5059
5060 if test "x$with_librouteros" = "xyes"; then
5061   SAVE_LDFLAGS="$LDFLAGS"
5062   LDFLAGS="$LDFLAGS $with_librouteros_ldflags"
5063
5064   AC_CHECK_LIB([routeros], [ros_interface],
5065     [with_librouteros="yes"],
5066     [with_librouteros="no (symbol 'ros_interface' not found)"]
5067   )
5068
5069   LDFLAGS="$SAVE_LDFLAGS"
5070 fi
5071
5072 if test "x$with_librouteros" = "xyes"; then
5073   BUILD_WITH_LIBROUTEROS_CPPFLAGS="$with_librouteros_cppflags"
5074   BUILD_WITH_LIBROUTEROS_LDFLAGS="$with_librouteros_ldflags"
5075 fi
5076
5077 AC_SUBST([BUILD_WITH_LIBROUTEROS_CPPFLAGS])
5078 AC_SUBST([BUILD_WITH_LIBROUTEROS_LDFLAGS])
5079 # }}}
5080
5081 # --with-librrd {{{
5082 librrd_threadsafe="no"
5083 librrd_rrdc_update="no"
5084 AC_ARG_WITH([librrd],
5085   [AS_HELP_STRING([--with-librrd@<:@=PREFIX@:>@], [Path to rrdtool.])],
5086   [
5087     if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
5088       librrd_cflags="-I$withval/include"
5089       librrd_ldflags="-L$withval/lib"
5090       with_librrd="yes"
5091     else
5092       with_librrd="$withval"
5093     fi
5094   ],
5095   [with_librrd="yes"]
5096 )
5097
5098 if test "x$with_librrd" = "xyes"; then
5099   SAVE_LDFLAGS="$LDFLAGS"
5100   LDFLAGS="$LDFLAGS $librrd_ldflags"
5101   PKG_CHECK_MODULES([RRD], [librrd >= 1.6.0],
5102     [
5103       AC_CHECK_LIB([rrd], [rrd_update_r],
5104         [librrd_threadsafe="yes"],
5105         [:]
5106       )
5107       AC_CHECK_LIB([rrd], [rrdc_update],
5108         [librrd_rrdc_update="yes"],
5109         [:]
5110       )
5111     ],[:]
5112   )
5113   LDFLAGS="$SAVE_LDFLAGS"
5114
5115   SAVE_CPPFLAGS="$CPPFLAGS"
5116   CPPFLAGS="$CPPFLAGS $RRD_CFLAGS $librrd_cflags"
5117
5118   AC_CHECK_HEADERS([rrd.h],, [with_librrd="no (rrd.h not found)"])
5119
5120   CPPFLAGS="$SAVE_CPPFLAGS"
5121 fi
5122
5123 if test "x$with_librrd" = "xyes" && test "x$librrd_threadsafe" = "xno"; then
5124   SAVE_LDFLAGS="$LDFLAGS"
5125   LDFLAGS="$LDFLAGS $librrd_ldflags"
5126
5127   AC_CHECK_LIB([rrd_th], [rrd_update_r],
5128     [
5129       librrd_ldflags="$librrd_ldflags -lrrd_th"
5130       librrd_threadsafe="yes"
5131       AC_CHECK_LIB([rrd_th], [rrdc_update],
5132         [librrd_rrdc_update="yes"],
5133         [:],
5134       )
5135     ],
5136     [:]
5137   )
5138   LDFLAGS="$SAVE_LDFLAGS"
5139 fi
5140
5141 if test "x$with_librrd" = "xyes" && test "x$librrd_threadsafe" = "xno"; then
5142   SAVE_LDFLAGS="$LDFLAGS"
5143   LDFLAGS="$LDFLAGS $librrd_ldflags"
5144
5145   AC_CHECK_LIB([rrd], [rrd_update],
5146     [
5147       librrd_ldflags="$librrd_ldflags -lrrd"
5148       AC_CHECK_LIB([rrd], [rrdc_update],
5149         [librrd_rrdc_update="yes"],
5150         [:]
5151       )
5152     ],
5153     [with_librrd="no (symbol 'rrd_update' not found)"]
5154   )
5155   LDFLAGS="$SAVE_LDFLAGS"
5156 fi
5157
5158 if test "x$with_librrd" = "xyes"; then
5159   BUILD_WITH_LIBRRD_CFLAGS="$RRD_CFLAGS $librrd_cflags"
5160   BUILD_WITH_LIBRRD_LDFLAGS="$librrd_ldflags"
5161   BUILD_WITH_LIBRRD_LIBS="$RRD_LIBS"
5162 fi
5163
5164 if test "x$librrd_threadsafe" = "xyes"; then
5165   AC_DEFINE([HAVE_THREADSAFE_LIBRRD], [1],
5166     [Define to 1 if the rrd library is thread-safe]
5167   )
5168 fi
5169
5170 AC_SUBST([BUILD_WITH_LIBRRD_CFLAGS])
5171 AC_SUBST([BUILD_WITH_LIBRRD_LDFLAGS])
5172 AC_SUBST([BUILD_WITH_LIBRRD_LIBS])
5173 # }}}
5174
5175 # --with-libsensors {{{
5176 AC_ARG_WITH([libsensors],
5177   [AS_HELP_STRING([--with-libsensors@<:@=PREFIX@:>@], [Path to lm_sensors.])],
5178   [
5179     if test "x$withval" = "xno" || test "x$withval" = "xyes"; then
5180       with_libsensors="$withval"
5181     else
5182       with_sensors_cppflags="-I$withval/include"
5183       with_sensors_ldflags="-L$withval/lib"
5184       with_libsensors="yes"
5185     fi
5186   ],
5187   [
5188     if test "x$ac_system" = "xLinux"; then
5189       with_libsensors="yes"
5190     else
5191       with_libsensors="no (Linux only library)"
5192     fi
5193   ]
5194 )
5195
5196 if test "x$with_libsensors" = "xyes"; then
5197   SAVE_CPPFLAGS="$CPPFLAGS"
5198   CPPFLAGS="$CPPFLAGS $with_sensors_cppflags"
5199
5200   AC_CHECK_HEADERS([sensors/sensors.h],
5201     [with_libsensors="yes"],
5202     [with_libsensors="no (sensors/sensors.h not found)"]
5203   )
5204
5205   CPPFLAGS="$SAVE_CPPFLAGS"
5206 fi
5207
5208 if test "x$with_libsensors" = "xyes"; then
5209   SAVE_LDFLAGS="$LDFLAGS"
5210   LDFLAGS="$LDFLAGS $with_sensors_ldflags"
5211
5212   AC_CHECK_LIB([sensors], [sensors_init],
5213     [with_libsensors="yes"],
5214     [with_libsensors="no (libsensors not found)"]
5215   )
5216
5217   LDFLAGS="$SAVE_LDFLAGS"
5218 fi
5219
5220 if test "x$with_libsensors" = "xyes"; then
5221   SAVE_CPPFLAGS="$CPPFLAGS"
5222   CPPFLAGS="$CPPFLAGS $with_sensors_cppflags"
5223   AC_PREPROC_IFELSE(
5224     [
5225       AC_LANG_SOURCE(
5226         [[
5227           #include <sensors/sensors.h>
5228           #if SENSORS_API_VERSION < 0x400
5229           #error "required libsensors version >= 3.0"
5230           #endif
5231         ]]
5232       )
5233     ],
5234     [with_libsensors="yes"],
5235     [with_libsensors="no (sensors library version 3.0.0 or higher is required)"]
5236   )
5237
5238   CPPFLAGS="$SAVE_CPPFLAGS"
5239 fi
5240
5241 if test "x$with_libsensors" = "xyes"; then
5242   BUILD_WITH_LIBSENSORS_CPPFLAGS="$with_sensors_cppflags"
5243   BUILD_WITH_LIBSENSORS_LDFLAGS="$with_sensors_ldflags"
5244   BUILD_WITH_LIBSENSORS_LIBS="-lsensors"
5245 fi
5246
5247 AC_SUBST([BUILD_WITH_LIBSENSORS_CPPFLAGS])
5248 AC_SUBST([BUILD_WITH_LIBSENSORS_LDFLAGS])
5249 AC_SUBST([BUILD_WITH_LIBSENSORS_LIBS])
5250
5251 # }}}
5252
5253 # libsigrok {{{
5254 AC_SUBST([LIBSIGROK_CFLAGS])
5255 AC_SUBST([LIBSIGROK_LIBS])
5256 PKG_CHECK_MODULES([LIBSIGROK], [libsigrok < 0.4],
5257   [with_libsigrok="yes"],
5258   [with_libsigrok="no (pkg-config could not find libsigrok)"]
5259 )
5260 # }}}
5261
5262 # --with-libssl {{{
5263 with_libssl_cflags=""
5264 with_libssl_ldflags=""
5265 AC_ARG_WITH([libssl], [AS_HELP_STRING([--with-libssl@<:@=PREFIX@:>@], [Path to libssl.])],
5266 [
5267         if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
5268                 with_libssl_cppflags="-I$withval/include"
5269                 with_libssl_ldflags="-L$withval/lib"
5270                 with_libssl="yes"
5271         else
5272                 with_libssl="$withval"
5273         fi
5274 ],
5275 [
5276         with_libssl="yes"
5277 ])
5278 if test "x$with_libssl" = "xyes"; then
5279         SAVE_CPPFLAGS="$CPPFLAGS"
5280         CPPFLAGS="$CPPFLAGS $with_libssl_cppflags"
5281
5282   AC_CHECK_HEADERS([openssl/sha.h openssl/blowfish.h openssl/rand.h],
5283     [with_libssl="yes"],
5284     [with_libssl="no (ssl header not found)"])
5285
5286         CPPFLAGS="$SAVE_CPPFLAGS"
5287 fi
5288 if test "x$with_libssl" = "xyes"; then
5289         SAVE_CPPFLAGS="$CPPFLAGS"
5290         SAVE_LDFLAGS="$LDFLAGS"
5291         CPPFLAGS="$CPPFLAGS $with_libssl_cppflags"
5292         LDFLAGS="$LDFLAGS $with_libssl_ldflags"
5293
5294         AC_CHECK_LIB([ssl], [OPENSSL_init_ssl], [with_libssl="yes"], [with_libssl="no (Symbol 'SSL_library_init' not found)"])
5295
5296         CPPFLAGS="$SAVE_CPPFLAGS"
5297         LDFLAGS="$SAVE_LDFLAGS"
5298 fi
5299 if test "x$with_libssl" = "xyes"; then
5300         BUILD_WITH_LIBSSL_CFLAGS="$with_libssl_cflags"
5301         BUILD_WITH_LIBSSL_LDFLAGS="$with_libssl_ldflags"
5302         BUILD_WITH_LIBSSL_LIBS="-lssl -lcrypto"
5303         AC_SUBST([BUILD_WITH_LIBSSL_CFLAGS])
5304         AC_SUBST([BUILD_WITH_LIBSSL_LDFLAGS])
5305         AC_SUBST([BUILD_WITH_LIBSSL_LIBS])
5306         AC_DEFINE([HAVE_LIBSSL], [1], [Define if libssl is present and usable.])
5307 fi
5308 AM_CONDITIONAL(BUILD_WITH_LIBSSL, test "x$with_libssl" = "xyes")
5309 # }}}
5310
5311 # --with-libstatgrab {{{
5312 AC_ARG_WITH([libstatgrab],
5313   [AS_HELP_STRING([--with-libstatgrab@<:@=PREFIX@:>@], [Path to libstatgrab.])],
5314   [
5315     if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
5316       with_libstatgrab_cflags="-I$withval/include"
5317       with_libstatgrab_ldflags="-L$withval/lib -lstatgrab"
5318       with_libstatgrab="yes"
5319       with_libstatgrab_pkg_config="no"
5320     else
5321       with_libstatgrab="$withval"
5322       with_libstatgrab_pkg_config="yes"
5323     fi
5324   ],
5325   [
5326     with_libstatgrab="yes"
5327     with_libstatgrab_pkg_config="yes"
5328   ])
5329
5330 if test "x$with_libstatgrab" = "xyes" && test "x$with_libstatgrab_pkg_config" = "xyes"; then
5331   AC_MSG_CHECKING([pkg-config for libstatgrab])
5332   temp_result="found"
5333   $PKG_CONFIG --exists libstatgrab 2>/dev/null
5334   if test "$?" != "0"; then
5335     with_libstatgrab_pkg_config="no"
5336     with_libstatgrab="no (pkg-config doesn't know libstatgrab)"
5337     temp_result="not found"
5338   fi
5339   AC_MSG_RESULT([$temp_result])
5340 fi
5341
5342 if test "x$with_libstatgrab" = "xyes" && test "x$with_libstatgrab_pkg_config" = "xyes" && test "x$with_libstatgrab_cflags" = "x"; then
5343   AC_MSG_CHECKING([for libstatgrab CFLAGS])
5344   temp_result="`$PKG_CONFIG --cflags libstatgrab`"
5345   if test "$?" = "0"; then
5346     with_libstatgrab_cflags="$temp_result"
5347   else
5348     with_libstatgrab="no ($PKG_CONFIG --cflags libstatgrab failed)"
5349     temp_result="$PKG_CONFIG --cflags libstatgrab failed"
5350   fi
5351   AC_MSG_RESULT([$temp_result])
5352 fi
5353
5354 if test "x$with_libstatgrab" = "xyes" && test "x$with_libstatgrab_pkg_config" = "xyes" && test "x$with_libstatgrab_ldflags" = "x"; then
5355   AC_MSG_CHECKING([for libstatgrab LDFLAGS])
5356   temp_result="`$PKG_CONFIG --libs libstatgrab`"
5357   if test "$?" = "0"
5358   then
5359     with_libstatgrab_ldflags="$temp_result"
5360   else
5361     with_libstatgrab="no ($PKG_CONFIG --libs libstatgrab failed)"
5362     temp_result="$PKG_CONFIG --libs libstatgrab failed"
5363   fi
5364   AC_MSG_RESULT([$temp_result])
5365 fi
5366
5367 if test "x$with_libstatgrab" = "xyes"; then
5368   SAVE_CPPFLAGS="$CPPFLAGS"
5369   CPPFLAGS="$CPPFLAGS $with_libstatgrab_cflags"
5370
5371   AC_CHECK_HEADERS([statgrab.h],
5372     [with_libstatgrab="yes"],
5373     [with_libstatgrab="no (statgrab.h not found)"]
5374   )
5375
5376   CPPFLAGS="$SAVE_CPPFLAGS"
5377 fi
5378
5379 if test "x$with_libstatgrab" = "xyes"; then
5380   SAVE_LDFLAGS="$LDFLAGS"
5381   LDFLAGS="$LDFLAGS $with_libstatgrab_ldflags"
5382
5383   AC_CHECK_LIB([statgrab], [sg_init],
5384     [with_libstatgrab="yes"],
5385     [with_libstatgrab="no (symbol sg_init not found)"]
5386   )
5387
5388   LDFLAGS="$SAVE_LDFLAGS"
5389 fi
5390
5391 if test "x$with_libstatgrab" = "xyes"; then
5392   SAVE_CFLAGS="$CFLAGS"
5393   SAVE_LDFLAGS="$LDFLAGS"
5394   SAVE_LIBS="$LIBS"
5395
5396   CFLAGS="$CFLAGS $with_libstatgrab_cflags"
5397   LDFLAGS="$LDFLAGS $with_libstatgrab_ldflags"
5398   LIBS="-lstatgrab $LIBS"
5399
5400   AC_CACHE_CHECK([if libstatgrab >= 0.90],
5401     [c_cv_have_libstatgrab_0_90],
5402     [
5403       AC_LINK_IFELSE(
5404         [
5405           AC_LANG_PROGRAM(
5406             [[
5407               #include <stdio.h>
5408               #include <statgrab.h>
5409             ]],
5410             [[
5411               if (sg_init()) return 0;
5412             ]]
5413           )
5414         ],
5415         [c_cv_have_libstatgrab_0_90="no"],
5416         [c_cv_have_libstatgrab_0_90="yes"]
5417       )
5418     ]
5419   )
5420
5421   CFLAGS="$SAVE_CFLAGS"
5422   LDFLAGS="$SAVE_LDFLAGS"
5423   LIBS="$SAVE_LIBS"
5424 fi
5425
5426 AM_CONDITIONAL([BUILD_WITH_LIBSTATGRAB], [test "x$with_libstatgrab" = "xyes"])
5427
5428 if test "x$with_libstatgrab" = "xyes"; then
5429   AC_DEFINE([HAVE_LIBSTATGRAB], [1],
5430     [Define to 1 if you have the 'statgrab' library (-lstatgrab)]
5431   )
5432
5433   if test "x$c_cv_have_libstatgrab_0_90" = "xyes"; then
5434     AC_DEFINE([HAVE_LIBSTATGRAB_0_90], [1],
5435       [Define to 1 if libstatgrab version >= 0.90]
5436     )
5437   fi
5438
5439   BUILD_WITH_LIBSTATGRAB_CFLAGS="$with_libstatgrab_cflags"
5440   BUILD_WITH_LIBSTATGRAB_LDFLAGS="$with_libstatgrab_ldflags"
5441
5442 fi
5443
5444 AC_SUBST([BUILD_WITH_LIBSTATGRAB_CFLAGS])
5445 AC_SUBST([BUILD_WITH_LIBSTATGRAB_LDFLAGS])
5446 # }}}
5447
5448 # --with-libtokyotyrant {{{
5449 AC_ARG_WITH([libtokyotyrant],
5450   [AS_HELP_STRING([--with-libtokyotyrant@<:@=PREFIX@:>@], [Path to libtokyotyrant.])],
5451   [
5452     if test "x$withval" = "xno" || test "x$withval" = "xyes"; then
5453       with_libtokyotyrant="$withval"
5454     else
5455       with_libtokyotyrant_cppflags="-I$withval/include"
5456       with_libtokyotyrant_ldflags="-L$withval/include"
5457       with_libtokyotyrant_libs="-ltokyotyrant"
5458       with_libtokyotyrant="yes"
5459     fi
5460   ],
5461   [with_libtokyotyrant="yes"]
5462 )
5463
5464 if test "x$with_libtokyotyrant" = "xyes"; then
5465   if $PKG_CONFIG --exists tokyotyrant; then
5466     with_libtokyotyrant_cppflags="$with_libtokyotyrant_cppflags `$PKG_CONFIG --cflags tokyotyrant`"
5467     with_libtokyotyrant_ldflags="$with_libtokyotyrant_ldflags `$PKG_CONFIG --libs-only-L tokyotyrant`"
5468     with_libtokyotyrant_libs="$with_libtokyotyrant_libs `$PKG_CONFIG --libs-only-l tokyotyrant`"
5469   fi
5470 fi
5471
5472 if test "x$with_libtokyotyrant" = "xyes"; then
5473   SAVE_CPPFLAGS="$CPPFLAGS"
5474   CPPFLAGS="$CPPFLAGS $with_libtokyotyrant_cppflags"
5475
5476   AC_CHECK_HEADERS([tcrdb.h],
5477     [with_libtokyotyrant="yes"],
5478     [with_libtokyotyrant="no (tcrdb.h not found)"]
5479   )
5480
5481   CPPFLAGS="$SAVE_CPPFLAGS"
5482 fi
5483
5484 if test "x$with_libtokyotyrant" = "xyes"; then
5485   SAVE_LDFLAGS="$LDFLAGS"
5486   LDFLAGS="$LDFLAGS $with_libtokyotyrant_ldflags"
5487
5488   AC_CHECK_LIB([tokyotyrant], [tcrdbrnum],
5489     [with_libtokyotyrant="yes"],
5490     [with_libtokyotyrant="no (symbol tcrdbrnum not found)"],
5491     [$with_libtokyotyrant_libs]
5492   )
5493
5494   LDFLAGS="$SAVE_LDFLAGS"
5495 fi
5496
5497 if test "x$with_libtokyotyrant" = "xyes"; then
5498   BUILD_WITH_LIBTOKYOTYRANT_CPPFLAGS="$with_libtokyotyrant_cppflags"
5499   BUILD_WITH_LIBTOKYOTYRANT_LDFLAGS="$with_libtokyotyrant_ldflags"
5500   BUILD_WITH_LIBTOKYOTYRANT_LIBS="$with_libtokyotyrant_libs"
5501 fi
5502 AC_SUBST([BUILD_WITH_LIBTOKYOTYRANT_CPPFLAGS])
5503 AC_SUBST([BUILD_WITH_LIBTOKYOTYRANT_LDFLAGS])
5504 AC_SUBST([BUILD_WITH_LIBTOKYOTYRANT_LIBS])
5505 # }}}
5506
5507 # --with-libudev {{{
5508 AC_ARG_WITH([libudev],
5509   [AS_HELP_STRING([--with-libudev@<:@=PREFIX@:>@], [Path to libudev.])],
5510   [
5511     if test "x$withval" = "xno" || test "x$withval" = "xyes"; then
5512       with_libudev="$withval"
5513     else
5514       with_libudev_cppflags="-I$withval/include"
5515       with_libudev_ldflags="-L$withval/lib"
5516       with_libudev="yes"
5517     fi
5518   ],
5519   [
5520     if test "x$ac_system" = "xLinux"; then
5521       with_libudev="yes"
5522     else
5523       with_libudev="no (Linux only library)"
5524     fi
5525   ]
5526 )
5527
5528 if test "x$with_libudev" = "xyes"; then
5529   SAVE_CPPFLAGS="$CPPFLAGS"
5530   CPPFLAGS="$CPPFLAGS $with_libudev_cppflags"
5531
5532   AC_CHECK_HEADERS([libudev.h],
5533     [with_libudev="yes"],
5534     [with_libudev="no (libudev.h not found)"]
5535   )
5536
5537   CPPFLAGS="$SAVE_CPPFLAGS"
5538 fi
5539
5540 if test "x$with_libudev" = "xyes"; then
5541   SAVE_LDFLAGS="$LDFLAGS"
5542   LDFLAGS="$LDFLAGS $with_libudev_ldflags"
5543
5544   AC_CHECK_LIB([udev], [udev_new],
5545     [with_libudev="yes"],
5546     [with_libudev="no (libudev not found)"]
5547   )
5548
5549   LDFLAGS="$SAVE_LDFLAGS"
5550 fi
5551
5552 if test "x$with_libudev" = "xyes"; then
5553   BUILD_WITH_LIBUDEV_CPPFLAGS="$with_libudev_cppflags"
5554   BUILD_WITH_LIBUDEV_LDFLAGS="$with_libudev_ldflags"
5555   BUILD_WITH_LIBUDEV_LIBS="-ludev"
5556 fi
5557
5558 AC_SUBST([BUILD_WITH_LIBUDEV_CPPFLAGS])
5559 AC_SUBST([BUILD_WITH_LIBUDEV_LDFLAGS])
5560 AC_SUBST([BUILD_WITH_LIBUDEV_LIBS])
5561
5562 AM_CONDITIONAL([BUILD_WITH_LIBUDEV], [test "x$with_libudev" = "xyes"])
5563 # }}}
5564
5565 # --with-libupsclient {{{
5566 with_libupsclient_config=""
5567 AC_ARG_WITH([libupsclient],
5568   [AS_HELP_STRING([--with-libupsclient@<:@=PREFIX@:>@], [Path to the upsclient library.])],
5569   [
5570     if test "x$withval" = "xno"; then
5571       with_libupsclient="no"
5572     else if test "x$withval" = "xyes"; then
5573       with_libupsclient="use_pkgconfig"
5574     else
5575       if test -x "$withval"; then
5576         with_libupsclient_config="$withval"
5577         with_libupsclient="use_libupsclient_config"
5578       else if test -x "$withval/bin/libupsclient-config"; then
5579         with_libupsclient_config="$withval/bin/libupsclient-config"
5580         with_libupsclient="use_libupsclient_config"
5581       else
5582         AC_MSG_NOTICE([Not checking for libupsclient: Manually configured])
5583         with_libupsclient_cflags="-I$withval/include"
5584         with_libupsclient_libs="-L$withval/lib -lupsclient"
5585         with_libupsclient="yes"
5586       fi; fi
5587     fi; fi
5588   ],
5589   [with_libupsclient="use_pkgconfig"]
5590 )
5591
5592 # configure using libupsclient-config
5593 if test "x$with_libupsclient" = "xuse_libupsclient_config"; then
5594   with_libupsclient_cflags="`$with_libupsclient_config --cflags`"
5595   if test $? -ne 0; then
5596     with_libupsclient="no ($with_libupsclient_config failed)"
5597   fi
5598   with_libupsclient_libs="`$with_libupsclient_config --libs`"
5599   if test $? -ne 0; then
5600     with_libupsclient="no ($with_libupsclient_config failed)"
5601   fi
5602 fi
5603
5604 if test "x$with_libupsclient" = "xuse_libupsclient_config"; then
5605   with_libupsclient="yes"
5606 fi
5607
5608 # configure using pkg-config
5609 if test "x$with_libupsclient" = "xuse_pkgconfig"; then
5610   $PKG_CONFIG --exists 'libupsclient' 2>/dev/null
5611   if test $? -ne 0; then
5612     with_libupsclient="no (pkg-config doesn't know libupsclient)"
5613   fi
5614 fi
5615
5616 if test "x$with_libupsclient" = "xuse_pkgconfig"; then
5617   with_libupsclient_cflags="`$PKG_CONFIG --cflags 'libupsclient'`"
5618   if test $? -ne 0; then
5619     with_libupsclient="no ($PKG_CONFIG failed)"
5620   fi
5621
5622   with_libupsclient_libs="`$PKG_CONFIG --libs 'libupsclient'`"
5623   if test $? -ne 0; then
5624     with_libupsclient="no ($PKG_CONFIG failed)"
5625   fi
5626 fi
5627
5628 if test "x$with_libupsclient" = "xuse_pkgconfig"; then
5629   with_libupsclient="yes"
5630 fi
5631
5632 if test "x$with_libupsclient" = "xyes"; then
5633   SAVE_CPPFLAGS="$CPPFLAGS"
5634   CPPFLAGS="$CPPFLAGS $with_libupsclient_cflags"
5635
5636   AC_CHECK_HEADERS([upsclient.h],
5637     [with_libupsclient="yes"],
5638     [with_libupsclient="no (upsclient.h not found)"]
5639   )
5640
5641   CPPFLAGS="$SAVE_CPPFLAGS"
5642 fi
5643
5644 if test "x$with_libupsclient" = "xyes"; then
5645   SAVE_LDFLAGS="$LDFLAGS"
5646   LDFLAGS="$LDFLAGS $with_libupsclient_libs"
5647
5648   AC_CHECK_LIB([upsclient], [upscli_connect],
5649     [with_libupsclient="yes"],
5650     [with_libupsclient="no (symbol upscli_connect not found)"]
5651   )
5652
5653   AC_CHECK_LIB([upsclient], [upscli_init],
5654     [AC_DEFINE([HAVE_UPSCLI_INIT], [1], [Define when upscli_init() (since version 2-7) is available.])]
5655   )
5656
5657   AC_CHECK_LIB([upsclient], [upscli_tryconnect],
5658     [AC_DEFINE([HAVE_UPSCLI_TRYCONNECT], [1], [Define when upscli_tryconnect() (since version 2.6.2) is available.])]
5659   )
5660
5661   LDFLAGS="$SAVE_LDFLAGS"
5662 fi
5663
5664 if test "x$with_libupsclient" = "xyes"; then
5665   SAVE_CPPFLAGS="$CPPFLAGS"
5666   CPPFLAGS="$CPPFLAGS $with_libupsclient_cflags"
5667
5668   AC_CHECK_TYPES([UPSCONN_t, UPSCONN],
5669     [],
5670     [],
5671     [[
5672       #include <stdlib.h>
5673       #include <stdio.h>
5674       #include <upsclient.h>
5675     ]]
5676   )
5677
5678   CPPFLAGS="$SAVE_CPPFLAGS"
5679 fi
5680
5681 if test "x$with_libupsclient" = "xyes"; then
5682   BUILD_WITH_LIBUPSCLIENT_CFLAGS="$with_libupsclient_cflags"
5683   BUILD_WITH_LIBUPSCLIENT_LIBS="$with_libupsclient_libs"
5684 fi
5685
5686 AC_SUBST([BUILD_WITH_LIBUPSCLIENT_CFLAGS])
5687 AC_SUBST([BUILD_WITH_LIBUPSCLIENT_LIBS])
5688 # }}}
5689
5690 # --with-libxenctrl {{{
5691 AC_ARG_WITH([libxenctrl],
5692   [AS_HELP_STRING([--with-libxenctrl@<:@=PREFIX@:>@], [Path to libxenctrl.])],
5693   [
5694     if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
5695       with_libxenctrl_cppflags="-I$withval/include"
5696       with_libxenctrl_ldflags="-L$withval/lib"
5697       with_libxenctrl="yes"
5698     else
5699       with_libxenctrl="$withval"
5700     fi
5701   ],
5702   [with_libxenctrl="yes"]
5703 )
5704
5705 if test "x$with_libxenctrl" = "xyes"; then
5706   SAVE_CPPFLAGS="$CPPFLAGS"
5707   CPPFLAGS="$CPPFLAGS $with_libxenctrl_cppflags"
5708
5709   AC_CHECK_HEADERS([xenctrl.h],
5710     [with_libxenctrl="yes"],
5711     [with_libxenctrl="no (xenctrl.h not found)"]
5712   )
5713
5714   CPPFLAGS="$SAVE_CPPFLAGS"
5715 fi
5716
5717 if test "x$with_libxenctrl" = "xyes"; then
5718   SAVE_LDFLAGS="$LDFLAGS"
5719   LDFLAGS="$LDFLAGS $with_libxenctrl_ldflags"
5720
5721   #Xen versions older than 3.4 has no xc_getcpuinfo()
5722   AC_CHECK_LIB([xenctrl], [xc_getcpuinfo],
5723     [with_libxenctrl="yes"],
5724     [with_libxenctrl="no (symbol 'xc_getcpuinfo' not found)"]
5725   )
5726
5727   LDFLAGS="$SAVE_LDFLAGS"
5728 fi
5729
5730 LIBXENCTL_CPPFLAGS="$with_libxenctl_cppflags"
5731 LIBXENCTL_LDFLAGS="$with_libxenctl_ldflags"
5732 AC_SUBST([LIBXENCTL_CPPFLAGS])
5733 AC_SUBST([LIBXENCTL_LDFLAGS])
5734 # }}}
5735
5736 # --with-libxmms {{{
5737 with_xmms_config="xmms-config"
5738 AC_ARG_WITH([libxmms],
5739   [AS_HELP_STRING([--with-libxmms@<:@=PREFIX@:>@], [Path to libxmms.])],
5740   [
5741     if test "x$withval" = "xno" || test "x$withval" = "xyes"; then
5742       with_libxmms="$withval"
5743     else
5744       if test -f "$withval" && test -x "$withval"; then
5745         with_xmms_config="$withval"
5746       else if test -x "$withval/bin/xmms-config"; then
5747         with_xmms_config="$withval/bin/xmms-config"
5748       fi; fi
5749       with_libxmms="yes"
5750     fi
5751   ],
5752   [with_libxmms="yes"]
5753 )
5754
5755 if test "x$with_libxmms" = "xyes"; then
5756   with_xmms_cflags=`$with_xmms_config --cflags 2>/dev/null`
5757   if test $? -ne 0; then
5758     with_libxmms="no"
5759   fi
5760 fi
5761
5762 if test "x$with_libxmms" = "xyes"; then
5763   with_xmms_libs=`$with_xmms_config --libs 2>/dev/null`
5764   if test $? -ne 0; then
5765     with_libxmms="no"
5766   fi
5767 fi
5768
5769 if test "x$with_libxmms" = "xyes"; then
5770   SAVE_CPPFLAGS="$CFLAGS"
5771   CPPFLAGS="$with_xmms_cflags"
5772
5773   AC_CHECK_HEADER([xmmsctrl.h],
5774     [with_libxmms="yes"],
5775     [with_libxmms="no"],
5776   )
5777
5778   CPPFLAGS="$SAVE_CPPFLAGS"
5779 fi
5780
5781 if test "x$with_libxmms" = "xyes"; then
5782   SAVE_LIBS="$LIBS"
5783   LIBS="$with_xmms_libs"
5784
5785   AC_CHECK_LIB([xmms], [xmms_remote_get_info],
5786     [with_libxmss="yes"],
5787     [with_libxmms="no"],
5788     [$with_xmms_libs]
5789
5790   )
5791
5792   LIBS="$SAVE_LIBS"
5793 fi
5794
5795 BUILD_WITH_LIBXMMS_CFLAGS="$with_xmms_cflags"
5796 BUILD_WITH_LIBXMMS_LIBS="$with_xmms_libs"
5797
5798 AC_SUBST([BUILD_WITH_LIBXMMS_CFLAGS])
5799 AC_SUBST([BUILD_WITH_LIBXMMS_LIBS])
5800 # }}}
5801
5802 # --with-libyajl {{{
5803 AC_ARG_WITH([libyajl],
5804   [AS_HELP_STRING([--with-libyajl@<:@=PREFIX@:>@], [Path to libyajl.])],
5805   [
5806     if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
5807       with_libyajl_cppflags="-I$withval/include"
5808       with_libyajl_ldflags="-L$withval/lib"
5809       with_libyajl="yes"
5810     else
5811       with_libyajl="$withval"
5812     fi
5813   ],
5814   [with_libyajl="yes"]
5815 )
5816
5817 if test "x$with_libyajl" = "xyes"; then
5818   SAVE_CPPFLAGS="$CPPFLAGS"
5819   CPPFLAGS="$CPPFLAGS $with_libyajl_cppflags"
5820
5821   AC_CHECK_HEADERS([yajl/yajl_parse.h],
5822     [with_libyajl="yes"],
5823     [with_libyajl="no (yajl/yajl_parse.h not found)"]
5824   )
5825
5826   AC_CHECK_HEADERS([yajl/yajl_tree.h],
5827     [with_libyajl2="yes"],
5828     [with_libyajl2="no (yajl/yajl_tree.h not found)"]
5829   )
5830
5831   AC_CHECK_HEADERS([yajl/yajl_version.h])
5832
5833   CPPFLAGS="$SAVE_CPPFLAGS"
5834 fi
5835
5836 if test "x$with_libyajl" = "xyes"; then
5837   SAVE_LDFLAGS="$LDFLAGS"
5838   LDFLAGS="$LDFLAGS $with_libyajl_ldflags"
5839
5840   AC_CHECK_LIB([yajl], [yajl_alloc],
5841     [with_libyajl="yes"],
5842     [with_libyajl="no (Symbol 'yajl_alloc' not found)"]
5843   )
5844
5845   AC_CHECK_LIB([yajl], [yajl_tree_parse],
5846     [with_libyajl2="yes"],
5847     [with_libyajl2="no (Symbol 'yajl_tree_parse' not found)"]
5848   )
5849
5850   LDFLAGS="$SAVE_LDFLAGS"
5851 fi
5852
5853 if test "x$with_libyajl" = "xyes"; then
5854   BUILD_WITH_LIBYAJL_CPPFLAGS="$with_libyajl_cppflags"
5855   BUILD_WITH_LIBYAJL_LDFLAGS="$with_libyajl_ldflags"
5856   BUILD_WITH_LIBYAJL_LIBS="-lyajl"
5857   AC_DEFINE([HAVE_LIBYAJL], [1], [Define if libyajl is present and usable.])
5858 fi
5859
5860 AC_SUBST([BUILD_WITH_LIBYAJL_CPPFLAGS])
5861 AC_SUBST([BUILD_WITH_LIBYAJL_LDFLAGS])
5862 AC_SUBST([BUILD_WITH_LIBYAJL_LIBS])
5863
5864 AM_CONDITIONAL([BUILD_WITH_LIBYAJL], [test "x$with_libyajl" = "xyes"])
5865 AM_CONDITIONAL([BUILD_WITH_LIBYAJL2], [test "x$with_libyajl$with_libyajl2" = "xyesyes"])
5866 # }}}
5867
5868 # --with-mic {{{
5869 with_mic_cppflags="-I/opt/intel/mic/sysmgmt/sdk/include"
5870 with_mic_ldflags="-L/opt/intel/mic/sysmgmt/sdk/lib/Linux"
5871 with_mic_libs="-lMicAccessSDK -scif"
5872 AC_ARG_WITH([mic],
5873   [AS_HELP_STRING([--with-mic@<:@=PREFIX@:>@], [Path to Intel MIC Access API.])],
5874   [
5875     if test "x$withval" = "xno" || test "x$withval" = "xyes"; then
5876       with_mic="$withval"
5877     else if test -d "$with_mic/lib"; then
5878       with_mic_cppflags="-I$withval/include"
5879       with_mic_ldflags="-L$withval/lib/Linux"
5880       with_mic="yes"
5881     fi; fi
5882   ],
5883   [with_mic="yes"]
5884 )
5885
5886 if test "x$with_mic" = "xyes"; then
5887   SAVE_CPPFLAGS="$CPPFLAGS"
5888   CPPFLAGS="$CPPFLAGS $with_mic_cppflags"
5889
5890   AC_CHECK_HEADERS([MicAccessApi.h],
5891     [with_mic="yes"],
5892     [with_mic="no (MicAccessApi not found)"]
5893   )
5894
5895   CPPFLAGS="$SAVE_CPPFLAGS"
5896 fi
5897
5898 if test "x$with_mic" = "xyes"; then
5899   SAVE_LDFLAGS="$LDFLAGS"
5900   LDFLAGS="$LDFLAGS $with_mic_ldflags"
5901
5902   AC_CHECK_LIB([MicAccessSDK], [MicInitAPI],
5903     [with_mic="yes"],
5904     [with_mic="no (symbol MicInitAPI not found)"],
5905     [$PTHREAD_LIBS -lscif]
5906   )
5907
5908   LDFLAGS="$SAVE_LDFLAGS"
5909 fi
5910
5911 if test "x$with_mic" = "xyes"; then
5912   BUILD_WITH_MIC_CPPFLAGS="$with_mic_cppflags"
5913   BUILD_WITH_MIC_LDFLAGS="$with_mic_ldflags"
5914   BUILD_WITH_MIC_LIBS="$with_mic_libs"
5915 fi
5916 AC_SUBST([BUILD_WITH_MIC_CPPFLAGS])
5917 AC_SUBST([BUILD_WITH_MIC_LDFLAGS])
5918 AC_SUBST([BUILD_WITH_MIC_LIBS])
5919 #}}}
5920
5921 # --with-libvarnish {{{
5922 AC_ARG_WITH([libvarnish],
5923   [AS_HELP_STRING([--with-libvarnish@<:@=PREFIX@:>@], [Path to libvarnish.])],
5924   [
5925     if test "x$withval" = "xno"; then
5926       with_libvarnish="no"
5927     else if test "x$withval" = "xyes"; then
5928       with_libvarnish="use_pkgconfig"
5929     else if test -d "$with_libvarnish/lib"; then
5930       with_libvarnish_cflags="-I$withval/include"
5931       with_libvarnish_libs="-L$withval/lib -lvarnishapi"
5932       with_libvarnish="yes"
5933     fi; fi; fi
5934   ],
5935   [with_libvarnish="use_pkgconfig"]
5936 )
5937
5938 # configure using pkg-config
5939 if test "x$with_libvarnish" = "xuse_pkgconfig"; then
5940   $PKG_CONFIG --exists 'varnishapi' 2>/dev/null
5941   if test $? -ne 0; then
5942     with_libvarnish="no (pkg-config doesn't know varnishapi)"
5943   fi
5944 fi
5945
5946 if test "x$with_libvarnish" = "xuse_pkgconfig"; then
5947   with_libvarnish_cflags="`$PKG_CONFIG --cflags 'varnishapi'`"
5948   if test $? -ne 0; then
5949     with_libvarnish="no ($PKG_CONFIG failed)"
5950   fi
5951
5952   with_libvarnish_libs="`$PKG_CONFIG --libs 'varnishapi'`"
5953   if test $? -ne 0; then
5954     with_libvarnish="no ($PKG_CONFIG failed)"
5955   fi
5956 fi
5957 if test "x$with_libvarnish" = "xuse_pkgconfig"; then
5958   with_libvarnish="yes"
5959 fi
5960
5961 if test "x$with_libvarnish" = "xyes"; then
5962   SAVE_CPPFLAGS="$CPPFLAGS"
5963   CPPFLAGS="$CPPFLAGS $with_libvarnish_cflags"
5964
5965   $PKG_CONFIG --atleast-version=5.2 'varnishapi' 2>/dev/null
5966   if test $? -eq 0; then
5967     AC_DEFINE([HAVE_VARNISH_V5], [1], [Varnish 5 API support])
5968   else
5969     AC_CHECK_HEADERS([vapi/vsc.h],
5970       [AC_DEFINE([HAVE_VARNISH_V4], [1], [Varnish 4 API support])],
5971       [
5972         AC_CHECK_HEADERS([vsc.h],
5973           [AC_DEFINE([HAVE_VARNISH_V3], [1], [Varnish 3 API support]) ],
5974           [
5975             AC_CHECK_HEADERS([varnishapi.h],
5976               [AC_DEFINE([HAVE_VARNISH_V2], [1], [Varnish 2 API support])],
5977               [with_libvarnish="no (found none of the varnish header files)"]
5978             )
5979           ]
5980         )
5981       ]
5982     )
5983   fi
5984
5985   CPPFLAGS="$SAVE_CPPFLAGS"
5986 fi
5987
5988 if test "x$with_libvarnish" = "xyes"; then
5989   BUILD_WITH_LIBVARNISH_CFLAGS="$with_libvarnish_cflags"
5990   BUILD_WITH_LIBVARNISH_LIBS="$with_libvarnish_libs"
5991 fi
5992
5993 AC_SUBST([BUILD_WITH_LIBVARNISH_CFLAGS])
5994 AC_SUBST([BUILD_WITH_LIBVARNISH_LIBS])
5995 # }}}
5996
5997 # --with-libxml2 {{{
5998 AC_ARG_WITH(libxml2,
5999   [AS_HELP_STRING([--with-libxml2@<:@=PREFIX@:>@], [Path to libxml2.])],
6000   [
6001     if test "x$withval" = "xno"; then
6002       with_libxml2="no"
6003     else if test "x$withval" = "xyes"; then
6004       $PKG_CONFIG --exists 'libxml-2.0' 2>/dev/null
6005       if test $? -eq 0; then
6006         with_libxml2="yes"
6007         with_libxml2_cflags="`$PKG_CONFIG --cflags libxml-2.0`"
6008         with_libxml2_ldflags="`$PKG_CONFIG --libs libxml-2.0`"
6009       else
6010         with_libxml2="no (pkg-config doesn't know libxml-2.0)"
6011       fi
6012     else
6013       with_libxml2="yes"
6014       with_libxml2_cflags="-I$withval/include"
6015       with_libxml2_ldflags="-L$withval/lib"
6016     fi; fi
6017   ],
6018   dnl  if no argument --with-libxml2 was passed, find the library locations
6019   dnl  with pkg-config just like above, when --with-libxml2=yes.
6020   [
6021     with_libxml2="yes"
6022     $PKG_CONFIG --exists 'libxml-2.0' 2>/dev/null
6023     if test $? -eq 0; then
6024       with_libxml2="yes"
6025       with_libxml2_cflags="`$PKG_CONFIG --cflags libxml-2.0`"
6026       with_libxml2_ldflags="`$PKG_CONFIG --libs libxml-2.0`"
6027     else
6028       with_libxml2="no (pkg-config doesn't know libxml-2.0)"
6029     fi
6030   ]
6031 )
6032
6033 if test "x$with_libxml2" = "xyes"; then
6034   SAVE_CPPFLAGS="$CPPFLAGS"
6035   CPPFLAGS="$CPPFLAGS $with_libxml2_cflags"
6036
6037   AC_CHECK_HEADERS([libxml/parser.h],
6038     [with_libxml2="yes"],
6039     [with_libxml2="no (libxml/parser.h not found)"]
6040   )
6041
6042   CPPFLAGS="$SAVE_CPPFLAGS"
6043 fi
6044
6045 if test "x$with_libxml2" = "xyes"; then
6046   SAVE_LDFLAGS="$LDFLAGS"
6047   LDFLAGS="$LDFLAGS $with_libxml2_ldflags"
6048
6049   AC_CHECK_LIB([xml2], [xmlXPathEval],
6050     [with_libxml2="yes"],
6051     [with_libxml2="no (symbol xmlXPathEval not found)"]
6052   )
6053
6054   LDFLAGS="$SAVE_LDFLAGS"
6055 fi
6056
6057 if test "x$with_libxml2" = "xyes"; then
6058   BUILD_WITH_LIBXML2_CFLAGS="$with_libxml2_cflags"
6059   BUILD_WITH_LIBXML2_LIBS="$with_libxml2_ldflags"
6060 fi
6061
6062 AC_SUBST([BUILD_WITH_LIBXML2_CFLAGS])
6063 AC_SUBST([BUILD_WITH_LIBXML2_LIBS])
6064 # }}}
6065
6066 # pkg-config --exists libvirt {{{
6067 $PKG_CONFIG --exists libvirt 2>/dev/null
6068 if test $? = 0; then
6069   with_libvirt="yes"
6070 else
6071   with_libvirt="no (pkg-config doesn't know libvirt)"
6072 fi
6073
6074 if test "x$with_libvirt" = "xyes"; then
6075   with_libvirt_cflags="`$PKG_CONFIG --cflags libvirt`"
6076   if test $? -ne 0; then
6077     with_libvirt="no"
6078   fi
6079
6080   with_libvirt_ldflags="`$PKG_CONFIG --libs libvirt`"
6081   if test $? -ne 0; then
6082     with_libvirt="no"
6083   fi
6084 fi
6085
6086 if test "x$with_libvirt" = "xyes"; then
6087   SAVE_CPPFLAGS="$CPPFLAGS"
6088   CPPFLAGS="$CPPFLAGS $with_libvirt_cflags"
6089
6090   AC_CHECK_HEADERS([libvirt/libvirt.h],
6091     [with_libvirt="yes"],
6092     [with_libvirt="no (libvirt/libvirt.h not found)"]
6093   )
6094
6095   CPPFLAGS="$SAVE_CPPFLAGS"
6096 fi
6097
6098 if test "x$with_libvirt" = "xyes"; then
6099   SAVE_LDFLAGS="$LDFLAGS"
6100   LDFLAGS="$LDFLAGS $with_libvirt_ldflags"
6101
6102   AC_CHECK_LIB([virt], [virDomainBlockStats],
6103     [with_libvirt="yes"],
6104     [with_libvirt="no (symbol virDomainBlockStats not found)"]
6105   )
6106
6107   LDFLAGS="$SAVE_LDFLAGS"
6108 fi
6109
6110 if test "x$with_libvirt" = "xyes"; then
6111   BUILD_WITH_LIBVIRT_CFLAGS="$with_libvirt_cflags"
6112   BUILD_WITH_LIBVIRT_LIBS="$with_libvirt_ldflags"
6113 fi
6114
6115 AC_SUBST([BUILD_WITH_LIBVIRT_CFLAGS])
6116 AC_SUBST([BUILD_WITH_LIBVIRT_LIBS])
6117 # }}}
6118
6119 # $PKG_CONFIG --exists OpenIPMIpthread {{{
6120 with_libopenipmipthread="yes"
6121 AC_MSG_CHECKING([for libOpenIPMIpthread])
6122 $PKG_CONFIG --exists OpenIPMIpthread 2>/dev/null
6123 if test $? -ne 0; then
6124   with_libopenipmipthread="no (pkg-config doesn't know OpenIPMIpthread)"
6125 fi
6126 AC_MSG_RESULT([$with_libopenipmipthread])
6127
6128 if test "x$with_libopenipmipthread" = "xyes"; then
6129   AC_MSG_CHECKING([for libOpenIPMIpthread CFLAGS])
6130   temp_result="`$PKG_CONFIG --cflags OpenIPMIpthread`"
6131   if test $? -eq 0; then
6132     with_libopenipmipthread_cflags="$temp_result"
6133   else
6134     with_libopenipmipthread="no ($PKG_CONFIG --cflags OpenIPMIpthread failed)"
6135     temp_result="$PKG_CONFIG --cflags OpenIPMIpthread failed"
6136   fi
6137   AC_MSG_RESULT([$temp_result])
6138 fi
6139
6140 if test "x$with_libopenipmipthread" = "xyes"; then
6141   AC_MSG_CHECKING([for libOpenIPMIpthread LDFLAGS])
6142   temp_result="`$PKG_CONFIG --libs OpenIPMIpthread`"
6143   if test $? -eq 0; then
6144     with_libopenipmipthread_ldflags="$temp_result"
6145   else
6146     with_libopenipmipthread="no ($PKG_CONFIG --libs OpenIPMIpthread failed)"
6147     temp_result="$PKG_CONFIG --libs OpenIPMIpthread failed"
6148   fi
6149   AC_MSG_RESULT([$temp_result])
6150 fi
6151
6152 if test "x$with_libopenipmipthread" = "xyes"; then
6153   SAVE_CPPFLAGS="$CPPFLAGS"
6154   CPPFLAGS="$CPPFLAGS $with_libopenipmipthread_cflags"
6155
6156   AC_CHECK_HEADERS([OpenIPMI/ipmi_smi.h],
6157     [with_libopenipmipthread="yes"],
6158     [with_libopenipmipthread="no (OpenIPMI/ipmi_smi.h not found)"],
6159     [[
6160       #include <OpenIPMI/ipmiif.h>
6161       #include <OpenIPMI/ipmi_err.h>
6162       #include <OpenIPMI/ipmi_posix.h>
6163       #include <OpenIPMI/ipmi_conn.h>
6164     ]]
6165   )
6166
6167   CPPFLAGS="$SAVE_CPPFLAGS"
6168 fi
6169
6170 if test "x$with_libopenipmipthread" = "xyes"; then
6171   BUILD_WITH_OPENIPMI_CFLAGS="$with_libopenipmipthread_cflags"
6172   BUILD_WITH_OPENIPMI_LIBS="$with_libopenipmipthread_ldflags"
6173 fi
6174
6175 AC_SUBST([BUILD_WITH_OPENIPMI_CFLAGS])
6176 AC_SUBST([BUILD_WITH_OPENIPMI_LIBS])
6177 # }}}
6178
6179 # --with-libatasmart {{{
6180 AC_ARG_WITH([libatasmart],
6181   [AS_HELP_STRING([--with-libatasmart@<:@=PREFIX@:>@], [Path to libatasmart.])],
6182   [
6183     if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
6184       with_libatasmart_cppflags="-I$withval/include"
6185       with_libatasmart_ldflags="-L$withval/lib"
6186       with_libatasmart="yes"
6187     else
6188       with_libatasmart="$withval"
6189     fi
6190   ],
6191   [
6192     if test "x$ac_system" = "xLinux"; then
6193       with_libatasmart="yes"
6194     else
6195       with_libatasmart="no (Linux only library)"
6196     fi
6197   ]
6198 )
6199
6200 if test "x$with_libatasmart" = "xyes"; then
6201   SAVE_CPPFLAGS="$CPPFLAGS"
6202   CPPFLAGS="$CPPFLAGS $with_libatasmart_cppflags"
6203
6204   AC_CHECK_HEADERS([atasmart.h],
6205     [with_libatasmart="yes"],
6206     [with_libatasmart="no (atasmart.h not found)"])
6207
6208   CPPFLAGS="$SAVE_CPPFLAGS"
6209 fi
6210
6211 if test "x$with_libatasmart" = "xyes"; then
6212   SAVE_LDFLAGS="$LDFLAGS"
6213   LDFLAGS="$LDFLAGS $with_libatasmart_ldflags"
6214
6215   AC_CHECK_LIB([atasmart], [sk_disk_open],
6216     [with_libatasmart="yes"],
6217     [with_libatasmart="no (Symbol 'sk_disk_open' not found)"]
6218   )
6219
6220   LDFLAGS="$SAVE_LDFLAGS"
6221 fi
6222
6223 if test "x$with_libatasmart" = "xyes"; then
6224   BUILD_WITH_LIBATASMART_CPPFLAGS="$with_libatasmart_cppflags"
6225   BUILD_WITH_LIBATASMART_LDFLAGS="$with_libatasmart_ldflags"
6226   BUILD_WITH_LIBATASMART_LIBS="-latasmart"
6227 fi
6228
6229 AC_SUBST([BUILD_WITH_LIBATASMART_CPPFLAGS])
6230 AC_SUBST([BUILD_WITH_LIBATASMART_LDFLAGS])
6231 AC_SUBST([BUILD_WITH_LIBATASMART_LIBS])
6232 # }}}
6233
6234 PKG_CHECK_MODULES([LIBNOTIFY], [libnotify],
6235   [with_libnotify="yes"],
6236   [with_libnotify="no (pkg-config doesn't know libnotify)"]
6237 )
6238
6239 PKG_CHECK_MODULES([LIBRIEMANN_CLIENT], [riemann-client >= 1.6.0],
6240  [with_libriemann_client="yes"],
6241  [with_libriemann_client="no (pkg-config doesn't know libriemann-client)"]
6242 )
6243
6244 # Check for enabled/disabled features
6245 #
6246
6247 # AC_COLLECTD(name, enable/disable, info-text, feature/module)
6248 # ------------------------------------------------------------
6249 dnl
6250 m4_define([my_toupper],[m4_translit([$1], m4_defn([m4_cr_letters]), m4_defn([m4_cr_LETTERS]))])
6251 dnl
6252 AC_DEFUN(
6253   [AC_COLLECTD],
6254   [
6255   m4_if([$1], [], [AC_FATAL([AC_COLLECTD([$1], [$2], [$3], [$4]): 1st argument must not be empty])])dnl
6256   m4_if(
6257     [$2],
6258     [enable],
6259     [dnl
6260     m4_define([EnDis],[disabled])dnl
6261     m4_define([YesNo],[no])dnl
6262     ],dnl
6263     [m4_if(
6264       [$2],
6265       [disable],
6266       [dnl
6267       m4_define([EnDis],[enabled])dnl
6268       m4_define([YesNo],[yes])dnl
6269       ],
6270       [dnl
6271       AC_FATAL([AC_COLLECTD([$1], [$2], [$3], [$4]): 2nd argument must be either enable or disable])dnl
6272       ]dnl
6273     )]dnl
6274   )dnl
6275   m4_if([$3], [feature], [],
6276     [m4_if(
6277       [$3], [module], [],
6278       [dnl
6279       AC_FATAL([AC_COLLECTD([$1], [$2], [$3], [$4]): 3rd argument must be either feature or disable])dnl
6280       ]dnl
6281     )]dnl
6282   )dnl
6283   AC_ARG_ENABLE(
6284     [$1],
6285     AS_HELP_STRING([--$2-$1], [$2 $4 (EnDis by def)]),
6286     [],
6287     enable_$1='[YesNo]'dnl
6288   )# AC_ARG_ENABLE
6289   if test "x$enable_$1" = "xno"; then
6290     collectd_$1=0
6291   else
6292     if test "x$enable_$1" = "xyes"; then
6293       collectd_$1=1
6294     else
6295       AC_MSG_NOTICE([please specify either --enable-$1 or --disable-$1; enabling $1.])
6296       collectd_$1=1
6297       enable_$1='yes'
6298     fi
6299   fi
6300   AC_DEFINE_UNQUOTED([COLLECT_]my_toupper([$1]), [$collectd_$1], [whether or not to enable $3 $4])
6301   AM_CONDITIONAL([BUILD_]my_toupper([$3])[_]my_toupper([$1]), [test "x$enable_$1" = "xyes"])dnl
6302   ]dnl
6303 )# AC_COLLECTD(name, enable/disable, info-text, feature/module)
6304
6305 # AC_PLUGIN(name, default, info)
6306 # ------------------------------------------------------------
6307 dnl
6308 AC_DEFUN(
6309   [AC_PLUGIN],
6310   [
6311     enable_plugin="no"
6312     force="no"
6313     AC_ARG_ENABLE([$1],
6314       [AS_HELP_STRING([--enable-$1],[$3])],
6315       [
6316         if test "x$enableval" = "xyes"; then
6317           enable_plugin="yes"
6318         else if test "x$enableval" = "xforce"; then
6319           enable_plugin="yes"
6320           force="yes"
6321         else
6322           enable_plugin="no (disabled on command line)"
6323         fi; fi
6324       ],
6325       [
6326         if test "x$enable_all_plugins" = "xauto"; then
6327           if test "x$2" = "xyes"; then
6328             enable_plugin="yes"
6329           else
6330             enable_plugin="$2"
6331           fi
6332         else
6333           enable_plugin="$enable_all_plugins"
6334         fi
6335       ]
6336     )
6337     if test "x$enable_plugin" = "xyes"; then
6338       if test "x$2" = "xyes" || test "x$force" = "xyes"; then
6339         AC_DEFINE([HAVE_PLUGIN_]my_toupper([$1]), 1, [Define to 1 if the $1 plugin is enabled.])
6340         if test "x$2" != "xyes"; then
6341           dependency_warning="yes"
6342         fi
6343       else # User passed "yes" but dependency checking yielded "no" => Dependency problem.
6344         dependency_error="yes"
6345         enable_plugin="$2 (dependency error)"
6346       fi
6347     fi
6348     AM_CONDITIONAL([BUILD_PLUGIN_]my_toupper([$1]), [test "x$enable_plugin" = "xyes"])
6349     enable_$1="$enable_plugin"
6350   ]
6351 )# AC_PLUGIN(name, default, info)
6352
6353 m4_divert_once([HELP_ENABLE], [
6354 collectd features:])
6355 # FIXME: Remove these calls to `AC_COLLECTD' and then remove that macro.
6356 AC_COLLECTD([debug],     [enable],  [feature], [debugging])
6357 AC_COLLECTD([daemon],    [disable], [feature], [daemon mode])
6358 AC_COLLECTD([getifaddrs],[enable],  [feature], [getifaddrs under Linux])
6359 AC_COLLECTD([werror],    [disable], [feature], [building with -Werror])
6360
6361 dependency_warning="no"
6362 dependency_error="no"
6363
6364 plugin_ascent="no"
6365 plugin_barometer="no"
6366 plugin_battery="no"
6367 plugin_bind="no"
6368 plugin_ceph="no"
6369 plugin_cgroups="no"
6370 plugin_conntrack="no"
6371 plugin_contextswitch="no"
6372 plugin_cpu="no"
6373 plugin_cpufreq="no"
6374 plugin_cpusleep="no"
6375 plugin_curl_json="no"
6376 plugin_curl_xml="no"
6377 plugin_df="no"
6378 plugin_disk="no"
6379 plugin_drbd="no"
6380 plugin_dpdkevents="no"
6381 plugin_dpdkstat="no"
6382 plugin_entropy="no"
6383 plugin_ethstat="no"
6384 plugin_fhcount="no"
6385 plugin_fscache="no"
6386 plugin_gps="no"
6387 plugin_gpu_nvidia="no"
6388 plugin_grpc="no"
6389 plugin_hugepages="no"
6390 plugin_intel_pmu="no"
6391 plugin_intel_rdt="no"
6392 plugin_interface="no"
6393 plugin_ipc="no"
6394 plugin_ipmi="no"
6395 plugin_ipvs="no"
6396 plugin_irq="no"
6397 plugin_load="no"
6398 plugin_log_logstash="no"
6399 plugin_mcelog="no"
6400 plugin_memory="no"
6401 plugin_multimeter="no"
6402 plugin_nfs="no"
6403 plugin_numa="no"
6404 plugin_ovs_events="no"
6405 plugin_ovs_stats="no"
6406 plugin_pcie_errors="no"
6407 plugin_perl="no"
6408 plugin_pinba="no"
6409 plugin_processes="no"
6410 plugin_protocols="no"
6411 plugin_python="no"
6412 plugin_serial="no"
6413 plugin_smart="no"
6414 plugin_swap="no"
6415 plugin_synproxy="no"
6416 plugin_tape="no"
6417 plugin_tcpconns="no"
6418 plugin_ted="no"
6419 plugin_thermal="no"
6420 plugin_turbostat="no"
6421 plugin_uptime="no"
6422 plugin_users="no"
6423 plugin_virt="no"
6424 plugin_vmem="no"
6425 plugin_vserver="no"
6426 plugin_wireless="no"
6427 plugin_write_prometheus="no"
6428 plugin_write_stackdriver="no"
6429 plugin_xencpu="no"
6430 plugin_zfs_arc="no"
6431 plugin_zone="no"
6432 plugin_zookeeper="no"
6433
6434 # Linux
6435 if test "x$ac_system" = "xLinux"; then
6436   plugin_battery="yes"
6437   plugin_cgroups="yes"
6438   plugin_conntrack="yes"
6439   plugin_contextswitch="yes"
6440   plugin_cpu="yes"
6441   plugin_cpufreq="yes"
6442   plugin_disk="yes"
6443   plugin_drbd="yes"
6444   plugin_entropy="yes"
6445   plugin_fhcount="yes"
6446   plugin_fscache="yes"
6447   plugin_hugepages="yes"
6448   plugin_interface="yes"
6449   plugin_ipc="yes"
6450   plugin_irq="yes"
6451   plugin_load="yes"
6452   plugin_lvm="yes"
6453   plugin_mcelog="yes"
6454   plugin_memory="yes"
6455   plugin_nfs="yes"
6456   plugin_numa="yes"
6457   plugin_processes="yes"
6458   plugin_protocols="yes"
6459   plugin_serial="yes"
6460   plugin_swap="yes"
6461   plugin_synproxy="yes"
6462   plugin_tcpconns="yes"
6463   plugin_thermal="yes"
6464   plugin_uptime="yes"
6465   plugin_vmem="yes"
6466   plugin_vserver="yes"
6467   plugin_wireless="yes"
6468   plugin_zfs_arc="yes"
6469
6470   if test "x$ac_cv_header_linux_ip_vs_h" = "xyes"; then
6471     plugin_ipvs="yes"
6472   fi
6473
6474   if test "x$have_cpuid_h" = "xyes"; then
6475     plugin_turbostat="yes"
6476   fi
6477
6478   if test "x$c_cv_have_clock_boottime_monotonic" = "xyes"; then
6479     plugin_cpusleep="yes"
6480   fi
6481
6482   if test "x$with_libyajl" = "xyes" && test "x$with_libyajl2" = "xyes"; then
6483     plugin_ovs_events="yes"
6484     plugin_ovs_stats="yes"
6485   fi
6486
6487   if test "x$have_pci_regs_h" = "xyes"; then
6488     plugin_pcie_errors="yes"
6489   fi
6490 fi
6491
6492 if test "x$ac_system" = "xOpenBSD"; then
6493   plugin_tcpconns="yes"
6494 fi
6495
6496 if test "x$ac_system" = "xNetBSD"; then
6497   plugin_disk="yes"
6498   plugin_entropy="yes"
6499   plugin_irq="yes"
6500   plugin_processes="yes"
6501 fi
6502
6503 # Mac OS X devices
6504 if test "x$with_libiokit" = "xyes"; then
6505   plugin_battery="yes"
6506   plugin_disk="yes"
6507 fi
6508
6509 # AIX
6510
6511 if test "x$ac_system" = "xAIX"; then
6512   plugin_ipc="yes"
6513   plugin_tcpconns="yes"
6514 fi
6515
6516 # FreeBSD
6517
6518 if test "x$ac_system" = "xFreeBSD"; then
6519   plugin_cpufreq="yes"
6520   plugin_disk="yes"
6521   plugin_zfs_arc="yes"
6522 fi
6523
6524
6525 if test "x$with_perfstat" = "xyes"; then
6526   plugin_contextswitch="yes"
6527   plugin_cpu="yes"
6528   plugin_disk="yes"
6529   plugin_interface="yes"
6530   plugin_load="yes"
6531   plugin_memory="yes"
6532   plugin_swap="yes"
6533   plugin_uptime="yes"
6534 fi
6535
6536 if test "x$with_procinfo" = "xyes"; then
6537   plugin_processes="yes"
6538 fi
6539
6540 # Solaris
6541 if test "x$with_kstat" = "xyes"; then
6542   plugin_nfs="yes"
6543   plugin_processes="yes"
6544   plugin_uptime="yes"
6545   plugin_zfs_arc="yes"
6546   plugin_zone="yes"
6547 fi
6548
6549 if test "x$with_devinfo" = "xyes" && test "x$with_kstat" = "xyes"; then
6550   plugin_cpu="yes"
6551   plugin_disk="yes"
6552   plugin_interface="yes"
6553   plugin_memory="yes"
6554   plugin_tape="yes"
6555 fi
6556
6557 if test "x$with_libi2c" = "xyes"; then
6558   plugin_barometer="yes"
6559 fi
6560
6561
6562 # libstatgrab
6563 if test "x$with_libstatgrab" = "xyes"; then
6564   plugin_cpu="yes"
6565   plugin_disk="yes"
6566   plugin_interface="yes"
6567   plugin_load="yes"
6568   plugin_memory="yes"
6569   plugin_swap="yes"
6570   plugin_users="yes"
6571 fi
6572
6573 if test "x$with_libcurl" = "xyes" && test "x$with_libxml2" = "xyes"; then
6574   plugin_ascent="yes"
6575   if test "x$have_strptime" = "xyes"; then
6576     plugin_bind="yes"
6577   fi
6578 fi
6579
6580 if test "x$with_libopenipmipthread" = "xyes"; then
6581   plugin_ipmi="yes"
6582 fi
6583
6584 if test "x$with_libcurl" = "xyes" && test "x$with_libyajl" = "xyes"; then
6585   plugin_curl_json="yes"
6586 fi
6587
6588 if test "x$with_libcurl" = "xyes" && test "x$with_libssl" = "xyes" && test "x$with_libyajl" = "xyes" && test "x$with_libyajl2" = "xyes"; then
6589   plugin_write_stackdriver="yes"
6590 fi
6591
6592 if test "x$with_libcurl" = "xyes" && test "x$with_libxml2" = "xyes"; then
6593   plugin_curl_xml="yes"
6594 fi
6595
6596 if test "x$with_libyajl" = "xyes"; then
6597   plugin_ceph="yes"
6598 fi
6599
6600 if test "x$have_processor_info" = "xyes"; then
6601   plugin_cpu="yes"
6602 fi
6603
6604 if test "x$have_sysctl" = "xyes"; then
6605   plugin_cpu="yes"
6606   plugin_memory="yes"
6607   plugin_uptime="yes"
6608   if test "x$ac_system" = "xDarwin"; then
6609     plugin_swap="yes"
6610   fi
6611 fi
6612
6613 if test "x$have_sysctlbyname" = "xyes"; then
6614   plugin_contextswitch="yes"
6615   plugin_cpu="yes"
6616   plugin_memory="yes"
6617   plugin_tcpconns="yes"
6618 fi
6619
6620 if test "x$have_getvfsstat" = "xyes" || test "x$have_getfsstat" = "xyes"; then
6621   plugin_df="yes"
6622 fi
6623
6624 if test "x$c_cv_have_two_getmntent" = "xyes" || test "x$have_getmntent" = "xgen" || test "x$have_getmntent" = "xsun"; then
6625   plugin_df="yes"
6626 fi
6627
6628 if test "x$c_cv_have_one_getmntent" = "xyes"; then
6629   plugin_df="yes"
6630 fi
6631
6632 if test "x$have_getmntent_r" = "xyes"; then
6633   plugin_df="yes"
6634 fi
6635
6636 if test "x$plugin_df" = "xyes"; then
6637   plugin_df="no"
6638   if test "x$have_statfs" = "xyes"; then
6639     plugin_df="yes"
6640   fi
6641
6642   if test "x$have_statvfs" = "xyes"; then
6643     plugin_df="yes"
6644   fi
6645 fi
6646
6647 if test "x$have_linux_sockios_h" = "xyes" && test "x$have_linux_ethtool_h" = "xyes"; then
6648   plugin_ethstat="yes"
6649 fi
6650
6651 if test "x$with_libgps" = "xyes"; then
6652   plugin_gps="yes"
6653 fi
6654
6655 plugin_grpc="yes"
6656 if test "x$GRPC_CPP_PLUGIN" = "x"; then
6657   plugin_grpc="no (grpc_cpp_plugin not found)"
6658 fi
6659 if test "x$have_protoc3" != "xyes"; then
6660   plugin_grpc="no (protoc3 not found)"
6661 fi
6662 if test "x$with_libprotobuf" != "xyes"; then
6663   plugin_grpc="no (libprotobuf not found)"
6664 fi
6665 if test "x$with_libgrpcpp" != "xyes"; then
6666   plugin_grpc="no (libgrpc++ not found)"
6667 fi
6668
6669 if test "x$have_getifaddrs" = "xyes"; then
6670   plugin_interface="yes"
6671 fi
6672
6673 if test "x$have_getloadavg" = "xyes"; then
6674   plugin_load="yes"
6675 fi
6676
6677 if test "x$with_libyajl" = "xyes"; then
6678   plugin_log_logstash="yes"
6679 fi
6680
6681 if test "x$with_libperl" = "xyes" && test "x$c_cv_have_perl_ithreads" = "xyes"; then
6682   plugin_perl="yes"
6683 fi
6684
6685 if test "x$have_protoc_c" = "xyes" && test "x$with_libprotobuf_c" = "xyes"; then
6686   plugin_pinba="yes"
6687   if test "x$with_libmicrohttpd" = "xyes"; then
6688     plugin_write_prometheus="yes"
6689   fi
6690 fi
6691
6692 # Mac OS X memory interface
6693 if test "x$have_host_statistics" = "xyes"; then
6694   plugin_memory="yes"
6695 fi
6696
6697 if test "x$have_termios_h" = "xyes"; then
6698   if test "x$ac_system" != "xAIX"; then
6699     plugin_multimeter="yes"
6700   fi
6701   plugin_ted="yes"
6702 fi
6703
6704 if test "x$have_thread_info" = "xyes"; then
6705   plugin_processes="yes"
6706 fi
6707
6708 if test "x$with_kvm_getprocs" = "xyes" && test "x$have_struct_kinfo_proc_freebsd" = "xyes"; then
6709   plugin_processes="yes"
6710 fi
6711
6712 if test "x$with_kvm_getprocs" = "xyes" && test "x$have_struct_kinfo_proc_openbsd" = "xyes"; then
6713   plugin_processes="yes"
6714 fi
6715
6716 if test "x$with_libpython" != "xno"; then
6717   plugin_python="yes"
6718 fi
6719
6720 if test "x$with_libatasmart" = "xyes" && test "x$with_libudev" = "xyes"; then
6721   plugin_smart="yes"
6722 fi
6723
6724 if test "x$with_kvm_getswapinfo" = "xyes"; then
6725   plugin_swap="yes"
6726 fi
6727
6728 if test "x$have_swapctl" = "xyes" && test "x$c_cv_have_swapctl_two_args" = "xyes"; then
6729   plugin_swap="yes"
6730 fi
6731
6732 if test "x$have_swapctl" = "xyes" && test "x$c_cv_have_swapctl_three_args" = "xyes"; then
6733   plugin_swap="yes"
6734 fi
6735
6736 if test "x$with_kvm_openfiles = "xyes" && $with_kvm_nlist" = "xyes"; then
6737   plugin_tcpconns="yes"
6738 fi
6739
6740 if test "x$have_getutent" = "xyes"; then
6741   plugin_users="yes"
6742 fi
6743
6744 if test "x$have_getutxent" = "xyes"; then
6745   plugin_users="yes"
6746 fi
6747
6748 if test "x$with_libxml2" = "xyes" && test "x$with_libvirt" = "xyes"; then
6749   plugin_virt="yes"
6750 fi
6751
6752 if test "x$with_libxenctrl" = "xyes"; then
6753   plugin_xencpu="yes"
6754 fi
6755
6756 if test "x$with_libdpdk" = "xyes"; then
6757   plugin_dpdkevents="$dpdk_keepalive"
6758   plugin_dpdkstat="yes"
6759 fi
6760
6761 m4_divert_once([HELP_ENABLE], [
6762 collectd plugins:])
6763
6764 AC_ARG_ENABLE([all-plugins],
6765   [AS_HELP_STRING([--enable-all-plugins], [enable all plugins @<:@default=yes@:>@])],
6766   [
6767      if test "x$enableval" = "xyes"; then
6768        enable_all_plugins="yes"
6769      else if test "x$enableval" = "xauto"; then
6770        enable_all_plugins="auto"
6771      else
6772        enable_all_plugins="no"
6773      fi; fi
6774   ],
6775   [enable_all_plugins="auto"]
6776 )
6777
6778 m4_divert_once([HELP_ENABLE], [])
6779
6780 AC_PLUGIN([aggregation],         [yes],                       [Aggregation plugin])
6781 AC_PLUGIN([amqp],                [$with_librabbitmq],         [AMQP output plugin])
6782 AC_PLUGIN([amqp1],               [$with_libqpid_proton],      [AMQP 1.0 output plugin])
6783 AC_PLUGIN([apache],              [$with_libcurl],             [Apache httpd statistics])
6784 AC_PLUGIN([apcups],              [yes],                       [Statistics of UPSes by APC])
6785 AC_PLUGIN([apple_sensors],       [$with_libiokit],            [Apple hardware sensors])
6786 AC_PLUGIN([aquaero],             [$with_libaquaero5],         [Aquaero hardware sensors])
6787 AC_PLUGIN([ascent],              [$plugin_ascent],            [AscentEmu player statistics])
6788 AC_PLUGIN([barometer],           [$plugin_barometer],         [Barometer sensor on I2C])
6789 AC_PLUGIN([battery],             [$plugin_battery],           [Battery statistics])
6790 AC_PLUGIN([bind],                [$plugin_bind],              [ISC Bind nameserver statistics])
6791 AC_PLUGIN([ceph],                [$plugin_ceph],              [Ceph daemon statistics])
6792 AC_PLUGIN([cgroups],             [$plugin_cgroups],           [CGroups CPU usage accounting])
6793 AC_PLUGIN([chrony],              [yes],                       [Chrony statistics])
6794 AC_PLUGIN([conntrack],           [$plugin_conntrack],         [nf_conntrack statistics])
6795 AC_PLUGIN([contextswitch],       [$plugin_contextswitch],     [context switch statistics])
6796 AC_PLUGIN([cpu],                 [$plugin_cpu],               [CPU usage statistics])
6797 AC_PLUGIN([cpufreq],             [$plugin_cpufreq],           [CPU frequency statistics])
6798 AC_PLUGIN([cpusleep],            [$plugin_cpusleep],          [CPU sleep statistics])
6799 AC_PLUGIN([csv],                 [yes],                       [CSV output plugin])
6800 AC_PLUGIN([curl],                [$with_libcurl],             [CURL generic web statistics])
6801 AC_PLUGIN([curl_json],           [$plugin_curl_json],         [CouchDB statistics])
6802 AC_PLUGIN([curl_xml],            [$plugin_curl_xml],          [CURL generic xml statistics])
6803 AC_PLUGIN([dbi],                 [$with_libdbi],              [General database statistics])
6804 AC_PLUGIN([df],                  [$plugin_df],                [Filesystem usage statistics])
6805 AC_PLUGIN([disk],                [$plugin_disk],              [Disk usage statistics])
6806 AC_PLUGIN([dns],                 [$with_libpcap],             [DNS traffic analysis])
6807 AC_PLUGIN([dpdkevents],          [$plugin_dpdkevents],        [Events from DPDK])
6808 AC_PLUGIN([dpdkstat],            [$plugin_dpdkstat],          [Stats from DPDK])
6809 AC_PLUGIN([drbd],                [$plugin_drbd],              [DRBD statistics])
6810 AC_PLUGIN([email],               [yes],                       [EMail statistics])
6811 AC_PLUGIN([entropy],             [$plugin_entropy],           [Entropy statistics])
6812 AC_PLUGIN([ethstat],             [$plugin_ethstat],           [Stats from NIC driver])
6813 AC_PLUGIN([exec],                [yes],                       [Execution of external programs])
6814 AC_PLUGIN([fhcount],             [$plugin_fhcount],           [File handles statistics])
6815 AC_PLUGIN([filecount],           [yes],                       [Count files in directories])
6816 AC_PLUGIN([fscache],             [$plugin_fscache],           [fscache statistics])
6817 AC_PLUGIN([gmond],               [$with_libganglia],          [Ganglia plugin])
6818 AC_PLUGIN([gps],                 [$plugin_gps],               [GPS plugin])
6819 AC_PLUGIN([gpu_nvidia],          [$with_cuda],                [NVIDIA GPU plugin])
6820 AC_PLUGIN([grpc],                [$plugin_grpc],              [gRPC plugin])
6821 AC_PLUGIN([hddtemp],             [yes],                       [Query hddtempd])
6822 AC_PLUGIN([hugepages],           [$plugin_hugepages],         [Hugepages statistics])
6823 AC_PLUGIN([intel_pmu],           [$with_libjevents],          [Intel performance monitor plugin])
6824 AC_PLUGIN([intel_rdt],           [$with_libpqos],             [Intel RDT monitor plugin])
6825 AC_PLUGIN([interface],           [$plugin_interface],         [Interface traffic statistics])
6826 AC_PLUGIN([ipc],                 [$plugin_ipc],               [IPC statistics])
6827 AC_PLUGIN([ipmi],                [$plugin_ipmi],              [IPMI sensor statistics])
6828 AC_PLUGIN([iptables],            [$with_libiptc],             [IPTables rule counters])
6829 AC_PLUGIN([ipvs],                [$plugin_ipvs],              [IPVS connection statistics])
6830 AC_PLUGIN([irq],                 [$plugin_irq],               [IRQ statistics])
6831 AC_PLUGIN([java],                [$with_java],                [Embed the Java Virtual Machine])
6832 AC_PLUGIN([load],                [$plugin_load],              [System load])
6833 AC_PLUGIN([log_logstash],        [$plugin_log_logstash],      [Logstash json_event compatible logging])
6834 AC_PLUGIN([logfile],             [yes],                       [File logging plugin])
6835 AC_PLUGIN([lpar],                [$with_perfstat],            [AIX logical partitions statistics])
6836 AC_PLUGIN([lua],                 [$with_liblua],              [Lua plugin])
6837 AC_PLUGIN([lvm],                 [$with_liblvm2app],          [LVM statistics])
6838 AC_PLUGIN([madwifi],             [$have_linux_wireless_h],    [Madwifi wireless statistics])
6839 AC_PLUGIN([match_empty_counter], [yes],                       [The empty counter match])
6840 AC_PLUGIN([match_hashed],        [yes],                       [The hashed match])
6841 AC_PLUGIN([match_regex],         [yes],                       [The regex match])
6842 AC_PLUGIN([match_timediff],      [yes],                       [The timediff match])
6843 AC_PLUGIN([match_value],         [yes],                       [The value match])
6844 AC_PLUGIN([mbmon],               [yes],                       [Query mbmond])
6845 AC_PLUGIN([mcelog],              [$plugin_mcelog],            [Machine Check Exceptions notifications])
6846 AC_PLUGIN([md],                  [$have_linux_raid_md_u_h],   [md (Linux software RAID) devices])
6847 AC_PLUGIN([memcachec],           [$with_libmemcached],        [memcachec statistics])
6848 AC_PLUGIN([memcached],           [yes],                       [memcached statistics])
6849 AC_PLUGIN([memory],              [$plugin_memory],            [Memory usage])
6850 AC_PLUGIN([mic],                 [$with_mic],                 [Intel Many Integrated Core stats])
6851 AC_PLUGIN([modbus],              [$with_libmodbus],           [Modbus plugin])
6852 AC_PLUGIN([mqtt],                [$with_libmosquitto],        [MQTT output plugin])
6853 AC_PLUGIN([multimeter],          [$plugin_multimeter],        [Read multimeter values])
6854 AC_PLUGIN([mysql],               [$with_libmysql],            [MySQL statistics])
6855 AC_PLUGIN([netapp],              [$with_libnetapp],           [NetApp plugin])
6856 AC_PLUGIN([netlink],             [$with_libmnl],              [Enhanced Linux network statistics])
6857 AC_PLUGIN([network],             [yes],                       [Network communication plugin])
6858 AC_PLUGIN([nfs],                 [$plugin_nfs],               [NFS statistics])
6859 AC_PLUGIN([nginx],               [$with_libcurl],             [nginx statistics])
6860 AC_PLUGIN([notify_desktop],      [$with_libnotify],           [Desktop notifications])
6861 AC_PLUGIN([notify_email],        [$with_libesmtp],            [Email notifier])
6862 AC_PLUGIN([notify_nagios],       [yes],                       [Nagios notification plugin])
6863 AC_PLUGIN([ntpd],                [yes],                       [NTPd statistics])
6864 AC_PLUGIN([numa],                [$plugin_numa],              [NUMA virtual memory statistics])
6865 AC_PLUGIN([nut],                 [$with_libupsclient],        [Network UPS tools statistics])
6866 AC_PLUGIN([olsrd],               [yes],                       [olsrd statistics])
6867 AC_PLUGIN([onewire],             [$with_libowcapi],           [OneWire sensor statistics])
6868 AC_PLUGIN([openldap],            [$with_libldap],             [OpenLDAP statistics])
6869 AC_PLUGIN([openvpn],             [yes],                       [OpenVPN client statistics])
6870 AC_PLUGIN([oracle],              [$with_oracle],              [Oracle plugin])
6871 AC_PLUGIN([ovs_events],          [$plugin_ovs_events],        [OVS events plugin])
6872 AC_PLUGIN([ovs_stats],           [$plugin_ovs_stats],         [OVS statistics plugin])
6873 AC_PLUGIN([pcie_errors],         [$plugin_pcie_errors],       [PCIe errors plugin])
6874 AC_PLUGIN([perl],                [$plugin_perl],              [Embed a Perl interpreter])
6875 AC_PLUGIN([pf],                  [$have_net_pfvar_h],         [BSD packet filter (PF) statistics])
6876 # FIXME: Check for libevent, too.
6877 AC_PLUGIN([pinba],               [$plugin_pinba],             [Pinba statistics])
6878 AC_PLUGIN([ping],                [$with_liboping],            [Network latency statistics])
6879 AC_PLUGIN([postgresql],          [$with_libpq],               [PostgreSQL database statistics])
6880 AC_PLUGIN([powerdns],            [yes],                       [PowerDNS statistics])
6881 AC_PLUGIN([processes],           [$plugin_processes],         [Process statistics])
6882 AC_PLUGIN([protocols],           [$plugin_protocols],         [Protocol (IP, TCP, ...) statistics])
6883 AC_PLUGIN([python],              [$plugin_python],            [Embed a Python interpreter])
6884 AC_PLUGIN([redis],               [$with_libhiredis],          [Redis plugin])
6885 AC_PLUGIN([routeros],            [$with_librouteros],         [RouterOS plugin])
6886 AC_PLUGIN([rrdcached],           [$librrd_rrdc_update],       [RRDTool output plugin])
6887 AC_PLUGIN([rrdtool],             [$with_librrd],              [RRDTool output plugin])
6888 AC_PLUGIN([sensors],             [$with_libsensors],          [lm_sensors statistics])
6889 AC_PLUGIN([serial],              [$plugin_serial],            [serial port traffic])
6890 AC_PLUGIN([sigrok],              [$with_libsigrok],           [sigrok acquisition sources])
6891 AC_PLUGIN([smart],               [$plugin_smart],             [SMART statistics])
6892 AC_PLUGIN([snmp],                [$with_libnetsnmp],          [SNMP querying plugin])
6893 AC_PLUGIN([snmp_agent],          [$with_libnetsnmpagent],     [SNMP agent plugin])
6894 AC_PLUGIN([statsd],              [yes],                       [StatsD plugin])
6895 AC_PLUGIN([swap],                [$plugin_swap],              [Swap usage statistics])
6896 AC_PLUGIN([synproxy],            [$plugin_synproxy],          [Synproxy stats plugin])
6897 AC_PLUGIN([syslog],              [$have_syslog],              [Syslog logging plugin])
6898 AC_PLUGIN([table],               [yes],                       [Parsing of tabular data])
6899 AC_PLUGIN([tail],                [yes],                       [Parsing of logfiles])
6900 AC_PLUGIN([tail_csv],            [yes],                       [Parsing of CSV files])
6901 AC_PLUGIN([tape],                [$plugin_tape],              [Tape drive statistics])
6902 AC_PLUGIN([target_notification], [yes],                       [The notification target])
6903 AC_PLUGIN([target_replace],      [yes],                       [The replace target])
6904 AC_PLUGIN([target_scale],        [yes],                       [The scale target])
6905 AC_PLUGIN([target_set],          [yes],                       [The set target])
6906 AC_PLUGIN([target_v5upgrade],    [yes],                       [The v5upgrade target])
6907 AC_PLUGIN([tcpconns],            [$plugin_tcpconns],          [TCP connection statistics])
6908 AC_PLUGIN([teamspeak2],          [yes],                       [TeamSpeak2 server statistics])
6909 AC_PLUGIN([ted],                 [$plugin_ted],               [Read The Energy Detective values])
6910 AC_PLUGIN([thermal],             [$plugin_thermal],           [Linux ACPI thermal zone statistics])
6911 AC_PLUGIN([threshold],           [yes],                       [Threshold checking plugin])
6912 AC_PLUGIN([tokyotyrant],         [$with_libtokyotyrant],      [TokyoTyrant database statistics])
6913 AC_PLUGIN([turbostat],           [$plugin_turbostat],         [Advanced statistic on Intel cpu states])
6914 AC_PLUGIN([unixsock],            [yes],                       [Unixsock communication plugin])
6915 AC_PLUGIN([uptime],              [$plugin_uptime],            [Uptime statistics])
6916 AC_PLUGIN([users],               [$plugin_users],             [User statistics])
6917 AC_PLUGIN([uuid],                [yes],                       [UUID as hostname plugin])
6918 AC_PLUGIN([varnish],             [$with_libvarnish],          [Varnish cache statistics])
6919 AC_PLUGIN([virt],                [$plugin_virt],              [Virtual machine statistics])
6920 AC_PLUGIN([vmem],                [$plugin_vmem],              [Virtual memory statistics])
6921 AC_PLUGIN([vserver],             [$plugin_vserver],           [Linux VServer statistics])
6922 AC_PLUGIN([wireless],            [$plugin_wireless],          [Wireless statistics])
6923 AC_PLUGIN([write_graphite],      [yes],                       [Graphite / Carbon output plugin])
6924 AC_PLUGIN([write_http],          [$with_libcurl],             [HTTP output plugin])
6925 AC_PLUGIN([write_kafka],         [$with_librdkafka],          [Kafka output plugin])
6926 AC_PLUGIN([write_log],           [yes],                       [Log output plugin])
6927 AC_PLUGIN([write_mongodb],       [$with_libmongoc],           [MongoDB output plugin])
6928 AC_PLUGIN([write_prometheus],    [$plugin_write_prometheus],  [Prometheus write plugin])
6929 AC_PLUGIN([write_redis],         [$with_libhiredis],          [Redis output plugin])
6930 AC_PLUGIN([write_riemann],       [$with_libriemann_client],   [Riemann output plugin])
6931 AC_PLUGIN([write_sensu],         [yes],                       [Sensu output plugin])
6932 AC_PLUGIN([write_stackdriver],   [$plugin_write_stackdriver], [Google Stackdriver Monitoring output plugin])
6933 AC_PLUGIN([write_syslog],        [yes],                       [Syslog output plugin])
6934 AC_PLUGIN([write_tsdb],          [yes],                       [TSDB output plugin])
6935 AC_PLUGIN([xencpu],              [$plugin_xencpu],            [Xen Host CPU usage])
6936 AC_PLUGIN([xmms],                [$with_libxmms],             [XMMS statistics])
6937 AC_PLUGIN([zfs_arc],             [$plugin_zfs_arc],           [ZFS ARC statistics])
6938 AC_PLUGIN([zone],                [$plugin_zone],              [Solaris container statistics])
6939 AC_PLUGIN([zookeeper],           [yes],                       [Zookeeper statistics])
6940
6941 dnl Default configuration file
6942 # Load either syslog or logfile
6943 LOAD_PLUGIN_SYSLOG=""
6944 LOAD_PLUGIN_LOGFILE=""
6945 LOAD_PLUGIN_LOG_LOGSTASH=""
6946
6947 AC_MSG_CHECKING([which default log plugin to load])
6948 default_log_plugin="none"
6949 if test "x$enable_syslog" = "xyes"; then
6950   default_log_plugin="syslog"
6951 else
6952   LOAD_PLUGIN_SYSLOG="##"
6953 fi
6954
6955 if test "x$enable_logfile" = "xyes"; then
6956   if test "x$default_log_plugin" = "xnone"; then
6957     default_log_plugin="logfile"
6958   else
6959     LOAD_PLUGIN_LOGFILE="#"
6960   fi
6961 else
6962   LOAD_PLUGIN_LOGFILE="##"
6963 fi
6964
6965 if test "x$enable_log_logstash" = "xyes"; then
6966   LOAD_PLUGIN_LOG_LOGSTASH="#"
6967 else
6968   LOAD_PLUGIN_LOG_LOGSTASH="##"
6969 fi
6970
6971 AC_MSG_RESULT([$default_log_plugin])
6972
6973 AC_SUBST([LOAD_PLUGIN_SYSLOG])
6974 AC_SUBST([LOAD_PLUGIN_LOGFILE])
6975 AC_SUBST([LOAD_PLUGIN_LOG_LOGSTASH])
6976
6977 if test "x$enable_debug" = "xyes"; then
6978   DEFAULT_LOG_LEVEL="debug"
6979 else
6980   DEFAULT_LOG_LEVEL="info"
6981 fi
6982 AC_SUBST([DEFAULT_LOG_LEVEL])
6983
6984 # Load only one of rrdtool, network, csv in the default config.
6985 LOAD_PLUGIN_RRDTOOL=""
6986 LOAD_PLUGIN_NETWORK=""
6987 LOAD_PLUGIN_CSV=""
6988
6989 AC_MSG_CHECKING([which default write plugin to load])
6990 default_write_plugin="none"
6991 if test "x$enable_rrdtool" = "xyes"; then
6992   default_write_plugin="rrdtool"
6993 else
6994   LOAD_PLUGIN_RRDTOOL="##"
6995 fi
6996
6997 if test "x$enable_network" = "xyes"; then
6998   if test "x$default_write_plugin" = "xnone"; then
6999     default_write_plugin="network"
7000   else
7001     LOAD_PLUGIN_NETWORK="#"
7002   fi
7003 else
7004   LOAD_PLUGIN_NETWORK="##"
7005 fi
7006
7007 if test "x$enable_csv" = "xyes"; then
7008   if test "x$default_write_plugin" = "xnone"; then
7009     default_write_plugin="csv"
7010   else
7011     LOAD_PLUGIN_CSV="#"
7012   fi
7013 else
7014   LOAD_PLUGIN_CSV="##"
7015 fi
7016 AC_MSG_RESULT([$default_write_plugin])
7017
7018 AC_SUBST([LOAD_PLUGIN_RRDTOOL])
7019 AC_SUBST([LOAD_PLUGIN_NETWORK])
7020 AC_SUBST([LOAD_PLUGIN_CSV])
7021
7022 dnl Perl bindings
7023 PERL_BINDINGS_OPTIONS="PREFIX=${prefix}"
7024 AC_ARG_WITH(perl-bindings, [AS_HELP_STRING([--with-perl-bindings@<:@=OPTIONS@:>@], [Options passed to "perl Makefile.PL".])],
7025 [
7026   if test "x$withval" != "xno" && test "x$withval" != "xyes"; then
7027     PERL_BINDINGS_OPTIONS="$withval"
7028     with_perl_bindings="yes"
7029   else
7030     with_perl_bindings="$withval"
7031   fi
7032 ],
7033 [
7034   if test "x$PERL" != "x"; then
7035     with_perl_bindings="yes"
7036   else
7037     with_perl_bindings="no (no perl interpreter found)"
7038   fi
7039 ])
7040
7041 if test "x$with_perl_bindings" = "xyes"; then
7042   AC_MSG_CHECKING([for the ExtUtils::MakeMaker module])
7043   if $PERL -MExtUtils::MakeMaker -e '' 2>/dev/null; then
7044     AC_MSG_RESULT([yes])
7045   else
7046     AC_MSG_RESULT([no])
7047     with_perl_bindings="no (ExtUtils::MakeMaker not found)"
7048   fi
7049 fi
7050
7051 if test "x$with_perl_bindings" = "xyes"; then
7052   PERL_BINDINGS="perl"
7053 else
7054   PERL_BINDINGS=""
7055 fi
7056
7057 AC_SUBST([PERL_BINDINGS])
7058 AC_SUBST([PERL_BINDINGS_OPTIONS])
7059
7060 dnl libcollectdclient
7061 LCC_VERSION_MAJOR=`echo $PACKAGE_VERSION | cut -d'.' -f1`
7062 LCC_VERSION_MINOR=`echo $PACKAGE_VERSION | cut -d'.' -f2`
7063 LCC_VERSION_PATCH=`echo $PACKAGE_VERSION | cut -d'.' -f3`
7064
7065 LCC_VERSION_EXTRA=`echo $PACKAGE_VERSION | cut -d'.' -f4-`
7066
7067 LCC_VERSION_STRING="$LCC_VERSION_MAJOR.$LCC_VERSION_MINOR.$LCC_VERSION_PATCH"
7068
7069 AC_SUBST([LCC_VERSION_MAJOR])
7070 AC_SUBST([LCC_VERSION_MINOR])
7071 AC_SUBST([LCC_VERSION_PATCH])
7072 AC_SUBST([LCC_VERSION_EXTRA])
7073 AC_SUBST([LCC_VERSION_STRING])
7074
7075 AC_CONFIG_FILES([src/libcollectdclient/collectd/lcc_features.h])
7076
7077 if test "x$GCC" = "xyes"; then
7078   AM_CFLAGS="-Wall"
7079   AM_CXXFLAGS="-Wall"
7080   if test "x$enable_werror" != "xno"; then
7081     AM_CFLAGS="$AM_CFLAGS -Werror"
7082     AM_CXXFLAGS="$AM_CXXFLAGS -Werror"
7083   fi
7084 fi
7085
7086 AC_SUBST([AM_CFLAGS])
7087 AC_SUBST([AM_CXXFLAGS])
7088
7089 AC_CONFIG_FILES([ \
7090   Makefile \
7091   src/collectd.conf \
7092   src/libcollectdclient/libcollectdclient.pc \
7093 ])
7094
7095 AC_OUTPUT
7096
7097 if test "x$with_librrd" = "xyes" && test "x$librrd_threadsafe" != "xyes"; then
7098   with_librrd="yes (warning: librrd is not thread-safe)"
7099 fi
7100
7101 if test "x$with_libperl" = "xyes"; then
7102   with_libperl="yes (version `$PERL -MConfig -e 'print $Config{version};'`)"
7103 else
7104   enable_perl="no (needs libperl)"
7105 fi
7106
7107 if test "x$enable_perl" = "xno" && test "x$c_cv_have_perl_ithreads" = "xno"; then
7108   enable_perl="no (libperl doesn't support ithreads)"
7109 fi
7110
7111 if test "x$with_perl_bindings" = "xyes" && test "x$PERL_BINDINGS_OPTIONS" != "x"; then
7112   with_perl_bindings="yes ($PERL_BINDINGS_OPTIONS)"
7113 fi
7114
7115 AC_MSG_RESULT()
7116 AC_MSG_RESULT([Configuration:])
7117 AC_MSG_RESULT([  Build:])
7118 AC_MSG_RESULT([    Platform  . . . . . . $ac_system])
7119 AC_MSG_RESULT([    Compiler vendor . . . $ax_cv_c_compiler_vendor])
7120 AC_MSG_RESULT([    CC  . . . . . . . . . $CC])
7121 AC_MSG_RESULT([    CFLAGS  . . . . . . . $AM_CFLAGS $CFLAGS])
7122 AC_MSG_RESULT([    CXXFLAGS  . . . . . . $AM_CXXFLAGS $CXXFLAGS])
7123 AC_MSG_RESULT([    CPP . . . . . . . . . $CPP])
7124 AC_MSG_RESULT([    CPPFLAGS  . . . . . . $CPPFLAGS])
7125 AC_MSG_RESULT([    GRPC_CPP_PLUGIN . . . $GRPC_CPP_PLUGIN])
7126 AC_MSG_RESULT([    LD  . . . . . . . . . $LD])
7127 AC_MSG_RESULT([    LDFLAGS . . . . . . . $LDFLAGS])
7128 AC_MSG_RESULT([    PROTOC  . . . . . . . $PROTOC])
7129 AC_MSG_RESULT([    YACC  . . . . . . . . $YACC])
7130 AC_MSG_RESULT([    YFLAGS  . . . . . . . $YFLAGS])
7131 AC_MSG_RESULT()
7132 AC_MSG_RESULT([  Libraries:])
7133 AC_MSG_RESULT([    intel mic . . . . . . $with_mic])
7134 AC_MSG_RESULT([    libaquaero5 . . . . . $with_libaquaero5])
7135 AC_MSG_RESULT([    libatasmart . . . . . $with_libatasmart])
7136 AC_MSG_RESULT([    libcurl . . . . . . . $with_libcurl])
7137 AC_MSG_RESULT([    libdbi  . . . . . . . $with_libdbi])
7138 AC_MSG_RESULT([    libdpdk . . . . . . . $with_libdpdk])
7139 AC_MSG_RESULT([    libesmtp  . . . . . . $with_libesmtp])
7140 AC_MSG_RESULT([    libganglia  . . . . . $with_libganglia])
7141 AC_MSG_RESULT([    libgcrypt . . . . . . $with_libgcrypt])
7142 AC_MSG_RESULT([    libgps  . . . . . . . $with_libgps])
7143 AC_MSG_RESULT([    libgrpc++ . . . . . . $with_libgrpcpp])
7144 AC_MSG_RESULT([    libhiredis  . . . . . $with_libhiredis])
7145 AC_MSG_RESULT([    libi2c-dev  . . . . . $with_libi2c])
7146 AC_MSG_RESULT([    libiokit  . . . . . . $with_libiokit])
7147 AC_MSG_RESULT([    libiptc . . . . . . . $with_libiptc])
7148 AC_MSG_RESULT([    libjevents  . . . . . $with_libjevents])
7149 AC_MSG_RESULT([    libjvm  . . . . . . . $with_java])
7150 AC_MSG_RESULT([    libkstat  . . . . . . $with_kstat])
7151 AC_MSG_RESULT([    libkvm  . . . . . . . $with_libkvm])
7152 AC_MSG_RESULT([    libldap . . . . . . . $with_libldap])
7153 AC_MSG_RESULT([    liblua  . . . . . . . $with_liblua])
7154 AC_MSG_RESULT([    liblvm2app  . . . . . $with_liblvm2app])
7155 AC_MSG_RESULT([    libmemcached  . . . . $with_libmemcached])
7156 AC_MSG_RESULT([    libmicrohttpd . . . . $with_libmicrohttpd])
7157 AC_MSG_RESULT([    libmnl  . . . . . . . $with_libmnl])
7158 AC_MSG_RESULT([    libmodbus . . . . . . $with_libmodbus])
7159 AC_MSG_RESULT([    libmongoc . . . . . . $with_libmongoc])
7160 AC_MSG_RESULT([    libmosquitto  . . . . $with_libmosquitto])
7161 AC_MSG_RESULT([    libmysql  . . . . . . $with_libmysql])
7162 AC_MSG_RESULT([    libnetapp . . . . . . $with_libnetapp])
7163 AC_MSG_RESULT([    libnetsnmp  . . . . . $with_libnetsnmp])
7164 AC_MSG_RESULT([    libnetsnmpagent . . . $with_libnetsnmpagent])
7165 AC_MSG_RESULT([    libnotify . . . . . . $with_libnotify])
7166 AC_MSG_RESULT([    libnvidia-ml  . . . . $with_cuda])
7167 AC_MSG_RESULT([    libopenipmi . . . . . $with_libopenipmipthread])
7168 AC_MSG_RESULT([    liboping  . . . . . . $with_liboping])
7169 AC_MSG_RESULT([    libowcapi . . . . . . $with_libowcapi])
7170 AC_MSG_RESULT([    libpcap . . . . . . . $with_libpcap])
7171 AC_MSG_RESULT([    libperfstat . . . . . $with_perfstat])
7172 AC_MSG_RESULT([    libperl . . . . . . . $with_libperl])
7173 AC_MSG_RESULT([    libpq . . . . . . . . $with_libpq])
7174 AC_MSG_RESULT([    libpqos . . . . . . . $with_libpqos])
7175 AC_MSG_RESULT([    libprotobuf . . . . . $with_libprotobuf])
7176 AC_MSG_RESULT([    libprotobuf-c . . . . $with_libprotobuf_c])
7177 AC_MSG_RESULT([    libpython . . . . . . $with_libpython])
7178 AC_MSG_RESULT([    libqpid-proton .  . . $with_libqpid_proton])
7179 AC_MSG_RESULT([    librabbitmq . . . . . $with_librabbitmq])
7180 AC_MSG_RESULT([    libriemann-client . . $with_libriemann_client])
7181 AC_MSG_RESULT([    librdkafka  . . . . . $with_librdkafka])
7182 AC_MSG_RESULT([    librouteros . . . . . $with_librouteros])
7183 AC_MSG_RESULT([    librrd  . . . . . . . $with_librrd])
7184 AC_MSG_RESULT([    libsensors  . . . . . $with_libsensors])
7185 AC_MSG_RESULT([    libsigrok   . . . . . $with_libsigrok])
7186 AC_MSG_RESULT([    libssl  . . . . . . . $with_libssl])
7187 AC_MSG_RESULT([    libstatgrab . . . . . $with_libstatgrab])
7188 AC_MSG_RESULT([    libtokyotyrant  . . . $with_libtokyotyrant])
7189 AC_MSG_RESULT([    libudev . . . . . . . $with_libudev])
7190 AC_MSG_RESULT([    libupsclient  . . . . $with_libupsclient])
7191 AC_MSG_RESULT([    libvarnish  . . . . . $with_libvarnish])
7192 AC_MSG_RESULT([    libvirt . . . . . . . $with_libvirt])
7193 AC_MSG_RESULT([    libxenctrl  . . . . . $with_libxenctrl])
7194 AC_MSG_RESULT([    libxml2 . . . . . . . $with_libxml2])
7195 AC_MSG_RESULT([    libxmms . . . . . . . $with_libxmms])
7196 AC_MSG_RESULT([    libyajl . . . . . . . $with_libyajl])
7197 AC_MSG_RESULT([    oracle  . . . . . . . $with_oracle])
7198 AC_MSG_RESULT([    protobuf-c  . . . . . $have_protoc_c])
7199 AC_MSG_RESULT([    protoc 3  . . . . . . $have_protoc3])
7200 AC_MSG_RESULT()
7201 AC_MSG_RESULT([  Features:])
7202 AC_MSG_RESULT([    daemon mode . . . . . $enable_daemon])
7203 AC_MSG_RESULT([    debug . . . . . . . . $enable_debug])
7204 AC_MSG_RESULT()
7205 AC_MSG_RESULT([  Bindings:])
7206 AC_MSG_RESULT([    perl  . . . . . . . . $with_perl_bindings])
7207 AC_MSG_RESULT()
7208 AC_MSG_RESULT([  Modules:])
7209 AC_MSG_RESULT([    aggregation . . . . . $enable_aggregation])
7210 AC_MSG_RESULT([    amqp    . . . . . . . $enable_amqp])
7211 AC_MSG_RESULT([    amqp1   . . . . . . . $enable_amqp1])
7212 AC_MSG_RESULT([    apache  . . . . . . . $enable_apache])
7213 AC_MSG_RESULT([    apcups  . . . . . . . $enable_apcups])
7214 AC_MSG_RESULT([    apple_sensors . . . . $enable_apple_sensors])
7215 AC_MSG_RESULT([    aquaero . . . . . . . $enable_aquaero])
7216 AC_MSG_RESULT([    ascent  . . . . . . . $enable_ascent])
7217 AC_MSG_RESULT([    barometer . . . . . . $enable_barometer])
7218 AC_MSG_RESULT([    battery . . . . . . . $enable_battery])
7219 AC_MSG_RESULT([    bind  . . . . . . . . $enable_bind])
7220 AC_MSG_RESULT([    ceph  . . . . . . . . $enable_ceph])
7221 AC_MSG_RESULT([    cgroups . . . . . . . $enable_cgroups])
7222 AC_MSG_RESULT([    chrony. . . . . . . . $enable_chrony])
7223 AC_MSG_RESULT([    conntrack . . . . . . $enable_conntrack])
7224 AC_MSG_RESULT([    contextswitch . . . . $enable_contextswitch])
7225 AC_MSG_RESULT([    cpu . . . . . . . . . $enable_cpu])
7226 AC_MSG_RESULT([    cpufreq . . . . . . . $enable_cpufreq])
7227 AC_MSG_RESULT([    cpusleep  . . . . . . $enable_cpusleep])
7228 AC_MSG_RESULT([    csv . . . . . . . . . $enable_csv])
7229 AC_MSG_RESULT([    curl  . . . . . . . . $enable_curl])
7230 AC_MSG_RESULT([    curl_json . . . . . . $enable_curl_json])
7231 AC_MSG_RESULT([    curl_xml  . . . . . . $enable_curl_xml])
7232 AC_MSG_RESULT([    dbi . . . . . . . . . $enable_dbi])
7233 AC_MSG_RESULT([    df  . . . . . . . . . $enable_df])
7234 AC_MSG_RESULT([    disk  . . . . . . . . $enable_disk])
7235 AC_MSG_RESULT([    dns . . . . . . . . . $enable_dns])
7236 AC_MSG_RESULT([    dpdkevents. . . . . . $enable_dpdkevents])
7237 AC_MSG_RESULT([    dpdkstat  . . . . . . $enable_dpdkstat])
7238 AC_MSG_RESULT([    drbd  . . . . . . . . $enable_drbd])
7239 AC_MSG_RESULT([    email . . . . . . . . $enable_email])
7240 AC_MSG_RESULT([    entropy . . . . . . . $enable_entropy])
7241 AC_MSG_RESULT([    ethstat . . . . . . . $enable_ethstat])
7242 AC_MSG_RESULT([    exec  . . . . . . . . $enable_exec])
7243 AC_MSG_RESULT([    fhcount . . . . . . . $enable_fhcount])
7244 AC_MSG_RESULT([    filecount . . . . . . $enable_filecount])
7245 AC_MSG_RESULT([    fscache . . . . . . . $enable_fscache])
7246 AC_MSG_RESULT([    gmond . . . . . . . . $enable_gmond])
7247 AC_MSG_RESULT([    gps . . . . . . . . . $enable_gps])
7248 AC_MSG_RESULT([    gpu_nvidia  . . . . . $enable_gpu_nvidia])
7249 AC_MSG_RESULT([    grpc  . . . . . . . . $enable_grpc])
7250 AC_MSG_RESULT([    hddtemp . . . . . . . $enable_hddtemp])
7251 AC_MSG_RESULT([    hugepages . . . . . . $enable_hugepages])
7252 AC_MSG_RESULT([    intel_pmu . . . . . . $enable_intel_pmu])
7253 AC_MSG_RESULT([    intel_rdt . . . . . . $enable_intel_rdt])
7254 AC_MSG_RESULT([    interface . . . . . . $enable_interface])
7255 AC_MSG_RESULT([    ipc . . . . . . . . . $enable_ipc])
7256 AC_MSG_RESULT([    ipmi  . . . . . . . . $enable_ipmi])
7257 AC_MSG_RESULT([    iptables  . . . . . . $enable_iptables])
7258 AC_MSG_RESULT([    ipvs  . . . . . . . . $enable_ipvs])
7259 AC_MSG_RESULT([    irq . . . . . . . . . $enable_irq])
7260 AC_MSG_RESULT([    java  . . . . . . . . $enable_java])
7261 AC_MSG_RESULT([    load  . . . . . . . . $enable_load])
7262 AC_MSG_RESULT([    logfile . . . . . . . $enable_logfile])
7263 AC_MSG_RESULT([    log_logstash  . . . . $enable_log_logstash])
7264 AC_MSG_RESULT([    lpar  . . . . . . . . $enable_lpar])
7265 AC_MSG_RESULT([    lua . . . . . . . . . $enable_lua])
7266 AC_MSG_RESULT([    lvm . . . . . . . . . $enable_lvm])
7267 AC_MSG_RESULT([    madwifi . . . . . . . $enable_madwifi])
7268 AC_MSG_RESULT([    match_empty_counter . $enable_match_empty_counter])
7269 AC_MSG_RESULT([    match_hashed  . . . . $enable_match_hashed])
7270 AC_MSG_RESULT([    match_regex . . . . . $enable_match_regex])
7271 AC_MSG_RESULT([    match_timediff  . . . $enable_match_timediff])
7272 AC_MSG_RESULT([    match_value . . . . . $enable_match_value])
7273 AC_MSG_RESULT([    mbmon . . . . . . . . $enable_mbmon])
7274 AC_MSG_RESULT([    mcelog  . . . . . . . $enable_mcelog])
7275 AC_MSG_RESULT([    md  . . . . . . . . . $enable_md])
7276 AC_MSG_RESULT([    memcachec . . . . . . $enable_memcachec])
7277 AC_MSG_RESULT([    memcached . . . . . . $enable_memcached])
7278 AC_MSG_RESULT([    memory  . . . . . . . $enable_memory])
7279 AC_MSG_RESULT([    mic . . . . . . . . . $enable_mic])
7280 AC_MSG_RESULT([    modbus  . . . . . . . $enable_modbus])
7281 AC_MSG_RESULT([    mqtt  . . . . . . . . $enable_mqtt])
7282 AC_MSG_RESULT([    multimeter  . . . . . $enable_multimeter])
7283 AC_MSG_RESULT([    mysql . . . . . . . . $enable_mysql])
7284 AC_MSG_RESULT([    netapp  . . . . . . . $enable_netapp])
7285 AC_MSG_RESULT([    netlink . . . . . . . $enable_netlink])
7286 AC_MSG_RESULT([    network . . . . . . . $enable_network])
7287 AC_MSG_RESULT([    nfs . . . . . . . . . $enable_nfs])
7288 AC_MSG_RESULT([    nginx . . . . . . . . $enable_nginx])
7289 AC_MSG_RESULT([    notify_desktop  . . . $enable_notify_desktop])
7290 AC_MSG_RESULT([    notify_email  . . . . $enable_notify_email])
7291 AC_MSG_RESULT([    notify_nagios . . . . $enable_notify_nagios])
7292 AC_MSG_RESULT([    ntpd  . . . . . . . . $enable_ntpd])
7293 AC_MSG_RESULT([    numa  . . . . . . . . $enable_numa])
7294 AC_MSG_RESULT([    nut . . . . . . . . . $enable_nut])
7295 AC_MSG_RESULT([    olsrd . . . . . . . . $enable_olsrd])
7296 AC_MSG_RESULT([    onewire . . . . . . . $enable_onewire])
7297 AC_MSG_RESULT([    openldap  . . . . . . $enable_openldap])
7298 AC_MSG_RESULT([    openvpn . . . . . . . $enable_openvpn])
7299 AC_MSG_RESULT([    oracle  . . . . . . . $enable_oracle])
7300 AC_MSG_RESULT([    ovs_events  . . . . . $enable_ovs_events])
7301 AC_MSG_RESULT([    ovs_stats . . . . . . $enable_ovs_stats])
7302 AC_MSG_RESULT([    pcie_errors . . . . . $enable_pcie_errors])
7303 AC_MSG_RESULT([    perl  . . . . . . . . $enable_perl])
7304 AC_MSG_RESULT([    pf  . . . . . . . . . $enable_pf])
7305 AC_MSG_RESULT([    pinba . . . . . . . . $enable_pinba])
7306 AC_MSG_RESULT([    ping  . . . . . . . . $enable_ping])
7307 AC_MSG_RESULT([    postgresql  . . . . . $enable_postgresql])
7308 AC_MSG_RESULT([    powerdns  . . . . . . $enable_powerdns])
7309 AC_MSG_RESULT([    processes . . . . . . $enable_processes])
7310 AC_MSG_RESULT([    protocols . . . . . . $enable_protocols])
7311 AC_MSG_RESULT([    python  . . . . . . . $enable_python])
7312 AC_MSG_RESULT([    redis . . . . . . . . $enable_redis])
7313 AC_MSG_RESULT([    routeros  . . . . . . $enable_routeros])
7314 AC_MSG_RESULT([    rrdcached . . . . . . $enable_rrdcached])
7315 AC_MSG_RESULT([    rrdtool . . . . . . . $enable_rrdtool])
7316 AC_MSG_RESULT([    sensors . . . . . . . $enable_sensors])
7317 AC_MSG_RESULT([    serial  . . . . . . . $enable_serial])
7318 AC_MSG_RESULT([    sigrok  . . . . . . . $enable_sigrok])
7319 AC_MSG_RESULT([    smart . . . . . . . . $enable_smart])
7320 AC_MSG_RESULT([    snmp  . . . . . . . . $enable_snmp])
7321 AC_MSG_RESULT([    snmp_agent  . . . . . $enable_snmp_agent])
7322 AC_MSG_RESULT([    statsd  . . . . . . . $enable_statsd])
7323 AC_MSG_RESULT([    swap  . . . . . . . . $enable_swap])
7324 AC_MSG_RESULT([    synproxy  . . . . . . $enable_synproxy])
7325 AC_MSG_RESULT([    syslog  . . . . . . . $enable_syslog])
7326 AC_MSG_RESULT([    table . . . . . . . . $enable_table])
7327 AC_MSG_RESULT([    tail_csv  . . . . . . $enable_tail_csv])
7328 AC_MSG_RESULT([    tail  . . . . . . . . $enable_tail])
7329 AC_MSG_RESULT([    tape  . . . . . . . . $enable_tape])
7330 AC_MSG_RESULT([    target_notification . $enable_target_notification])
7331 AC_MSG_RESULT([    target_replace  . . . $enable_target_replace])
7332 AC_MSG_RESULT([    target_scale  . . . . $enable_target_scale])
7333 AC_MSG_RESULT([    target_set  . . . . . $enable_target_set])
7334 AC_MSG_RESULT([    target_v5upgrade  . . $enable_target_v5upgrade])
7335 AC_MSG_RESULT([    tcpconns  . . . . . . $enable_tcpconns])
7336 AC_MSG_RESULT([    teamspeak2  . . . . . $enable_teamspeak2])
7337 AC_MSG_RESULT([    ted . . . . . . . . . $enable_ted])
7338 AC_MSG_RESULT([    thermal . . . . . . . $enable_thermal])
7339 AC_MSG_RESULT([    threshold . . . . . . $enable_threshold])
7340 AC_MSG_RESULT([    tokyotyrant . . . . . $enable_tokyotyrant])
7341 AC_MSG_RESULT([    turbostat . . . . . . $enable_turbostat])
7342 AC_MSG_RESULT([    unixsock  . . . . . . $enable_unixsock])
7343 AC_MSG_RESULT([    uptime  . . . . . . . $enable_uptime])
7344 AC_MSG_RESULT([    users . . . . . . . . $enable_users])
7345 AC_MSG_RESULT([    uuid  . . . . . . . . $enable_uuid])
7346 AC_MSG_RESULT([    varnish . . . . . . . $enable_varnish])
7347 AC_MSG_RESULT([    virt  . . . . . . . . $enable_virt])
7348 AC_MSG_RESULT([    vmem  . . . . . . . . $enable_vmem])
7349 AC_MSG_RESULT([    vserver . . . . . . . $enable_vserver])
7350 AC_MSG_RESULT([    wireless  . . . . . . $enable_wireless])
7351 AC_MSG_RESULT([    write_graphite  . . . $enable_write_graphite])
7352 AC_MSG_RESULT([    write_http  . . . . . $enable_write_http])
7353 AC_MSG_RESULT([    write_kafka . . . . . $enable_write_kafka])
7354 AC_MSG_RESULT([    write_log . . . . . . $enable_write_log])
7355 AC_MSG_RESULT([    write_mongodb . . . . $enable_write_mongodb])
7356 AC_MSG_RESULT([    write_prometheus. . . $enable_write_prometheus])
7357 AC_MSG_RESULT([    write_redis . . . . . $enable_write_redis])
7358 AC_MSG_RESULT([    write_riemann . . . . $enable_write_riemann])
7359 AC_MSG_RESULT([    write_sensu . . . . . $enable_write_sensu])
7360 AC_MSG_RESULT([    write_stackdriver . . $enable_write_stackdriver])
7361 AC_MSG_RESULT([    write_syslog . .  . . $enable_write_syslog])
7362 AC_MSG_RESULT([    write_tsdb  . . . . . $enable_write_tsdb])
7363 AC_MSG_RESULT([    xencpu  . . . . . . . $enable_xencpu])
7364 AC_MSG_RESULT([    xmms  . . . . . . . . $enable_xmms])
7365 AC_MSG_RESULT([    zfs_arc . . . . . . . $enable_zfs_arc])
7366 AC_MSG_RESULT([    zone  . . . . . . . . $enable_zone])
7367 AC_MSG_RESULT([    zookeeper . . . . . . $enable_zookeeper])
7368 AC_MSG_RESULT()
7369
7370 if test "x$dependency_error" = "xyes"; then
7371   AC_MSG_ERROR("Some plugins are missing dependencies - see the summary above for details")
7372 fi
7373
7374 if test "x$dependency_warning" = "xyes"; then
7375   AC_MSG_WARN("Some plugins seem to have missing dependencies but have been enabled forcibly - see the summary above for details")
7376 fi
7377
7378 # vim: set fdm=marker sw=2 sts=2 ts=2 et :
7379