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