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