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],[4.0.30]) 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) 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 field updates in struct vminfo_t) 688AC_TRY_COMPILE([ 689#include <sys/sysinfo.h> 690], 691[ 692 vminfo_t vminfo; 693 vminfo.updates; 694], 695AC_DEFINE(HAVE_VMINFO_T_UPDATES,1,[Define to 1 if 'vminfo.updates' exists.]) 696AC_MSG_RESULT(yes), 697AC_MSG_RESULT(no)) 698 699dnl ***************************************************************** 700dnl * * 701dnl * Checks for functions * 702dnl * * 703dnl ***************************************************************** 704 705AC_MSG_CHECKING(for function sysconf() in unistd.h) 706AC_TRY_COMPILE( 707[ 708#include <unistd.h> 709], 710[ int i; 711 712 i=sysconf(_SC_PHYS_PAGES)*sysconf(_SC_PHYS_PAGES); 713 i=sysconf(_SC_AVPHYS_PAGES)*sysconf(_SC_PHYS_PAGES); 714], 715AC_DEFINE(HAVE_UNISTD_SYSCONF,1,[Define to 1 if function 'sysconf' exists.]) 716AC_MSG_RESULT(yes), 717AC_MSG_RESULT(no)) 718 719AC_MSG_CHECKING(for function initgroups()) 720AC_TRY_LINK( 721[ 722#include <sys/types.h> 723#include <grp.h> 724], 725[ 726 char *user = "zabbix"; 727 initgroups(user, 0); 728], 729AC_DEFINE(HAVE_FUNCTION_INITGROUPS,1,[Define to 1 if function 'initgroups' exists.]) 730AC_MSG_RESULT(yes), 731AC_MSG_RESULT(no)) 732 733AC_MSG_CHECKING(for functions seteuid() and setegid()) 734AC_TRY_LINK( 735[ 736#include <sys/types.h> 737#include <unistd.h> 738], 739[ 740 seteuid(0); 741 setegid(0); 742], 743AC_DEFINE(HAVE_FUNCTION_SETEUID,1,[Define to 1 if functions 'seteuid' and 'setegid' exist.]) 744AC_MSG_RESULT(yes), 745AC_MSG_RESULT(no)) 746 747AC_MSG_CHECKING(for function setproctitle()) 748AC_TRY_LINK( 749[ 750#include <sys/types.h> 751#include <unistd.h> 752], 753[ 754 setproctitle("Test %d", 1); 755], 756AC_DEFINE(HAVE_FUNCTION_SETPROCTITLE,1,[Define to 1 if function 'setproctitle' exists.]) 757AC_MSG_RESULT(yes), 758AC_MSG_RESULT(no)) 759 760AC_MSG_CHECKING(for function sysctlbyname()) 761AC_TRY_LINK( 762[ 763#ifdef HAVE_SYS_TYPES_H 764#include <sys/types.h> 765#endif /* HAVE_SYS_TYPES_H */ 766 767#ifdef HAVE_SYS_PARAM_H 768#include <sys/param.h> 769#endif /* HAVE_SYS_PARAM_H */ 770 771#include <sys/sysctl.h> 772], 773[ 774 sysctlbyname("", 0, 0, 0, 0); 775], 776AC_DEFINE(HAVE_FUNCTION_SYSCTLBYNAME,1,[Define to 1 if 'sysctlbyname' exists.]) 777AC_MSG_RESULT(yes), 778AC_MSG_RESULT(no)) 779 780AC_MSG_CHECKING(for function sysctl (KERN_BOOTTIME)) 781AC_TRY_COMPILE( 782[ 783#ifdef HAVE_SYS_TYPES_H 784#include <sys/types.h> 785#endif /* HAVE_SYS_TYPES_H */ 786 787#ifdef HAVE_SYS_PARAM_H 788#include <sys/param.h> 789#endif /* HAVE_SYS_PARAM_H */ 790 791#include <sys/sysctl.h> 792#include <unistd.h> 793#include <time.h> 794#include <sys/time.h> 795], 796[ 797 size_t len; 798 struct timeval uptime; 799 int mib[2]; 800 801 mib[0] = CTL_KERN; 802 mib[1] = KERN_BOOTTIME; 803 804 len = sizeof(uptime); 805 sysctl(mib, 2, &uptime, &len, 0, 0); 806], 807AC_DEFINE(HAVE_FUNCTION_SYSCTL_KERN_BOOTTIME,1,[Define to 1 if 'KERN_BOOTTIME' exists.]) 808AC_MSG_RESULT(yes), 809AC_MSG_RESULT(no)) 810 811AC_MSG_CHECKING(for function sysctl (HW_NCPU)) 812AC_TRY_COMPILE( 813[ 814#ifdef HAVE_SYS_TYPES_H 815#include <sys/types.h> 816#endif /* HAVE_SYS_TYPES_H */ 817 818#ifdef HAVE_SYS_PARAM_H 819#include <sys/param.h> 820#endif /* HAVE_SYS_PARAM_H */ 821 822#include <sys/sysctl.h> 823], 824[ 825 size_t len; 826 int mib[2], ncpu; 827 828 mib[0] = CTL_HW; 829 mib[1] = HW_NCPU; 830 831 len = sizeof(ncpu); 832 sysctl(mib, 2, &ncpu, &len, 0, 0); 833], 834AC_DEFINE(HAVE_FUNCTION_SYSCTL_HW_NCPU,1,[Define to 1 if 'HW_NCPU' exists.]) 835AC_MSG_RESULT(yes), 836AC_MSG_RESULT(no)) 837 838AC_MSG_CHECKING(for function sysctl (KERN_MAXFILES)) 839AC_TRY_COMPILE( 840[ 841#ifdef HAVE_SYS_TYPES_H 842#include <sys/types.h> 843#endif /* HAVE_SYS_TYPES_H */ 844 845#ifdef HAVE_SYS_PARAM_H 846#include <sys/param.h> 847#endif /* HAVE_SYS_PARAM_H */ 848 849#include <sys/sysctl.h> 850], 851[ 852 size_t len; 853 int mib[2], maxfiles; 854 855 mib[0] = CTL_KERN; 856 mib[1] = KERN_MAXFILES; 857 858 len = sizeof(maxfiles); 859 sysctl(mib, 2, &maxfiles, &len, 0, 0); 860], 861AC_DEFINE(HAVE_FUNCTION_SYSCTL_KERN_MAXFILES,1,[Define to 1 if 'KERN_MAXFILES' exists.]) 862AC_MSG_RESULT(yes), 863AC_MSG_RESULT(no)) 864 865AC_MSG_CHECKING(for function sysctl (KERN_MAXPROC)) 866AC_TRY_COMPILE( 867[ 868#ifdef HAVE_SYS_TYPES_H 869#include <sys/types.h> 870#endif /* HAVE_SYS_TYPES_H */ 871 872#ifdef HAVE_SYS_PARAM_H 873#include <sys/param.h> 874#endif /* HAVE_SYS_PARAM_H */ 875 876#include <sys/sysctl.h> 877], 878[ 879 size_t len; 880 int mib[2], maxproc; 881 882 mib[0] = CTL_KERN; 883 mib[1] = KERN_MAXPROC; 884 885 len = sizeof(maxproc); 886 sysctl(mib, 2, &maxproc, &len, 0, 0); 887], 888AC_DEFINE(HAVE_FUNCTION_SYSCTL_KERN_MAXPROC,1,[Define to 1 if 'KERN_MAXPROC' exists.]) 889AC_MSG_RESULT(yes), 890AC_MSG_RESULT(no)) 891 892AC_MSG_CHECKING(for function sysctl (KERN_CPTIME,KERN_CPTIME2)) 893AC_TRY_COMPILE( 894[ 895#include <sys/param.h> 896#include <sys/sysctl.h> 897#if defined(HAVE_SYS_DKSTAT_H) 898# include <sys/dkstat.h> 899#elif defined(HAVE_SYS_SCHED_H) 900# include <sys/sched.h> 901#endif 902], 903[ 904size_t sz; 905int i[] = {CP_USER, CP_NICE, CP_SYS, CP_INTR, CP_IDLE}; 906 907{ 908 long states[CPUSTATES]; 909 int mib[2] = {CTL_KERN, KERN_CPTIME}; 910 911 sz = sizeof(states); 912 sysctl(mib, 2, &states, &sz, NULL, 0); 913} 914 915{ 916 u_int64_t states[CPUSTATES]; 917 int mib[3] = {CTL_KERN, KERN_CPTIME2, 0}; 918 919 sz = sizeof(states); 920 sysctl(mib, 3, &states, &sz, NULL, 0); 921} 922], 923AC_DEFINE(HAVE_FUNCTION_SYSCTL_KERN_CPTIME,1,[Define to 1 if 'KERN_CPTIME,KERN_CPTIME2' exists.]) 924AC_MSG_RESULT(yes), 925AC_MSG_RESULT(no)) 926 927AC_MSG_CHECKING(for function clock_gettime in time.h) 928AC_TRY_LINK([ 929#ifdef HAVE_TIME_H 930# include <time.h> 931#elif HAVE_SYS_TIME_H 932# include <sys/time.h> 933#endif /* HAVE_SYS_TIME_H */ 934], 935[struct timespec tp; 936clock_gettime(CLOCK_REALTIME, &tp); 937], 938AC_DEFINE(HAVE_TIME_CLOCK_GETTIME,1,[Define to 1 if function 'clock_gettime' exists.]) 939AC_MSG_RESULT(yes), 940AC_MSG_RESULT(no)) 941 942dnl ***************************************************************** 943dnl * * 944dnl * Checks for macros * 945dnl * * 946dnl ***************************************************************** 947 948AC_MSG_CHECKING(for macro __va_copy() in stdarg.h) 949AC_TRY_COMPILE( 950[ 951#include <stdarg.h> 952], 953[ 954 va_list src,dst; 955 956 __va_copy(dst,src); 957], 958AC_DEFINE(HAVE___VA_COPY,1,[Define to 1 if macro '__va_copy' exists.]) 959AC_MSG_RESULT(yes), 960AC_MSG_RESULT(no)) 961 962AC_MSG_CHECKING(for macro __VA_ARGS__) 963AC_TRY_COMPILE( 964[ 965#define ZBX_CONST_STRING(str) str 966int test(const char *fmt, ...) { return 0; } 967], 968[ 969#define TEST(fmt, ...) test(ZBX_CONST_STRING(fmt), ##__VA_ARGS__) 970TEST("%s","test"); 971TEST("test"); 972], 973AC_DEFINE(HAVE___VA_ARGS__,1,[Define to 1 if macro '__VA_ARGS__' exists.]) 974AC_MSG_RESULT(yes), 975AC_MSG_RESULT(no)) 976 977dnl ***************************************************************** 978dnl * * 979dnl * Checks for library functions * 980dnl * * 981dnl ***************************************************************** 982 983AC_TYPE_SIGNAL 984AC_REPLACE_FUNCS(getloadavg) 985AC_CHECK_FUNCS(hstrerror) 986AC_CHECK_FUNCS(getenv) 987AC_CHECK_FUNCS(putenv) 988AC_CHECK_FUNCS(sigqueue) 989AC_CHECK_FUNCS(round) 990 991dnl ***************************************************************** 992dnl * * 993dnl * Checks for file system characteristics * 994dnl * * 995dnl ***************************************************************** 996 997AC_MSG_CHECKING(for /proc filesystem) 998if test -d /proc; then 999 AC_MSG_RESULT(yes) 1000 AC_DEFINE(HAVE_PROC,1,[Define to 1 if '/proc' file system should be used.]) 1001else 1002 AC_MSG_RESULT(no) 1003fi 1004 1005AC_MSG_CHECKING(for file /proc/stat) 1006if test -r /proc/stat; then 1007 AC_MSG_RESULT(yes) 1008 AC_DEFINE(HAVE_PROC_STAT,1,[Define to 1 if file '/proc/stat' should be used.]) 1009else 1010 AC_MSG_RESULT(no) 1011fi 1012 1013AC_MSG_CHECKING(for file /proc/cpuinfo) 1014if test -r /proc/cpuinfo; then 1015 AC_MSG_RESULT(yes) 1016 AC_DEFINE(HAVE_PROC_CPUINFO,1,[Define to 1 if file '/proc/cpuinfo' should be used.]) 1017else 1018 AC_MSG_RESULT(no) 1019fi 1020 1021dnl Solaris 1022AC_MSG_CHECKING(for file /proc/0/psinfo) 1023if test -r /proc/0/psinfo; then 1024 AC_MSG_RESULT(yes) 1025 AC_DEFINE(HAVE_PROC_0_PSINFO,1,[Define to 1 if file '/proc/0/psinfo' should be used.]) 1026else 1027 AC_MSG_RESULT(no) 1028fi 1029 1030AC_MSG_CHECKING(for file /proc/loadavg) 1031if test -r /proc/loadavg; then 1032 AC_MSG_RESULT(yes) 1033 AC_DEFINE(HAVE_PROC_LOADAVG,1,[Define to 1 if file '/proc/loadavg' should be used.]) 1034else 1035 AC_MSG_RESULT(no) 1036fi 1037 1038AC_MSG_CHECKING(for file /proc/net/dev) 1039if test -r /proc/net/dev; then 1040 AC_MSG_RESULT(yes) 1041 AC_DEFINE(HAVE_PROC_NET_DEV,1,[Define to 1 if file '/proc/net/dev' should be used.]) 1042else 1043 AC_MSG_RESULT(no) 1044fi 1045 1046dnl ***************************************************************** 1047dnl * * 1048dnl * Checks for compiler characteristics * 1049dnl * * 1050dnl ***************************************************************** 1051 1052dnl Check for %qu format (FreeBSD 4.x) 1053dnl FreeBSD 4.x does not support %llu 1054AC_MSG_CHECKING(for long long format) 1055AC_TRY_RUN( 1056[ 1057#include <sys/types.h> 1058int main() 1059{ 1060 uint64_t i; 1061 1062 sscanf("200000000010020", "%qu", &i); 1063 1064 if (i == 200000000010020) return 0; 1065 else return -1; 1066} 1067], 1068AC_DEFINE(HAVE_LONG_LONG_QU, 1 ,[Define to 1 if format '%qu' exists.]) 1069AC_MSG_RESULT(yes), 1070AC_MSG_RESULT(no), 1071AC_MSG_RESULT(no)) 1072 1073dnl option -rdynamic is needed for readable backtraces 1074AC_MSG_CHECKING(for -rdynamic linking option) 1075saved_LDFLAGS="$LDFLAGS" 1076LDFLAGS="-rdynamic $LDFLAGS" 1077AC_TRY_LINK([#include <execinfo.h>], 1078[void *bcktrc[6]; 1079(void)backtrace(bcktrc, 6); 1080], 1081LDFLAGS="-rdynamic $saved_LDFLAGS" 1082AC_MSG_RESULT(yes), 1083LDFLAGS="$saved_LDFLAGS" 1084AC_MSG_RESULT(no)) 1085 1086dnl ***************************************************************** 1087dnl * * 1088dnl * Checks for operating systems * 1089dnl * * 1090dnl ***************************************************************** 1091 1092AC_MSG_CHECKING(for libperfstat 5.2.0.40 fileset) 1093AC_TRY_COMPILE([#include <sys/protosw.h> 1094#include <libperfstat.h>], 1095[perfstat_memory_total_t memstats; 1096memstats.virt_active = 0; 1097], 1098AC_DEFINE(HAVE_AIXOSLEVEL_520004,1,[Define to 1 if libperfstat 5.2.0.40 fileset exists.]) 1099AC_MSG_RESULT(yes), 1100AC_MSG_RESULT(no)) 1101 1102AC_MSG_CHECKING(for libperfstat 5.3.0.60 fileset) 1103AC_TRY_COMPILE([#include <sys/protosw.h> 1104#include <libperfstat.h>], 1105[perfstat_partition_total_t lparstats; 1106lparstats.type.b.donate_enabled = 0; 1107lparstats.idle_donated_purr = 0; 1108lparstats.busy_donated_purr = 0; 1109lparstats.idle_stolen_purr = 0; 1110lparstats.busy_stolen_purr = 0; 1111], 1112AC_DEFINE(HAVE_AIXOSLEVEL_530006,1,[Define to 1 if libperfstat 5.3.0.60 fileset exists.]) 1113AC_MSG_RESULT(yes), 1114AC_MSG_RESULT(no)) 1115 1116case "$host_os" in 1117linux*) 1118 ARCH="linux" 1119 ;; 1120aix*) 1121 ARCH="aix" 1122 ;; 1123darwin*|rhapsody*) 1124 ARCH="osx" 1125 AC_DEFINE([MAC_OS_X], 1, [Define to 1 if you are using Mac OS X.]) 1126 ;; 1127*solaris*) 1128 ARCH="solaris" 1129 ;; 1130hpux*) 1131 ARCH="hpux" 1132 ;; 1133freebsd*) 1134 ARCH="freebsd" 1135 ;; 1136dragonfly*) 1137 ARCH="dragonfly" 1138 ;; 1139netbsd*) 1140 ARCH="netbsd" 1141 ;; 1142osf*) 1143 ARCH="osf" 1144 ;; 1145openbsd*) 1146 ARCH="openbsd" 1147 ;; 1148*) 1149 ARCH="unknown" 1150 ;; 1151esac 1152 1153AC_MSG_CHECKING(for architecture) 1154AC_MSG_RESULT([$ARCH ($host_os)]) 1155 1156if test "x$ARCH" = "xlinux"; then 1157 AC_MSG_CHECKING([for the linux kernel version]) 1158 1159 kernel=`uname -r` 1160 1161 case "${kernel}" in 1162 2.6.*) 1163 AC_MSG_RESULT([2.6 family (${kernel})]) 1164 AC_DEFINE([KERNEL_2_6], 1, [Define to 1 if you are using Linux 2.6.x]) 1165 ;; 1166 2.4.*) 1167 AC_MSG_RESULT([2.4 family (${kernel})]) 1168 AC_DEFINE([KERNEL_2_4], 1, [Define to 1 if you are using Linux 2.4.x]) 1169 ;; 1170 *) 1171 AC_MSG_RESULT([unknown family (${kernel})]) 1172 ;; 1173 esac 1174fi 1175 1176if test "x$ARCH" = "xsolaris"; then 1177 dnl Forcing a 64-bit application for a 64-bit Solaris 1178 dnl A 32-bit program that uses /proc is able to look at 32-bit processes, 1179 dnl but is not able to understand all attributes of a 64-bit process. 1180 AC_MSG_CHECKING(for -m64 compilation flag) 1181 saved_CFLAGS="$CFLAGS" 1182 CFLAGS="-m64" 1183 AC_TRY_RUN( 1184 [int main(void) {return 0;}], 1185 CFLAGS="-m64 $saved_CFLAGS" 1186 AC_MSG_RESULT(yes), 1187 CFLAGS="$saved_CFLAGS" 1188 AC_MSG_RESULT(no)) 1189fi 1190 1191if test "x$ARCH" = "xhpux"; then 1192 dnl Low Level Discovery needs a way to get the list of network 1193 dnl interfaces available on the monitored system. On HP-UX systems 1194 dnl that way depends on the OS version. 1195 hpux_version=${host_os#hpux} 1196 hpux_major=${hpux_version%.*} 1197 hpux_minor=${hpux_version#*.} 1198 1199 AC_DEFINE_UNQUOTED([HPUX_VERSION], $hpux_major$hpux_minor, [Define to HP-UX version]) 1200 1201 dnl This API level is needed so that "utsname.nodename" is not truncated. 1202 AC_MSG_CHECKING(for -D_HPUX_API_LEVEL=20040821 compilation flag) 1203 saved_CFLAGS="$CFLAGS" 1204 CFLAGS="-D_HPUX_API_LEVEL=20040821" 1205 AC_TRY_RUN( 1206[ 1207#ifdef HAVE_DLFCN_H 1208# include <dlfcn.h> 1209#endif 1210#ifdef HAVE_SYS_UTSNAME_H 1211# include <sys/utsname.h> 1212#endif 1213 1214int main(void) 1215{ 1216 void *p1, *p2; 1217 struct utsname name; 1218 1219 /* check that the compiler (e.g., GCC 4.3.0 and above) supports function-level versioning */ 1220 1221 p1 = uname; 1222 p2 = dlsym(RTLD_DEFAULT, "uname{20040821}"); 1223 1224 if (p1 != p2) 1225 return 1; 1226 1227 /* uname() fails with EFAULT on HP-UX systems that were only partially upgraded to this API level */ 1228 1229 return -1 == uname(&name) ? 1 : 0; 1230} 1231], 1232 CFLAGS="-D_HPUX_API_LEVEL=20040821 $saved_CFLAGS" 1233 AC_MSG_RESULT(yes), 1234 CFLAGS="$saved_CFLAGS" 1235 AC_MSG_RESULT(no)) 1236fi 1237 1238AC_DEFINE_UNQUOTED([ARCH], "${ARCH}", [Define to OS name for code managing]) 1239AC_SUBST(ARCH) 1240 1241AC_CHECK_SIZEOF([void *]) 1242 1243dnl ***************************************************************** 1244dnl * * 1245dnl * Checks for options given on the command line * 1246dnl * * 1247dnl ***************************************************************** 1248 1249AC_ARG_ENABLE(static,[ --enable-static Build statically linked binaries], 1250[case "${enableval}" in 1251 yes) 1252 LDFLAGS="${LDFLAGS} -static" 1253 AC_MSG_CHECKING(if static linking is possible) 1254 AC_LINK_IFELSE([AC_LANG_PROGRAM(,)], 1255 [AC_MSG_RESULT([yes]) 1256 static_linking=yes], 1257 [AC_MSG_RESULT([no]) 1258 static_linking=no]) 1259 if test "x$static_linking" = "xno"; then 1260 AC_MSG_ERROR([static linking is not possible on this system]) 1261 fi 1262 ;; 1263 no) ;; 1264 *) AC_MSG_ERROR([bad value ${enableval} for --enable-static]) ;; 1265esac]) 1266 1267AC_ARG_ENABLE(static-libs,[ --enable-static-libs Build statically linked binaries with selected libs from default folders], 1268[case "${enableval}" in 1269 yes) 1270 static_linking_libs=yes 1271 saved_LIBS="$LIBS" 1272 LIBS="${saved_LIBS} -Wl,-bstatic -Wl,-bdynamic" 1273 AC_MSG_CHECKING([if libs static linking with "-Wl,-b" is possible]) 1274 AC_LINK_IFELSE([AC_LANG_PROGRAM(,)], 1275 [AC_MSG_RESULT([yes]) 1276 static_linking_support="-Wl,-b"], 1277 [AC_MSG_RESULT([no]) 1278 static_linking_support=no]) 1279 LIBS="$saved_LIBS" 1280 1281 if test "x$static_linking_support" = "xno"; then 1282 LIBS="${saved_LIBS} -Wl,-Bstatic -Wl,-Bdynamic" 1283 AC_MSG_CHECKING([if libs static linking with "-Wl,-B" is possible]) 1284 AC_LINK_IFELSE([AC_LANG_PROGRAM(,)], 1285 [AC_MSG_RESULT([yes]) 1286 static_linking_support="-Wl,-B"], 1287 [AC_MSG_RESULT([no]) 1288 static_linking_support=no]) 1289 LIBS="$saved_LIBS" 1290 fi 1291 ;; 1292 no) ;; 1293 *) AC_MSG_ERROR([bad value ${enableval} for --enable-static-libs]) ;; 1294esac]) 1295 1296AC_ARG_ENABLE(server,[ --enable-server Turn on build of Zabbix server], 1297[case "${enableval}" in 1298 yes) server=yes ;; 1299 no) server=no ;; 1300 *) AC_MSG_ERROR([bad value ${enableval} for --enable-server]) ;; 1301esac], 1302[server=no]) 1303AM_CONDITIONAL(SERVER, test "x$server" = "xyes") 1304 1305AC_ARG_ENABLE(proxy,[ --enable-proxy Turn on build of Zabbix proxy], 1306[case "${enableval}" in 1307 yes) proxy=yes ;; 1308 no) proxy=no ;; 1309 *) AC_MSG_ERROR([bad value ${enableval} for --enable-proxy]) ;; 1310esac], 1311[proxy=no]) 1312AM_CONDITIONAL(PROXY, test "x$proxy" = "xyes") 1313 1314AC_ARG_ENABLE(agent,[ --enable-agent Turn on build of Zabbix agent and client utilities], 1315[case "${enableval}" in 1316 yes) agent=yes ;; 1317 no) agent=no ;; 1318 *) AC_MSG_ERROR([bad value ${enableval} for --enable-agent]) ;; 1319esac], 1320[agent=no]) 1321AM_CONDITIONAL(AGENT, test "x$agent" = "xyes") 1322 1323AC_ARG_ENABLE(java,[ --enable-java Turn on build of Zabbix Java gateway], 1324[case "${enableval}" in 1325 yes) java=yes ;; 1326 no) java=no ;; 1327 *) AC_MSG_ERROR([bad value ${enableval} for --enable-java]) ;; 1328esac], 1329[java=no]) 1330AM_CONDITIONAL(JAVA, test "x$java" = "xyes") 1331 1332AC_ARG_ENABLE(ipv6,[ --enable-ipv6 Turn on support of IPv6], 1333[case "${enableval}" in 1334 yes) ipv6=yes ;; 1335 no) ipv6=no ;; 1336 *) AC_MSG_ERROR([bad value ${enableval} for --enable-ipv6]) ;; 1337esac], 1338[ipv6=no]) 1339AM_CONDITIONAL(IPV6, test "x$ipv6" = "xyes") 1340 1341AM_CONDITIONAL([DBSCHEMA], [test -d create]) 1342 1343AM_CONDITIONAL([ZBXCMOCKA], [(test -d tests/) && (test "x$server" = "xyes" || test "x$proxy" = "xyes" || test "x$agent" = "xyes")]) 1344 1345have_db="no" 1346have_unixodbc="no" 1347have_web_monitoring="no" 1348have_jabber="no" 1349have_snmp="no" 1350have_ipmi="no" 1351have_ipv6="no" 1352have_ssh="no" 1353have_tls="no" 1354 1355 1356if test "x$ipv6" = "xyes"; then 1357 AC_DEFINE(HAVE_IPV6,1,[Define to 1 if IPv6 should be enabled.]) 1358 have_ipv6="yes" 1359fi 1360 1361if test "x$server" = "xyes" || test "x$proxy" = "xyes"; then 1362 1363 have_multirow_insert="no" 1364 1365 dnl Checking for IBM DB2 support 1366 AX_LIB_IBM_DB2() 1367 if test "x$want_ibm_db2" = "xyes"; then 1368 if test "x$have_db" != "xno"; then 1369 AC_MSG_ERROR([You can configure for only one database.]) 1370 fi 1371 1372 if test "x$found_ibm_db2" = "xyes"; then 1373 have_db="IBM DB2" 1374 have_multirow_insert="yes" 1375 else 1376 AC_MSG_ERROR([IBM DB2 library not found]) 1377 fi 1378 fi 1379 1380 dnl Checking for MySQL support 1381 AX_LIB_MYSQL() 1382 if test "x$want_mysql" = "xyes"; then 1383 if test "x$have_db" != "xno"; then 1384 AC_MSG_ERROR([You can configure for only one database.]) 1385 fi 1386 1387 if test "x$found_mysql" = "xyes"; then 1388 have_db="MySQL" 1389 have_multirow_insert="yes" 1390 else 1391 AC_MSG_ERROR([MySQL library not found]) 1392 fi 1393 fi 1394 1395 dnl Checking for Oracle support 1396 AX_LIB_ORACLE_OCI([10.0]) 1397 if test "x$want_oracle_oci" = "xyes"; then 1398 if test "x$have_db" != "xno"; then 1399 AC_MSG_ERROR([You can configure for only one database.]) 1400 fi 1401 1402 if test "x$HAVE_ORACLE_OCI" = "xyes"; then 1403 have_db="Oracle" 1404 1405 ORACLE_CPPFLAGS="$ORACLE_OCI_CFLAGS" 1406 ORACLE_LDFLAGS="$ORACLE_OCI_LDFLAGS" 1407 ORACLE_LIBS="$ORACLE_OCI_LIBS" 1408 1409 AC_DEFINE(HAVE_ORACLE,1,[Define to 1 if Oracle should be enabled.]) 1410 else 1411 AC_MSG_ERROR([Oracle OCI library not found]) 1412 fi 1413 fi 1414 1415 dnl Checking for PostgreSQL support 1416 AX_LIB_POSTGRESQL("8.1") 1417 if test "x$want_postgresql" = "xyes"; then 1418 if test "x$have_db" != "xno"; then 1419 AC_MSG_ERROR([You can configure for only one database.]) 1420 fi 1421 1422 if test "x$found_postgresql" = "xyes"; then 1423 if test "$postgresql_version_check" != "1"; then 1424 AC_MSG_ERROR([PostgreSQL version mismatch]) 1425 fi 1426 1427 have_db="PostgreSQL" 1428 1429 if test "$postgresql_version_number" -ge 8002000; then 1430 have_multirow_insert="yes" 1431 fi 1432 1433 else 1434 AC_MSG_ERROR([PostgreSQL library not found]) 1435 fi 1436 fi 1437 1438 dnl Checking for SQLite3 support 1439 AX_LIB_SQLITE3() 1440 if test "x$want_sqlite3" = "xyes"; then 1441 if test "x$server" = "xyes"; then 1442 AC_MSG_ERROR([SQLite is not supported as a main Zabbix database backend.]) 1443 fi 1444 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_sqlite3" = "xyes"; then 1450 have_db="SQLite v3.x" 1451 1452 saved_CPPFLAGS="$CPPFLAGS" 1453 saved_LDFLAGS="$LDFLAGS" 1454 1455 CPPFLAGS="$CPPFLAGS $SQLITE3_CPPFLAGS" 1456 LDFLAGS="$LDFLAGS $SQLITE3_LDFLAGS $SQLITE3_LIBS" 1457 1458 AC_MSG_CHECKING([for function sqlite3_open_v2() in sqlite3.h]) 1459 AC_TRY_LINK([#include <sqlite3.h>], 1460 [sqlite3 *conn = 0; 1461 sqlite3_open_v2("dbname", &conn, SQLITE_OPEN_READWRITE, 0); 1462 ], 1463 AC_DEFINE(HAVE_FUNCTION_SQLITE3_OPEN_V2,1,[Define to 1 if function 'sqlite3_open_v2' exists.]) 1464 AC_MSG_RESULT(yes), 1465 AC_MSG_RESULT(no)) 1466 1467 CPPFLAGS="$saved_CPPFLAGS" 1468 LDFLAGS="$saved_LDFLAGS" 1469 else 1470 AC_MSG_ERROR([SQLite3 library not found]) 1471 fi 1472 fi 1473 1474 AC_MSG_CHECKING(for Zabbix server/proxy database selection) 1475 if test "x$have_db" = "xno"; then 1476 AC_MSG_RESULT(error) 1477 AC_MSG_ERROR([No database selected for Zabbix server/proxy. Use --with-ibm-db2 or --with-mysql or --with-oracle or --with-postgresql or --with-sqlite3.]) 1478 else 1479 AC_MSG_RESULT(ok) 1480 fi 1481 1482 AC_MSG_CHECKING(for multirow insert statements) 1483 if test "x$have_multirow_insert" = "xyes"; then 1484 AC_DEFINE(HAVE_MULTIROW_INSERT,1,[Define to 1 if database supports multirow insert statements.]) 1485 AC_MSG_RESULT(yes) 1486 else 1487 AC_MSG_RESULT(no) 1488 fi 1489 1490 DB_CFLAGS="$IBM_DB2_CPPFLAGS $MYSQL_CFLAGS $ORACLE_CPPFLAGS $POSTGRESQL_CFLAGS $SQLITE3_CPPFLAGS" 1491 DB_LDFLAGS="$IBM_DB2_LDFLAGS $MYSQL_LDFLAGS $ORACLE_LDFLAGS $POSTGRESQL_LDFLAGS $SQLITE3_LDFLAGS" 1492 DB_LIBS="$IBM_DB2_LIBS $MYSQL_LIBS $ORACLE_LIBS $POSTGRESQL_LIBS $SQLITE3_LIBS" 1493 1494 AC_SUBST(DB_CFLAGS) 1495 AC_SUBST(DB_LDFLAGS) 1496 AC_SUBST(DB_LIBS) 1497 1498 SERVER_LDFLAGS="${SERVER_LDFLAGS} ${DB_LDFLAGS}" 1499 SERVER_LIBS="${SERVER_LIBS} ${DB_LIBS}" 1500 1501 PROXY_LDFLAGS="${PROXY_LDFLAGS} ${DB_LDFLAGS}" 1502 PROXY_LIBS="${PROXY_LIBS} ${DB_LIBS}" 1503 1504 dnl Checking for Jabber libraries 1505 JABBER_CHECK_CONFIG() 1506 if test "x$want_jabber" = "xyes"; then 1507 if test "x$found_jabber" != "xyes"; then 1508 AC_MSG_ERROR([Jabber library not found]) 1509 else 1510 have_jabber="yes" 1511 fi 1512 fi 1513 SERVER_LDFLAGS="$SERVER_LDFLAGS $JABBER_LDFLAGS" 1514 SERVER_LIBS="$SERVER_LIBS $JABBER_LIBS" 1515 1516 AC_SUBST(JABBER_CPPFLAGS) 1517 1518 dnl Check for LIBXML2 [by default - skip] 1519 LIBXML2_CHECK_CONFIG([no]) 1520 if test "x$want_libxml2" = "xyes"; then 1521 if test "x$found_libxml2" != "xyes"; then 1522 AC_MSG_ERROR([LIBXML2 library not found]) 1523 else 1524 have_libxml2="yes" 1525 fi 1526 fi 1527 SERVER_LDFLAGS="$SERVER_LDFLAGS $LIBXML2_LDFLAGS" 1528 SERVER_LIBS="$SERVER_LIBS $LIBXML2_LIBS" 1529 1530 PROXY_LDFLAGS="$PROXY_LDFLAGS $LIBXML2_LDFLAGS" 1531 PROXY_LIBS="$PROXY_LIBS $LIBXML2_LIBS" 1532 1533 AC_SUBST(LIBXML2_CFLAGS) 1534 1535 dnl Checking for unixODBC support 1536 LIBUNIXODBC_CHECK_CONFIG([no]) 1537 if test "x$want_unixodbc" = "xyes"; then 1538 if test "x$unixodbc_error" != "x"; then 1539 AC_MSG_ERROR($unixodbc_error) 1540 fi 1541 have_unixodbc="yes" 1542 fi 1543 SERVER_LDFLAGS="$SERVER_LDFLAGS $UNIXODBC_LDFLAGS" 1544 SERVER_LIBS="$SERVER_LIBS $UNIXODBC_LIBS" 1545 1546 PROXY_LDFLAGS="$PROXY_LDFLAGS $UNIXODBC_LDFLAGS" 1547 PROXY_LIBS="$PROXY_LIBS $UNIXODBC_LIBS" 1548 1549 AC_SUBST(UNIXODBC_CFLAGS) 1550 1551 dnl Check for Net-SNMP [by default - skip] 1552 LIBNETSNMP_CHECK_CONFIG([no]) 1553 if test "x$want_netsnmp" = "xyes"; then 1554 if test "x$found_netsnmp" != "xyes"; then 1555 AC_MSG_ERROR([Invalid Net-SNMP directory - unable to find net-snmp-config]) 1556 else 1557 have_snmp="yes" 1558 fi 1559 fi 1560 SERVER_LDFLAGS="$SERVER_LDFLAGS $SNMP_LDFLAGS" 1561 SERVER_LIBS="$SERVER_LIBS $SNMP_LIBS" 1562 1563 PROXY_LDFLAGS="$PROXY_LDFLAGS $SNMP_LDFLAGS" 1564 PROXY_LIBS="$PROXY_LIBS $SNMP_LIBS" 1565 1566 AC_SUBST(SNMP_CFLAGS) 1567 1568 dnl Check for LIBSSH2 [by default - skip] at least of version 1.0.0. 1569 LIBSSH2_CHECK_CONFIG([no]) 1570 LIBSSH_CHECK_CONFIG([no]) 1571 if test "x$want_ssh2" = "xyes"; then 1572 if test "x$want_ssh" != "xno"; then 1573 AC_MSG_ERROR([You can configure for only one SSH library (--with-ssh or --with-ssh2).]) 1574 fi 1575 1576 if test "x$found_ssh2" != "xyes"; then 1577 AC_MSG_ERROR([SSH2 library not found]) 1578 elif test "x$accept_ssh2_version" != "xyes"; then 1579 AC_MSG_ERROR([SSH2 library version requirement not met (>= 1.0.0)]) 1580 else 1581 have_ssh="yes (libssh2)" 1582 fi 1583 fi 1584 SERVER_LDFLAGS="$SERVER_LDFLAGS $SSH2_LDFLAGS" 1585 SERVER_LIBS="$SERVER_LIBS $SSH2_LIBS" 1586 1587 PROXY_LDFLAGS="$PROXY_LDFLAGS $SSH2_LDFLAGS" 1588 PROXY_LIBS="$PROXY_LIBS $SSH2_LIBS" 1589 1590 AC_SUBST(SSH2_CFLAGS) 1591 1592 dnl Check for LIBSSH [by default - skip] at least of version 0.7.0. 1593 if test "x$want_ssh" = "xyes"; then 1594 if test "x$found_ssh" != "xyes"; then 1595 AC_MSG_ERROR([SSH library not found]) 1596 elif test "x$accept_ssh_version" != "xyes"; then 1597 AC_MSG_ERROR([SSH library version requirement not met (>= 0.6.0)]) 1598 else 1599 have_ssh="yes (libssh)" 1600 fi 1601 fi 1602 SERVER_LDFLAGS="$SERVER_LDFLAGS $SSH_LDFLAGS" 1603 SERVER_LIBS="$SERVER_LIBS $SSH_LIBS" 1604 1605 PROXY_LDFLAGS="$PROXY_LDFLAGS $SSH_LDFLAGS" 1606 PROXY_LIBS="$PROXY_LIBS $SSH_LIBS" 1607 1608 AC_SUBST(SSH_CFLAGS) 1609 1610 found_openipmi="no" 1611 dnl Check for libOpenIPMI [by default - skip] 1612 LIBOPENIPMI_CHECK_CONFIG([no]) 1613 if test "x$want_openipmi" = "xyes"; then 1614 if test "x$found_openipmi" != "xyes"; then 1615 AC_MSG_ERROR([Invalid OPENIPMI directory - unable to find ipmiif.h]) 1616 else 1617 have_ipmi="yes" 1618 fi 1619 fi 1620 1621 SERVER_LDFLAGS="$SERVER_LDFLAGS $OPENIPMI_LDFLAGS" 1622 SERVER_LIBS="$SERVER_LIBS $OPENIPMI_LIBS" 1623 1624 PROXY_LDFLAGS="$PROXY_LDFLAGS $OPENIPMI_LDFLAGS" 1625 PROXY_LIBS="$PROXY_LIBS $OPENIPMI_LIBS" 1626 1627 AC_SUBST(OPENIPMI_CFLAGS) 1628 1629 dnl Check for zlib, used by Zabbix server-proxy communications 1630 ZLIB_CHECK_CONFIG([no]) 1631 if test "x$found_zlib" != "xyes"; then 1632 AC_MSG_ERROR([Unable to use zlib (zlib check failed)]) 1633 fi 1634 1635 AC_SUBST(ZLIB_CFLAGS) 1636 1637 dnl Check for 'libpthread' library that supports PTHREAD_PROCESS_SHARED flag 1638 LIBPTHREAD_CHECK_CONFIG([no]) 1639 if test "x$found_libpthread" != "xyes"; then 1640 AC_MSG_ERROR([Unable to use libpthread (libpthread check failed)]) 1641 fi 1642fi 1643 1644SERVER_LDFLAGS="$SERVER_LDFLAGS $ZLIB_LDFLAGS $LIBPTHREAD_LDFLAGS" 1645SERVER_LIBS="$SERVER_LIBS $ZLIB_LIBS $LIBPTHREAD_LIBS" 1646 1647PROXY_LDFLAGS="$PROXY_LDFLAGS $ZLIB_LDFLAGS $LIBPTHREAD_LDFLAGS" 1648PROXY_LIBS="$PROXY_LIBS $ZLIB_LIBS $LIBPTHREAD_LIBS" 1649 1650AGENT_LDFLAGS="$AGENT_LDFLAGS $ZLIB_LDFLAGS $LIBPTHREAD_LDFLAGS" 1651AGENT_LIBS="$AGENT_LIBS $ZLIB_LIBS $LIBPTHREAD_LIBS" 1652 1653AM_CONDITIONAL(HAVE_IPMI, [test "x$have_ipmi" = "xyes"]) 1654AM_CONDITIONAL(HAVE_LIBXML2, test "x$have_libxml2" = "xyes") 1655 1656dnl Check if Zabbix internal IPC services are used 1657have_ipcservice="no" 1658if test "x$have_ipmi" = "xyes"; then 1659 have_ipcservice="yes" 1660fi 1661 1662if test "x$server" = "xyes"; then 1663 have_ipcservice="yes" 1664fi 1665 1666AM_CONDITIONAL(PROXY_IPCSERVICE, [test "x$have_ipmi" = "xyes"]) 1667 1668dnl Check for libevent, used by Zabbix IPC services 1669if test "x$have_ipcservice" = "xyes"; then 1670 AC_DEFINE([HAVE_IPCSERVICE], 1, [Define to 1 if Zabbix IPC services are used]) 1671 1672 LIBEVENT_CHECK_CONFIG([no]) 1673 if test "x$found_libevent" != "xyes"; then 1674 AC_MSG_ERROR([Unable to use libevent (libevent check failed)]) 1675 fi 1676 1677 SERVER_LDFLAGS="$SERVER_LDFLAGS $LIBEVENT_LDFLAGS" 1678 SERVER_LIBS="$SERVER_LIBS $LIBEVENT_LIBS" 1679 1680 if test "x$have_ipmi" = "xyes"; then 1681 PROXY_LDFLAGS="$PROXY_LDFLAGS $LIBEVENT_LDFLAGS" 1682 PROXY_LIBS="$PROXY_LIBS $LIBEVENT_LIBS" 1683 fi 1684fi 1685 1686dnl Check for mbed TLS (PolarSSL) libpolarssl [by default - skip] 1687LIBMBEDTLS_CHECK_CONFIG([no]) 1688if test "x$want_mbedtls" = "xyes"; then 1689 if test "x$have_tls" != "xno"; then 1690 AC_MSG_ERROR([You can configure for only one TLS library (--with-mbedtls, --with-gnutls or --with-openssl).]) 1691 fi 1692 1693 if test "x$found_mbedtls" != "xyes"; then 1694 AC_MSG_ERROR([mbed TLS (PolarSSL) library libpolarssl not found]) 1695 elif test "x$accept_mbedtls_version" != "xyes"; then 1696 AC_MSG_ERROR([mbed TLS (PolarSSL) library version requirement not met (>= 1.3.9)]) 1697 else 1698 have_tls="mbed TLS" 1699 fi 1700 TLS_CFLAGS="$MBEDTLS_CFLAGS" 1701 TLS_LDFLAGS="$MBEDTLS_LDFLAGS" 1702 TLS_LIBS="$MBEDTLS_LIBS" 1703fi 1704 1705dnl Check for GnuTLS libgnutls [by default - skip] 1706LIBGNUTLS_CHECK_CONFIG([no]) 1707if test "x$want_gnutls" = "xyes"; then 1708 if test "x$have_tls" != "xno"; then 1709 AC_MSG_ERROR([You can configure for only one TLS library (--with-mbedtls, --with-gnutls or --with-openssl).]) 1710 fi 1711 1712 if test "x$found_gnutls" != "xyes"; then 1713 AC_MSG_ERROR([GnuTLS library libgnutls not found]) 1714 elif test "x$accept_gnutls_version" != "xyes"; then 1715 AC_MSG_ERROR([GnuTLS library version requirement not met (>= 3.1.18)]) 1716 else 1717 have_tls="GnuTLS" 1718 fi 1719 TLS_CFLAGS="$GNUTLS_CFLAGS" 1720 TLS_LDFLAGS="$GNUTLS_LDFLAGS" 1721 TLS_LIBS="$GNUTLS_LIBS" 1722fi 1723 1724dnl Check for OpenSSL libssl and libcrypto [by default - skip] 1725LIBOPENSSL_CHECK_CONFIG([no]) 1726if test "x$want_openssl" = "xyes"; then 1727 if test "x$have_tls" != "xno"; then 1728 AC_MSG_ERROR([You can configure for only one TLS library (--with-mbedtls, --with-gnutls or --with-openssl).]) 1729 fi 1730 1731 if test "x$found_openssl" != "xOpenSSL" -a "x$found_openssl" != "xOpenSSL (PSK not supported)"; then 1732 AC_MSG_ERROR([OpenSSL library libssl or libcrypto not found]) 1733 elif test "x$accept_openssl_version" != "xyes"; then 1734 AC_MSG_ERROR([OpenSSL library version requirement not met (>= 1.0.1)]) 1735 else 1736 have_tls=$found_openssl 1737 fi 1738 TLS_CFLAGS="$OPENSSL_CFLAGS" 1739 TLS_LDFLAGS="$OPENSSL_LDFLAGS" 1740 TLS_LIBS="$OPENSSL_LIBS" 1741fi 1742AC_SUBST(TLS_CFLAGS) 1743 1744SERVER_LDFLAGS="$SERVER_LDFLAGS $TLS_LDFLAGS" 1745SERVER_LIBS="$SERVER_LIBS $TLS_LIBS" 1746 1747PROXY_LDFLAGS="$PROXY_LDFLAGS $TLS_LDFLAGS" 1748PROXY_LIBS="$PROXY_LIBS $TLS_LIBS" 1749 1750AGENT_LDFLAGS="$AGENT_LDFLAGS $TLS_LDFLAGS" 1751AGENT_LIBS="$AGENT_LIBS $TLS_LIBS" 1752 1753ZBXGET_LDFLAGS="$ZBXGET_LDFLAGS $TLS_LDFLAGS" 1754ZBXGET_LIBS="$ZBXGET_LIBS $TLS_LIBS" 1755 1756SENDER_LDFLAGS="$SENDER_LDFLAGS $TLS_LDFLAGS" 1757SENDER_LIBS="$SENDER_LIBS $TLS_LIBS" 1758 1759if test "x$java" = "xyes"; then 1760 AC_CHECK_PROGS([JAVAC], [javac], [no]) 1761 if test "x$JAVAC" = "xno"; then 1762 AC_MSG_ERROR([Unable to find "javac" executable in path]) 1763 fi 1764 AC_CHECK_PROGS([JAR], [jar], [no]) 1765 if test "x$JAR" = "xno"; then 1766 AC_MSG_ERROR([Unable to find "jar" executable in path]) 1767 fi 1768fi 1769 1770found_ldap="no" 1771dnl Check for libLDAP [by default - skip] 1772LIBLDAP_CHECK_CONFIG([no]) 1773if test "x$want_ldap" = "xyes"; then 1774 if test "x$found_ldap" != "xyes"; then 1775 AC_MSG_ERROR([Invalid LDAP directory - unable to find ldap.h]) 1776 fi 1777fi 1778SERVER_LDFLAGS="$SERVER_LDFLAGS $LDAP_LDFLAGS" 1779SERVER_LIBS="$SERVER_LIBS $LDAP_LIBS" 1780 1781PROXY_LDFLAGS="$PROXY_LDFLAGS $LDAP_LDFLAGS" 1782PROXY_LIBS="$PROXY_LIBS $LDAP_LIBS" 1783 1784AGENT_LDFLAGS="$AGENT_LDFLAGS $LDAP_LDFLAGS" 1785AGENT_LIBS="$AGENT_LIBS $LDAP_LIBS" 1786 1787AC_SUBST(LDAP_CPPFLAGS) 1788 1789found_curl="no" 1790dnl Checking for libCurl [by default - skip] 1791LIBCURL_CHECK_CONFIG(, [7.13.1], [],[]) 1792if test "x$want_curl" = "xyes"; then 1793 if test "x$found_curl" != "xyes"; then 1794 AC_MSG_ERROR([Curl library not found]) 1795 fi 1796fi 1797if test "x$found_curl" = "xyes"; then 1798 have_web_monitoring="cURL" 1799fi 1800CFLAGS="$LIBCURL_CFLAGS $CFLAGS" 1801 1802SERVER_LDFLAGS="$SERVER_LDFLAGS $LIBCURL_LDFLAGS" 1803SERVER_LIBS="$SERVER_LIBS $LIBCURL_LIBS" 1804 1805PROXY_LDFLAGS="$PROXY_LDFLAGS $LIBCURL_LDFLAGS" 1806PROXY_LIBS="$PROXY_LIBS $LIBCURL_LIBS" 1807 1808AM_CONDITIONAL(HAVE_LIBCURL, test "x$found_curl" = "xyes") 1809 1810dnl Starting from 2.0 agent can do web monitoring 1811AGENT_LDFLAGS="$AGENT_LDFLAGS $LIBCURL_LDFLAGS" 1812AGENT_LIBS="$AGENT_LIBS $LIBCURL_LIBS" 1813 1814ZBXGET_LDFLAGS="$ZBXGET_LDFLAGS $ZLIB_LDFLAGS $LIBPTHREAD_LDFLAGS" 1815ZBXGET_LIBS="$ZBXGET_LIBS $ZLIB_LIBS $LIBPTHREAD_LIBS" 1816 1817SENDER_LDFLAGS="$SENDER_LDFLAGS $ZLIB_LDFLAGS $LIBPTHREAD_LDFLAGS" 1818SENDER_LIBS="$SENDER_LIBS $ZLIB_LIBS $LIBPTHREAD_LIBS" 1819 1820dnl Check for libpcre, used by Zabbix for regular expressions 1821if test "x$server" = "xyes" || test "x$proxy" = "xyes" || test "x$agent" = "xyes"; then 1822 LIBPCRE_CHECK_CONFIG([no]) 1823 if test "x$found_libpcre" != "xyes"; then 1824 AC_MSG_ERROR([Unable to use libpcre (libpcre check failed)]) 1825 fi 1826fi 1827 1828CFLAGS="$CFLAGS $LIBPCRE_CFLAGS" 1829LDFLAGS="$LDFLAGS $LIBPCRE_LDFLAGS" 1830if test "x$ARCH" = "xosx"; then 1831 LIBS="$LIBPCRE_LIBS $LIBS" 1832else 1833 LIBS="$LIBS $LIBPCRE_LIBS" 1834fi 1835 1836found_iconv="no" 1837dnl Check for libiconv [by default - skip] 1838LIBICONV_CHECK_CONFIG([no]) 1839if test "x$found_iconv" != "xyes"; then 1840 AC_MSG_ERROR([Unable to use iconv (libiconv check failed)]) 1841fi 1842LDFLAGS="$LDFLAGS $ICONV_LDFLAGS" 1843LIBS="$LIBS $ICONV_LIBS" 1844 1845RANLIB="ranlib" 1846AC_SUBST(RANLIB) 1847 1848SERVER_CONFIG_FILE="${sysconfdir}/zabbix_server.conf" 1849PROXY_CONFIG_FILE="${sysconfdir}/zabbix_proxy.conf" 1850AGENT_CONFIG_FILE="${sysconfdir}/zabbix_agentd.conf" 1851 1852EXTERNAL_SCRIPTS_PATH="${datadir}/zabbix/externalscripts" 1853ALERT_SCRIPTS_PATH="${datadir}/zabbix/alertscripts" 1854 1855CURL_SSL_CERT_LOCATION="${datadir}/zabbix/ssl/certs" 1856CURL_SSL_KEY_LOCATION="${datadir}/zabbix/ssl/keys" 1857 1858LOAD_MODULE_PATH="${libdir}/modules" 1859 1860AC_SUBST(SERVER_LDFLAGS) 1861AC_SUBST(SERVER_LIBS) 1862 1863AC_SUBST(PROXY_LDFLAGS) 1864AC_SUBST(PROXY_LIBS) 1865 1866AC_SUBST(AGENT_LDFLAGS) 1867AC_SUBST(AGENT_LIBS) 1868 1869AC_SUBST(ZBXGET_LDFLAGS) 1870AC_SUBST(ZBXGET_LIBS) 1871 1872AC_SUBST(SENDER_LDFLAGS) 1873AC_SUBST(SENDER_LIBS) 1874 1875AC_SUBST(SERVER_CONFIG_FILE) 1876AC_SUBST(PROXY_CONFIG_FILE) 1877AC_SUBST(AGENT_CONFIG_FILE) 1878 1879AC_SUBST(EXTERNAL_SCRIPTS_PATH) 1880AC_SUBST(ALERT_SCRIPTS_PATH) 1881 1882AC_SUBST(CURL_SSL_CERT_LOCATION) 1883AC_SUBST(CURL_SSL_KEY_LOCATION) 1884 1885AC_SUBST(LOAD_MODULE_PATH) 1886 1887dnl ***************************************************************** 1888dnl * * 1889dnl * Other checks * 1890dnl * * 1891dnl ***************************************************************** 1892 1893dnl Automake 1.8 to 1.9.6 sets mkdir_p macro (lower-cased). 1894AC_MSG_CHECKING(for mkdir -p candidate) 1895if test "x${MKDIR_P}" = "x"; then 1896 if test "x${mkdir_p}" = "x"; then 1897 AC_MSG_ERROR([No suitable "mkdir -p" candidate found.]) 1898 fi 1899 AC_SUBST([MKDIR_P], ${mkdir_p}) 1900fi 1901AC_MSG_RESULT([ok (${MKDIR_P})]) 1902 1903dnl Check if process statistics collector should be enabled 1904case "x$ARCH" in 1905 xlinux|xsolaris) 1906 AC_DEFINE(ZBX_PROCSTAT_COLLECTOR, 1 , [Define to 1 on linux and solaris platforms]) 1907 ;; 1908esac 1909 1910dnl ***************************************************************** 1911dnl * * 1912dnl * Output configuration results * 1913dnl * * 1914dnl ***************************************************************** 1915 1916m4_ifdef([CONF_TESTS],[CONF_TESTS(ZBXCMOCKA)]) 1917 1918AC_OUTPUT([ 1919 Makefile 1920 database/Makefile 1921 database/ibm_db2/Makefile 1922 database/mysql/Makefile 1923 database/oracle/Makefile 1924 database/postgresql/Makefile 1925 database/sqlite3/Makefile 1926 misc/Makefile 1927 src/Makefile 1928 src/libs/Makefile 1929 src/libs/zbxlog/Makefile 1930 src/libs/zbxalgo/Makefile 1931 src/libs/zbxmemory/Makefile 1932 src/libs/zbxcrypto/Makefile 1933 src/libs/zbxconf/Makefile 1934 src/libs/zbxdbcache/Makefile 1935 src/libs/zbxdbhigh/Makefile 1936 src/libs/zbxmedia/Makefile 1937 src/libs/zbxsysinfo/Makefile 1938 src/libs/zbxcommon/Makefile 1939 src/libs/zbxsysinfo/agent/Makefile 1940 src/libs/zbxsysinfo/common/Makefile 1941 src/libs/zbxsysinfo/simple/Makefile 1942 src/libs/zbxsysinfo/linux/Makefile 1943 src/libs/zbxsysinfo/aix/Makefile 1944 src/libs/zbxsysinfo/freebsd/Makefile 1945 src/libs/zbxsysinfo/dragonfly/Makefile 1946 src/libs/zbxsysinfo/hpux/Makefile 1947 src/libs/zbxsysinfo/openbsd/Makefile 1948 src/libs/zbxsysinfo/osx/Makefile 1949 src/libs/zbxsysinfo/solaris/Makefile 1950 src/libs/zbxsysinfo/osf/Makefile 1951 src/libs/zbxsysinfo/netbsd/Makefile 1952 src/libs/zbxsysinfo/unknown/Makefile 1953 src/libs/zbxnix/Makefile 1954 src/libs/zbxsys/Makefile 1955 src/libs/zbxcomms/Makefile 1956 src/libs/zbxcommshigh/Makefile 1957 src/libs/zbxdb/Makefile 1958 src/libs/zbxdbupgrade/Makefile 1959 src/libs/zbxjson/Makefile 1960 src/libs/zbxhttp/Makefile 1961 src/libs/zbxserver/Makefile 1962 src/libs/zbxicmpping/Makefile 1963 src/libs/zbxexec/Makefile 1964 src/libs/zbxself/Makefile 1965 src/libs/zbxmodules/Makefile 1966 src/libs/zbxregexp/Makefile 1967 src/libs/zbxtasks/Makefile 1968 src/libs/zbxipcservice/Makefile 1969 src/libs/zbxhistory/Makefile 1970 src/libs/zbxcompress/Makefile 1971 src/zabbix_agent/Makefile 1972 src/zabbix_get/Makefile 1973 src/zabbix_sender/Makefile 1974 src/zabbix_server/Makefile 1975 src/zabbix_server/alerter/Makefile 1976 src/zabbix_server/dbsyncer/Makefile 1977 src/zabbix_server/dbconfig/Makefile 1978 src/zabbix_server/discoverer/Makefile 1979 src/zabbix_server/housekeeper/Makefile 1980 src/zabbix_server/httppoller/Makefile 1981 src/zabbix_server/pinger/Makefile 1982 src/zabbix_server/poller/Makefile 1983 src/zabbix_server/snmptrapper/Makefile 1984 src/zabbix_server/timer/Makefile 1985 src/zabbix_server/trapper/Makefile 1986 src/zabbix_server/escalator/Makefile 1987 src/zabbix_server/proxypoller/Makefile 1988 src/zabbix_server/selfmon/Makefile 1989 src/zabbix_server/vmware/Makefile 1990 src/zabbix_server/taskmanager/Makefile 1991 src/zabbix_server/ipmi/Makefile 1992 src/zabbix_server/odbc/Makefile 1993 src/zabbix_server/scripts/Makefile 1994 src/zabbix_server/preprocessor/Makefile 1995 src/zabbix_proxy/Makefile 1996 src/zabbix_proxy/heart/Makefile 1997 src/zabbix_proxy/housekeeper/Makefile 1998 src/zabbix_proxy/proxyconfig/Makefile 1999 src/zabbix_proxy/datasender/Makefile 2000 src/zabbix_proxy/taskmanager/Makefile 2001 src/zabbix_java/Makefile 2002 man/Makefile 2003 ]) 2004 2005dnl The following variables use autoconf variables such as 2006dnl ${sysconfdir} and ${datadir} . Which in turn contain 2007dnl variables such as ${prefix}. In order to completely 2008dnl substitute all variables and output end-value in 2009dnl Configuration output below it is required to perform 2 2010dnl substitutions. 2011 2012SERVER_CONFIG_FILE=`eval echo "${SERVER_CONFIG_FILE}"` 2013SERVER_CONFIG_FILE=`eval echo "${SERVER_CONFIG_FILE}"` 2014 2015PROXY_CONFIG_FILE=`eval echo "${PROXY_CONFIG_FILE}"` 2016PROXY_CONFIG_FILE=`eval echo "${PROXY_CONFIG_FILE}"` 2017 2018AGENT_CONFIG_FILE=`eval echo "${AGENT_CONFIG_FILE}"` 2019AGENT_CONFIG_FILE=`eval echo "${AGENT_CONFIG_FILE}"` 2020 2021EXTERNAL_SCRIPTS_PATH=`eval echo "${EXTERNAL_SCRIPTS_PATH}"` 2022EXTERNAL_SCRIPTS_PATH=`eval echo "${EXTERNAL_SCRIPTS_PATH}"` 2023 2024ALERT_SCRIPTS_PATH=`eval echo "${ALERT_SCRIPTS_PATH}"` 2025ALERT_SCRIPTS_PATH=`eval echo "${ALERT_SCRIPTS_PATH}"` 2026 2027CURL_SSL_CERT_LOCATION=`eval echo "${CURL_SSL_CERT_LOCATION}"` 2028CURL_SSL_CERT_LOCATION=`eval echo "${CURL_SSL_CERT_LOCATION}"` 2029 2030CURL_SSL_KEY_LOCATION=`eval echo "${CURL_SSL_KEY_LOCATION}"` 2031CURL_SSL_KEY_LOCATION=`eval echo "${CURL_SSL_KEY_LOCATION}"` 2032 2033LOAD_MODULE_PATH=`eval echo "${LOAD_MODULE_PATH}"` 2034LOAD_MODULE_PATH=`eval echo "${LOAD_MODULE_PATH}"` 2035 2036echo " 2037 2038Configuration: 2039 2040 Detected OS: ${host_os} 2041 Install path: ${prefix} 2042 Compilation arch: ${ARCH} 2043 2044 Compiler: ${CC} 2045 Compiler flags: ${CFLAGS} 2046 2047 Library-specific flags:" 2048 2049if test "x$DB_CFLAGS" != "x"; then 2050 echo " database: ${DB_CFLAGS}" 2051fi 2052 2053if test "x$JABBER_CPPFLAGS" != "x"; then 2054 echo " Jabber: ${JABBER_CPPFLAGS}" 2055fi 2056 2057if test "x$LIBXML2_CFLAGS" != "x"; then 2058 echo " libXML2: ${LIBXML2_CFLAGS}" 2059fi 2060 2061if test "x$UNIXODBC_CFLAGS" != "x"; then 2062 echo " unixODBC: ${UNIXODBC_CFLAGS}" 2063fi 2064 2065if test "x$SNMP_CFLAGS" != "x"; then 2066 echo " Net-SNMP: ${SNMP_CFLAGS}" 2067fi 2068 2069if test "x$OPENIPMI_CFLAGS" != "x"; then 2070 echo " OpenIPMI: ${OPENIPMI_CFLAGS}" 2071fi 2072 2073if test "x$SSH2_CFLAGS" != "x"; then 2074 echo " libssh2: ${SSH2_CFLAGS}" 2075fi 2076 2077if test "x$SSH_CFLAGS" != "x"; then 2078 echo " libssh: ${SSH_CFLAGS}" 2079fi 2080 2081if test "x$TLS_CFLAGS" != "x"; then 2082 echo " TLS: ${TLS_CFLAGS}" 2083fi 2084 2085if test "x$LDAP_CPPFLAGS" != "x"; then 2086 echo " LDAP: ${LDAP_CPPFLAGS}" 2087fi 2088 2089if test "x$ICONV_CFLAGS" != "x"; then 2090 echo " iconv: ${ICONV_CFLAGS}" 2091fi 2092 2093if test "x$LIBEVENT_CFLAGS" != "x"; then 2094 echo " libevent: ${LIBEVENT_CFLAGS}" 2095fi 2096 2097echo " 2098 Enable server: ${server}" 2099 2100if test "x$server" != "xno"; then 2101 2102echo " Server details: 2103 With database: ${have_db} 2104 WEB Monitoring: ${have_web_monitoring}" 2105 2106if test "x$have_web_monitoring" = "xcURL"; then 2107echo " SSL certificates: ${CURL_SSL_CERT_LOCATION} 2108 SSL keys: ${CURL_SSL_KEY_LOCATION}" 2109fi 2110 2111echo " Native Jabber: ${have_jabber} 2112 SNMP: ${have_snmp} 2113 IPMI: ${have_ipmi} 2114 SSH: ${have_ssh} 2115 TLS: ${have_tls} 2116 ODBC: ${have_unixodbc} 2117 Linker flags: ${SERVER_LDFLAGS} ${LDFLAGS} 2118 Libraries: ${SERVER_LIBS} ${LIBS} 2119 Configuration file: ${SERVER_CONFIG_FILE} 2120 External scripts: ${EXTERNAL_SCRIPTS_PATH} 2121 Alert scripts: ${ALERT_SCRIPTS_PATH} 2122 Modules: ${LOAD_MODULE_PATH}" 2123 2124fi 2125 2126echo " 2127 Enable proxy: ${proxy}" 2128 2129if test "x$proxy" != "xno"; then 2130 2131echo " Proxy details: 2132 With database: ${have_db} 2133 WEB Monitoring: ${have_web_monitoring}" 2134 2135if test "x$have_web_monitoring" = "xcURL"; then 2136echo " SSL certificates: ${CURL_SSL_CERT_LOCATION} 2137 SSL keys: ${CURL_SSL_KEY_LOCATION}" 2138fi 2139 2140echo " SNMP: ${have_snmp} 2141 IPMI: ${have_ipmi} 2142 SSH: ${have_ssh} 2143 TLS: ${have_tls} 2144 ODBC: ${have_unixodbc} 2145 Linker flags: ${PROXY_LDFLAGS} ${LDFLAGS} 2146 Libraries: ${PROXY_LIBS} ${LIBS} 2147 Configuration file: ${PROXY_CONFIG_FILE} 2148 External scripts: ${EXTERNAL_SCRIPTS_PATH} 2149 Modules: ${LOAD_MODULE_PATH}" 2150 2151fi 2152 2153echo " 2154 Enable agent: ${agent}" 2155 2156if test "x$agent" != "xno"; then 2157 2158echo " Agent details: 2159 TLS: ${have_tls} 2160 Linker flags: ${AGENT_LDFLAGS} ${LDFLAGS} 2161 Libraries: ${AGENT_LIBS} ${LIBS} 2162 Configuration file: ${AGENT_CONFIG_FILE} 2163 Modules: ${LOAD_MODULE_PATH}" 2164 2165fi 2166 2167echo " 2168 Enable Java gateway: ${java}" 2169 2170if test "x$java" != "xno"; then 2171 2172echo " Java gateway details: 2173 Java compiler: ${JAVAC} 2174 Java archiver: ${JAR}" 2175 2176fi 2177 2178echo " 2179 LDAP support: ${found_ldap} 2180 IPv6 support: ${have_ipv6}" 2181 2182echo 2183echo "***********************************************************" 2184echo "* Now run '${am_make} install' *" 2185echo "* *" 2186echo "* Thank you for using Zabbix! *" 2187echo "* <http://www.zabbix.com> *" 2188echo "***********************************************************" 2189echo 2190