1dnl
2dnl Zabbix
3dnl Copyright (C) 2001-2021 Zabbix SIA
4dnl
5dnl This program is free software; you can redistribute it and/or modify
6dnl it under the terms of the GNU General Public License as published by
7dnl the Free Software Foundation; either version 2 of the License, or
8dnl (at your option) any later version.
9dnl
10dnl This program is distributed in the hope that it will be useful,
11dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
12dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13dnl GNU General Public License for more details.
14dnl
15dnl You should have received a copy of the GNU General Public License
16dnl along with this program; if not, write to the Free Software
17dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
18dnl
19
20dnl Process this file with autoconf to produce a configure script.
21
22AC_INIT([Zabbix],[5.4.9])
23AC_CONFIG_SRCDIR(src/zabbix_server/server.c)
24AM_INIT_AUTOMAKE([subdir-objects filename-length-max=99])
25
26AC_MSG_NOTICE([Configuring $PACKAGE_NAME $PACKAGE_VERSION])
27
28AC_PROG_MAKE_SET
29
30AM_CONFIG_HEADER(include/config.h)
31
32AC_CANONICAL_HOST
33
34dnl *****************************************************************
35dnl *                                                               *
36dnl *                     Checks for programs                       *
37dnl *                                                               *
38dnl *****************************************************************
39
40AC_PROG_CC([cc c99 gcc clang])
41AM_PROG_CC_C_O
42
43dnl *****************************************************************
44dnl *                                                               *
45dnl *                   Checks for header files                     *
46dnl *                                                               *
47dnl *****************************************************************
48
49AC_HEADER_STDC
50AC_CHECK_HEADERS(stdio.h stdlib.h string.h unistd.h netdb.h signal.h \
51  syslog.h time.h errno.h sys/types.h sys/stat.h netinet/in.h \
52  math.h sys/socket.h dirent.h ctype.h \
53  mtent.h fcntl.h sys/param.h arpa/inet.h \
54  sys/vfs.h sys/pstat.h sys/sysinfo.h sys/statvfs.h sys/statfs.h \
55  sys/socket.h sys/loadavg.h arpa/inet.h \
56  sys/vmmeter.h strings.h vm/vm_param.h \
57  sys/time.h kstat.h sys/syscall.h sys/sysmacros.h \
58  stdint.h mach/host_info.h mach/mach_host.h knlist.h pwd.h \
59  sys/var.h arpa/nameser.h assert.h sys/dkstat.h sys/disk.h sys/sched.h \
60  zone.h nlist.h kvm.h linux/kernel.h procinfo.h sys/dk.h \
61  sys/resource.h pthread.h windows.h process.h conio.h sys/wait.h \
62  stdarg.h winsock2.h pdh.h psapi.h sys/sem.h sys/ipc.h sys/shm.h Winldap.h \
63  Winber.h lber.h ws2tcpip.h inttypes.h sys/file.h grp.h \
64  execinfo.h sys/systemcfg.h sys/mnttab.h mntent.h sys/times.h \
65  dlfcn.h sys/utsname.h sys/un.h sys/protosw.h stddef.h limits.h float.h)
66AC_CHECK_HEADERS(resolv.h, [], [], [
67#ifdef HAVE_SYS_TYPES_H
68#  include <sys/types.h>
69#endif
70#ifdef HAVE_NETINET_IN_H
71#  include <netinet/in.h>
72#endif
73#ifdef HAVE_ARPA_NAMESER_H
74#  include <arpa/nameser.h>
75#endif
76#ifdef HAVE_NETDB_H
77#  include <netdb.h>
78#endif
79])
80AC_CHECK_HEADERS(net/if.h net/if_mib.h, [], [], [
81#include <stdio.h>
82#ifdef STDC_HEADERS
83#  include <stdlib.h>
84#  include <stddef.h>
85#else
86#  ifdef HAVE_STDLIB_H
87#    include <stdlib.h>
88#  endif
89#endif
90#ifdef HAVE_SYS_TYPES_H
91#  include <sys/types.h>
92#endif
93#ifdef HAVE_SYS_SOCKET_H
94#  include <sys/socket.h>
95#endif
96/* for net/if_mib.h */
97#ifdef HAVE_NET_IF_H
98#  include <net/if.h>
99#endif
100])
101
102AC_MSG_CHECKING(whether compiler supports -Werror=cpp)
103checked_werror_cpp_CFLAGS=""
104saved_CFLAGS="$CFLAGS"
105CFLAGS="$CFLAGS -Werror=cpp"
106AC_TRY_COMPILE(,[
107  void f() {};
108],checked_werror_cpp_CFLAGS="-Werror=cpp"
109  AC_MSG_RESULT(yes),
110  AC_MSG_RESULT(no)
111)
112CFLAGS="$saved_CFLAGS"
113
114saved_CFLAGS="$CFLAGS"
115CFLAGS="$checked_werror_cpp_CFLAGS $CFLAGS"
116AC_CHECK_HEADERS(sys/mount.h sys/proc.h sys/sysctl.h sys/user.h, [], [], [
117#ifdef HAVE_SYS_TYPES_H
118#  include <sys/types.h>
119#endif
120#ifdef HAVE_SYS_PARAM_H
121#  include <sys/param.h>
122#endif
123])
124CFLAGS="$saved_CFLAGS"
125
126AC_CHECK_HEADERS(sys/swap.h, [], [], [
127#ifdef HAVE_SYS_PARAM_H
128#  include <sys/param.h>
129#endif
130])
131AC_CHECK_HEADERS(sys/ucontext.h, [], [], [
132#ifdef HAVE_SIGNAL_H
133#  include <signal.h>
134#endif
135])
136AC_CHECK_HEADERS(devstat.h, [], [], [
137#ifdef HAVE_SYS_DKSTAT_H
138#  include <sys/dkstat.h>
139#endif
140])
141AC_CHECK_HEADERS(linux/netlink.h, [
142	AC_CHECK_HEADERS(linux/inet_diag.h, [
143		AC_DEFINE([HAVE_INET_DIAG], 1, [Define to 1 if you have NETLINK INET_DIAG support.])
144	])
145], [], [
146#ifdef HAVE_SYS_SOCKET_H
147#  include <sys/socket.h>
148#endif
149])
150AC_CHECK_HEADERS(libperfstat.h, [], [], [
151#ifdef HAVE_SYS_PROTOSW_H
152#  include <sys/protosw.h>
153#endif
154])
155
156dnl *****************************************************************
157dnl *                                                               *
158dnl *                     Checks for libraries                      *
159dnl *                                                               *
160dnl *****************************************************************
161
162AC_SEARCH_LIBS(socket, socket)
163AC_SEARCH_LIBS(kstat_open, kstat)
164AC_SEARCH_LIBS(gethostbyname, nsl)
165AC_SEARCH_LIBS(clock_gettime, rt)
166AC_SEARCH_LIBS(dlopen, dl)
167
168dnl AIX
169AC_SEARCH_LIBS(perfstat_memory_total, perfstat, [AC_DEFINE([HAVE_LIBPERFSTAT], 1, [Define to 1 if you have the 'libperfstat' library (-lperfstat)])])
170AC_SEARCH_LIBS(devstat_getdevs, devstat, [AC_DEFINE([HAVE_LIBDEVSTAT], 1, [Define to 1 if you have the 'libdevstat' library (-ldevstat)])])
171AC_SEARCH_LIBS(getdevs, devstat, [AC_DEFINE([HAVE_LIBDEVSTAT], 1, [Define to 1 if you have the 'libdevstat' library (-ldevstat)])])
172
173dnl on FreeBSD we have to link with -lexecinfo to get backtraces
174AC_SEARCH_LIBS(backtrace_symbols, execinfo, [AC_DEFINE([HAVE_LIBEXECINFO], 1, [Define to 1 if you have the 'libexecinfo' library (-lexecinfo)])])
175
176AC_CHECK_LIB(m, main)
177AC_CHECK_LIB(kvm, main)
178
179dnl check for DNS lookup functions
180found_resolv="no"
181LIBRESOLV_CHECK_CONFIG([no])
182if test "x$found_resolv" != "xyes"; then
183	AC_MSG_ERROR([Unable to do DNS lookups (libresolv check failed)])
184fi
185LIBS="${LIBS} ${RESOLV_LIBS}"
186
187dnl *****************************************************************
188dnl *                                                               *
189dnl *          Checks for type definitions and structures           *
190dnl *                                                               *
191dnl *****************************************************************
192
193dnl large file support
194largefile=yes
195
196dnl disable large file support on 32-bit Solaris as it's incompatible with procfs and swapctl
197case "${host_os}" in
198	solaris*)
199		largefile=no
200		;;
201esac
202
203if test "x$largefile" = "xyes"; then
204	AC_SYS_LARGEFILE
205fi
206
207AC_C_CONST
208AC_TYPE_PID_T
209
210AC_MSG_CHECKING(for socklen_t)
211AC_TRY_COMPILE([
212#include <sys/types.h>
213#include <unistd.h>
214#include <sys/socket.h>
215],[socklen_t s;],
216AC_MSG_RESULT(yes),
217[AC_DEFINE(socklen_t, int, [Define socklen_t type.])
218AC_MSG_RESULT(no)])
219
220AC_MSG_CHECKING(for actual socklen_t parameter type in socket functions)
221zbx_socklen_t=
222for arg2 in "struct sockaddr" void; do
223  for arg3 in socklen_t size_t int; do
224    AC_TRY_COMPILE([
225#ifdef HAVE_SYS_TYPES_H
226#  include <sys/types.h>
227#endif
228#ifdef HAVE_SYS_SOCKET_H
229#  include <sys/socket.h>
230#endif
231      extern int getpeername(int sockfd, $arg2 *addr, $arg3 *addrlen);
232    ],[
233      $arg3 addrlen;
234      getpeername(0, 0, &addrlen);
235    ],[
236      zbx_socklen_t="$arg3"
237      break 2
238    ])
239  done
240done
241if test "x$zbx_socklen_t" != "x"; then
242  AC_MSG_RESULT($zbx_socklen_t)
243  AC_DEFINE_UNQUOTED(ZBX_SOCKLEN_T, $zbx_socklen_t, [Define actual socklen_t parameter type in socket functions.])
244else
245  AC_MSG_RESULT(leaving undefined)
246fi
247
248AC_MSG_CHECKING(for integer field name in union sigval of struct siginfo_t)
249zbx_sival_int=
250for field in sival_int sigval_int; do
251  AC_TRY_COMPILE([
252#ifdef HAVE_SIGNAL_H
253#  include <signal.h>
254#endif
255  ],[
256    siginfo_t siginfo;
257    siginfo.si_value.$field = 0;
258  ],[
259    zbx_sival_int="$field"
260    break
261  ])
262done
263if test "x$zbx_sival_int" != "x"; then
264  AC_MSG_RESULT($zbx_sival_int)
265  AC_DEFINE_UNQUOTED(ZBX_SIVAL_INT, $zbx_sival_int, [Define integer field name in union 'sigval' of struct 'siginfo_t'])
266else
267  AC_MSG_ERROR(Unable to find integer field name in union sigval of struct siginfo_t)
268fi
269
270AC_MSG_CHECKING(for res_ninit)
271AC_TRY_LINK(
272[
273#ifdef HAVE_SYS_TYPES_H
274#	include <sys/types.h>
275#endif
276#ifdef HAVE_NETINET_IN_H
277#	include <netinet/in.h>
278#endif
279#ifdef HAVE_ARPA_NAMESER_H
280#	include <arpa/nameser.h>
281#endif
282#ifdef HAVE_RESOLV_H
283#	include <resolv.h>
284#endif
285#ifndef C_IN
286#	define C_IN	ns_c_in
287#endif	/* C_IN */
288#ifndef T_SOA
289#	define T_SOA	ns_t_soa
290#endif	/* T_SOA */
291],
292[
293	struct __res_state	res_state_local;
294
295	res_ninit(&res_state_local);
296],
297AC_DEFINE(HAVE_RES_NINIT,1,[Define to 1 if 'res_ninit' exists.])
298AC_MSG_RESULT(yes),
299AC_MSG_RESULT(no))
300
301AC_MSG_CHECKING(for res_ndestroy)
302AC_TRY_LINK(
303[
304#ifdef HAVE_SYS_TYPES_H
305#	include <sys/types.h>
306#endif
307#ifdef HAVE_NETINET_IN_H
308#	include <netinet/in.h>
309#endif
310#ifdef HAVE_ARPA_NAMESER_H
311#	include <arpa/nameser.h>
312#endif
313#ifdef HAVE_RESOLV_H
314#	include <resolv.h>
315#endif
316#ifndef C_IN
317#	define C_IN	ns_c_in
318#endif	/* C_IN */
319#ifndef T_SOA
320#	define T_SOA	ns_t_soa
321#endif	/* T_SOA */
322],
323[
324	struct __res_state	res_state_local;
325
326	res_ninit(&res_state_local);
327	res_ndestroy(&res_state_local);
328],
329AC_DEFINE(HAVE_RES_NDESTROY,1,[Define to 1 if 'res_ndestroy' exists.])
330AC_MSG_RESULT(yes),
331AC_MSG_RESULT(no))
332
333AC_MSG_CHECKING(for _res._u._ext.nsaddrs[])
334AC_TRY_LINK(
335[
336#ifdef HAVE_SYS_TYPES_H
337#	include <sys/types.h>
338#endif
339#ifdef HAVE_NETINET_IN_H
340#	include <netinet/in.h>
341#endif
342#ifdef HAVE_ARPA_NAMESER_H
343#	include <arpa/nameser.h>
344#endif
345#ifdef HAVE_RESOLV_H
346#	include <resolv.h>
347#endif
348#ifndef C_IN
349#	define C_IN	ns_c_in
350#endif	/* C_IN */
351#ifndef T_SOA
352#	define T_SOA	ns_t_soa
353#endif	/* T_SOA */
354],
355[
356	struct sockaddr_in6	*sockaddrin6;
357
358	sockaddrin6 = _res._u._ext.nsaddrs[0];
359],
360AC_DEFINE(HAVE_RES_U_EXT,1,[Define to 1 if '_res._u._ext.nsaddrs[]' exists. /Linux/])
361AC_MSG_RESULT(yes),
362AC_MSG_RESULT(no))
363
364AC_MSG_CHECKING(for _res._u._ext.ext)
365AC_TRY_LINK(
366[
367#ifdef HAVE_SYS_TYPES_H
368#	include <sys/types.h>
369#endif
370#ifdef HAVE_NETINET_IN_H
371#	include <netinet/in.h>
372#endif
373#ifdef HAVE_ARPA_NAMESER_H
374#	include <arpa/nameser.h>
375#endif
376#ifdef HAVE_RESOLV_H
377#	include <resolv.h>
378#endif
379#ifndef C_IN
380#	define C_IN	ns_c_in
381#endif	/* C_IN */
382#ifndef T_SOA
383#	define T_SOA	ns_t_soa
384#endif	/* T_SOA */
385],
386[
387	struct __res_state_ext	*ext;
388
389	ext = _res._u._ext.ext;
390],
391AC_DEFINE(HAVE_RES_U_EXT_EXT,1,[Define to 1 if '_res._u._ext.ext' exists. /BSD/])
392AC_MSG_RESULT(yes),
393AC_MSG_RESULT(no))
394
395AC_MSG_CHECKING(for _res._ext.ext.nsaddrs[])
396AC_TRY_LINK(
397[
398#ifdef HAVE_SYS_TYPES_H
399#	include <sys/types.h>
400#endif
401#ifdef HAVE_NETINET_IN_H
402#	include <netinet/in.h>
403#endif
404#ifdef HAVE_ARPA_NAMESER_H
405#	include <arpa/nameser.h>
406#endif
407#ifdef HAVE_RESOLV_H
408#	include <resolv.h>
409#endif
410#ifndef C_IN
411#	define C_IN	ns_c_in
412#endif	/* C_IN */
413#ifndef T_SOA
414#	define T_SOA	ns_t_soa
415#endif	/* T_SOA */
416],
417[
418	union res_sockaddr_union	*na;
419
420	na = &_res._ext.ext.nsaddrs[0];
421],
422AC_DEFINE(HAVE_RES_EXT_EXT,1,[Define to 1 if '_res._ext.ext.nsaddrs[]' exists. /AIX/])
423AC_MSG_RESULT(yes),
424AC_MSG_RESULT(no))
425
426AC_MSG_CHECKING(for struct sockaddr_in6.sin6_len)
427AC_TRY_LINK(
428[
429#ifdef HAVE_SYS_TYPES_H
430#	include <sys/types.h>
431#endif
432#ifdef HAVE_NETINET_IN_H
433#	include <netinet/in.h>
434#endif
435#ifdef HAVE_ARPA_NAMESER_H
436#	include <arpa/nameser.h>
437#endif
438#ifdef HAVE_RESOLV_H
439#	include <resolv.h>
440#endif
441#ifndef C_IN
442#	define C_IN	ns_c_in
443#endif	/* C_IN */
444#ifndef T_SOA
445#	define T_SOA	ns_t_soa
446#endif	/* T_SOA */
447],
448[
449	struct sockaddr_in6	sin6;
450	unsigned int		len;
451
452	len = sin6.sin6_len;
453],
454AC_DEFINE(HAVE_RES_SIN6_LEN,1,[Define to 1 if 'sockaddr_in6.sin6_len' exists. /BSD/])
455AC_MSG_RESULT(yes),
456AC_MSG_RESULT(no))
457
458AC_MSG_CHECKING(for union semun)
459AC_TRY_COMPILE(
460[
461#include <sys/types.h>
462#include <sys/ipc.h>
463#include <sys/sem.h>
464],
465[union semun foo;],
466AC_DEFINE(HAVE_SEMUN, 1, [Define to 1 if union 'semun' exists.])
467AC_MSG_RESULT(yes),
468AC_MSG_RESULT(no))
469
470AC_MSG_CHECKING(for struct swaptable in sys/swap.h)
471AC_TRY_COMPILE(
472[
473#include <stdlib.h>
474#include <sys/types.h>
475#include <sys/syscall.h>
476#include <sys/swap.h>
477
478#ifndef NULL
479#define NULL (void *)0
480#endif
481],
482[
483    register int cnt, i;
484    register int t, f;
485    struct swaptable *swt;
486    struct swapent *ste;
487    static char path[256];
488
489    /* get total number of swap entries */
490    cnt = swapctl(SC_GETNSWP, 0);
491
492    /* allocate enough space to hold count + n swapents */
493    swt = (struct swaptable *)malloc(sizeof(int) +
494             cnt * sizeof(struct swapent));
495    if (swt == NULL)
496    {
497  return;
498    }
499    swt->swt_n = cnt;
500
501    /* fill in ste_path pointers: we do not care about the paths, so we
502point
503       them all to the same buffer */
504    ste = &(swt->swt_ent[0]);
505    i = cnt;
506    while (--i >= 0)
507    {
508  ste++->ste_path = path;
509    }
510
511    /* grab all swap info */
512    swapctl(SC_LIST, swt);
513
514    /* walk through the structs and sum up the fields */
515    t = f = 0;
516    ste = &(swt->swt_ent[0]);
517    i = cnt;
518    while (--i >= 0)
519    {
520  /* do not count slots being deleted */
521  if (!(ste->ste_flags & ST_INDEL) &&
522      !(ste->ste_flags & ST_DOINGDEL))
523  {
524      t += ste->ste_pages;
525      f += ste->ste_free;
526  } ste++;
527    }
528
529    /* fill in the results */
530    free(swt);
531
532],
533AC_DEFINE(HAVE_SYS_SWAP_SWAPTABLE,1,[Define to 1 if struct 'swaptable' exists.])
534AC_MSG_RESULT(yes),
535AC_MSG_RESULT(no))
536
537AC_MSG_CHECKING(for struct sensordev in sys/sensors.h)
538AC_TRY_COMPILE([
539#include <stdlib.h>
540#include <sys/queue.h>
541#include <sys/sensors.h>],
542[struct sensordev sensordev;
543sensordev.xname[0]='\0';
544sensordev.maxnumt[0]=0;
545],
546AC_DEFINE(HAVE_SENSORDEV,1,[Define to 1 if struct 'sensordev' exists.])
547AC_MSG_RESULT(yes),
548AC_MSG_RESULT(no))
549
550AC_MSG_CHECKING(for struct statvfs64 in sys/statvfs.h)
551AC_TRY_COMPILE(
552[
553#ifdef HAVE_SYS_TYPES_H
554#	include <sys/types.h>
555#endif
556#ifdef HAVE_SYS_STATVFS_H
557#	include <sys/statvfs.h>
558#endif
559],
560[
561	struct statvfs64	s;
562	s.f_frsize = s.f_blocks = s.f_bfree = s.f_bavail = 0;
563	statvfs64("/", &s);
564],
565AC_DEFINE(HAVE_SYS_STATVFS64, 1, [Define to 1 if struct 'statvfs64' exists.])
566AC_MSG_RESULT(yes),
567AC_MSG_RESULT(no))
568
569AC_MSG_CHECKING(for struct statfs64 in sys/statfs.h)
570AC_TRY_COMPILE(
571[
572#ifdef HAVE_SYS_TYPES_H
573#	include <sys/types.h>
574#endif
575#ifdef HAVE_SYS_STATFS_H
576#	include <sys/statfs.h>
577#endif
578],
579[
580	struct statfs64	s;
581	s.f_bsize = s.f_blocks = s.f_bfree = s.f_bavail = 0;
582	statfs64("/", &s);
583],
584AC_DEFINE(HAVE_SYS_STATFS64, 1, [Define to 1 if struct 'statfs64' exists.])
585AC_MSG_RESULT(yes),
586AC_MSG_RESULT(no))
587
588AC_MSG_CHECKING(for field ss_family in struct sockaddr_storage)
589AC_TRY_COMPILE([#include <sys/socket.h>],
590[struct sockaddr_storage ss;
591ss.ss_family = 0;
592],
593AC_DEFINE(HAVE_SOCKADDR_STORAGE_SS_FAMILY, 1, [Define to 1 if 'sockaddr_storage.ss_family' exists.])
594AC_MSG_RESULT(yes),
595AC_MSG_RESULT(no))
596
597AC_MSG_CHECKING(for field mem_unit in struct sysinfo)
598AC_TRY_COMPILE([#include <sys/sysinfo.h>],
599[struct sysinfo sysinfo;
600sysinfo.mem_unit=0;
601],
602AC_DEFINE(HAVE_SYSINFO_MEM_UNIT,1,[Define to 1 if 'sysinfo.mem_unit' exists.])
603AC_MSG_RESULT(yes),
604AC_MSG_RESULT(no))
605
606AC_MSG_CHECKING(for field freeswap in struct sysinfo)
607AC_TRY_COMPILE([#include <sys/sysinfo.h>],
608[struct sysinfo sysinfo;
609sysinfo.freeswap=0;
610],
611AC_DEFINE(HAVE_SYSINFO_FREESWAP,1,[Define to 1 if 'sysinfo.freeswap' exists.])
612AC_MSG_RESULT(yes),
613AC_MSG_RESULT(no))
614
615AC_MSG_CHECKING(for field totalswap in struct sysinfo)
616AC_TRY_COMPILE([#include <sys/sysinfo.h>],
617[struct sysinfo sysinfo;
618sysinfo.totalswap=0;
619],
620AC_DEFINE(HAVE_SYSINFO_TOTALSWAP,1,[Define to 1 if 'sysinfo.totalswap' exists.])
621AC_MSG_RESULT(yes),
622AC_MSG_RESULT(no))
623
624AC_MSG_CHECKING(for field totalram in struct sysinfo)
625AC_TRY_COMPILE([#include <sys/sysinfo.h>],
626[struct sysinfo sysinfo;
627sysinfo.totalram=0;
628],
629AC_DEFINE(HAVE_SYSINFO_TOTALRAM,1,[Define to 1 if 'sysinfo.totalram' exists.])
630AC_MSG_RESULT(yes),
631AC_MSG_RESULT(no))
632
633AC_MSG_CHECKING(for field sharedram in struct sysinfo)
634AC_TRY_COMPILE([#include <sys/sysinfo.h>],
635[struct sysinfo sysinfo;
636sysinfo.sharedram=0;
637],
638AC_DEFINE(HAVE_SYSINFO_SHAREDRAM,1,[Define to 1 if 'sysinfo.sharedram' exists.])
639AC_MSG_RESULT(yes),
640AC_MSG_RESULT(no))
641
642AC_MSG_CHECKING(for field bufferram in struct sysinfo)
643AC_TRY_COMPILE([#include <sys/sysinfo.h>],
644[struct sysinfo sysinfo;
645sysinfo.bufferram=0;
646],
647AC_DEFINE(HAVE_SYSINFO_BUFFERRAM,1,[Define to 1 if 'sysinfo.bufferram' exists.])
648AC_MSG_RESULT(yes),
649AC_MSG_RESULT(no))
650
651AC_MSG_CHECKING(for field freeram in struct sysinfo)
652AC_TRY_COMPILE([#include <sys/sysinfo.h>],
653[struct sysinfo sysinfo;
654sysinfo.freeram=0;
655],
656AC_DEFINE(HAVE_SYSINFO_FREERAM,1,[Define to 1 if 'sysinfo.freeram' exists.])
657AC_MSG_RESULT(yes),
658AC_MSG_RESULT(no))
659
660AC_MSG_CHECKING(for field procs in struct sysinfo)
661AC_TRY_COMPILE([#include <sys/sysinfo.h>],
662[struct sysinfo sysinfo;
663sysinfo.procs=0;
664],
665AC_DEFINE(HAVE_SYSINFO_PROCS,1,[Define to 1 if 'sysinfo.procs' exists.])
666AC_MSG_RESULT(yes),
667AC_MSG_RESULT(no))
668
669AC_MSG_CHECKING(for field tm_gmtoff in struct tm)
670AC_TRY_COMPILE([
671#ifdef HAVE_SYS_TIME_H
672#include <sys/time.h>
673#endif	/* HAVE_SYS_TIME_H */
674
675#ifdef HAVE_TIME_H
676#include <time.h>
677#endif	/* HAVE_TIME_H */
678],
679[
680	struct tm tm;
681	tm.tm_gmtoff;
682],
683AC_DEFINE(HAVE_TM_TM_GMTOFF,1,[Define to 1 if 'tm.tm_gmtoff' exists.])
684AC_MSG_RESULT(yes),
685AC_MSG_RESULT(no))
686
687AC_MSG_CHECKING(for linker options --start-group/--end-group)
688saved_LDFLAGS="$LDFLAGS"
689LDFLAGS="-Wl,--start-group -Wl,--end-group"
690AC_TRY_LINK([], [],
691HAVE_START_GROUP="yes"
692AC_MSG_RESULT(yes),
693AC_MSG_RESULT(no)
694)
695LDFLAGS="$saved_LDFLAGS"
696
697AC_MSG_CHECKING(for '__thread' compiler support)
698AC_TRY_COMPILE([#include <stdio.h>],[static __thread int a = 0;],
699AC_DEFINE(HAVE_THREAD_LOCAL,1,[Define to 1 if compiler keyword '__thread' supported.])
700AC_MSG_RESULT(yes),
701AC_MSG_RESULT(no)
702HAVE_THREAD_LOCAL="no")
703
704AC_MSG_CHECKING(for field updates in struct vminfo_t)
705AC_TRY_COMPILE([
706#include <sys/sysinfo.h>
707],
708[
709	vminfo_t vminfo;
710	vminfo.updates;
711],
712AC_DEFINE(HAVE_VMINFO_T_UPDATES,1,[Define to 1 if 'vminfo.updates' exists.])
713AC_MSG_RESULT(yes),
714AC_MSG_RESULT(no))
715
716dnl *****************************************************************
717dnl *                                                               *
718dnl *                     Checks for functions                      *
719dnl *                                                               *
720dnl *****************************************************************
721
722AC_MSG_CHECKING(for function sysconf() in unistd.h)
723AC_TRY_COMPILE(
724[
725#include <unistd.h>
726],
727[	int i;
728
729	i=sysconf(_SC_PHYS_PAGES)*sysconf(_SC_PHYS_PAGES);
730	i=sysconf(_SC_AVPHYS_PAGES)*sysconf(_SC_PHYS_PAGES);
731],
732AC_DEFINE(HAVE_UNISTD_SYSCONF,1,[Define to 1 if function 'sysconf' exists.])
733AC_MSG_RESULT(yes),
734AC_MSG_RESULT(no))
735
736AC_MSG_CHECKING(for function initgroups())
737AC_TRY_LINK(
738[
739#include <sys/types.h>
740#include <grp.h>
741],
742[
743	char	*user = "zabbix";
744	initgroups(user, 0);
745],
746AC_DEFINE(HAVE_FUNCTION_INITGROUPS,1,[Define to 1 if function 'initgroups' exists.])
747AC_MSG_RESULT(yes),
748AC_MSG_RESULT(no))
749
750AC_MSG_CHECKING(for functions seteuid() and setegid())
751AC_TRY_LINK(
752[
753#include <sys/types.h>
754#include <unistd.h>
755],
756[
757	seteuid(0);
758	setegid(0);
759],
760AC_DEFINE(HAVE_FUNCTION_SETEUID,1,[Define to 1 if functions 'seteuid' and 'setegid' exist.])
761AC_MSG_RESULT(yes),
762AC_MSG_RESULT(no))
763
764AC_MSG_CHECKING(for function setproctitle())
765AC_TRY_LINK(
766[
767#include <sys/types.h>
768#include <unistd.h>
769],
770[
771	setproctitle("Test %d", 1);
772],
773AC_DEFINE(HAVE_FUNCTION_SETPROCTITLE,1,[Define to 1 if function 'setproctitle' exists.])
774AC_MSG_RESULT(yes),
775AC_MSG_RESULT(no))
776
777AC_MSG_CHECKING(for function sysctlbyname())
778AC_TRY_LINK(
779[
780#ifdef HAVE_SYS_TYPES_H
781#include <sys/types.h>
782#endif /* HAVE_SYS_TYPES_H */
783
784#ifdef HAVE_SYS_PARAM_H
785#include <sys/param.h>
786#endif /* HAVE_SYS_PARAM_H */
787
788#include <sys/sysctl.h>
789],
790[
791	sysctlbyname("", 0, 0, 0, 0);
792],
793AC_DEFINE(HAVE_FUNCTION_SYSCTLBYNAME,1,[Define to 1 if 'sysctlbyname' exists.])
794AC_MSG_RESULT(yes),
795AC_MSG_RESULT(no))
796
797AC_MSG_CHECKING(for function sysctl (KERN_BOOTTIME))
798AC_TRY_COMPILE(
799[
800#ifdef HAVE_SYS_TYPES_H
801#include <sys/types.h>
802#endif /* HAVE_SYS_TYPES_H */
803
804#ifdef HAVE_SYS_PARAM_H
805#include <sys/param.h>
806#endif /* HAVE_SYS_PARAM_H */
807
808#include <sys/sysctl.h>
809#include <unistd.h>
810#include <time.h>
811#include <sys/time.h>
812],
813[
814	size_t		len;
815	struct timeval	uptime;
816        int		mib[2];
817
818        mib[0] = CTL_KERN;
819        mib[1] = KERN_BOOTTIME;
820
821        len = sizeof(uptime);
822        sysctl(mib, 2, &uptime, &len, 0, 0);
823],
824AC_DEFINE(HAVE_FUNCTION_SYSCTL_KERN_BOOTTIME,1,[Define to 1 if 'KERN_BOOTTIME' exists.])
825AC_MSG_RESULT(yes),
826AC_MSG_RESULT(no))
827
828AC_MSG_CHECKING(for function sysctl (HW_NCPU))
829AC_TRY_COMPILE(
830[
831#ifdef HAVE_SYS_TYPES_H
832#include <sys/types.h>
833#endif /* HAVE_SYS_TYPES_H */
834
835#ifdef HAVE_SYS_PARAM_H
836#include <sys/param.h>
837#endif /* HAVE_SYS_PARAM_H */
838
839#include <sys/sysctl.h>
840],
841[
842	size_t	len;
843	int	mib[2], ncpu;
844
845	mib[0] = CTL_HW;
846	mib[1] = HW_NCPU;
847
848	len = sizeof(ncpu);
849	sysctl(mib, 2, &ncpu, &len, 0, 0);
850],
851AC_DEFINE(HAVE_FUNCTION_SYSCTL_HW_NCPU,1,[Define to 1 if 'HW_NCPU' exists.])
852AC_MSG_RESULT(yes),
853AC_MSG_RESULT(no))
854
855AC_MSG_CHECKING(for function sysctl (KERN_MAXFILES))
856AC_TRY_COMPILE(
857[
858#ifdef HAVE_SYS_TYPES_H
859#include <sys/types.h>
860#endif /* HAVE_SYS_TYPES_H */
861
862#ifdef HAVE_SYS_PARAM_H
863#include <sys/param.h>
864#endif /* HAVE_SYS_PARAM_H */
865
866#include <sys/sysctl.h>
867],
868[
869	size_t	len;
870        int	mib[2], maxfiles;
871
872        mib[0] = CTL_KERN;
873        mib[1] = KERN_MAXFILES;
874
875        len = sizeof(maxfiles);
876        sysctl(mib, 2, &maxfiles, &len, 0, 0);
877],
878AC_DEFINE(HAVE_FUNCTION_SYSCTL_KERN_MAXFILES,1,[Define to 1 if 'KERN_MAXFILES' exists.])
879AC_MSG_RESULT(yes),
880AC_MSG_RESULT(no))
881
882AC_MSG_CHECKING(for function sysctl (KERN_MAXPROC))
883AC_TRY_COMPILE(
884[
885#ifdef HAVE_SYS_TYPES_H
886#include <sys/types.h>
887#endif /* HAVE_SYS_TYPES_H */
888
889#ifdef HAVE_SYS_PARAM_H
890#include <sys/param.h>
891#endif /* HAVE_SYS_PARAM_H */
892
893#include <sys/sysctl.h>
894],
895[
896	size_t	len;
897	int	mib[2], maxproc;
898
899        mib[0] = CTL_KERN;
900        mib[1] = KERN_MAXPROC;
901
902        len = sizeof(maxproc);
903        sysctl(mib, 2, &maxproc, &len, 0, 0);
904],
905AC_DEFINE(HAVE_FUNCTION_SYSCTL_KERN_MAXPROC,1,[Define to 1 if 'KERN_MAXPROC' exists.])
906AC_MSG_RESULT(yes),
907AC_MSG_RESULT(no))
908
909AC_MSG_CHECKING(for function sysctl (KERN_CPTIME,KERN_CPTIME2))
910AC_TRY_COMPILE(
911[
912#include <sys/param.h>
913#include <sys/sysctl.h>
914#if defined(HAVE_SYS_DKSTAT_H)
915#	include <sys/dkstat.h>
916#elif defined(HAVE_SYS_SCHED_H)
917#	include <sys/sched.h>
918#endif
919],
920[
921size_t	sz;
922int	i[] = {CP_USER, CP_NICE, CP_SYS, CP_INTR, CP_IDLE};
923
924{
925	long	states[CPUSTATES];
926	int	mib[2] = {CTL_KERN, KERN_CPTIME};
927
928	sz = sizeof(states);
929	sysctl(mib, 2, &states, &sz, NULL, 0);
930}
931
932{
933	u_int64_t	states[CPUSTATES];
934	int		mib[3] = {CTL_KERN, KERN_CPTIME2, 0};
935
936	sz = sizeof(states);
937	sysctl(mib, 3, &states, &sz, NULL, 0);
938}
939],
940AC_DEFINE(HAVE_FUNCTION_SYSCTL_KERN_CPTIME,1,[Define to 1 if 'KERN_CPTIME,KERN_CPTIME2' exists.])
941AC_MSG_RESULT(yes),
942AC_MSG_RESULT(no))
943
944AC_MSG_CHECKING(for function clock_gettime in time.h)
945AC_TRY_LINK([
946#ifdef HAVE_TIME_H
947#	include <time.h>
948#elif HAVE_SYS_TIME_H
949#	include <sys/time.h>
950#endif	/* HAVE_SYS_TIME_H */
951],
952[struct timespec tp;
953clock_gettime(CLOCK_REALTIME, &tp);
954],
955AC_DEFINE(HAVE_TIME_CLOCK_GETTIME,1,[Define to 1 if function 'clock_gettime' exists.])
956AC_MSG_RESULT(yes),
957AC_MSG_RESULT(no))
958
959dnl *****************************************************************
960dnl *                                                               *
961dnl *                      Checks for macros                        *
962dnl *                                                               *
963dnl *****************************************************************
964
965AC_MSG_CHECKING(for macro __va_copy() in stdarg.h)
966AC_TRY_COMPILE(
967[
968#include <stdarg.h>
969],
970[
971	va_list	src,dst;
972
973	__va_copy(dst,src);
974],
975AC_DEFINE(HAVE___VA_COPY,1,[Define to 1 if macro '__va_copy' exists.])
976AC_MSG_RESULT(yes),
977AC_MSG_RESULT(no))
978
979AC_MSG_CHECKING(for macro __VA_ARGS__)
980AC_TRY_COMPILE(
981[
982#define ZBX_CONST_STRING(str)   str
983int test(const char *fmt, ...) { return 0; }
984],
985[
986#define TEST(fmt, ...) test(ZBX_CONST_STRING(fmt), ##__VA_ARGS__)
987TEST("%s","test");
988TEST("test");
989],
990AC_DEFINE(HAVE___VA_ARGS__,1,[Define to 1 if macro '__VA_ARGS__' exists.])
991AC_MSG_RESULT(yes),
992AC_MSG_RESULT(no))
993
994dnl *****************************************************************
995dnl *                                                               *
996dnl *                 Checks for library functions                  *
997dnl *                                                               *
998dnl *****************************************************************
999
1000AC_TYPE_SIGNAL
1001AC_REPLACE_FUNCS(getloadavg)
1002AC_CHECK_FUNCS(hstrerror)
1003AC_CHECK_FUNCS(getenv)
1004AC_CHECK_FUNCS(putenv)
1005AC_CHECK_FUNCS(setenv)
1006AC_CHECK_FUNCS(tzset)
1007AC_CHECK_FUNCS(unsetenv)
1008AC_CHECK_FUNCS(sigqueue)
1009AC_CHECK_FUNCS(round)
1010
1011dnl *****************************************************************
1012dnl *                                                               *
1013dnl *            Checks for file system characteristics             *
1014dnl *                                                               *
1015dnl *****************************************************************
1016
1017AC_MSG_CHECKING(for /proc filesystem)
1018if test -d /proc; then
1019	AC_MSG_RESULT(yes)
1020	AC_DEFINE(HAVE_PROC,1,[Define to 1 if '/proc' file system should be used.])
1021else
1022	AC_MSG_RESULT(no)
1023fi
1024
1025AC_MSG_CHECKING(for file /proc/stat)
1026if test -r /proc/stat; then
1027	AC_MSG_RESULT(yes)
1028	AC_DEFINE(HAVE_PROC_STAT,1,[Define to 1 if file '/proc/stat' should be used.])
1029else
1030	AC_MSG_RESULT(no)
1031fi
1032
1033AC_MSG_CHECKING(for file /proc/cpuinfo)
1034if test -r /proc/cpuinfo; then
1035	AC_MSG_RESULT(yes)
1036	AC_DEFINE(HAVE_PROC_CPUINFO,1,[Define to 1 if file '/proc/cpuinfo' should be used.])
1037else
1038	AC_MSG_RESULT(no)
1039fi
1040
1041dnl Solaris
1042AC_MSG_CHECKING(for file /proc/0/psinfo)
1043if test -r /proc/0/psinfo; then
1044	AC_MSG_RESULT(yes)
1045	AC_DEFINE(HAVE_PROC_0_PSINFO,1,[Define to 1 if file '/proc/0/psinfo' should be used.])
1046else
1047	AC_MSG_RESULT(no)
1048fi
1049
1050AC_MSG_CHECKING(for file /proc/loadavg)
1051if test -r /proc/loadavg; then
1052	AC_MSG_RESULT(yes)
1053	AC_DEFINE(HAVE_PROC_LOADAVG,1,[Define to 1 if file '/proc/loadavg' should be used.])
1054else
1055	AC_MSG_RESULT(no)
1056fi
1057
1058AC_MSG_CHECKING(for file /proc/net/dev)
1059if test -r /proc/net/dev; then
1060	AC_MSG_RESULT(yes)
1061	AC_DEFINE(HAVE_PROC_NET_DEV,1,[Define to 1 if file '/proc/net/dev' should be used.])
1062else
1063	AC_MSG_RESULT(no)
1064fi
1065
1066dnl *****************************************************************
1067dnl *                                                               *
1068dnl *              Checks for compiler characteristics              *
1069dnl *                                                               *
1070dnl *****************************************************************
1071
1072dnl Check for %qu format (FreeBSD 4.x)
1073dnl FreeBSD 4.x does not support %llu
1074AC_MSG_CHECKING(for long long format)
1075AC_TRY_RUN(
1076[
1077#include <sys/types.h>
1078int main()
1079{
1080        uint64_t i;
1081
1082        sscanf("200000000010020", "%qu", &i);
1083
1084        if (i == 200000000010020) return 0;
1085        else return -1;
1086}
1087],
1088AC_DEFINE(HAVE_LONG_LONG_QU, 1 ,[Define to 1 if format '%qu' exists.])
1089AC_MSG_RESULT(yes),
1090AC_MSG_RESULT(no),
1091AC_MSG_RESULT(no))
1092
1093dnl option -rdynamic is needed for readable backtraces
1094AC_MSG_CHECKING(for -rdynamic linking option)
1095saved_LDFLAGS="$LDFLAGS"
1096LDFLAGS="-rdynamic $LDFLAGS"
1097AC_TRY_LINK([#include <execinfo.h>],
1098[void *bcktrc[6];
1099(void)backtrace(bcktrc, 6);
1100],
1101LDFLAGS="-rdynamic $saved_LDFLAGS"
1102AC_MSG_RESULT(yes),
1103LDFLAGS="$saved_LDFLAGS"
1104AC_MSG_RESULT(no))
1105
1106dnl *****************************************************************
1107dnl *                                                               *
1108dnl *                 Checks for operating systems                  *
1109dnl *                                                               *
1110dnl *****************************************************************
1111
1112AC_MSG_CHECKING(for libperfstat 5.2.0.40 fileset)
1113AC_TRY_COMPILE([#include <sys/protosw.h>
1114#include <libperfstat.h>],
1115[perfstat_memory_total_t	memstats;
1116memstats.virt_active = 0;
1117],
1118AC_DEFINE(HAVE_AIXOSLEVEL_520004,1,[Define to 1 if libperfstat 5.2.0.40 fileset exists.])
1119AC_MSG_RESULT(yes),
1120AC_MSG_RESULT(no))
1121
1122AC_MSG_CHECKING(for libperfstat 5.3.0.60 fileset)
1123AC_TRY_COMPILE([#include <sys/protosw.h>
1124#include <libperfstat.h>],
1125[perfstat_partition_total_t	lparstats;
1126lparstats.type.b.donate_enabled = 0;
1127lparstats.idle_donated_purr = 0;
1128lparstats.busy_donated_purr = 0;
1129lparstats.idle_stolen_purr = 0;
1130lparstats.busy_stolen_purr = 0;
1131],
1132AC_DEFINE(HAVE_AIXOSLEVEL_530006,1,[Define to 1 if libperfstat 5.3.0.60 fileset exists.])
1133AC_MSG_RESULT(yes),
1134AC_MSG_RESULT(no))
1135
1136case "$host_os" in
1137linux*)
1138	ARCH="linux"
1139	;;
1140aix*)
1141	ARCH="aix"
1142	;;
1143darwin*|rhapsody*)
1144	ARCH="osx"
1145	AC_DEFINE([MAC_OS_X], 1, [Define to 1 if you are using Mac OS X.])
1146	;;
1147*solaris*)
1148	ARCH="solaris"
1149	;;
1150hpux*)
1151	ARCH="hpux"
1152	;;
1153freebsd*)
1154	ARCH="freebsd"
1155	;;
1156dragonfly*)
1157	ARCH="dragonfly"
1158	;;
1159netbsd*)
1160	ARCH="netbsd"
1161	;;
1162osf*)
1163	ARCH="osf"
1164	;;
1165openbsd*)
1166	ARCH="openbsd"
1167	;;
1168*)
1169	ARCH="unknown"
1170	;;
1171esac
1172
1173AC_MSG_CHECKING(for architecture)
1174AC_MSG_RESULT([$ARCH ($host_os)])
1175
1176if test "x$ARCH" = "xlinux"; then
1177	AC_MSG_CHECKING([for the linux kernel version])
1178
1179	kernel=`uname -r`
1180
1181	case "${kernel}" in
1182		2.6.*)
1183			AC_MSG_RESULT([2.6 family (${kernel})])
1184			AC_DEFINE([KERNEL_2_6], 1, [Define to 1 if you are using Linux 2.6.x])
1185			;;
1186		2.4.*)
1187			AC_MSG_RESULT([2.4 family (${kernel})])
1188			AC_DEFINE([KERNEL_2_4], 1, [Define to 1 if you are using Linux 2.4.x])
1189			;;
1190		*)
1191			AC_MSG_RESULT([unknown family (${kernel})])
1192			;;
1193	esac
1194fi
1195
1196if test "x$ARCH" = "xsolaris"; then
1197	dnl Forcing a 64-bit application for a 64-bit Solaris
1198	dnl A 32-bit program that uses /proc is able to look at 32-bit processes,
1199	dnl but is not able to understand all attributes of a 64-bit process.
1200	AC_MSG_CHECKING(for -m64 compilation flag)
1201	saved_CFLAGS="$CFLAGS"
1202	CFLAGS="-m64"
1203	AC_TRY_RUN(
1204	[int main(void) {return 0;}],
1205	CFLAGS="-m64 $saved_CFLAGS"
1206	AC_MSG_RESULT(yes),
1207	CFLAGS="$saved_CFLAGS"
1208	AC_MSG_RESULT(no))
1209	CFLAGS="${CFLAGS} -DZBX_OLD_SOLARIS"
1210fi
1211
1212if test "x$ARCH" = "xhpux"; then
1213	dnl Low Level Discovery needs a way to get the list of network
1214	dnl interfaces available on the monitored system. On HP-UX systems
1215	dnl that way depends on the OS version.
1216	hpux_version=${host_os#hpux}
1217	hpux_major=${hpux_version%.*}
1218	hpux_minor=${hpux_version#*.}
1219
1220	AC_DEFINE_UNQUOTED([HPUX_VERSION], $hpux_major$hpux_minor, [Define to HP-UX version])
1221
1222	dnl This API level is needed so that "utsname.nodename" is not truncated.
1223	AC_MSG_CHECKING(for -D_HPUX_API_LEVEL=20040821 compilation flag)
1224	saved_CFLAGS="$CFLAGS"
1225	CFLAGS="-D_HPUX_API_LEVEL=20040821"
1226	AC_TRY_RUN(
1227[
1228#ifdef HAVE_DLFCN_H
1229#	include <dlfcn.h>
1230#endif
1231#ifdef HAVE_SYS_UTSNAME_H
1232#	include <sys/utsname.h>
1233#endif
1234
1235int main(void)
1236{
1237	void		*p1, *p2;
1238	struct utsname	name;
1239
1240	/* check that the compiler (e.g., GCC 4.3.0 and above) supports function-level versioning */
1241
1242	p1 = uname;
1243	p2 = dlsym(RTLD_DEFAULT, "uname{20040821}");
1244
1245	if (p1 != p2)
1246		return 1;
1247
1248	/* uname() fails with EFAULT on HP-UX systems that were only partially upgraded to this API level */
1249
1250	return -1 == uname(&name) ? 1 : 0;
1251}
1252],
1253	CFLAGS="-D_HPUX_API_LEVEL=20040821 $saved_CFLAGS"
1254	AC_MSG_RESULT(yes),
1255	CFLAGS="$saved_CFLAGS"
1256	AC_MSG_RESULT(no))
1257fi
1258
1259AC_DEFINE_UNQUOTED([ARCH], "${ARCH}", [Define to OS name for code managing])
1260AC_SUBST(ARCH)
1261
1262AC_CHECK_SIZEOF([void *])
1263
1264dnl *****************************************************************
1265dnl *                                                               *
1266dnl *         Checks for options given on the command line          *
1267dnl *                                                               *
1268dnl *****************************************************************
1269
1270AC_ARG_ENABLE(static,[  --enable-static         Build statically linked binaries],
1271[case "${enableval}" in
1272  yes)
1273    LDFLAGS="${LDFLAGS} -static"
1274    AC_MSG_CHECKING(if static linking is possible)
1275    AC_LINK_IFELSE([AC_LANG_PROGRAM(,)],
1276      [AC_MSG_RESULT([yes])
1277        static_linking=yes],
1278      [AC_MSG_RESULT([no])
1279        static_linking=no])
1280      if test "x$static_linking" = "xno"; then
1281        AC_MSG_ERROR([static linking is not possible on this system])
1282      fi
1283    ;;
1284  no) ;;
1285  *) AC_MSG_ERROR([bad value ${enableval} for --enable-static]) ;;
1286esac])
1287
1288AC_ARG_ENABLE(static-libs,[  --enable-static-libs    Build statically linked binaries with selected libs from default folders],
1289[case "${enableval}" in
1290  yes)
1291    static_linking_libs=yes
1292    saved_LIBS="$LIBS"
1293    LIBS="${saved_LIBS} -Wl,-bstatic -Wl,-bdynamic"
1294    AC_MSG_CHECKING([if libs static linking with "-Wl,-b" is possible])
1295    AC_LINK_IFELSE([AC_LANG_PROGRAM(,)],
1296      [AC_MSG_RESULT([yes])
1297        static_linking_support="-Wl,-b"],
1298      [AC_MSG_RESULT([no])
1299        static_linking_support=no])
1300        LIBS="$saved_LIBS"
1301
1302    if test "x$static_linking_support" = "xno"; then
1303      LIBS="${saved_LIBS} -Wl,-Bstatic -Wl,-Bdynamic"
1304      AC_MSG_CHECKING([if libs static linking with "-Wl,-B" is possible])
1305      AC_LINK_IFELSE([AC_LANG_PROGRAM(,)],
1306        [AC_MSG_RESULT([yes])
1307          static_linking_support="-Wl,-B"],
1308        [AC_MSG_RESULT([no])
1309          static_linking_support=no])
1310          LIBS="$saved_LIBS"
1311    fi
1312    ;;
1313  no) ;;
1314  *) AC_MSG_ERROR([bad value ${enableval} for --enable-static-libs]) ;;
1315esac])
1316
1317AC_ARG_ENABLE(server,[  --enable-server         Turn on build of Zabbix server],
1318[case "${enableval}" in
1319  yes) server=yes ;;
1320  no)  server=no ;;
1321  *) AC_MSG_ERROR([bad value ${enableval} for --enable-server]) ;;
1322esac],
1323[server=no])
1324AM_CONDITIONAL(SERVER, test "x$server" = "xyes")
1325
1326AC_ARG_ENABLE(proxy,[  --enable-proxy          Turn on build of Zabbix proxy],
1327[case "${enableval}" in
1328  yes) proxy=yes ;;
1329  no)  proxy=no ;;
1330  *) AC_MSG_ERROR([bad value ${enableval} for --enable-proxy]) ;;
1331esac],
1332[proxy=no])
1333AM_CONDITIONAL(PROXY, test "x$proxy" = "xyes")
1334
1335AC_ARG_ENABLE(agent,[  --enable-agent          Turn on build of Zabbix agent and client utilities],
1336[case "${enableval}" in
1337  yes) agent=yes ;;
1338  no)  agent=no ;;
1339  *) AC_MSG_ERROR([bad value ${enableval} for --enable-agent]) ;;
1340esac],
1341[agent=no])
1342AM_CONDITIONAL(AGENT, test "x$agent" = "xyes")
1343
1344AC_ARG_ENABLE(agent2,[  --enable-agent2         Turn on build of Zabbix agent 2],
1345[case "${enableval}" in
1346  yes) agent2=yes ;;
1347  no)  agent2=no ;;
1348  *) AC_MSG_ERROR([bad value ${enableval} for --enable-agent2]) ;;
1349esac
1350test "x$agent2" = "xyes" -a "x$HAVE_THREAD_LOCAL" = "xno" && AC_MSG_ERROR([C compiler is not compatible with agent2 assembly])
1351],
1352[agent2=no])
1353AM_CONDITIONAL(AGENT2, test "x$agent2" = "xyes")
1354
1355AC_ARG_ENABLE(webservice,[  --enable-webservice         Turn on build of Zabbix web service],
1356[case "${enableval}" in
1357  yes) webservice=yes ;;
1358  no)  webservice=no ;;
1359  *) AC_MSG_ERROR([bad value ${enableval} for --enable-webservice]) ;;
1360esac
1361test "x$webservice" = "xyes" -a "x$HAVE_THREAD_LOCAL" = "xno" && AC_MSG_ERROR([C compiler is not compatible with webservice assembly])
1362],
1363[webservice=no])
1364AM_CONDITIONAL(WEBSERVICE, test "x$webservice" = "xyes")
1365
1366AC_ARG_ENABLE(java,[  --enable-java           Turn on build of Zabbix Java gateway],
1367[case "${enableval}" in
1368  yes) java=yes ;;
1369  no)  java=no ;;
1370  *) AC_MSG_ERROR([bad value ${enableval} for --enable-java]) ;;
1371esac],
1372[java=no])
1373AM_CONDITIONAL(JAVA, test "x$java" = "xyes")
1374
1375AC_ARG_ENABLE(ipv6,[  --enable-ipv6           Turn on support of IPv6],
1376[case "${enableval}" in
1377  yes) ipv6=yes ;;
1378  no)  ipv6=no ;;
1379  *) AC_MSG_ERROR([bad value ${enableval} for --enable-ipv6]) ;;
1380esac],
1381[ipv6=no])
1382AM_CONDITIONAL(IPV6, test "x$ipv6" = "xyes")
1383
1384AM_CONDITIONAL([DBSCHEMA], [test -d create])
1385
1386AM_CONDITIONAL([ZBXCMOCKA], [(test -f m4/conf_tests.m4) && (test "x$server" = "xyes" || test "x$proxy" = "xyes" || test "x$agent" = "xyes")])
1387
1388have_db="no"
1389have_unixodbc="no"
1390have_web_monitoring="no"
1391have_snmp="no"
1392have_ipmi="no"
1393have_ipv6="no"
1394have_ssh="no"
1395have_tls="no"
1396have_libmodbus="no"
1397
1398
1399if test "x$ipv6" = "xyes"; then
1400	AC_DEFINE(HAVE_IPV6,1,[Define to 1 if IPv6 should be enabled.])
1401	have_ipv6="yes"
1402fi
1403
1404if test "x$server" = "xyes" || test "x$proxy" = "xyes"; then
1405
1406
1407	dnl Checking for MySQL support
1408	AX_LIB_MYSQL()
1409	if test "x$want_mysql" = "xyes"; then
1410		if test "x$have_db" != "xno"; then
1411			AC_MSG_ERROR([You can configure for only one database.])
1412		fi
1413
1414		if test "x$found_mysql" = "xyes"; then
1415			have_db="MySQL"
1416			have_multirow_insert="yes"
1417		else
1418			AC_MSG_ERROR([MySQL library not found])
1419		fi
1420	fi
1421
1422	dnl Checking for Oracle support
1423	AX_LIB_ORACLE_OCI([10.0])
1424	if test "x$want_oracle_oci" = "xyes"; then
1425		if test "x$have_db" != "xno"; then
1426			AC_MSG_ERROR([You can configure for only one database.])
1427		fi
1428
1429		if test "x$HAVE_ORACLE_OCI" = "xyes"; then
1430			have_db="Oracle"
1431
1432			ORACLE_CPPFLAGS="$ORACLE_OCI_CFLAGS"
1433			ORACLE_LDFLAGS="$ORACLE_OCI_LDFLAGS"
1434			ORACLE_LIBS="$ORACLE_OCI_LIBS"
1435
1436			AC_DEFINE(HAVE_ORACLE,1,[Define to 1 if Oracle should be enabled.])
1437		else
1438			AC_MSG_ERROR([Oracle OCI library not found])
1439		fi
1440	fi
1441
1442	dnl Checking for PostgreSQL support
1443	AX_LIB_POSTGRESQL("9.2")
1444	if test "x$want_postgresql" = "xyes"; then
1445		if test "x$have_db" != "xno"; then
1446			AC_MSG_ERROR([You can configure for only one database.])
1447		fi
1448
1449		if test "x$found_postgresql" = "xyes"; then
1450			if test "$postgresql_version_check" != "1"; then
1451				AC_MSG_ERROR([PostgreSQL version mismatch])
1452			fi
1453
1454			have_db="PostgreSQL"
1455
1456			if test "$postgresql_version_number" -ge 8002000; then
1457				have_multirow_insert="yes"
1458			fi
1459
1460		else
1461			AC_MSG_ERROR([PostgreSQL library not found])
1462		fi
1463	fi
1464
1465	dnl Checking for SQLite3 support
1466	AX_LIB_SQLITE3()
1467	if test "x$want_sqlite3" = "xyes"; then
1468		if test "x$server" = "xyes"; then
1469			AC_MSG_ERROR([SQLite is not supported as a main Zabbix database backend.])
1470		fi
1471
1472		if test "x$have_db" != "xno"; then
1473			AC_MSG_ERROR([You can configure for only one database.])
1474		fi
1475
1476		if test "x$found_sqlite3" = "xyes"; then
1477			have_db="SQLite v3.x"
1478
1479			saved_CPPFLAGS="$CPPFLAGS"
1480			saved_LDFLAGS="$LDFLAGS"
1481
1482			CPPFLAGS="$CPPFLAGS $SQLITE3_CPPFLAGS"
1483			LDFLAGS="$LDFLAGS $SQLITE3_LDFLAGS $SQLITE3_LIBS"
1484
1485			AC_MSG_CHECKING([for function sqlite3_open_v2() in sqlite3.h])
1486			AC_TRY_LINK([#include <sqlite3.h>],
1487				[sqlite3 *conn = 0;
1488				sqlite3_open_v2("dbname", &conn, SQLITE_OPEN_READWRITE, 0);
1489				],
1490				AC_DEFINE(HAVE_FUNCTION_SQLITE3_OPEN_V2,1,[Define to 1 if function 'sqlite3_open_v2' exists.])
1491				AC_MSG_RESULT(yes),
1492				AC_MSG_RESULT(no))
1493
1494			CPPFLAGS="$saved_CPPFLAGS"
1495			LDFLAGS="$saved_LDFLAGS"
1496		else
1497			AC_MSG_ERROR([SQLite3 library not found])
1498		fi
1499	fi
1500
1501	AC_MSG_CHECKING(for Zabbix server/proxy database selection)
1502	if test "x$have_db" = "xno"; then
1503		AC_MSG_RESULT(error)
1504		AC_MSG_ERROR([No database selected for Zabbix server/proxy. Use --with-mysql or --with-oracle or --with-postgresql or --with-sqlite3.])
1505	else
1506		AC_MSG_RESULT(ok)
1507	fi
1508
1509	AC_MSG_CHECKING(for multirow insert statements)
1510	if test "x$have_multirow_insert" = "xyes"; then
1511		AC_DEFINE(HAVE_MULTIROW_INSERT,1,[Define to 1 if database supports multirow insert statements.])
1512		AC_MSG_RESULT(yes)
1513	else
1514		AC_MSG_RESULT(no)
1515	fi
1516
1517	DB_CFLAGS="$MYSQL_CFLAGS $ORACLE_CPPFLAGS $POSTGRESQL_CFLAGS $SQLITE3_CPPFLAGS"
1518	DB_LDFLAGS="$MYSQL_LDFLAGS $ORACLE_LDFLAGS $POSTGRESQL_LDFLAGS $SQLITE3_LDFLAGS"
1519	DB_LIBS="$MYSQL_LIBS $ORACLE_LIBS $POSTGRESQL_LIBS $SQLITE3_LIBS"
1520
1521	AC_SUBST(DB_CFLAGS)
1522	AC_SUBST(DB_LDFLAGS)
1523	AC_SUBST(DB_LIBS)
1524
1525	SERVER_LDFLAGS="${SERVER_LDFLAGS} ${DB_LDFLAGS}"
1526	SERVER_LIBS="${SERVER_LIBS} ${DB_LIBS}"
1527
1528	PROXY_LDFLAGS="${PROXY_LDFLAGS} ${DB_LDFLAGS}"
1529	PROXY_LIBS="${PROXY_LIBS} ${DB_LIBS}"
1530
1531	dnl Check for LIBXML2 [by default - skip]
1532	LIBXML2_CHECK_CONFIG([no])
1533	if test "x$want_libxml2" = "xyes"; then
1534		if test "x$found_libxml2" != "xyes"; then
1535			AC_MSG_ERROR([LIBXML2 library not found])
1536		else
1537			have_libxml2="yes"
1538		fi
1539	fi
1540
1541	LDFLAGS="$LDFLAGS $LIBXML2_LDFLAGS"
1542	LIBS="$LIBS $LIBXML2_LIBS"
1543
1544	AC_SUBST(LIBXML2_CFLAGS)
1545
1546	dnl Checking for unixODBC support
1547	LIBUNIXODBC_CHECK_CONFIG([no])
1548	if test "x$want_unixodbc" = "xyes"; then
1549		if test "x$unixodbc_error" != "x"; then
1550			AC_MSG_ERROR($unixodbc_error)
1551		fi
1552		have_unixodbc="yes"
1553	fi
1554	SERVER_LDFLAGS="$SERVER_LDFLAGS $UNIXODBC_LDFLAGS"
1555	SERVER_LIBS="$SERVER_LIBS $UNIXODBC_LIBS"
1556
1557	PROXY_LDFLAGS="$PROXY_LDFLAGS $UNIXODBC_LDFLAGS"
1558	PROXY_LIBS="$PROXY_LIBS $UNIXODBC_LIBS"
1559
1560	AC_SUBST(UNIXODBC_CFLAGS)
1561
1562	dnl Check for Net-SNMP [by default - skip]
1563	LIBNETSNMP_CHECK_CONFIG([no], "5.3.0")
1564
1565	if test "x$want_netsnmp" = "xyes"; then
1566		if test "x$found_netsnmp" != "xyes"; then
1567			AC_MSG_ERROR([Invalid Net-SNMP directory - unable to find net-snmp-config])
1568		else
1569			have_snmp="yes"
1570		fi
1571	fi
1572	SERVER_LDFLAGS="$SNMP_LDFLAGS $SERVER_LDFLAGS"
1573	SERVER_LIBS="$SERVER_LIBS $SNMP_LIBS"
1574
1575	PROXY_LDFLAGS="$SNMP_LDFLAGS $PROXY_LDFLAGS"
1576	PROXY_LIBS="$PROXY_LIBS $SNMP_LIBS"
1577
1578
1579	AC_SUBST(SNMP_CFLAGS)
1580
1581	dnl Check for LIBSSH2 [by default - skip] at least of version 1.0.0.
1582	LIBSSH2_CHECK_CONFIG([no])
1583	LIBSSH_CHECK_CONFIG([no])
1584	if test "x$want_ssh2" = "xyes"; then
1585		if test "x$want_ssh" != "xno"; then
1586			AC_MSG_ERROR([You can configure for only one SSH library (--with-ssh or --with-ssh2).])
1587		fi
1588
1589		if test "x$found_ssh2" != "xyes"; then
1590			AC_MSG_ERROR([SSH2 library not found])
1591		elif test "x$accept_ssh2_version" != "xyes"; then
1592			AC_MSG_ERROR([SSH2 library version requirement not met (>= 1.0.0)])
1593		else
1594			have_ssh="yes (libssh2)"
1595		fi
1596	fi
1597	SERVER_LDFLAGS="$SERVER_LDFLAGS $SSH2_LDFLAGS"
1598	SERVER_LIBS="$SERVER_LIBS $SSH2_LIBS"
1599
1600	PROXY_LDFLAGS="$PROXY_LDFLAGS $SSH2_LDFLAGS"
1601	PROXY_LIBS="$PROXY_LIBS $SSH2_LIBS"
1602
1603	AC_SUBST(SSH2_CFLAGS)
1604
1605	dnl Check for LIBSSH [by default - skip] at least of version 0.7.0.
1606	if test "x$want_ssh" = "xyes"; then
1607		if test "x$found_ssh" != "xyes"; then
1608			AC_MSG_ERROR([SSH library not found])
1609		elif test "x$accept_ssh_version" != "xyes"; then
1610			AC_MSG_ERROR([SSH library version requirement not met (>= 0.6.0)])
1611		else
1612			have_ssh="yes (libssh)"
1613		fi
1614	fi
1615	SERVER_LDFLAGS="$SERVER_LDFLAGS $SSH_LDFLAGS"
1616	SERVER_LIBS="$SERVER_LIBS $SSH_LIBS"
1617
1618	PROXY_LDFLAGS="$PROXY_LDFLAGS $SSH_LDFLAGS"
1619	PROXY_LIBS="$PROXY_LIBS $SSH_LIBS"
1620
1621	AC_SUBST(SSH_CFLAGS)
1622
1623	found_openipmi="no"
1624	dnl Check for libOpenIPMI [by default - skip]
1625	LIBOPENIPMI_CHECK_CONFIG([no])
1626	if test "x$want_openipmi" = "xyes"; then
1627		if test "x$found_openipmi" != "xyes"; then
1628			AC_MSG_ERROR([Invalid OPENIPMI directory - unable to find ipmiif.h])
1629		else
1630			have_ipmi="yes"
1631		fi
1632	fi
1633
1634	SERVER_LDFLAGS="$SERVER_LDFLAGS $OPENIPMI_LDFLAGS"
1635	SERVER_LIBS="$SERVER_LIBS $OPENIPMI_LIBS"
1636
1637	PROXY_LDFLAGS="$PROXY_LDFLAGS $OPENIPMI_LDFLAGS"
1638	PROXY_LIBS="$PROXY_LIBS $OPENIPMI_LIBS"
1639
1640	AC_SUBST(OPENIPMI_CFLAGS)
1641
1642	dnl Check for zlib, used by Zabbix server-proxy communications
1643	ZLIB_CHECK_CONFIG([no])
1644	if test "x$found_zlib" != "xyes"; then
1645		AC_MSG_ERROR([Unable to use zlib (zlib check failed)])
1646	fi
1647
1648	AC_SUBST(ZLIB_CFLAGS)
1649
1650	dnl Check for 'libpthread' library that supports PTHREAD_PROCESS_SHARED flag
1651	LIBPTHREAD_CHECK_CONFIG([no])
1652	if test "x$found_libpthread" != "xyes"; then
1653		AC_MSG_ERROR([Unable to use libpthread (libpthread check failed)])
1654	fi
1655fi
1656
1657SERVER_LDFLAGS="$SERVER_LDFLAGS $ZLIB_LDFLAGS $LIBPTHREAD_LDFLAGS"
1658SERVER_LIBS="$SERVER_LIBS $ZLIB_LIBS $LIBPTHREAD_LIBS"
1659
1660PROXY_LDFLAGS="$PROXY_LDFLAGS $ZLIB_LDFLAGS $LIBPTHREAD_LDFLAGS"
1661PROXY_LIBS="$PROXY_LIBS $ZLIB_LIBS $LIBPTHREAD_LIBS"
1662
1663AGENT_LDFLAGS="$AGENT_LDFLAGS $ZLIB_LDFLAGS $LIBPTHREAD_LDFLAGS"
1664AGENT_LIBS="$AGENT_LIBS $ZLIB_LIBS $LIBPTHREAD_LIBS"
1665
1666AGENT2_LDFLAGS="$AGENT2_LDFLAGS $ZLIB_LDFLAGS $LIBPTHREAD_LDFLAGS"
1667AGENT2_LIBS="$AGENT2_LIBS $ZLIB_LIBS $LIBPTHREAD_LIBS"
1668
1669ZBXGET_LDFLAGS="$ZBXGET_LDFLAGS $ZLIB_LDFLAGS $LIBPTHREAD_LDFLAGS"
1670ZBXGET_LIBS="$ZBXGET_LIBS $ZLIB_LIBS $LIBPTHREAD_LIBS"
1671
1672SENDER_LDFLAGS="$SENDER_LDFLAGS $ZLIB_LDFLAGS $LIBPTHREAD_LDFLAGS"
1673SENDER_LIBS="$SENDER_LIBS $ZLIB_LIBS $LIBPTHREAD_LIBS"
1674
1675ZBXJS_LDFLAGS="$ZBXJS_LDFLAGS $ZLIB_LDFLAGS $LIBPTHREAD_LDFLAGS"
1676ZBXJS_LIBS="$ZBXJS_LIBS $ZLIB_LIBS $LIBPTHREAD_LIBS"
1677
1678AM_CONDITIONAL(HAVE_IPMI, [test "x$have_ipmi" = "xyes"])
1679AM_CONDITIONAL(HAVE_LIBXML2, test "x$have_libxml2" = "xyes")
1680
1681dnl Check if Zabbix internal IPC services are used
1682have_ipcservice="no"
1683if test "x$have_ipmi" = "xyes"; then
1684	have_ipcservice="yes"
1685fi
1686
1687if test "x$server" = "xyes"; then
1688	have_ipcservice="yes"
1689fi
1690
1691if test "x$proxy" = "xyes"; then
1692	have_ipcservice="yes"
1693fi
1694
1695AM_CONDITIONAL(PROXY_IPCSERVICE, [test "x$have_ipmi" = "xyes"])
1696
1697dnl Check for libevent, used by Zabbix IPC services
1698if test "x$have_ipcservice" = "xyes"; then
1699	AC_DEFINE([HAVE_IPCSERVICE], 1, [Define to 1 if Zabbix IPC services are used])
1700
1701	LIBEVENT_CHECK_CONFIG([no])
1702	if test "x$found_libevent" != "xyes"; then
1703		AC_MSG_ERROR([Unable to use libevent (libevent check failed)])
1704	fi
1705
1706	SERVER_LDFLAGS="$SERVER_LDFLAGS $LIBEVENT_LDFLAGS"
1707	SERVER_LIBS="$SERVER_LIBS $LIBEVENT_LIBS"
1708
1709	PROXY_LDFLAGS="$PROXY_LDFLAGS $LIBEVENT_LDFLAGS"
1710	PROXY_LIBS="$PROXY_LIBS $LIBEVENT_LIBS"
1711fi
1712
1713dnl Check for GnuTLS libgnutls [by default - skip]
1714LIBGNUTLS_CHECK_CONFIG([no])
1715if test "x$want_gnutls" = "xyes"; then
1716	if test "x$have_tls" != "xno"; then
1717		AC_MSG_ERROR([You can configure for only one TLS library (--with-gnutls or --with-openssl).])
1718	fi
1719
1720	if test "x$found_gnutls" != "xyes"; then
1721		AC_MSG_ERROR([GnuTLS library libgnutls not found])
1722	elif test "x$accept_gnutls_version" != "xyes"; then
1723		AC_MSG_ERROR([GnuTLS library version requirement not met (>= 3.1.18)])
1724	else
1725		have_tls="GnuTLS"
1726	fi
1727	TLS_CFLAGS="$GNUTLS_CFLAGS"
1728	TLS_LDFLAGS="$GNUTLS_LDFLAGS"
1729	TLS_LIBS="$GNUTLS_LIBS"
1730fi
1731
1732dnl Check for OpenSSL libssl and libcrypto [by default - skip]
1733LIBOPENSSL_CHECK_CONFIG([no])
1734if test "x$want_openssl" = "xyes"; then
1735	if test "x$have_tls" != "xno"; then
1736		AC_MSG_ERROR([You can configure for only one TLS library (--with-gnutls or --with-openssl).])
1737	fi
1738
1739	if test "x$found_openssl" != "xOpenSSL" -a "x$found_openssl" != "xOpenSSL (PSK not supported)"; then
1740		AC_MSG_ERROR([OpenSSL library libssl or libcrypto not found])
1741	elif test "x$accept_openssl_version" != "xyes"; then
1742		AC_MSG_ERROR([OpenSSL library version requirement not met (>= 1.0.1)])
1743	else
1744		have_tls=$found_openssl
1745	fi
1746	TLS_CFLAGS="$OPENSSL_CFLAGS"
1747	TLS_LDFLAGS="$OPENSSL_LDFLAGS"
1748	TLS_LIBS="$OPENSSL_LIBS"
1749fi
1750AC_SUBST(TLS_CFLAGS)
1751
1752SERVER_LDFLAGS="$SERVER_LDFLAGS $TLS_LDFLAGS"
1753SERVER_LIBS="$SERVER_LIBS $TLS_LIBS"
1754
1755PROXY_LDFLAGS="$PROXY_LDFLAGS $TLS_LDFLAGS"
1756PROXY_LIBS="$PROXY_LIBS $TLS_LIBS"
1757
1758AGENT_LDFLAGS="$AGENT_LDFLAGS $TLS_LDFLAGS"
1759AGENT_LIBS="$AGENT_LIBS $TLS_LIBS"
1760
1761AGENT2_LDFLAGS="$AGENT2_LDFLAGS $TLS_LDFLAGS"
1762AGENT2_LIBS="$AGENT2_LIBS $TLS_LIBS"
1763
1764ZBXGET_LDFLAGS="$ZBXGET_LDFLAGS $TLS_LDFLAGS"
1765ZBXGET_LIBS="$ZBXGET_LIBS $TLS_LIBS"
1766
1767SENDER_LDFLAGS="$SENDER_LDFLAGS $TLS_LDFLAGS"
1768SENDER_LIBS="$SENDER_LIBS $TLS_LIBS"
1769
1770ZBXJS_LDFLAGS="$ZLIB_LDFLAGS $TLS_LDFLAGS"
1771ZBXJS_LIBS="$ZBXJS_LIBS $TLS_LIBS"
1772
1773dnl Check for libmodbus [by default - skip]
1774if test "x$agent" = "xyes"; then
1775	LIBMODBUS_CHECK_CONFIG([3.0.0])
1776	if test "x$want_libmodbus" = "xyes"; then
1777		if test "x$found_libmodbus" = "xyes"; then
1778			have_libmodbus="yes"
1779		fi
1780	fi
1781	LDFLAGS="$LDFLAGS $LIBMODBUS_LDFLAGS"
1782	CFLAGS="$CFLAGS $LIBMODBUS_CFLAGS"
1783	LIBS="$LIBS $LIBMODBUS_LIBS"
1784fi
1785AM_CONDITIONAL(HAVE_LIBMODBUS, [test "x$have_libmodbus" = "xyes"])
1786
1787if test "x$agent2" = "xyes"; then
1788	AC_CHECK_PROGS([GO], [go], [no])
1789	if test "x$GO" = "xno"; then
1790		AC_MSG_ERROR([Unable to find "go" executable in path])
1791	fi
1792	AC_DEFINE(ZBX_BUILD_AGENT2,1,[Define to 1 if Agent2 is being built.])
1793fi
1794
1795if test "x$webservice" = "xyes"; then
1796	AC_CHECK_PROGS([GO], [go], [no])
1797	if test "x$GO" = "xno"; then
1798		AC_MSG_ERROR([Unable to find "go" executable in path])
1799	fi
1800	AC_DEFINE(ZBX_BUILD_WEBSERVICE,1,[Define to 1 if Web Service is being built.])
1801fi
1802
1803if test "x$java" = "xyes"; then
1804	AC_CHECK_PROGS([JAVAC], [javac], [no])
1805	if test "x$JAVAC" = "xno"; then
1806		AC_MSG_ERROR([Unable to find "javac" executable in path])
1807	fi
1808	AC_CHECK_PROGS([JAR], [jar], [no])
1809	if test "x$JAR" = "xno"; then
1810		AC_MSG_ERROR([Unable to find "jar" executable in path])
1811	fi
1812fi
1813
1814found_ldap="no"
1815dnl Check for libLDAP [by default - skip]
1816LIBLDAP_CHECK_CONFIG([no])
1817if test "x$want_ldap" = "xyes"; then
1818	if test "x$found_ldap" != "xyes"; then
1819		AC_MSG_ERROR([Invalid LDAP directory - unable to find ldap.h])
1820	fi
1821fi
1822SERVER_LDFLAGS="$SERVER_LDFLAGS $LDAP_LDFLAGS"
1823SERVER_LIBS="$SERVER_LIBS $LDAP_LIBS"
1824
1825PROXY_LDFLAGS="$PROXY_LDFLAGS $LDAP_LDFLAGS"
1826PROXY_LIBS="$PROXY_LIBS $LDAP_LIBS"
1827
1828AGENT_LDFLAGS="$AGENT_LDFLAGS $LDAP_LDFLAGS"
1829AGENT_LIBS="$AGENT_LIBS $LDAP_LIBS"
1830
1831AC_SUBST(LDAP_CPPFLAGS)
1832
1833found_curl="no"
1834dnl Checking for libCurl [by default - skip]
1835LIBCURL_CHECK_CONFIG(, [7.13.1], [],[])
1836if test "x$want_curl" = "xyes"; then
1837	if test "x$found_curl" != "xyes"; then
1838		AC_MSG_ERROR([Curl library not found])
1839	fi
1840fi
1841if test "x$found_curl" = "xyes"; then
1842	have_web_monitoring="cURL"
1843fi
1844CFLAGS="$LIBCURL_CFLAGS $CFLAGS"
1845
1846SERVER_LDFLAGS="$SERVER_LDFLAGS $LIBCURL_LDFLAGS"
1847SERVER_LIBS="$SERVER_LIBS $LIBCURL_LIBS"
1848
1849PROXY_LDFLAGS="$PROXY_LDFLAGS $LIBCURL_LDFLAGS"
1850PROXY_LIBS="$PROXY_LIBS $LIBCURL_LIBS"
1851
1852AM_CONDITIONAL(HAVE_LIBCURL, test "x$found_curl" = "xyes")
1853
1854dnl Starting from 2.0 agent can do web monitoring
1855AGENT_LDFLAGS="$AGENT_LDFLAGS $LIBCURL_LDFLAGS"
1856AGENT_LIBS="$AGENT_LIBS $LIBCURL_LIBS"
1857
1858ZBXGET_LDFLAGS="$ZBXGET_LDFLAGS $ZLIB_LDFLAGS $LIBPTHREAD_LDFLAGS"
1859ZBXGET_LIBS="$ZBXGET_LIBS $ZLIB_LIBS $LIBPTHREAD_LIBS"
1860
1861SENDER_LDFLAGS="$SENDER_LDFLAGS $ZLIB_LDFLAGS $LIBPTHREAD_LDFLAGS"
1862SENDER_LIBS="$SENDER_LIBS $ZLIB_LIBS $LIBPTHREAD_LIBS"
1863
1864ZBXJS_LDFLAGS="$ZBXJS_LDFLAGS $LIBCURL_LDFLAGS"
1865ZBXJS_LIBS="$ZBXJS_LIBS $LIBCURL_LIBS"
1866
1867dnl Check for libpcre, used by Zabbix for regular expressions
1868if test "x$server" = "xyes" || test "x$proxy" = "xyes" || test "x$agent" = "xyes" || test "x$agent2" = "xyes"; then
1869	LIBPCRE_CHECK_CONFIG([no])
1870	if test "x$found_libpcre" != "xyes"; then
1871		AC_MSG_ERROR([Unable to use libpcre (libpcre check failed)])
1872	fi
1873fi
1874
1875CFLAGS="$CFLAGS $LIBPCRE_CFLAGS"
1876LDFLAGS="$LDFLAGS $LIBPCRE_LDFLAGS"
1877if test "x$ARCH" = "xosx"; then
1878	LIBS="$LIBPCRE_LIBS $LIBS"
1879else
1880	LIBS="$LIBS $LIBPCRE_LIBS"
1881fi
1882
1883found_iconv="no"
1884dnl Check for libiconv [by default - skip]
1885LIBICONV_CHECK_CONFIG([no])
1886if test "x$found_iconv" != "xyes"; then
1887	AC_MSG_ERROR([Unable to use iconv (libiconv check failed)])
1888fi
1889LDFLAGS="$LDFLAGS $ICONV_LDFLAGS"
1890LIBS="$LIBS $ICONV_LIBS"
1891
1892RANLIB="ranlib"
1893AC_SUBST(RANLIB)
1894
1895SERVER_CONFIG_FILE="${sysconfdir}/zabbix_server.conf"
1896PROXY_CONFIG_FILE="${sysconfdir}/zabbix_proxy.conf"
1897AGENT_CONFIG_FILE="${sysconfdir}/zabbix_agentd.conf"
1898AGENT2_CONFIG_FILE="${sysconfdir}/zabbix_agent2.conf"
1899WEBSERVICE_CONFIG_FILE="${sysconfdir}/zabbix_web_service.conf"
1900
1901EXTERNAL_SCRIPTS_PATH="${datadir}/zabbix/externalscripts"
1902ALERT_SCRIPTS_PATH="${datadir}/zabbix/alertscripts"
1903
1904CURL_SSL_CERT_LOCATION="${datadir}/zabbix/ssl/certs"
1905CURL_SSL_KEY_LOCATION="${datadir}/zabbix/ssl/keys"
1906
1907LOAD_MODULE_PATH="${libdir}/modules"
1908
1909AC_SUBST(SERVER_LDFLAGS)
1910AC_SUBST(SERVER_LIBS)
1911
1912AC_SUBST(PROXY_LDFLAGS)
1913AC_SUBST(PROXY_LIBS)
1914
1915AC_SUBST(AGENT_LDFLAGS)
1916AC_SUBST(AGENT_LIBS)
1917
1918AC_SUBST(AGENT2_LDFLAGS)
1919AC_SUBST(AGENT2_LIBS)
1920
1921if test "x$HAVE_START_GROUP" = "xyes"; then
1922	LD_START_GROUP=-Wl,--start-group
1923	LD_END_GROUP=-Wl,--end-group
1924fi
1925
1926if test "x$agent2" = "xyes"; then
1927	CGO_CFLAGS=$TLS_CFLAGS
1928	CGO_LDFLAGS="$AGENT2_LDFLAGS $LD_START_GROUP \
1929		\${abs_top_builddir}/src/zabbix_agent/logfiles/libzbxlogfiles.a \
1930		\${abs_top_builddir}/src/libs/zbxcomms/libzbxcomms.a \
1931		\${abs_top_builddir}/src/libs/zbxcommon/libzbxcommon.a \
1932		\${abs_top_builddir}/src/libs/zbxcrypto/libzbxcrypto.a \
1933		\${abs_top_builddir}/src/libs/zbxsys/libzbxsys.a \
1934		\${abs_top_builddir}/src/libs/zbxnix/libzbxnix.a \
1935		\${abs_top_builddir}/src/libs/zbxconf/libzbxconf.a \
1936		\${abs_top_builddir}/src/libs/zbxhttp/libzbxhttp.a \
1937		\${abs_top_builddir}/src/libs/zbxcompress/libzbxcompress.a \
1938		\${abs_top_builddir}/src/libs/zbxregexp/libzbxregexp.a \
1939		\${abs_top_builddir}/src/libs/zbxsysinfo/libzbxagent2sysinfo.a \
1940		\${abs_top_builddir}/src/libs/zbxsysinfo/common/libcommonsysinfo.a \
1941		\${abs_top_builddir}/src/libs/zbxsysinfo/simple/libsimplesysinfo.a \
1942		\${abs_top_builddir}/src/libs/zbxsysinfo/"$ARCH"/libspechostnamesysinfo.a \
1943		\${abs_top_builddir}/src/libs/zbxsysinfo/"$ARCH"/libspecsysinfo.a \
1944		\${abs_top_builddir}/src/libs/zbxexec/libzbxexec.a \
1945		\${abs_top_builddir}/src/libs/zbxalgo/libzbxalgo.a \
1946		\${abs_top_builddir}/src/libs/zbxjson/libzbxjson.a \
1947		$LIBS $AGENT2_LIBS $LD_END_GROUP"
1948
1949	AC_SUBST(CGO_CFLAGS)
1950	AC_SUBST(CGO_LDFLAGS)
1951fi
1952
1953AC_SUBST(ZBXGET_LDFLAGS)
1954AC_SUBST(ZBXGET_LIBS)
1955
1956AC_SUBST(SENDER_LDFLAGS)
1957AC_SUBST(SENDER_LIBS)
1958
1959AC_SUBST(ZBXJS_LDFLAGS)
1960AC_SUBST(ZBXJS_LIBS)
1961
1962AC_SUBST(SERVER_CONFIG_FILE)
1963AC_SUBST(PROXY_CONFIG_FILE)
1964AC_SUBST(AGENT_CONFIG_FILE)
1965AC_SUBST(AGENT2_CONFIG_FILE)
1966AC_SUBST(WEBSERVICE_CONFIG_FILE)
1967
1968AC_SUBST(EXTERNAL_SCRIPTS_PATH)
1969AC_SUBST(ALERT_SCRIPTS_PATH)
1970
1971AC_SUBST(CURL_SSL_CERT_LOCATION)
1972AC_SUBST(CURL_SSL_KEY_LOCATION)
1973
1974AC_SUBST(LOAD_MODULE_PATH)
1975
1976GOBIN=${sbindir}
1977GOCMD=go
1978GOWORKDIR=$ac_abs_confdir/go/src/zabbix
1979
1980export GOBIN=${GOBIN}
1981AC_SUBST(GOBIN)
1982AC_SUBST(GOCMD)
1983AC_SUBST(GOWORKDIR)
1984
1985dnl *****************************************************************
1986dnl *                                                               *
1987dnl *                         Other checks                          *
1988dnl *                                                               *
1989dnl *****************************************************************
1990
1991dnl Automake 1.8 to 1.9.6 sets mkdir_p macro (lower-cased).
1992AC_MSG_CHECKING(for mkdir -p candidate)
1993if test "x${MKDIR_P}" = "x"; then
1994        if test "x${mkdir_p}" = "x"; then
1995                AC_MSG_ERROR([No suitable "mkdir -p" candidate found.])
1996        fi
1997        AC_SUBST([MKDIR_P], ${mkdir_p})
1998fi
1999AC_MSG_RESULT([ok (${MKDIR_P})])
2000
2001dnl Check if process statistics collector should be enabled
2002case "x$ARCH" in
2003	xlinux|xsolaris)
2004		AC_DEFINE(ZBX_PROCSTAT_COLLECTOR, 1 , [Define to 1 on linux and solaris platforms])
2005		;;
2006esac
2007
2008dnl *****************************************************************
2009dnl *                                                               *
2010dnl *                 Output configuration results                  *
2011dnl *                                                               *
2012dnl *****************************************************************
2013
2014m4_ifdef([CONF_TESTS],[CONF_TESTS(ZBXCMOCKA)])
2015
2016AC_OUTPUT([
2017	Makefile
2018	database/Makefile
2019	database/mysql/Makefile
2020	database/oracle/Makefile
2021	database/postgresql/Makefile
2022	database/sqlite3/Makefile
2023	misc/Makefile
2024	src/Makefile
2025	src/go/Makefile
2026	src/libs/Makefile
2027	src/libs/zbxlog/Makefile
2028	src/libs/zbxalgo/Makefile
2029	src/libs/zbxmemory/Makefile
2030	src/libs/zbxcrypto/Makefile
2031	src/libs/zbxconf/Makefile
2032	src/libs/zbxdbcache/Makefile
2033	src/libs/zbxdbhigh/Makefile
2034	src/libs/zbxmedia/Makefile
2035	src/libs/zbxsysinfo/Makefile
2036	src/libs/zbxcommon/Makefile
2037	src/libs/zbxsysinfo/agent/Makefile
2038	src/libs/zbxsysinfo/common/Makefile
2039	src/libs/zbxsysinfo/simple/Makefile
2040	src/libs/zbxsysinfo/linux/Makefile
2041	src/libs/zbxsysinfo/aix/Makefile
2042	src/libs/zbxsysinfo/freebsd/Makefile
2043	src/libs/zbxsysinfo/dragonfly/Makefile
2044	src/libs/zbxsysinfo/hpux/Makefile
2045	src/libs/zbxsysinfo/openbsd/Makefile
2046	src/libs/zbxsysinfo/osx/Makefile
2047	src/libs/zbxsysinfo/solaris/Makefile
2048	src/libs/zbxsysinfo/osf/Makefile
2049	src/libs/zbxsysinfo/netbsd/Makefile
2050	src/libs/zbxsysinfo/unknown/Makefile
2051	src/libs/zbxnix/Makefile
2052	src/libs/zbxsys/Makefile
2053	src/libs/zbxcomms/Makefile
2054	src/libs/zbxcommshigh/Makefile
2055	src/libs/zbxdb/Makefile
2056	src/libs/zbxdbupgrade/Makefile
2057	src/libs/zbxjson/Makefile
2058	src/libs/zbxhttp/Makefile
2059	src/libs/zbxserver/Makefile
2060	src/libs/zbxicmpping/Makefile
2061	src/libs/zbxeval/Makefile
2062	src/libs/zbxexec/Makefile
2063	src/libs/zbxself/Makefile
2064	src/libs/zbxmodules/Makefile
2065	src/libs/zbxregexp/Makefile
2066	src/libs/zbxtasks/Makefile
2067	src/libs/zbxipcservice/Makefile
2068	src/libs/zbxhistory/Makefile
2069	src/libs/zbxcompress/Makefile
2070	src/libs/zbxembed/Makefile
2071	src/libs/zbxprometheus/Makefile
2072	src/libs/zbxvault/Makefile
2073	src/libs/zbxdiag/Makefile
2074	src/libs/zbxtrends/Makefile
2075	src/libs/zbxavailability/Makefile
2076	src/libs/zbxxml/Makefile
2077	src/zabbix_agent/Makefile
2078	src/zabbix_agent/logfiles/Makefile
2079	src/zabbix_get/Makefile
2080	src/zabbix_js/Makefile
2081	src/zabbix_sender/Makefile
2082	src/zabbix_server/Makefile
2083	src/zabbix_server/alerter/Makefile
2084	src/zabbix_server/dbsyncer/Makefile
2085	src/zabbix_server/dbconfig/Makefile
2086	src/zabbix_server/discoverer/Makefile
2087	src/zabbix_server/housekeeper/Makefile
2088	src/zabbix_server/httppoller/Makefile
2089	src/zabbix_server/pinger/Makefile
2090	src/zabbix_server/poller/Makefile
2091	src/zabbix_server/snmptrapper/Makefile
2092	src/zabbix_server/timer/Makefile
2093	src/zabbix_server/trapper/Makefile
2094	src/zabbix_server/escalator/Makefile
2095	src/zabbix_server/proxypoller/Makefile
2096	src/zabbix_server/selfmon/Makefile
2097	src/zabbix_server/vmware/Makefile
2098	src/zabbix_server/taskmanager/Makefile
2099	src/zabbix_server/ipmi/Makefile
2100	src/zabbix_server/odbc/Makefile
2101	src/zabbix_server/scripts/Makefile
2102	src/zabbix_server/preprocessor/Makefile
2103	src/zabbix_server/availability/Makefile
2104	src/zabbix_server/lld/Makefile
2105	src/zabbix_server/reporter/Makefile
2106	src/zabbix_proxy/Makefile
2107	src/zabbix_proxy/heart/Makefile
2108	src/zabbix_proxy/housekeeper/Makefile
2109	src/zabbix_proxy/proxyconfig/Makefile
2110	src/zabbix_proxy/datasender/Makefile
2111	src/zabbix_proxy/taskmanager/Makefile
2112	src/zabbix_java/Makefile
2113	man/Makefile
2114	])
2115
2116dnl The following variables use autoconf variables such as
2117dnl ${sysconfdir} and ${datadir} . Which in turn contain
2118dnl variables such as ${prefix}. In order to completely
2119dnl substitute all variables and output end-value in
2120dnl Configuration output below it is required to perform 2
2121dnl substitutions.
2122
2123SERVER_CONFIG_FILE=`eval echo "${SERVER_CONFIG_FILE}"`
2124SERVER_CONFIG_FILE=`eval echo "${SERVER_CONFIG_FILE}"`
2125
2126PROXY_CONFIG_FILE=`eval echo "${PROXY_CONFIG_FILE}"`
2127PROXY_CONFIG_FILE=`eval echo "${PROXY_CONFIG_FILE}"`
2128
2129AGENT_CONFIG_FILE=`eval echo "${AGENT_CONFIG_FILE}"`
2130AGENT_CONFIG_FILE=`eval echo "${AGENT_CONFIG_FILE}"`
2131
2132AGENT2_CONFIG_FILE=`eval echo "${AGENT2_CONFIG_FILE}"`
2133AGENT2_CONFIG_FILE=`eval echo "${AGENT2_CONFIG_FILE}"`
2134
2135WEBSERVICE_CONFIG_FILE=`eval echo "${WEBSERVICE_CONFIG_FILE}"`
2136WEBSERVICE_CONFIG_FILE=`eval echo "${WEBSERVICE_CONFIG_FILE}"`
2137
2138EXTERNAL_SCRIPTS_PATH=`eval echo "${EXTERNAL_SCRIPTS_PATH}"`
2139EXTERNAL_SCRIPTS_PATH=`eval echo "${EXTERNAL_SCRIPTS_PATH}"`
2140
2141ALERT_SCRIPTS_PATH=`eval echo "${ALERT_SCRIPTS_PATH}"`
2142ALERT_SCRIPTS_PATH=`eval echo "${ALERT_SCRIPTS_PATH}"`
2143
2144CURL_SSL_CERT_LOCATION=`eval echo "${CURL_SSL_CERT_LOCATION}"`
2145CURL_SSL_CERT_LOCATION=`eval echo "${CURL_SSL_CERT_LOCATION}"`
2146
2147CURL_SSL_KEY_LOCATION=`eval echo "${CURL_SSL_KEY_LOCATION}"`
2148CURL_SSL_KEY_LOCATION=`eval echo "${CURL_SSL_KEY_LOCATION}"`
2149
2150LOAD_MODULE_PATH=`eval echo "${LOAD_MODULE_PATH}"`
2151LOAD_MODULE_PATH=`eval echo "${LOAD_MODULE_PATH}"`
2152
2153echo "
2154
2155Configuration:
2156
2157  Detected OS:           ${host_os}
2158  Install path:          ${prefix}
2159  Compilation arch:      ${ARCH}
2160
2161  Compiler:              ${CC}
2162  Compiler flags:        ${CFLAGS}
2163
2164  Library-specific flags:"
2165
2166if test "x$DB_CFLAGS" != "x"; then
2167	echo "    database:              ${DB_CFLAGS}"
2168fi
2169
2170if test "x$LIBXML2_CFLAGS" != "x"; then
2171	echo "    libXML2:               ${LIBXML2_CFLAGS}"
2172fi
2173
2174if test "x$UNIXODBC_CFLAGS" != "x"; then
2175	echo "    unixODBC:              ${UNIXODBC_CFLAGS}"
2176fi
2177
2178if test "x$SNMP_CFLAGS" != "x"; then
2179	echo "    Net-SNMP:              ${SNMP_CFLAGS}"
2180fi
2181
2182if test "x$OPENIPMI_CFLAGS" != "x"; then
2183	echo "    OpenIPMI:              ${OPENIPMI_CFLAGS}"
2184fi
2185
2186if test "x$SSH2_CFLAGS" != "x"; then
2187	echo "    libssh2:               ${SSH2_CFLAGS}"
2188fi
2189
2190if test "x$SSH_CFLAGS" != "x"; then
2191	echo "    libssh:                ${SSH_CFLAGS}"
2192fi
2193
2194if test "x$LIBMODBUS_CFLAGS" != "x"; then
2195	echo "    libmodbus:                ${LIBMODBUS_CFLAGS}"
2196fi
2197
2198if test "x$TLS_CFLAGS" != "x"; then
2199	echo "    TLS:                   ${TLS_CFLAGS}"
2200fi
2201
2202if test "x$LDAP_CPPFLAGS" != "x"; then
2203	echo "    LDAP:                  ${LDAP_CPPFLAGS}"
2204fi
2205
2206if test "x$ICONV_CFLAGS" != "x"; then
2207	echo "    iconv:                 ${ICONV_CFLAGS}"
2208fi
2209
2210if test "x$LIBEVENT_CFLAGS" != "x"; then
2211	echo "    libevent:              ${LIBEVENT_CFLAGS}"
2212fi
2213
2214echo "
2215  Enable server:         ${server}"
2216
2217if test "x$server" != "xno"; then
2218
2219echo "  Server details:
2220    With database:         ${have_db}
2221    WEB Monitoring:        ${have_web_monitoring}"
2222
2223if test "x$have_web_monitoring" = "xcURL"; then
2224echo "      SSL certificates:      ${CURL_SSL_CERT_LOCATION}
2225      SSL keys:              ${CURL_SSL_KEY_LOCATION}"
2226fi
2227
2228echo "    SNMP:                  ${have_snmp}
2229    IPMI:                  ${have_ipmi}
2230    SSH:                   ${have_ssh}
2231    TLS:                   ${have_tls}
2232    ODBC:                  ${have_unixodbc}
2233    Linker flags:          ${SERVER_LDFLAGS} ${LDFLAGS}
2234    Libraries:             ${SERVER_LIBS} ${LIBS}
2235    Configuration file:    ${SERVER_CONFIG_FILE}
2236    External scripts:      ${EXTERNAL_SCRIPTS_PATH}
2237    Alert scripts:         ${ALERT_SCRIPTS_PATH}
2238    Modules:               ${LOAD_MODULE_PATH}"
2239
2240fi
2241
2242echo "
2243  Enable proxy:          ${proxy}"
2244
2245if test "x$proxy" != "xno"; then
2246
2247echo "  Proxy details:
2248    With database:         ${have_db}
2249    WEB Monitoring:        ${have_web_monitoring}"
2250
2251if test "x$have_web_monitoring" = "xcURL"; then
2252echo "      SSL certificates:      ${CURL_SSL_CERT_LOCATION}
2253      SSL keys:              ${CURL_SSL_KEY_LOCATION}"
2254fi
2255
2256echo "    SNMP:                  ${have_snmp}
2257    IPMI:                  ${have_ipmi}
2258    SSH:                   ${have_ssh}
2259    TLS:                   ${have_tls}
2260    ODBC:                  ${have_unixodbc}
2261    Linker flags:          ${PROXY_LDFLAGS} ${LDFLAGS}
2262    Libraries:             ${PROXY_LIBS} ${LIBS}
2263    Configuration file:    ${PROXY_CONFIG_FILE}
2264    External scripts:      ${EXTERNAL_SCRIPTS_PATH}
2265    Modules:               ${LOAD_MODULE_PATH}"
2266
2267fi
2268
2269echo "
2270  Enable agent:          ${agent}"
2271
2272if test "x$agent" != "xno"; then
2273
2274echo "  Agent details:
2275    TLS:                   ${have_tls}
2276    Modbus:                ${have_libmodbus}
2277    Linker flags:          ${AGENT_LDFLAGS} ${LDFLAGS}
2278    Libraries:             ${AGENT_LIBS} ${LIBS}
2279    Configuration file:    ${AGENT_CONFIG_FILE}
2280    Modules:               ${LOAD_MODULE_PATH}"
2281
2282fi
2283
2284echo "
2285  Enable agent 2:        ${agent2}"
2286
2287echo "
2288  Enable web service:    ${webservice}"
2289
2290echo "
2291  Enable Java gateway:   ${java}"
2292
2293if test "x$java" != "xno"; then
2294
2295echo "  Java gateway details:
2296    Java compiler:         ${JAVAC}
2297    Java archiver:         ${JAR}"
2298
2299fi
2300
2301echo "
2302  LDAP support:          ${found_ldap}
2303  IPv6 support:          ${have_ipv6}"
2304
2305echo
2306echo "***********************************************************"
2307echo "*            Now run '${am_make} install'                       *"
2308echo "*                                                         *"
2309echo "*            Thank you for using Zabbix!                  *"
2310echo "*              <http://www.zabbix.com>                    *"
2311echo "***********************************************************"
2312echo
2313