You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2359 lines
70 KiB
2359 lines
70 KiB
dnl
|
|
dnl Zabbix
|
|
dnl Copyright (C) 2001-2023 Zabbix SIA
|
|
dnl
|
|
dnl This program is free software; you can redistribute it and/or modify
|
|
dnl it under the terms of the GNU General Public License as published by
|
|
dnl the Free Software Foundation; either version 2 of the License, or
|
|
dnl (at your option) any later version.
|
|
dnl
|
|
dnl This program is distributed in the hope that it will be useful,
|
|
dnl but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
dnl GNU General Public License for more details.
|
|
dnl
|
|
dnl You should have received a copy of the GNU General Public License
|
|
dnl along with this program; if not, write to the Free Software
|
|
dnl Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
dnl
|
|
|
|
dnl Process this file with autoconf to produce a configure script.
|
|
|
|
AC_INIT([Zabbix],[7.0.0alpha4])
|
|
AC_CONFIG_SRCDIR(src/zabbix_server/server.c)
|
|
AM_INIT_AUTOMAKE([subdir-objects tar-pax])
|
|
|
|
AC_MSG_NOTICE([Configuring $PACKAGE_NAME $PACKAGE_VERSION])
|
|
|
|
AC_PROG_MAKE_SET
|
|
|
|
AC_CONFIG_HEADERS(include/common/config.h)
|
|
|
|
AC_SUBST(DEFAULT_INCLUDES, ['-I$(top_srcdir)/include/common -I$(top_srcdir)/include'])
|
|
|
|
AC_CANONICAL_HOST
|
|
|
|
dnl *****************************************************************
|
|
dnl * *
|
|
dnl * Checks for programs *
|
|
dnl * *
|
|
dnl *****************************************************************
|
|
|
|
AC_PROG_CC([cc c99 gcc clang])
|
|
AM_PROG_CC_C_O
|
|
|
|
dnl *****************************************************************
|
|
dnl * *
|
|
dnl * Checks for header files *
|
|
dnl * *
|
|
dnl *****************************************************************
|
|
|
|
AC_PROG_EGREP
|
|
|
|
AC_CHECK_HEADERS(stdio.h stdlib.h string.h unistd.h netdb.h signal.h \
|
|
syslog.h time.h errno.h sys/types.h sys/stat.h netinet/in.h \
|
|
math.h sys/socket.h dirent.h ctype.h \
|
|
mtent.h fcntl.h sys/param.h arpa/inet.h \
|
|
sys/vfs.h sys/pstat.h sys/sysinfo.h sys/statvfs.h sys/statfs.h \
|
|
sys/socket.h sys/loadavg.h arpa/inet.h \
|
|
sys/vmmeter.h strings.h vm/vm_param.h \
|
|
sys/time.h kstat.h sys/syscall.h sys/sysmacros.h \
|
|
stdint.h mach/host_info.h mach/mach_host.h knlist.h pwd.h \
|
|
sys/var.h arpa/nameser.h assert.h sys/dkstat.h sys/disk.h sys/sched.h \
|
|
zone.h nlist.h kvm.h linux/kernel.h procinfo.h sys/dk.h \
|
|
sys/resource.h pthread.h windows.h process.h conio.h sys/wait.h \
|
|
stdarg.h winsock2.h pdh.h psapi.h sys/sem.h sys/ipc.h sys/shm.h Winldap.h \
|
|
Winber.h lber.h ws2tcpip.h inttypes.h sys/file.h grp.h \
|
|
execinfo.h sys/systemcfg.h sys/mnttab.h mntent.h sys/times.h \
|
|
dlfcn.h sys/utsname.h sys/un.h sys/protosw.h stddef.h limits.h float.h poll.h)
|
|
AC_CHECK_HEADERS(resolv.h, [], [], [
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
# include <sys/types.h>
|
|
#endif
|
|
#ifdef HAVE_NETINET_IN_H
|
|
# include <netinet/in.h>
|
|
#endif
|
|
#ifdef HAVE_ARPA_NAMESER_H
|
|
# include <arpa/nameser.h>
|
|
#endif
|
|
#ifdef HAVE_NETDB_H
|
|
#if defined(_AIX) /* AIX 5.1 needs this to get hstrerror() declaration */
|
|
#define _USE_IRS
|
|
#endif
|
|
# include <netdb.h>
|
|
#endif
|
|
])
|
|
AC_CHECK_HEADERS(net/if.h net/if_mib.h, [], [], [
|
|
#include <stdio.h>
|
|
#ifdef STDC_HEADERS
|
|
# include <stdlib.h>
|
|
# include <stddef.h>
|
|
#else
|
|
# ifdef HAVE_STDLIB_H
|
|
# include <stdlib.h>
|
|
# endif
|
|
#endif
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
# include <sys/types.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_SOCKET_H
|
|
# include <sys/socket.h>
|
|
#endif
|
|
/* for net/if_mib.h */
|
|
#ifdef HAVE_NET_IF_H
|
|
# include <net/if.h>
|
|
#endif
|
|
])
|
|
|
|
AC_MSG_CHECKING(whether compiler supports -Werror=cpp)
|
|
checked_werror_cpp_CFLAGS=""
|
|
saved_CFLAGS="$CFLAGS"
|
|
CFLAGS="$CFLAGS -Werror=cpp"
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[
|
|
void f() {};
|
|
]])],[checked_werror_cpp_CFLAGS="-Werror=cpp"
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)
|
|
])
|
|
CFLAGS="$saved_CFLAGS"
|
|
|
|
saved_CFLAGS="$CFLAGS"
|
|
CFLAGS="$checked_werror_cpp_CFLAGS $CFLAGS"
|
|
AC_CHECK_HEADERS(sys/mount.h sys/proc.h sys/sysctl.h sys/user.h, [], [], [
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
# include <sys/types.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_PARAM_H
|
|
# include <sys/param.h>
|
|
#endif
|
|
])
|
|
CFLAGS="$saved_CFLAGS"
|
|
|
|
AC_CHECK_HEADERS(sys/swap.h, [], [], [
|
|
#ifdef HAVE_SYS_PARAM_H
|
|
# include <sys/param.h>
|
|
#endif
|
|
])
|
|
AC_CHECK_HEADERS(sys/ucontext.h, [], [], [
|
|
#ifdef HAVE_SIGNAL_H
|
|
# include <signal.h>
|
|
#endif
|
|
])
|
|
AC_CHECK_HEADERS(devstat.h, [], [], [
|
|
#ifdef HAVE_SYS_DKSTAT_H
|
|
# include <sys/dkstat.h>
|
|
#endif
|
|
])
|
|
AC_CHECK_HEADERS(linux/netlink.h, [
|
|
AC_CHECK_HEADERS(linux/inet_diag.h, [
|
|
AC_DEFINE([HAVE_INET_DIAG], 1, [Define to 1 if you have NETLINK INET_DIAG support.])
|
|
])
|
|
], [], [
|
|
#ifdef HAVE_SYS_SOCKET_H
|
|
# include <sys/socket.h>
|
|
#endif
|
|
])
|
|
AC_CHECK_HEADERS(libperfstat.h, [], [], [
|
|
#ifdef HAVE_SYS_PROTOSW_H
|
|
# include <sys/protosw.h>
|
|
#endif
|
|
])
|
|
|
|
dnl Kluge for building wihout pkg-config
|
|
m4_ifdef([PKG_PROG_PKG_CONFIG], [], [ AC_DEFUN([PKG_PROG_PKG_CONFIG], []) ])
|
|
|
|
dnl *****************************************************************
|
|
dnl * *
|
|
dnl * Checks for libraries *
|
|
dnl * *
|
|
dnl *****************************************************************
|
|
|
|
AC_SEARCH_LIBS(socket, socket)
|
|
AC_SEARCH_LIBS(kstat_open, kstat)
|
|
AC_SEARCH_LIBS(inet_ntoa, nsl)
|
|
AC_SEARCH_LIBS(clock_gettime, rt)
|
|
AC_SEARCH_LIBS(dlopen, dl)
|
|
|
|
dnl AIX
|
|
AC_SEARCH_LIBS(perfstat_memory_total, perfstat, [AC_DEFINE([HAVE_LIBPERFSTAT], 1, [Define to 1 if you have the 'libperfstat' library (-lperfstat)])])
|
|
AC_SEARCH_LIBS(devstat_getdevs, devstat, [AC_DEFINE([HAVE_LIBDEVSTAT], 1, [Define to 1 if you have the 'libdevstat' library (-ldevstat)])])
|
|
AC_SEARCH_LIBS(getdevs, devstat, [AC_DEFINE([HAVE_LIBDEVSTAT], 1, [Define to 1 if you have the 'libdevstat' library (-ldevstat)])])
|
|
|
|
dnl on FreeBSD we have to link with -lexecinfo to get backtraces and also check jail_getname() availability (available after __FreeBSD_version >= 800099)
|
|
AC_SEARCH_LIBS(backtrace_symbols, execinfo, [AC_DEFINE([HAVE_LIBEXECINFO], 1, [Define to 1 if you have the 'libexecinfo' library (-lexecinfo)])])
|
|
AC_SEARCH_LIBS(jail_getname, jail, [AC_DEFINE([HAVE_LIBJAIL], 1, [Define to 1 if you have 'libjail' library (-ljail)])])
|
|
|
|
AC_CHECK_LIB(m, main)
|
|
AC_CHECK_LIB(kvm, main)
|
|
AC_CHECK_LIB(pthread, main)
|
|
|
|
dnl check for DNS lookup functions
|
|
found_resolv="no"
|
|
LIBRESOLV_CHECK_CONFIG([no])
|
|
if test "x$found_resolv" != "xyes"; then
|
|
AC_MSG_ERROR([Unable to do DNS lookups (libresolv check failed)])
|
|
fi
|
|
LIBS="${LIBS} ${RESOLV_LIBS}"
|
|
|
|
dnl *****************************************************************
|
|
dnl * *
|
|
dnl * Checks for type definitions and structures *
|
|
dnl * *
|
|
dnl *****************************************************************
|
|
|
|
dnl large file support
|
|
largefile=yes
|
|
|
|
dnl disable large file support on 32-bit Solaris as it's incompatible with procfs and swapctl
|
|
case "${host_os}" in
|
|
solaris*)
|
|
largefile=no
|
|
;;
|
|
esac
|
|
|
|
if test "x$largefile" = "xyes"; then
|
|
AC_SYS_LARGEFILE
|
|
fi
|
|
|
|
AC_C_CONST
|
|
AC_TYPE_PID_T
|
|
|
|
AC_MSG_CHECKING(for socklen_t)
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
#include <sys/types.h>
|
|
#include <unistd.h>
|
|
#include <sys/socket.h>
|
|
]], [[socklen_t s;]])],[AC_MSG_RESULT(yes)],[AC_DEFINE(socklen_t, int, [Define socklen_t type.])
|
|
AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for actual socklen_t parameter type in socket functions)
|
|
zbx_socklen_t=
|
|
for arg2 in "struct sockaddr" void; do
|
|
for arg3 in socklen_t size_t int; do
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
# include <sys/types.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_SOCKET_H
|
|
# include <sys/socket.h>
|
|
#endif
|
|
extern int getpeername(int sockfd, $arg2 *addr, $arg3 *addrlen);
|
|
]], [[
|
|
$arg3 addrlen;
|
|
getpeername(0, 0, &addrlen);
|
|
]])],[
|
|
zbx_socklen_t="$arg3"
|
|
break 2
|
|
],[])
|
|
done
|
|
done
|
|
if test "x$zbx_socklen_t" != "x"; then
|
|
AC_MSG_RESULT($zbx_socklen_t)
|
|
AC_DEFINE_UNQUOTED(ZBX_SOCKLEN_T, $zbx_socklen_t, [Define actual socklen_t parameter type in socket functions.])
|
|
else
|
|
AC_MSG_RESULT(leaving undefined)
|
|
fi
|
|
|
|
AC_MSG_CHECKING(for integer field name in union sigval of struct siginfo_t)
|
|
zbx_sival_int=
|
|
for field in sival_int sigval_int; do
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
#ifdef HAVE_SIGNAL_H
|
|
# include <signal.h>
|
|
#endif
|
|
]], [[
|
|
siginfo_t siginfo;
|
|
siginfo.si_value.$field = 0;
|
|
]])],[
|
|
zbx_sival_int="$field"
|
|
break
|
|
],[])
|
|
done
|
|
if test "x$zbx_sival_int" != "x"; then
|
|
AC_MSG_RESULT($zbx_sival_int)
|
|
AC_DEFINE_UNQUOTED(ZBX_SIVAL_INT, $zbx_sival_int, [Define integer field name in union 'sigval' of struct 'siginfo_t'])
|
|
else
|
|
AC_MSG_ERROR(Unable to find integer field name in union sigval of struct siginfo_t)
|
|
fi
|
|
|
|
AC_MSG_CHECKING(for res_ninit)
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
# include <sys/types.h>
|
|
#endif
|
|
#ifdef HAVE_NETINET_IN_H
|
|
# include <netinet/in.h>
|
|
#endif
|
|
#ifdef HAVE_ARPA_NAMESER_H
|
|
# include <arpa/nameser.h>
|
|
#endif
|
|
#ifdef HAVE_RESOLV_H
|
|
# include <resolv.h>
|
|
#endif
|
|
#ifndef C_IN
|
|
# define C_IN ns_c_in
|
|
#endif /* C_IN */
|
|
#ifndef T_SOA
|
|
# define T_SOA ns_t_soa
|
|
#endif /* T_SOA */
|
|
]], [[
|
|
struct __res_state res_state_local;
|
|
|
|
res_ninit(&res_state_local);
|
|
]])],[AC_DEFINE(HAVE_RES_NINIT,1,Define to 1 if 'res_ninit' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for res_ndestroy)
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
# include <sys/types.h>
|
|
#endif
|
|
#ifdef HAVE_NETINET_IN_H
|
|
# include <netinet/in.h>
|
|
#endif
|
|
#ifdef HAVE_ARPA_NAMESER_H
|
|
# include <arpa/nameser.h>
|
|
#endif
|
|
#ifdef HAVE_RESOLV_H
|
|
# include <resolv.h>
|
|
#endif
|
|
#ifndef C_IN
|
|
# define C_IN ns_c_in
|
|
#endif /* C_IN */
|
|
#ifndef T_SOA
|
|
# define T_SOA ns_t_soa
|
|
#endif /* T_SOA */
|
|
]], [[
|
|
struct __res_state res_state_local;
|
|
|
|
res_ninit(&res_state_local);
|
|
res_ndestroy(&res_state_local);
|
|
]])],[AC_DEFINE(HAVE_RES_NDESTROY,1,Define to 1 if 'res_ndestroy' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for _res._u._ext.nsaddrs[])
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
# include <sys/types.h>
|
|
#endif
|
|
#ifdef HAVE_NETINET_IN_H
|
|
# include <netinet/in.h>
|
|
#endif
|
|
#ifdef HAVE_ARPA_NAMESER_H
|
|
# include <arpa/nameser.h>
|
|
#endif
|
|
#ifdef HAVE_RESOLV_H
|
|
# include <resolv.h>
|
|
#endif
|
|
#ifndef C_IN
|
|
# define C_IN ns_c_in
|
|
#endif /* C_IN */
|
|
#ifndef T_SOA
|
|
# define T_SOA ns_t_soa
|
|
#endif /* T_SOA */
|
|
]], [[
|
|
struct sockaddr_in6 *sockaddrin6;
|
|
|
|
sockaddrin6 = _res._u._ext.nsaddrs[0];
|
|
]])],[AC_DEFINE(HAVE_RES_U_EXT,1,Define to 1 if '_res._u._ext.nsaddrs[]' exists. /Linux/)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for _res._u._ext.ext)
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
# include <sys/types.h>
|
|
#endif
|
|
#ifdef HAVE_NETINET_IN_H
|
|
# include <netinet/in.h>
|
|
#endif
|
|
#ifdef HAVE_ARPA_NAMESER_H
|
|
# include <arpa/nameser.h>
|
|
#endif
|
|
#ifdef HAVE_RESOLV_H
|
|
# include <resolv.h>
|
|
#endif
|
|
#ifndef C_IN
|
|
# define C_IN ns_c_in
|
|
#endif /* C_IN */
|
|
#ifndef T_SOA
|
|
# define T_SOA ns_t_soa
|
|
#endif /* T_SOA */
|
|
]], [[
|
|
struct __res_state_ext *ext;
|
|
|
|
ext = _res._u._ext.ext;
|
|
]])],[AC_DEFINE(HAVE_RES_U_EXT_EXT,1,Define to 1 if '_res._u._ext.ext' exists. /BSD/)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for _res._ext.ext.nsaddrs[])
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
# include <sys/types.h>
|
|
#endif
|
|
#ifdef HAVE_NETINET_IN_H
|
|
# include <netinet/in.h>
|
|
#endif
|
|
#ifdef HAVE_ARPA_NAMESER_H
|
|
# include <arpa/nameser.h>
|
|
#endif
|
|
#ifdef HAVE_RESOLV_H
|
|
# include <resolv.h>
|
|
#endif
|
|
#ifndef C_IN
|
|
# define C_IN ns_c_in
|
|
#endif /* C_IN */
|
|
#ifndef T_SOA
|
|
# define T_SOA ns_t_soa
|
|
#endif /* T_SOA */
|
|
]], [[
|
|
union res_sockaddr_union *na;
|
|
|
|
na = &_res._ext.ext.nsaddrs[0];
|
|
]])],[AC_DEFINE(HAVE_RES_EXT_EXT,1,Define to 1 if '_res._ext.ext.nsaddrs[]' exists. /AIX/)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for struct sockaddr_in6.sin6_len)
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
# include <sys/types.h>
|
|
#endif
|
|
#ifdef HAVE_NETINET_IN_H
|
|
# include <netinet/in.h>
|
|
#endif
|
|
#ifdef HAVE_ARPA_NAMESER_H
|
|
# include <arpa/nameser.h>
|
|
#endif
|
|
#ifdef HAVE_RESOLV_H
|
|
# include <resolv.h>
|
|
#endif
|
|
#ifndef C_IN
|
|
# define C_IN ns_c_in
|
|
#endif /* C_IN */
|
|
#ifndef T_SOA
|
|
# define T_SOA ns_t_soa
|
|
#endif /* T_SOA */
|
|
]], [[
|
|
struct sockaddr_in6 sin6;
|
|
unsigned int len;
|
|
|
|
len = sin6.sin6_len;
|
|
]])],[AC_DEFINE(HAVE_RES_SIN6_LEN,1,Define to 1 if 'sockaddr_in6.sin6_len' exists. /BSD/)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for union semun)
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
#include <sys/types.h>
|
|
#include <sys/ipc.h>
|
|
#include <sys/sem.h>
|
|
]], [[union semun foo;]])],[AC_DEFINE(HAVE_SEMUN, 1, Define to 1 if union 'semun' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for struct swaptable in sys/swap.h)
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
#include <stdlib.h>
|
|
#include <sys/types.h>
|
|
#include <sys/syscall.h>
|
|
#include <sys/swap.h>
|
|
|
|
#ifndef NULL
|
|
#define NULL (void *)0
|
|
#endif
|
|
]], [[
|
|
register int cnt, i;
|
|
register int t, f;
|
|
struct swaptable *swt;
|
|
struct swapent *ste;
|
|
static char path[256];
|
|
|
|
/* get total number of swap entries */
|
|
cnt = swapctl(SC_GETNSWP, 0);
|
|
|
|
/* allocate enough space to hold count + n swapents */
|
|
swt = (struct swaptable *)malloc(sizeof(int) +
|
|
cnt * sizeof(struct swapent));
|
|
if (swt == NULL)
|
|
{
|
|
return;
|
|
}
|
|
swt->swt_n = cnt;
|
|
|
|
/* fill in ste_path pointers: we do not care about the paths, so we
|
|
point
|
|
them all to the same buffer */
|
|
ste = &(swt->swt_ent[0]);
|
|
i = cnt;
|
|
while (--i >= 0)
|
|
{
|
|
ste++->ste_path = path;
|
|
}
|
|
|
|
/* grab all swap info */
|
|
swapctl(SC_LIST, swt);
|
|
|
|
/* walk through the structs and sum up the fields */
|
|
t = f = 0;
|
|
ste = &(swt->swt_ent[0]);
|
|
i = cnt;
|
|
while (--i >= 0)
|
|
{
|
|
/* do not count slots being deleted */
|
|
if (!(ste->ste_flags & ST_INDEL) &&
|
|
!(ste->ste_flags & ST_DOINGDEL))
|
|
{
|
|
t += ste->ste_pages;
|
|
f += ste->ste_free;
|
|
} ste++;
|
|
}
|
|
|
|
/* fill in the results */
|
|
free(swt);
|
|
|
|
]])],[AC_DEFINE(HAVE_SYS_SWAP_SWAPTABLE,1,Define to 1 if struct 'swaptable' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for struct sensordev in sys/sensors.h)
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
#include <stdlib.h>
|
|
#include <sys/queue.h>
|
|
#include <sys/sensors.h>]], [[struct sensordev sensordev;
|
|
sensordev.xname[0]='\0';
|
|
sensordev.maxnumt[0]=0;
|
|
]])],[AC_DEFINE(HAVE_SENSORDEV,1,Define to 1 if struct 'sensordev' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for struct statvfs64 in sys/statvfs.h)
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
# include <sys/types.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_STATVFS_H
|
|
# include <sys/statvfs.h>
|
|
#endif
|
|
]], [[
|
|
struct statvfs64 s;
|
|
s.f_frsize = s.f_blocks = s.f_bfree = s.f_bavail = 0;
|
|
statvfs64("/", &s);
|
|
]])],[AC_DEFINE(HAVE_SYS_STATVFS64, 1, Define to 1 if struct 'statvfs64' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for struct statfs64 in sys/statfs.h)
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
# include <sys/types.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_STATFS_H
|
|
# include <sys/statfs.h>
|
|
#endif
|
|
]], [[
|
|
struct statfs64 s;
|
|
s.f_bsize = s.f_blocks = s.f_bfree = s.f_bavail = 0;
|
|
statfs64("/", &s);
|
|
]])],[AC_DEFINE(HAVE_SYS_STATFS64, 1, Define to 1 if struct 'statfs64' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for field ss_family in struct sockaddr_storage)
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]], [[struct sockaddr_storage ss;
|
|
ss.ss_family = 0;
|
|
]])],[AC_DEFINE(HAVE_SOCKADDR_STORAGE_SS_FAMILY, 1, Define to 1 if 'sockaddr_storage.ss_family' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for field mem_unit in struct sysinfo)
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/sysinfo.h>]], [[struct sysinfo sysinfo;
|
|
sysinfo.mem_unit=0;
|
|
]])],[AC_DEFINE(HAVE_SYSINFO_MEM_UNIT,1,Define to 1 if 'sysinfo.mem_unit' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for field freeswap in struct sysinfo)
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/sysinfo.h>]], [[struct sysinfo sysinfo;
|
|
sysinfo.freeswap=0;
|
|
]])],[AC_DEFINE(HAVE_SYSINFO_FREESWAP,1,Define to 1 if 'sysinfo.freeswap' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for field totalswap in struct sysinfo)
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/sysinfo.h>]], [[struct sysinfo sysinfo;
|
|
sysinfo.totalswap=0;
|
|
]])],[AC_DEFINE(HAVE_SYSINFO_TOTALSWAP,1,Define to 1 if 'sysinfo.totalswap' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for field totalram in struct sysinfo)
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/sysinfo.h>]], [[struct sysinfo sysinfo;
|
|
sysinfo.totalram=0;
|
|
]])],[AC_DEFINE(HAVE_SYSINFO_TOTALRAM,1,Define to 1 if 'sysinfo.totalram' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for field sharedram in struct sysinfo)
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/sysinfo.h>]], [[struct sysinfo sysinfo;
|
|
sysinfo.sharedram=0;
|
|
]])],[AC_DEFINE(HAVE_SYSINFO_SHAREDRAM,1,Define to 1 if 'sysinfo.sharedram' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for field bufferram in struct sysinfo)
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/sysinfo.h>]], [[struct sysinfo sysinfo;
|
|
sysinfo.bufferram=0;
|
|
]])],[AC_DEFINE(HAVE_SYSINFO_BUFFERRAM,1,Define to 1 if 'sysinfo.bufferram' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for field freeram in struct sysinfo)
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/sysinfo.h>]], [[struct sysinfo sysinfo;
|
|
sysinfo.freeram=0;
|
|
]])],[AC_DEFINE(HAVE_SYSINFO_FREERAM,1,Define to 1 if 'sysinfo.freeram' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for field uptime in struct sysinfo)
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/sysinfo.h>]], [[struct sysinfo sysinfo;
|
|
sysinfo.uptime=0;
|
|
]])],[AC_DEFINE(HAVE_SYSINFO_UPTIME,1,Define to 1 if 'sysinfo.uptime' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for field procs in struct sysinfo)
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/sysinfo.h>]], [[struct sysinfo sysinfo;
|
|
sysinfo.procs=0;
|
|
]])],[AC_DEFINE(HAVE_SYSINFO_PROCS,1,Define to 1 if 'sysinfo.procs' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for field tm_gmtoff in struct tm)
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
#ifdef HAVE_SYS_TIME_H
|
|
#include <sys/time.h>
|
|
#endif /* HAVE_SYS_TIME_H */
|
|
|
|
#ifdef HAVE_TIME_H
|
|
#include <time.h>
|
|
#endif /* HAVE_TIME_H */
|
|
]], [[
|
|
struct tm tm;
|
|
tm.tm_gmtoff;
|
|
]])],[AC_DEFINE(HAVE_TM_TM_GMTOFF,1,Define to 1 if 'tm.tm_gmtoff' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for linker options --start-group/--end-group)
|
|
saved_LDFLAGS="$LDFLAGS"
|
|
LDFLAGS="-Wl,--start-group -Wl,--end-group"
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[]])],[HAVE_START_GROUP="yes"
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)
|
|
])
|
|
LDFLAGS="$saved_LDFLAGS"
|
|
|
|
AC_MSG_CHECKING(for '__thread' compiler support)
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <stdio.h>]], [[static __thread int a = 0;]])],[AC_DEFINE(HAVE_THREAD_LOCAL,1,Define to 1 if compiler keyword '__thread' supported.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)
|
|
HAVE_THREAD_LOCAL="no"])
|
|
|
|
AC_MSG_CHECKING(for field updates in struct vminfo_t)
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
#include <sys/sysinfo.h>
|
|
]], [[
|
|
vminfo_t vminfo;
|
|
vminfo.updates;
|
|
]])],[AC_DEFINE(HAVE_VMINFO_T_UPDATES,1,Define to 1 if 'vminfo.updates' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
dnl *****************************************************************
|
|
dnl * *
|
|
dnl * Checks for functions *
|
|
dnl * *
|
|
dnl *****************************************************************
|
|
|
|
AC_MSG_CHECKING(for function sysconf() in unistd.h)
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
#include <unistd.h>
|
|
]], [[ int i;
|
|
|
|
i=sysconf(_SC_PHYS_PAGES)*sysconf(_SC_PHYS_PAGES);
|
|
i=sysconf(_SC_AVPHYS_PAGES)*sysconf(_SC_PHYS_PAGES);
|
|
]])],[AC_DEFINE(HAVE_UNISTD_SYSCONF,1,Define to 1 if function 'sysconf' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for function initgroups())
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
|
#include <sys/types.h>
|
|
#include <grp.h>
|
|
]], [[
|
|
char *user = "zabbix";
|
|
initgroups(user, 0);
|
|
]])],[AC_DEFINE(HAVE_FUNCTION_INITGROUPS,1,Define to 1 if function 'initgroups' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for functions seteuid() and setegid())
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
|
#include <sys/types.h>
|
|
#include <unistd.h>
|
|
]], [[
|
|
seteuid(0);
|
|
setegid(0);
|
|
]])],[AC_DEFINE(HAVE_FUNCTION_SETEUID,1,Define to 1 if functions 'seteuid' and 'setegid' exist.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for function setproctitle())
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
|
#include <sys/types.h>
|
|
#include <unistd.h>
|
|
]], [[
|
|
setproctitle("Test %d", 1);
|
|
]])],[AC_DEFINE(HAVE_FUNCTION_SETPROCTITLE,1,Define to 1 if function 'setproctitle' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for function sysctlbyname())
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
#include <sys/types.h>
|
|
#endif /* HAVE_SYS_TYPES_H */
|
|
|
|
#ifdef HAVE_SYS_PARAM_H
|
|
#include <sys/param.h>
|
|
#endif /* HAVE_SYS_PARAM_H */
|
|
|
|
#include <sys/sysctl.h>
|
|
]], [[
|
|
sysctlbyname("", 0, 0, 0, 0);
|
|
]])],[AC_DEFINE(HAVE_FUNCTION_SYSCTLBYNAME,1,Define to 1 if 'sysctlbyname' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for function sysctl (KERN_BOOTTIME))
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
#include <sys/types.h>
|
|
#endif /* HAVE_SYS_TYPES_H */
|
|
|
|
#ifdef HAVE_SYS_PARAM_H
|
|
#include <sys/param.h>
|
|
#endif /* HAVE_SYS_PARAM_H */
|
|
|
|
#include <sys/sysctl.h>
|
|
#include <unistd.h>
|
|
#include <time.h>
|
|
#include <sys/time.h>
|
|
]], [[
|
|
size_t len;
|
|
struct timeval uptime;
|
|
int mib[2];
|
|
|
|
mib[0] = CTL_KERN;
|
|
mib[1] = KERN_BOOTTIME;
|
|
|
|
len = sizeof(uptime);
|
|
sysctl(mib, 2, &uptime, &len, 0, 0);
|
|
]])],[AC_DEFINE(HAVE_FUNCTION_SYSCTL_KERN_BOOTTIME,1,Define to 1 if 'KERN_BOOTTIME' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for function sysctl (HW_NCPU))
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
#include <sys/types.h>
|
|
#endif /* HAVE_SYS_TYPES_H */
|
|
|
|
#ifdef HAVE_SYS_PARAM_H
|
|
#include <sys/param.h>
|
|
#endif /* HAVE_SYS_PARAM_H */
|
|
|
|
#include <sys/sysctl.h>
|
|
]], [[
|
|
size_t len;
|
|
int mib[2], ncpu;
|
|
|
|
mib[0] = CTL_HW;
|
|
mib[1] = HW_NCPU;
|
|
|
|
len = sizeof(ncpu);
|
|
sysctl(mib, 2, &ncpu, &len, 0, 0);
|
|
]])],[AC_DEFINE(HAVE_FUNCTION_SYSCTL_HW_NCPU,1,Define to 1 if 'HW_NCPU' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for function sysctl (KERN_MAXFILES))
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
#include <sys/types.h>
|
|
#endif /* HAVE_SYS_TYPES_H */
|
|
|
|
#ifdef HAVE_SYS_PARAM_H
|
|
#include <sys/param.h>
|
|
#endif /* HAVE_SYS_PARAM_H */
|
|
|
|
#include <sys/sysctl.h>
|
|
]], [[
|
|
size_t len;
|
|
int mib[2], maxfiles;
|
|
|
|
mib[0] = CTL_KERN;
|
|
mib[1] = KERN_MAXFILES;
|
|
|
|
len = sizeof(maxfiles);
|
|
sysctl(mib, 2, &maxfiles, &len, 0, 0);
|
|
]])],[AC_DEFINE(HAVE_FUNCTION_SYSCTL_KERN_MAXFILES,1,Define to 1 if 'KERN_MAXFILES' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for function sysctl (KERN_MAXPROC))
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
#ifdef HAVE_SYS_TYPES_H
|
|
#include <sys/types.h>
|
|
#endif /* HAVE_SYS_TYPES_H */
|
|
|
|
#ifdef HAVE_SYS_PARAM_H
|
|
#include <sys/param.h>
|
|
#endif /* HAVE_SYS_PARAM_H */
|
|
|
|
#include <sys/sysctl.h>
|
|
]], [[
|
|
size_t len;
|
|
int mib[2], maxproc;
|
|
|
|
mib[0] = CTL_KERN;
|
|
mib[1] = KERN_MAXPROC;
|
|
|
|
len = sizeof(maxproc);
|
|
sysctl(mib, 2, &maxproc, &len, 0, 0);
|
|
]])],[AC_DEFINE(HAVE_FUNCTION_SYSCTL_KERN_MAXPROC,1,Define to 1 if 'KERN_MAXPROC' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for function sysctl (KERN_CPTIME,KERN_CPTIME2))
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
#include <sys/param.h>
|
|
#include <sys/sysctl.h>
|
|
#if defined(HAVE_SYS_DKSTAT_H)
|
|
# include <sys/dkstat.h>
|
|
#elif defined(HAVE_SYS_SCHED_H)
|
|
# include <sys/sched.h>
|
|
#endif
|
|
]], [[
|
|
size_t sz;
|
|
int i[] = {CP_USER, CP_NICE, CP_SYS, CP_INTR, CP_IDLE};
|
|
|
|
{
|
|
long states[CPUSTATES];
|
|
int mib[2] = {CTL_KERN, KERN_CPTIME};
|
|
|
|
sz = sizeof(states);
|
|
sysctl(mib, 2, &states, &sz, NULL, 0);
|
|
}
|
|
|
|
{
|
|
u_int64_t states[CPUSTATES];
|
|
int mib[3] = {CTL_KERN, KERN_CPTIME2, 0};
|
|
|
|
sz = sizeof(states);
|
|
sysctl(mib, 3, &states, &sz, NULL, 0);
|
|
}
|
|
]])],[AC_DEFINE(HAVE_FUNCTION_SYSCTL_KERN_CPTIME,1,Define to 1 if 'KERN_CPTIME,KERN_CPTIME2' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for function clock_gettime in time.h)
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
|
|
#ifdef HAVE_TIME_H
|
|
# include <time.h>
|
|
#elif HAVE_SYS_TIME_H
|
|
# include <sys/time.h>
|
|
#endif /* HAVE_SYS_TIME_H */
|
|
]], [[struct timespec tp;
|
|
clock_gettime(CLOCK_REALTIME, &tp);
|
|
]])],[AC_DEFINE(HAVE_TIME_CLOCK_GETTIME,1,Define to 1 if function 'clock_gettime' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
dnl *****************************************************************
|
|
dnl * *
|
|
dnl * Checks for macros *
|
|
dnl * *
|
|
dnl *****************************************************************
|
|
|
|
AC_MSG_CHECKING(for macro __va_copy() in stdarg.h)
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
#include <stdarg.h>
|
|
]], [[
|
|
va_list src,dst;
|
|
|
|
__va_copy(dst,src);
|
|
]])],[AC_DEFINE(HAVE___VA_COPY,1,Define to 1 if macro '__va_copy' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for macro __VA_ARGS__)
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
|
|
#define ZBX_CONST_STRING(str) str
|
|
int test(const char *fmt, ...) { return 0; }
|
|
]], [[
|
|
#define TEST(fmt, ...) test(ZBX_CONST_STRING(fmt), ##__VA_ARGS__)
|
|
TEST("%s","test");
|
|
TEST("test");
|
|
]])],[AC_DEFINE(HAVE___VA_ARGS__,1,Define to 1 if macro '__VA_ARGS__' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
dnl *****************************************************************
|
|
dnl * *
|
|
dnl * Checks for library functions *
|
|
dnl * *
|
|
dnl *****************************************************************
|
|
|
|
AC_REPLACE_FUNCS(getloadavg)
|
|
AC_CHECK_FUNCS(hstrerror)
|
|
AC_CHECK_FUNCS(getenv)
|
|
AC_CHECK_FUNCS(putenv)
|
|
AC_CHECK_FUNCS(setenv)
|
|
AC_CHECK_FUNCS(tzset)
|
|
AC_CHECK_FUNCS(unsetenv)
|
|
AC_CHECK_FUNCS(sigqueue)
|
|
AC_CHECK_FUNCS(round)
|
|
|
|
dnl *****************************************************************
|
|
dnl * *
|
|
dnl * Checks for file system characteristics *
|
|
dnl * *
|
|
dnl *****************************************************************
|
|
|
|
AC_MSG_CHECKING(for /proc filesystem)
|
|
if test -d /proc; then
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(HAVE_PROC,1,[Define to 1 if '/proc' file system should be used.])
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
|
|
AC_MSG_CHECKING(for file /proc/stat)
|
|
if test -r /proc/stat; then
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(HAVE_PROC_STAT,1,[Define to 1 if file '/proc/stat' should be used.])
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
|
|
AC_MSG_CHECKING(for file /proc/cpuinfo)
|
|
if test -r /proc/cpuinfo; then
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(HAVE_PROC_CPUINFO,1,[Define to 1 if file '/proc/cpuinfo' should be used.])
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
|
|
dnl Solaris
|
|
AC_MSG_CHECKING(for file /proc/0/psinfo)
|
|
if test -r /proc/0/psinfo; then
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(HAVE_PROC_0_PSINFO,1,[Define to 1 if file '/proc/0/psinfo' should be used.])
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
|
|
AC_MSG_CHECKING(for file /proc/loadavg)
|
|
if test -r /proc/loadavg; then
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(HAVE_PROC_LOADAVG,1,[Define to 1 if file '/proc/loadavg' should be used.])
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
|
|
AC_MSG_CHECKING(for file /proc/net/dev)
|
|
if test -r /proc/net/dev; then
|
|
AC_MSG_RESULT(yes)
|
|
AC_DEFINE(HAVE_PROC_NET_DEV,1,[Define to 1 if file '/proc/net/dev' should be used.])
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
|
|
dnl *****************************************************************
|
|
dnl * *
|
|
dnl * Checks for compiler characteristics *
|
|
dnl * *
|
|
dnl *****************************************************************
|
|
|
|
dnl Check for %qu format (FreeBSD 4.x)
|
|
dnl FreeBSD 4.x does not support %llu
|
|
AC_MSG_CHECKING(for long long format)
|
|
AC_RUN_IFELSE([AC_LANG_SOURCE([[
|
|
#include <sys/types.h>
|
|
int main()
|
|
{
|
|
uint64_t i;
|
|
|
|
sscanf("200000000010020", "%qu", &i);
|
|
|
|
if (i == 200000000010020) return 0;
|
|
else return -1;
|
|
}
|
|
]])],[AC_DEFINE(HAVE_LONG_LONG_QU, 1 ,Define to 1 if format '%qu' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)],[AC_MSG_RESULT(no)])
|
|
|
|
dnl option -rdynamic is needed for readable backtraces
|
|
AC_MSG_CHECKING(for -rdynamic linking option)
|
|
saved_LDFLAGS="$LDFLAGS"
|
|
LDFLAGS="-rdynamic $LDFLAGS"
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <execinfo.h>]], [[void *bcktrc[6];
|
|
(void)backtrace(bcktrc, 6);
|
|
]])],[LDFLAGS="-rdynamic $saved_LDFLAGS"
|
|
AC_MSG_RESULT(yes)],[LDFLAGS="$saved_LDFLAGS"
|
|
AC_MSG_RESULT(no)])
|
|
|
|
dnl *****************************************************************
|
|
dnl * *
|
|
dnl * Checks for operating systems *
|
|
dnl * *
|
|
dnl *****************************************************************
|
|
|
|
AC_MSG_CHECKING(for libperfstat 5.2.0.40 fileset)
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/protosw.h>
|
|
#include <libperfstat.h>]], [[perfstat_memory_total_t memstats;
|
|
memstats.virt_active = 0;
|
|
]])],[AC_DEFINE(HAVE_AIXOSLEVEL_520004,1,Define to 1 if libperfstat 5.2.0.40 fileset exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
AC_MSG_CHECKING(for libperfstat 5.3.0.60 fileset)
|
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/protosw.h>
|
|
#include <libperfstat.h>]], [[perfstat_partition_total_t lparstats;
|
|
lparstats.type.b.donate_enabled = 0;
|
|
lparstats.idle_donated_purr = 0;
|
|
lparstats.busy_donated_purr = 0;
|
|
lparstats.idle_stolen_purr = 0;
|
|
lparstats.busy_stolen_purr = 0;
|
|
]])],[AC_DEFINE(HAVE_AIXOSLEVEL_530006,1,Define to 1 if libperfstat 5.3.0.60 fileset exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
case "$host_os" in
|
|
linux*)
|
|
ARCH="linux"
|
|
;;
|
|
aix*)
|
|
ARCH="aix"
|
|
;;
|
|
darwin*|rhapsody*)
|
|
ARCH="osx"
|
|
AC_DEFINE([MAC_OS_X], 1, [Define to 1 if you are using Mac OS X.])
|
|
;;
|
|
*solaris*)
|
|
ARCH="solaris"
|
|
;;
|
|
hpux*)
|
|
ARCH="hpux"
|
|
;;
|
|
freebsd*)
|
|
ARCH="freebsd"
|
|
;;
|
|
netbsd*)
|
|
ARCH="netbsd"
|
|
;;
|
|
osf*)
|
|
ARCH="osf"
|
|
;;
|
|
openbsd*)
|
|
ARCH="openbsd"
|
|
;;
|
|
*)
|
|
ARCH="unknown"
|
|
AC_DEFINE([ZBX_UNKNOWN_ARCH], 1, [Define to 1 if unsupported architecture was detected.])
|
|
;;
|
|
esac
|
|
|
|
AC_MSG_CHECKING(for architecture)
|
|
AC_MSG_RESULT([$ARCH ($host_os)])
|
|
|
|
if test "x$ARCH" = "xlinux"; then
|
|
AC_MSG_CHECKING([for the linux kernel version])
|
|
|
|
kernel=`uname -r`
|
|
|
|
case "${kernel}" in
|
|
2.6.*)
|
|
AC_MSG_RESULT([2.6 family (${kernel})])
|
|
AC_DEFINE([KERNEL_2_6], 1, [Define to 1 if you are using Linux 2.6.x])
|
|
;;
|
|
2.4.*)
|
|
AC_MSG_RESULT([2.4 family (${kernel})])
|
|
AC_DEFINE([KERNEL_2_4], 1, [Define to 1 if you are using Linux 2.4.x])
|
|
;;
|
|
*)
|
|
AC_MSG_RESULT([unknown family (${kernel})])
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
if test "x$ARCH" = "xsolaris"; then
|
|
dnl Forcing a 64-bit application for a 64-bit Solaris
|
|
dnl A 32-bit program that uses /proc is able to look at 32-bit processes,
|
|
dnl but is not able to understand all attributes of a 64-bit process.
|
|
AC_MSG_CHECKING(for -m64 compilation flag)
|
|
saved_CFLAGS="$CFLAGS"
|
|
CFLAGS="-m64"
|
|
AC_RUN_IFELSE([AC_LANG_SOURCE([[int main(void) {return 0;}]])],[CFLAGS="-m64 $saved_CFLAGS"
|
|
AC_MSG_RESULT(yes)],[CFLAGS="$saved_CFLAGS"
|
|
AC_MSG_RESULT(no)],[])
|
|
CFLAGS="${CFLAGS} -DZBX_OLD_SOLARIS"
|
|
fi
|
|
|
|
if test "x$ARCH" = "xhpux"; then
|
|
dnl Low Level Discovery needs a way to get the list of network
|
|
dnl interfaces available on the monitored system. On HP-UX systems
|
|
dnl that way depends on the OS version.
|
|
hpux_version=${host_os#hpux}
|
|
hpux_major=${hpux_version%.*}
|
|
hpux_minor=${hpux_version#*.}
|
|
|
|
AC_DEFINE_UNQUOTED([HPUX_VERSION], $hpux_major$hpux_minor, [Define to HP-UX version])
|
|
|
|
dnl This API level is needed so that "utsname.nodename" is not truncated.
|
|
AC_MSG_CHECKING(for -D_HPUX_API_LEVEL=20040821 compilation flag)
|
|
saved_CFLAGS="$CFLAGS"
|
|
CFLAGS="-D_HPUX_API_LEVEL=20040821"
|
|
AC_RUN_IFELSE([AC_LANG_SOURCE([[
|
|
#ifdef HAVE_DLFCN_H
|
|
# include <dlfcn.h>
|
|
#endif
|
|
#ifdef HAVE_SYS_UTSNAME_H
|
|
# include <sys/utsname.h>
|
|
#endif
|
|
|
|
int main(void)
|
|
{
|
|
void *p1, *p2;
|
|
struct utsname name;
|
|
|
|
/* check that the compiler (e.g., GCC 4.3.0 and above) supports function-level versioning */
|
|
|
|
p1 = uname;
|
|
p2 = dlsym(RTLD_DEFAULT, "uname{20040821}");
|
|
|
|
if (p1 != p2)
|
|
return 1;
|
|
|
|
/* uname() fails with EFAULT on HP-UX systems that were only partially upgraded to this API level */
|
|
|
|
return -1 == uname(&name) ? 1 : 0;
|
|
}
|
|
]])],[CFLAGS="-D_HPUX_API_LEVEL=20040821 $saved_CFLAGS"
|
|
AC_MSG_RESULT(yes)],[CFLAGS="$saved_CFLAGS"
|
|
AC_MSG_RESULT(no)],[])
|
|
fi
|
|
|
|
AC_DEFINE_UNQUOTED([ARCH], "${ARCH}", [Define to OS name for code managing])
|
|
AC_SUBST(ARCH)
|
|
|
|
AC_CHECK_SIZEOF([void *])
|
|
|
|
dnl *****************************************************************
|
|
dnl * *
|
|
dnl * Checks for options given on the command line *
|
|
dnl * *
|
|
dnl *****************************************************************
|
|
|
|
AC_ARG_ENABLE(static,[ --enable-static Build statically linked binaries],
|
|
[case "${enableval}" in
|
|
yes)
|
|
LDFLAGS="${LDFLAGS} -static"
|
|
AC_MSG_CHECKING(if static linking is possible)
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM(,)],
|
|
[AC_MSG_RESULT([yes])
|
|
static_linking=yes],
|
|
[AC_MSG_RESULT([no])
|
|
static_linking=no])
|
|
if test "x$static_linking" = "xno"; then
|
|
AC_MSG_ERROR([static linking is not possible on this system])
|
|
fi
|
|
;;
|
|
no) ;;
|
|
*) AC_MSG_ERROR([bad value ${enableval} for --enable-static]) ;;
|
|
esac])
|
|
|
|
AC_ARG_ENABLE(static-libs,[ --enable-static-libs Build statically linked binaries with selected libs from default folders],
|
|
[case "${enableval}" in
|
|
yes)
|
|
static_linking_libs=yes
|
|
saved_LIBS="$LIBS"
|
|
LIBS="${saved_LIBS} -Wl,-bstatic -Wl,-bdynamic"
|
|
AC_MSG_CHECKING([if libs static linking with "-Wl,-b" is possible])
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM(,)],
|
|
[AC_MSG_RESULT([yes])
|
|
static_linking_support="-Wl,-b"],
|
|
[AC_MSG_RESULT([no])
|
|
static_linking_support=no])
|
|
LIBS="$saved_LIBS"
|
|
|
|
if test "x$static_linking_support" = "xno"; then
|
|
LIBS="${saved_LIBS} -Wl,-Bstatic -Wl,-Bdynamic"
|
|
AC_MSG_CHECKING([if libs static linking with "-Wl,-B" is possible])
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM(,)],
|
|
[AC_MSG_RESULT([yes])
|
|
static_linking_support="-Wl,-B"],
|
|
[AC_MSG_RESULT([no])
|
|
static_linking_support=no])
|
|
LIBS="$saved_LIBS"
|
|
fi
|
|
;;
|
|
no) ;;
|
|
*) AC_MSG_ERROR([bad value ${enableval} for --enable-static-libs]) ;;
|
|
esac])
|
|
|
|
if test "x#static_linking" = "xyes" && test "x$static_linking_libs" = "xyes"; then
|
|
AC_MSG_ERROR([cannot use --static and --static-libs at the same time])
|
|
fi
|
|
|
|
AC_ARG_ENABLE(server,[ --enable-server Turn on build of Zabbix server],
|
|
[case "${enableval}" in
|
|
yes) server=yes ;;
|
|
no) server=no ;;
|
|
*) AC_MSG_ERROR([bad value ${enableval} for --enable-server]) ;;
|
|
esac],
|
|
[server=no])
|
|
AM_CONDITIONAL(SERVER, test "x$server" = "xyes")
|
|
|
|
AC_ARG_ENABLE(proxy,[ --enable-proxy Turn on build of Zabbix proxy],
|
|
[case "${enableval}" in
|
|
yes) proxy=yes ;;
|
|
no) proxy=no ;;
|
|
*) AC_MSG_ERROR([bad value ${enableval} for --enable-proxy]) ;;
|
|
esac],
|
|
[proxy=no])
|
|
AM_CONDITIONAL(PROXY, test "x$proxy" = "xyes")
|
|
|
|
AC_ARG_ENABLE(agent,[ --enable-agent Turn on build of Zabbix agent and client utilities],
|
|
[case "${enableval}" in
|
|
yes) agent=yes ;;
|
|
no) agent=no ;;
|
|
*) AC_MSG_ERROR([bad value ${enableval} for --enable-agent]) ;;
|
|
esac],
|
|
[agent=no])
|
|
AM_CONDITIONAL(AGENT, test "x$agent" = "xyes")
|
|
|
|
AC_ARG_ENABLE(agent2,[ --enable-agent2 Turn on build of Zabbix agent 2],
|
|
[case "${enableval}" in
|
|
yes) agent2=yes ;;
|
|
no) agent2=no ;;
|
|
*) AC_MSG_ERROR([bad value ${enableval} for --enable-agent2]) ;;
|
|
esac
|
|
test "x$agent2" = "xyes" -a "x$HAVE_THREAD_LOCAL" = "xno" && AC_MSG_ERROR([C compiler is not compatible with agent2 assembly])
|
|
],
|
|
[agent2=no])
|
|
AM_CONDITIONAL(AGENT2, test "x$agent2" = "xyes")
|
|
|
|
AC_ARG_ENABLE(webservice,[ --enable-webservice Turn on build of Zabbix web service],
|
|
[case "${enableval}" in
|
|
yes) webservice=yes ;;
|
|
no) webservice=no ;;
|
|
*) AC_MSG_ERROR([bad value ${enableval} for --enable-webservice]) ;;
|
|
esac
|
|
test "x$webservice" = "xyes" -a "x$HAVE_THREAD_LOCAL" = "xno" && AC_MSG_ERROR([C compiler is not compatible with webservice assembly])
|
|
],
|
|
[webservice=no])
|
|
AM_CONDITIONAL(WEBSERVICE, test "x$webservice" = "xyes")
|
|
|
|
AC_ARG_ENABLE(java,[ --enable-java Turn on build of Zabbix Java gateway],
|
|
[case "${enableval}" in
|
|
yes) java=yes ;;
|
|
no) java=no ;;
|
|
*) AC_MSG_ERROR([bad value ${enableval} for --enable-java]) ;;
|
|
esac],
|
|
[java=no])
|
|
AM_CONDITIONAL(JAVA, test "x$java" = "xyes")
|
|
|
|
AC_ARG_ENABLE(ipv6,[ --enable-ipv6 Turn on support of IPv6],
|
|
[case "${enableval}" in
|
|
yes) ipv6=yes ;;
|
|
no) ipv6=no ;;
|
|
*) AC_MSG_ERROR([bad value ${enableval} for --enable-ipv6]) ;;
|
|
esac],
|
|
[ipv6=no])
|
|
AM_CONDITIONAL(IPV6, test "x$ipv6" = "xyes")
|
|
|
|
AM_CONDITIONAL([DBSCHEMA], [test -d create])
|
|
|
|
AM_CONDITIONAL([USE_TESTS], [(test -f m4/conf_tests.m4) && (test "x$server" = "xyes" || test "x$proxy" = "xyes" || test "x$agent" = "xyes")])
|
|
|
|
have_db="no"
|
|
have_unixodbc="no"
|
|
have_web_monitoring="no"
|
|
have_snmp="no"
|
|
have_ipmi="no"
|
|
have_ipv6="no"
|
|
have_ssh="no"
|
|
have_tls="no"
|
|
have_libmodbus="no"
|
|
|
|
|
|
if test "x$ipv6" = "xyes"; then
|
|
AC_DEFINE(HAVE_IPV6,1,[Define to 1 if IPv6 should be enabled.])
|
|
have_ipv6="yes"
|
|
fi
|
|
|
|
if test "x$server" = "xyes" || test "x$proxy" = "xyes"; then
|
|
|
|
|
|
dnl Checking for MySQL support
|
|
AX_LIB_MYSQL()
|
|
if test "x$want_mysql" = "xyes"; then
|
|
if test "x$have_db" != "xno"; then
|
|
AC_MSG_ERROR([You can configure for only one database.])
|
|
fi
|
|
|
|
if test "x$found_mysql" = "xyes"; then
|
|
have_db="MySQL"
|
|
have_multirow_insert="yes"
|
|
else
|
|
AC_MSG_ERROR([MySQL library not found])
|
|
fi
|
|
fi
|
|
|
|
dnl Checking for Oracle support
|
|
AX_LIB_ORACLE_OCI([10.0])
|
|
if test "x$want_oracle_oci" = "xyes"; then
|
|
if test "x$have_db" != "xno"; then
|
|
AC_MSG_ERROR([You can configure for only one database.])
|
|
fi
|
|
|
|
if test "x$HAVE_ORACLE_OCI" = "xyes"; then
|
|
have_db="Oracle"
|
|
|
|
ORACLE_CPPFLAGS="$ORACLE_OCI_CFLAGS"
|
|
ORACLE_LDFLAGS="$ORACLE_OCI_LDFLAGS"
|
|
ORACLE_LIBS="$ORACLE_OCI_LIBS"
|
|
|
|
AC_DEFINE(HAVE_ORACLE,1,[Define to 1 if Oracle should be enabled.])
|
|
else
|
|
AC_MSG_ERROR([Oracle OCI library not found])
|
|
fi
|
|
fi
|
|
|
|
dnl Checking for PostgreSQL support
|
|
AX_LIB_POSTGRESQL("9.2")
|
|
if test "x$want_postgresql" = "xyes"; then
|
|
if test "x$have_db" != "xno"; then
|
|
AC_MSG_ERROR([You can configure for only one database.])
|
|
fi
|
|
|
|
if test "x$found_postgresql" = "xyes"; then
|
|
if test "$postgresql_version_check" != "1"; then
|
|
AC_MSG_ERROR([PostgreSQL version mismatch])
|
|
fi
|
|
|
|
have_db="PostgreSQL"
|
|
|
|
if test "$postgresql_version_number" -ge 8002000; then
|
|
have_multirow_insert="yes"
|
|
fi
|
|
|
|
else
|
|
AC_MSG_ERROR([PostgreSQL library not found])
|
|
fi
|
|
fi
|
|
|
|
dnl Checking for SQLite3 support
|
|
AX_LIB_SQLITE3()
|
|
if test "x$want_sqlite3" = "xyes"; then
|
|
if test "x$server" = "xyes"; then
|
|
AC_MSG_ERROR([SQLite is not supported as a main Zabbix database backend.])
|
|
fi
|
|
|
|
if test "x$have_db" != "xno"; then
|
|
AC_MSG_ERROR([You can configure for only one database.])
|
|
fi
|
|
|
|
if test "x$found_sqlite3" = "xyes"; then
|
|
have_db="SQLite v3.x"
|
|
|
|
saved_CPPFLAGS="$CPPFLAGS"
|
|
saved_LDFLAGS="$LDFLAGS"
|
|
|
|
CPPFLAGS="$CPPFLAGS $SQLITE3_CPPFLAGS"
|
|
LDFLAGS="$LDFLAGS $SQLITE3_LDFLAGS $SQLITE3_LIBS"
|
|
|
|
AC_MSG_CHECKING([for function sqlite3_open_v2() in sqlite3.h])
|
|
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <sqlite3.h>]], [[sqlite3 *conn = 0;
|
|
sqlite3_open_v2("dbname", &conn, SQLITE_OPEN_READWRITE, 0);
|
|
]])],[AC_DEFINE(HAVE_FUNCTION_SQLITE3_OPEN_V2,1,Define to 1 if function 'sqlite3_open_v2' exists.)
|
|
AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no)])
|
|
|
|
CPPFLAGS="$saved_CPPFLAGS"
|
|
LDFLAGS="$saved_LDFLAGS"
|
|
else
|
|
AC_MSG_ERROR([SQLite3 library not found])
|
|
fi
|
|
fi
|
|
|
|
AC_MSG_CHECKING(for Zabbix server/proxy database selection)
|
|
if test "x$have_db" = "xno"; then
|
|
AC_MSG_RESULT(error)
|
|
AC_MSG_ERROR([No database selected for Zabbix server/proxy. Use --with-mysql or --with-oracle or --with-postgresql or --with-sqlite3.])
|
|
else
|
|
AC_MSG_RESULT(ok)
|
|
fi
|
|
|
|
AC_MSG_CHECKING(for multirow insert statements)
|
|
if test "x$have_multirow_insert" = "xyes"; then
|
|
AC_DEFINE(HAVE_MULTIROW_INSERT,1,[Define to 1 if database supports multirow insert statements.])
|
|
AC_MSG_RESULT(yes)
|
|
else
|
|
AC_MSG_RESULT(no)
|
|
fi
|
|
|
|
DB_CFLAGS="$MYSQL_CFLAGS $ORACLE_CPPFLAGS $POSTGRESQL_CFLAGS $SQLITE3_CPPFLAGS"
|
|
DB_LDFLAGS="$MYSQL_LDFLAGS $ORACLE_LDFLAGS $POSTGRESQL_LDFLAGS $SQLITE3_LDFLAGS"
|
|
DB_LIBS="$MYSQL_LIBS $ORACLE_LIBS $POSTGRESQL_LIBS $SQLITE3_LIBS"
|
|
|
|
AC_SUBST(DB_CFLAGS)
|
|
AC_SUBST(DB_LDFLAGS)
|
|
AC_SUBST(DB_LIBS)
|
|
|
|
SERVER_LDFLAGS="${SERVER_LDFLAGS} ${DB_LDFLAGS}"
|
|
SERVER_LIBS="${SERVER_LIBS} ${DB_LIBS}"
|
|
|
|
PROXY_LDFLAGS="${PROXY_LDFLAGS} ${DB_LDFLAGS}"
|
|
PROXY_LIBS="${PROXY_LIBS} ${DB_LIBS}"
|
|
|
|
dnl Check for LIBXML2 [by default - skip]
|
|
LIBXML2_CHECK_CONFIG([no])
|
|
if test "x$want_libxml2" = "xyes"; then
|
|
if test "x$found_libxml2" != "xyes"; then
|
|
AC_MSG_ERROR([LIBXML2 library not found])
|
|
else
|
|
have_libxml2="yes"
|
|
fi
|
|
fi
|
|
|
|
SERVER_LDFLAGS="$SERVER_LDFLAGS $LIBXML2_LDFLAGS"
|
|
SERVER_LIBS="$SERVER_LIBS $LIBXML2_LIBS"
|
|
|
|
PROXY_LDFLAGS="$PROXY_LDFLAGS $LIBXML2_LDFLAGS"
|
|
PROXY_LIBS="$PROXY_LIBS $LIBXML2_LIBS"
|
|
|
|
AC_SUBST(LIBXML2_CFLAGS)
|
|
|
|
dnl Checking for unixODBC support
|
|
LIBUNIXODBC_CHECK_CONFIG([no])
|
|
if test "x$want_unixodbc" = "xyes"; then
|
|
if test "x$unixodbc_error" != "x"; then
|
|
AC_MSG_ERROR($unixodbc_error)
|
|
fi
|
|
have_unixodbc="yes"
|
|
fi
|
|
SERVER_LDFLAGS="$SERVER_LDFLAGS $UNIXODBC_LDFLAGS"
|
|
SERVER_LIBS="$SERVER_LIBS $UNIXODBC_LIBS"
|
|
|
|
PROXY_LDFLAGS="$PROXY_LDFLAGS $UNIXODBC_LDFLAGS"
|
|
PROXY_LIBS="$PROXY_LIBS $UNIXODBC_LIBS"
|
|
|
|
AC_SUBST(UNIXODBC_CFLAGS)
|
|
|
|
dnl Check for Net-SNMP [by default - skip]
|
|
LIBNETSNMP_CHECK_CONFIG([no], "5.3.0")
|
|
|
|
if test "x$want_netsnmp" = "xyes"; then
|
|
if test "x$found_netsnmp" != "xyes"; then
|
|
AC_MSG_ERROR([Invalid Net-SNMP directory - unable to find net-snmp-config])
|
|
else
|
|
have_snmp="yes"
|
|
fi
|
|
fi
|
|
SERVER_LDFLAGS="$SNMP_LDFLAGS $SERVER_LDFLAGS"
|
|
SERVER_LIBS="$SERVER_LIBS $SNMP_LIBS"
|
|
|
|
PROXY_LDFLAGS="$SNMP_LDFLAGS $PROXY_LDFLAGS"
|
|
PROXY_LIBS="$PROXY_LIBS $SNMP_LIBS"
|
|
|
|
|
|
AC_SUBST(SNMP_CFLAGS)
|
|
|
|
dnl Check for LIBSSH2 [by default - skip] at least of version 1.0.0.
|
|
LIBSSH2_CHECK_CONFIG([no])
|
|
LIBSSH_CHECK_CONFIG([no])
|
|
if test "x$want_ssh2" = "xyes"; then
|
|
if test "x$want_ssh" != "xno"; then
|
|
AC_MSG_ERROR([You can configure for only one SSH library (--with-ssh or --with-ssh2).])
|
|
fi
|
|
|
|
if test "x$found_ssh2" != "xyes"; then
|
|
AC_MSG_ERROR([SSH2 library not found])
|
|
elif test "x$accept_ssh2_version" != "xyes"; then
|
|
AC_MSG_ERROR([SSH2 library version requirement not met (>= 1.0.0)])
|
|
else
|
|
have_ssh="yes (libssh2)"
|
|
fi
|
|
fi
|
|
SERVER_LDFLAGS="$SERVER_LDFLAGS $SSH2_LDFLAGS"
|
|
SERVER_LIBS="$SERVER_LIBS $SSH2_LIBS"
|
|
|
|
PROXY_LDFLAGS="$PROXY_LDFLAGS $SSH2_LDFLAGS"
|
|
PROXY_LIBS="$PROXY_LIBS $SSH2_LIBS"
|
|
|
|
AC_SUBST(SSH2_CFLAGS)
|
|
|
|
dnl Check for LIBSSH [by default - skip] at least of version 0.7.0.
|
|
if test "x$want_ssh" = "xyes"; then
|
|
if test "x$found_ssh" != "xyes"; then
|
|
AC_MSG_ERROR([SSH library not found])
|
|
elif test "x$accept_ssh_version" != "xyes"; then
|
|
AC_MSG_ERROR([SSH library version requirement not met (>= 0.6.0)])
|
|
else
|
|
have_ssh="yes (libssh)"
|
|
fi
|
|
fi
|
|
SERVER_LDFLAGS="$SERVER_LDFLAGS $SSH_LDFLAGS"
|
|
SERVER_LIBS="$SERVER_LIBS $SSH_LIBS"
|
|
|
|
PROXY_LDFLAGS="$PROXY_LDFLAGS $SSH_LDFLAGS"
|
|
PROXY_LIBS="$PROXY_LIBS $SSH_LIBS"
|
|
|
|
AC_SUBST(SSH_CFLAGS)
|
|
|
|
found_openipmi="no"
|
|
dnl Check for libOpenIPMI [by default - skip]
|
|
LIBOPENIPMI_CHECK_CONFIG([no])
|
|
if test "x$want_openipmi" = "xyes"; then
|
|
if test "x$found_openipmi" != "xyes"; then
|
|
AC_MSG_ERROR([Invalid OPENIPMI directory - unable to find ipmiif.h])
|
|
else
|
|
have_ipmi="yes"
|
|
fi
|
|
fi
|
|
|
|
SERVER_LDFLAGS="$SERVER_LDFLAGS $OPENIPMI_LDFLAGS"
|
|
SERVER_LIBS="$SERVER_LIBS $OPENIPMI_LIBS"
|
|
|
|
PROXY_LDFLAGS="$PROXY_LDFLAGS $OPENIPMI_LDFLAGS"
|
|
PROXY_LIBS="$PROXY_LIBS $OPENIPMI_LIBS"
|
|
|
|
AC_SUBST(OPENIPMI_CFLAGS)
|
|
|
|
dnl Check for zlib, used by Zabbix server-proxy communications
|
|
ZLIB_CHECK_CONFIG([no])
|
|
if test "x$found_zlib" != "xyes"; then
|
|
AC_MSG_ERROR([Unable to use zlib (zlib check failed)])
|
|
fi
|
|
|
|
AC_SUBST(ZLIB_CFLAGS)
|
|
|
|
dnl Check for 'libpthread' library that supports PTHREAD_PROCESS_SHARED flag
|
|
LIBPTHREAD_CHECK_CONFIG([no])
|
|
if test "x$found_libpthread" != "xyes"; then
|
|
AC_MSG_ERROR([Unable to use libpthread (libpthread check failed)])
|
|
fi
|
|
fi
|
|
|
|
SERVER_LDFLAGS="$SERVER_LDFLAGS $ZLIB_LDFLAGS $LIBPTHREAD_LDFLAGS"
|
|
SERVER_LIBS="$SERVER_LIBS $ZLIB_LIBS $LIBPTHREAD_LIBS"
|
|
|
|
PROXY_LDFLAGS="$PROXY_LDFLAGS $ZLIB_LDFLAGS $LIBPTHREAD_LDFLAGS"
|
|
PROXY_LIBS="$PROXY_LIBS $ZLIB_LIBS $LIBPTHREAD_LIBS"
|
|
|
|
AGENT_LDFLAGS="$AGENT_LDFLAGS $ZLIB_LDFLAGS $LIBPTHREAD_LDFLAGS"
|
|
AGENT_LIBS="$AGENT_LIBS $ZLIB_LIBS $LIBPTHREAD_LIBS"
|
|
|
|
AGENT2_LDFLAGS="$AGENT2_LDFLAGS $ZLIB_LDFLAGS $LIBPTHREAD_LDFLAGS"
|
|
AGENT2_LIBS="$AGENT2_LIBS $ZLIB_LIBS $LIBPTHREAD_LIBS"
|
|
|
|
ZBXGET_LDFLAGS="$ZBXGET_LDFLAGS $ZLIB_LDFLAGS $LIBPTHREAD_LDFLAGS"
|
|
ZBXGET_LIBS="$ZBXGET_LIBS $ZLIB_LIBS $LIBPTHREAD_LIBS"
|
|
|
|
SENDER_LDFLAGS="$SENDER_LDFLAGS $ZLIB_LDFLAGS $LIBPTHREAD_LDFLAGS"
|
|
SENDER_LIBS="$SENDER_LIBS $ZLIB_LIBS $LIBPTHREAD_LIBS"
|
|
|
|
ZBXJS_LDFLAGS="$ZBXJS_LDFLAGS $ZLIB_LDFLAGS $LIBPTHREAD_LDFLAGS"
|
|
ZBXJS_LIBS="$ZBXJS_LIBS $ZLIB_LIBS $LIBPTHREAD_LIBS"
|
|
|
|
AM_CONDITIONAL(HAVE_IPMI, [test "x$have_ipmi" = "xyes"])
|
|
AM_CONDITIONAL(HAVE_LIBXML2, test "x$have_libxml2" = "xyes")
|
|
|
|
AM_CONDITIONAL(HAVE_SSH, [test "x$have_ssh" = "xyes (libssh)"])
|
|
AM_CONDITIONAL(HAVE_SSH2, [test "x$have_ssh" = "xyes (libssh2)"])
|
|
|
|
dnl Check if Zabbix internal IPC services are used
|
|
have_ipcservice="no"
|
|
if test "x$have_ipmi" = "xyes"; then
|
|
have_ipcservice="yes"
|
|
fi
|
|
|
|
if test "x$server" = "xyes"; then
|
|
have_ipcservice="yes"
|
|
fi
|
|
|
|
if test "x$proxy" = "xyes"; then
|
|
have_ipcservice="yes"
|
|
fi
|
|
|
|
AM_CONDITIONAL(PROXY_IPCSERVICE, [test "x$have_ipmi" = "xyes"])
|
|
|
|
dnl Check for libevent, used by Zabbix IPC services
|
|
if test "x$have_ipcservice" = "xyes"; then
|
|
AC_DEFINE([HAVE_IPCSERVICE], 1, [Define to 1 if Zabbix IPC services are used])
|
|
|
|
LIBEVENT_CHECK_CONFIG([no])
|
|
if test "x$found_libevent" != "xyes"; then
|
|
AC_MSG_ERROR([Unable to use libevent (libevent check failed)])
|
|
fi
|
|
|
|
SERVER_LDFLAGS="$SERVER_LDFLAGS $LIBEVENT_LDFLAGS"
|
|
SERVER_LIBS="$SERVER_LIBS $LIBEVENT_LIBS"
|
|
|
|
PROXY_LDFLAGS="$PROXY_LDFLAGS $LIBEVENT_LDFLAGS"
|
|
PROXY_LIBS="$PROXY_LIBS $LIBEVENT_LIBS"
|
|
fi
|
|
|
|
dnl Check multhithread SSL libs requirements [by default - skip]
|
|
mt_required="no"
|
|
if test "x$server" = "xyes"; then
|
|
mt_required="yes"
|
|
fi
|
|
|
|
if test "x$proxy" = "xyes"; then
|
|
mt_required="yes"
|
|
fi
|
|
|
|
dnl Check for GnuTLS libgnutls [by default - skip]
|
|
LIBGNUTLS_CHECK_CONFIG([no])
|
|
if test "x$want_gnutls" = "xyes"; then
|
|
if test "x$have_tls" != "xno"; then
|
|
AC_MSG_ERROR([You can configure for only one TLS library (--with-gnutls or --with-openssl).])
|
|
fi
|
|
|
|
if test "x$found_gnutls" != "xyes"; then
|
|
AC_MSG_ERROR([GnuTLS library libgnutls not found])
|
|
elif test "x$accept_gnutls_version" != "xyes"; then
|
|
AC_MSG_ERROR([GnuTLS library version requirement not met (>= 3.1.18)])
|
|
else
|
|
have_tls="GnuTLS"
|
|
fi
|
|
TLS_CFLAGS="$GNUTLS_CFLAGS"
|
|
TLS_LDFLAGS="$GNUTLS_LDFLAGS"
|
|
TLS_LIBS="$GNUTLS_LIBS"
|
|
AC_SUBST(TLS_CFLAGS)
|
|
AC_SUBST(TLS_LDFLAGS)
|
|
AC_SUBST(TLS_LIBS)
|
|
fi
|
|
|
|
dnl Check for OpenSSL libssl and libcrypto [by default - skip]
|
|
LIBOPENSSL_CHECK_CONFIG([no], [$mt_required])
|
|
if test "x$want_openssl" = "xyes"; then
|
|
if test "x$have_tls" != "xno"; then
|
|
AC_MSG_ERROR([You can configure for only one TLS library (--with-gnutls or --with-openssl).])
|
|
fi
|
|
|
|
if test "x$found_openssl" != "xOpenSSL" -a "x$found_openssl" != "xOpenSSL (PSK not supported)"; then
|
|
AC_MSG_ERROR([OpenSSL library libssl or libcrypto not found])
|
|
elif test "x$accept_openssl_version" != "xyes" -a "$mt_required" = "yes"; then
|
|
AC_MSG_ERROR([OpenSSL library version requirement for server or proxy not met (>= 1.1.0)])
|
|
elif test "x$accept_openssl_version" != "xyes"; then
|
|
AC_MSG_ERROR([OpenSSL library version requirement not met (>= 1.0.1)])
|
|
else
|
|
have_tls=$found_openssl
|
|
fi
|
|
TLS_CFLAGS="$OPENSSL_CFLAGS"
|
|
TLS_LDFLAGS="$OPENSSL_LDFLAGS"
|
|
TLS_LIBS="$OPENSSL_LIBS"
|
|
fi
|
|
AC_SUBST(TLS_CFLAGS)
|
|
|
|
SERVER_LDFLAGS="$SERVER_LDFLAGS $TLS_LDFLAGS"
|
|
SERVER_LIBS="$SERVER_LIBS $TLS_LIBS"
|
|
|
|
PROXY_LDFLAGS="$PROXY_LDFLAGS $TLS_LDFLAGS"
|
|
PROXY_LIBS="$PROXY_LIBS $TLS_LIBS"
|
|
|
|
AGENT_LDFLAGS="$AGENT_LDFLAGS $TLS_LDFLAGS"
|
|
AGENT_LIBS="$AGENT_LIBS $TLS_LIBS"
|
|
|
|
AGENT2_LDFLAGS="$AGENT2_LDFLAGS $TLS_LDFLAGS"
|
|
AGENT2_LIBS="$AGENT2_LIBS $TLS_LIBS"
|
|
|
|
ZBXGET_LDFLAGS="$ZBXGET_LDFLAGS $TLS_LDFLAGS"
|
|
ZBXGET_LIBS="$ZBXGET_LIBS $TLS_LIBS"
|
|
|
|
SENDER_LDFLAGS="$SENDER_LDFLAGS $TLS_LDFLAGS"
|
|
SENDER_LIBS="$SENDER_LIBS $TLS_LIBS"
|
|
|
|
ZBXJS_LDFLAGS="$ZLIB_LDFLAGS $TLS_LDFLAGS"
|
|
ZBXJS_LIBS="$ZBXJS_LIBS $TLS_LIBS"
|
|
|
|
dnl Check for libmodbus [by default - skip]
|
|
if test "x$agent" = "xyes"; then
|
|
LIBMODBUS_CHECK_CONFIG([3.0.0])
|
|
if test "x$want_libmodbus" = "xyes"; then
|
|
if test "x$found_libmodbus" = "xyes"; then
|
|
have_libmodbus="yes"
|
|
fi
|
|
fi
|
|
LDFLAGS="$LDFLAGS $LIBMODBUS_LDFLAGS"
|
|
CFLAGS="$CFLAGS $LIBMODBUS_CFLAGS"
|
|
LIBS="$LIBS $LIBMODBUS_LIBS"
|
|
fi
|
|
AM_CONDITIONAL(HAVE_LIBMODBUS, [test "x$have_libmodbus" = "xyes"])
|
|
|
|
if test "x$agent2" = "xyes"; then
|
|
AC_CHECK_PROGS([GO], [go], [no])
|
|
if test "x$GO" = "xno"; then
|
|
AC_MSG_ERROR([Unable to find "go" executable in path])
|
|
fi
|
|
AC_DEFINE(ZBX_BUILD_AGENT2,1,[Define to 1 if Agent2 is being built.])
|
|
fi
|
|
|
|
if test "x$webservice" = "xyes"; then
|
|
AC_CHECK_PROGS([GO], [go], [no])
|
|
if test "x$GO" = "xno"; then
|
|
AC_MSG_ERROR([Unable to find "go" executable in path])
|
|
fi
|
|
AC_DEFINE(ZBX_BUILD_WEBSERVICE,1,[Define to 1 if Web Service is being built.])
|
|
fi
|
|
|
|
if test "x$java" = "xyes"; then
|
|
AC_CHECK_PROGS([JAVAC], [javac], [no])
|
|
if test "x$JAVAC" = "xno"; then
|
|
AC_MSG_ERROR([Unable to find "javac" executable in path])
|
|
fi
|
|
AC_CHECK_PROGS([JAR], [jar], [no])
|
|
if test "x$JAR" = "xno"; then
|
|
AC_MSG_ERROR([Unable to find "jar" executable in path])
|
|
fi
|
|
fi
|
|
|
|
found_ldap="no"
|
|
dnl Check for libLDAP [by default - skip]
|
|
LIBLDAP_CHECK_CONFIG([no])
|
|
if test "x$want_ldap" = "xyes"; then
|
|
if test "x$found_ldap" != "xyes"; then
|
|
AC_MSG_ERROR([Invalid LDAP directory - unable to find ldap.h])
|
|
fi
|
|
fi
|
|
SERVER_LDFLAGS="$SERVER_LDFLAGS $LDAP_LDFLAGS"
|
|
SERVER_LIBS="$SERVER_LIBS $LDAP_LIBS"
|
|
|
|
PROXY_LDFLAGS="$PROXY_LDFLAGS $LDAP_LDFLAGS"
|
|
PROXY_LIBS="$PROXY_LIBS $LDAP_LIBS"
|
|
|
|
AGENT_LDFLAGS="$AGENT_LDFLAGS $LDAP_LDFLAGS"
|
|
AGENT_LIBS="$AGENT_LIBS $LDAP_LIBS"
|
|
|
|
AC_SUBST(LDAP_CPPFLAGS)
|
|
|
|
found_curl="no"
|
|
dnl Checking for libCurl [by default - skip]
|
|
LIBCURL_CHECK_CONFIG(, [7.13.1], [],[])
|
|
if test "x$want_curl" = "xyes"; then
|
|
if test "x$found_curl" != "xyes"; then
|
|
AC_MSG_ERROR([Curl library not found])
|
|
fi
|
|
fi
|
|
if test "x$found_curl" = "xyes"; then
|
|
have_web_monitoring="cURL"
|
|
fi
|
|
CFLAGS="$LIBCURL_CFLAGS $CFLAGS"
|
|
|
|
SERVER_LDFLAGS="$SERVER_LDFLAGS $LIBCURL_LDFLAGS"
|
|
SERVER_LIBS="$SERVER_LIBS $LIBCURL_LIBS"
|
|
|
|
PROXY_LDFLAGS="$PROXY_LDFLAGS $LIBCURL_LDFLAGS"
|
|
PROXY_LIBS="$PROXY_LIBS $LIBCURL_LIBS"
|
|
|
|
AM_CONDITIONAL(HAVE_LIBCURL, test "x$found_curl" = "xyes")
|
|
|
|
dnl Starting from 2.0 agent can do web monitoring
|
|
AGENT_LDFLAGS="$AGENT_LDFLAGS $LIBCURL_LDFLAGS"
|
|
AGENT_LIBS="$AGENT_LIBS $LIBCURL_LIBS"
|
|
|
|
ZBXGET_LDFLAGS="$ZBXGET_LDFLAGS $ZLIB_LDFLAGS $LIBPTHREAD_LDFLAGS"
|
|
ZBXGET_LIBS="$ZBXGET_LIBS $ZLIB_LIBS $LIBPTHREAD_LIBS"
|
|
|
|
SENDER_LDFLAGS="$SENDER_LDFLAGS $ZLIB_LDFLAGS $LIBPTHREAD_LDFLAGS"
|
|
SENDER_LIBS="$SENDER_LIBS $ZLIB_LIBS $LIBPTHREAD_LIBS"
|
|
|
|
ZBXJS_LDFLAGS="$ZBXJS_LDFLAGS $LIBCURL_LDFLAGS"
|
|
ZBXJS_LIBS="$ZBXJS_LIBS $LIBCURL_LIBS"
|
|
|
|
if test "x$server" = "xyes" || test "x$proxy" = "xyes" || test "x$agent" = "xyes" || test "x$agent2" = "xyes"; then
|
|
LIBPCRE_CHECK_CONFIG([flags-only])
|
|
LIBPCRE2_CHECK_CONFIG([flags-only])
|
|
|
|
if test "x$want_libpcre2" = "xno"; then # default to old pcre
|
|
if test "x$want_libpcre" = "xno"; then
|
|
AC_MSG_NOTICE([using old pcre library by default])
|
|
fi
|
|
|
|
LIBPCRE_CHECK_CONFIG([mandatory])
|
|
|
|
if test "x$found_libpcre" != "xyes"; then
|
|
AC_MSG_ERROR([unable to use libpcre (libpcre check failed)])
|
|
fi
|
|
|
|
LIBPCRE_CHECK_CONFIG([no])
|
|
|
|
CFLAGS="$CFLAGS $LIBPCRE_CFLAGS"
|
|
LDFLAGS="$LDFLAGS $LIBPCRE_LDFLAGS"
|
|
if test "x$ARCH" = "xosx"; then
|
|
LIBS="$LIBPCRE_LIBS $LIBS"
|
|
else
|
|
LIBS="$LIBS $LIBPCRE_LIBS"
|
|
fi
|
|
|
|
AC_DEFINE([HAVE_PCRE_H], 1, [Define to 1 if you have the 'libpcre' library (-lpcre)])
|
|
have_pcre=1
|
|
else
|
|
if test "x$want_libpcre" != "xno"; then
|
|
AC_MSG_ERROR([cannot use both pcre and pcre2 at the same time])
|
|
fi
|
|
|
|
LIBPCRE2_CHECK_CONFIG([mandatory])
|
|
|
|
if test "x$found_libpcre2" != "xyes"; then
|
|
AC_MSG_ERROR([unable to use libpcre2 (libpcre2 check failed)])
|
|
fi
|
|
|
|
CFLAGS="$CFLAGS $LIBPCRE2_CFLAGS"
|
|
LDFLAGS="$LDFLAGS $LIBPCRE2_LDFLAGS"
|
|
if test "x$ARCH" = "xosx"; then
|
|
LIBS="$LIBPCRE2_LIBS $LIBS"
|
|
else
|
|
LIBS="$LIBS $LIBPCRE2_LIBS"
|
|
fi
|
|
|
|
AC_DEFINE([HAVE_PCRE2_H], 1, [Define to 1 if you have the 'libpcre2' library (-lpcre2-8)])
|
|
have_pcre2=1
|
|
fi
|
|
|
|
if test "x$have_pcre" != "x1" && test "x$have_pcre2" != "x1"; then
|
|
AC_MSG_ERROR([cannot build with libpcre or libpcre2])
|
|
fi
|
|
fi
|
|
|
|
AM_CONDITIONAL([HAVE_PCRE], [test "x$have_pcre" = "x1"])
|
|
AM_CONDITIONAL([HAVE_PCRE2], [test "x$have_pcre2" = "x1"])
|
|
|
|
found_iconv="no"
|
|
dnl Check for libiconv [by default - skip]
|
|
LIBICONV_CHECK_CONFIG([no])
|
|
if test "x$found_iconv" != "xyes"; then
|
|
AC_MSG_ERROR([Unable to use iconv (libiconv check failed)])
|
|
fi
|
|
LDFLAGS="$LDFLAGS $ICONV_LDFLAGS"
|
|
LIBS="$LIBS $ICONV_LIBS"
|
|
|
|
TIMES_CHECK_NULL_ARG([no])
|
|
|
|
have_stacksize="no"
|
|
|
|
AC_ARG_WITH(stacksize,[
|
|
Override default thread stack size:
|
|
AS_HELP_STRING([--with-stacksize=STACKSIZE], [Set default thread stack size in kilobytes.])],
|
|
[case "${withval}" in
|
|
[[0-9]][[0-9]][[0-9]]|[[0-9]][[0-9]][[0-9]][[0-9]]|[[0-9]][[0-9]][[0-9]][[0-9]][[0-9]])
|
|
AC_DEFINE_UNQUOTED(HAVE_STACKSIZE, ${withval}, [Override default thread stack size.]) ;;
|
|
*) AC_MSG_ERROR([bad value ${withval} for --with-stacksize]) ;;
|
|
esac])
|
|
|
|
RANLIB="ranlib"
|
|
AC_SUBST(RANLIB)
|
|
|
|
SERVER_CONFIG_FILE="${sysconfdir}/zabbix_server.conf"
|
|
PROXY_CONFIG_FILE="${sysconfdir}/zabbix_proxy.conf"
|
|
AGENT_CONFIG_FILE="${sysconfdir}/zabbix_agentd.conf"
|
|
AGENT2_CONFIG_FILE="${sysconfdir}/zabbix_agent2.conf"
|
|
AGENT2_CONFIG_PATH="${sysconfdir}/zabbix_agent2.d"
|
|
AGENT2_CONFIG_PLUGINS_PATH="${AGENT2_CONFIG_PATH}/plugins.d"
|
|
WEBSERVICE_CONFIG_FILE="${sysconfdir}/zabbix_web_service.conf"
|
|
|
|
EXTERNAL_SCRIPTS_PATH="${datadir}/zabbix/externalscripts"
|
|
ALERT_SCRIPTS_PATH="${datadir}/zabbix/alertscripts"
|
|
|
|
CURL_SSL_CERT_LOCATION="${datadir}/zabbix/ssl/certs"
|
|
CURL_SSL_KEY_LOCATION="${datadir}/zabbix/ssl/keys"
|
|
|
|
LOAD_MODULE_PATH="${libdir}/modules"
|
|
|
|
AC_SUBST(SERVER_LDFLAGS)
|
|
AC_SUBST(SERVER_LIBS)
|
|
|
|
AC_SUBST(PROXY_LDFLAGS)
|
|
AC_SUBST(PROXY_LIBS)
|
|
|
|
AC_SUBST(AGENT_LDFLAGS)
|
|
AC_SUBST(AGENT_LIBS)
|
|
|
|
AC_SUBST(AGENT2_LDFLAGS)
|
|
AC_SUBST(AGENT2_LIBS)
|
|
|
|
if test "x$HAVE_START_GROUP" = "xyes"; then
|
|
LD_START_GROUP=-Wl,--start-group
|
|
LD_END_GROUP=-Wl,--end-group
|
|
fi
|
|
|
|
if test "x$agent2" = "xyes"; then
|
|
CGO_CFLAGS="$TLS_CFLAGS $LIBPCRE_CFLAGS $LIBPCRE2_CFLAGS"
|
|
CGO_LDFLAGS="$AGENT2_LDFLAGS $LD_START_GROUP \
|
|
\${abs_top_builddir}/src/libs/zbxalgo/libzbxalgo.a \
|
|
\${abs_top_builddir}/src/libs/zbxcommon/libzbxcommon.a \
|
|
\${abs_top_builddir}/src/libs/zbxcomms/libzbxcomms.a \
|
|
\${abs_top_builddir}/src/libs/zbxcompress/libzbxcompress.a \
|
|
\${abs_top_builddir}/src/libs/zbxcrypto/libzbxcrypto.a \
|
|
\${abs_top_builddir}/src/libs/zbxexec/libzbxexec.a \
|
|
\${abs_top_builddir}/src/libs/zbxhash/libzbxhash.a \
|
|
\${abs_top_builddir}/src/libs/zbxhttp/libzbxhttp.a \
|
|
\${abs_top_builddir}/src/libs/zbxjson/libzbxjson.a \
|
|
\${abs_top_builddir}/src/libs/zbxmutexs/libzbxmutexs.a \
|
|
\${abs_top_builddir}/src/libs/zbxprof/libzbxprof.a \
|
|
\${abs_top_builddir}/src/libs/zbxnix/libzbxnix.a \
|
|
\${abs_top_builddir}/src/libs/zbxregexp/libzbxregexp.a \
|
|
\${abs_top_builddir}/src/libs/zbxnum/libzbxnum.a \
|
|
\${abs_top_builddir}/src/libs/zbxstr/libzbxstr.a \
|
|
\${abs_top_builddir}/src/libs/zbxfile/libzbxfile.a \
|
|
\${abs_top_builddir}/src/libs/zbxparam/libzbxparam.a \
|
|
\${abs_top_builddir}/src/libs/zbxexpr/libzbxexpr.a \
|
|
\${abs_top_builddir}/src/libs/zbxtime/libzbxtime.a \
|
|
\${abs_top_builddir}/src/libs/zbxip/libzbxip.a \
|
|
\${abs_top_builddir}/src/libs/zbxsysinfo/"$ARCH"/libspechostnamesysinfo.a \
|
|
\${abs_top_builddir}/src/libs/zbxsysinfo/"$ARCH"/libspecsysinfo.a \
|
|
\${abs_top_builddir}/src/libs/zbxsysinfo/alias/libalias.a \
|
|
\${abs_top_builddir}/src/libs/zbxsysinfo/common/libcommonsysinfo.a \
|
|
\${abs_top_builddir}/src/libs/zbxsysinfo/libzbxagent2sysinfo.a \
|
|
\${abs_top_builddir}/src/libs/zbxsysinfo/simple/libsimplesysinfo.a \
|
|
\${abs_top_builddir}/src/libs/zbxthreads/libzbxthreads.a \
|
|
\${abs_top_builddir}/src/libs/zbxvariant/libzbxvariant.a \
|
|
\${abs_top_builddir}/src/libs/zbxxml/libzbxxml.a \
|
|
\${abs_top_builddir}/src/zabbix_agent/logfiles/libzbxlogfiles.a \
|
|
\${abs_top_builddir}/src/zabbix_agent/active_checks/libzbxactive_checks.a \
|
|
$LIBS $AGENT2_LIBS $LD_END_GROUP"
|
|
|
|
AC_SUBST(CGO_CFLAGS)
|
|
AC_SUBST(CGO_LDFLAGS)
|
|
fi
|
|
|
|
AC_SUBST(ZBXGET_LDFLAGS)
|
|
AC_SUBST(ZBXGET_LIBS)
|
|
|
|
AC_SUBST(SENDER_LDFLAGS)
|
|
AC_SUBST(SENDER_LIBS)
|
|
|
|
AC_SUBST(ZBXJS_LDFLAGS)
|
|
AC_SUBST(ZBXJS_LIBS)
|
|
|
|
AC_SUBST(SERVER_CONFIG_FILE)
|
|
AC_SUBST(PROXY_CONFIG_FILE)
|
|
AC_SUBST(AGENT_CONFIG_FILE)
|
|
AC_SUBST(AGENT2_CONFIG_FILE)
|
|
AC_SUBST(AGENT2_CONFIG_PATH)
|
|
AC_SUBST(AGENT2_CONFIG_PLUGINS_PATH)
|
|
AC_SUBST(WEBSERVICE_CONFIG_FILE)
|
|
|
|
AC_SUBST(EXTERNAL_SCRIPTS_PATH)
|
|
AC_SUBST(ALERT_SCRIPTS_PATH)
|
|
|
|
AC_SUBST(CURL_SSL_CERT_LOCATION)
|
|
AC_SUBST(CURL_SSL_KEY_LOCATION)
|
|
|
|
AC_SUBST(LOAD_MODULE_PATH)
|
|
|
|
GOBIN=${sbindir}
|
|
GOCMD=go
|
|
GOWORKDIR=$ac_abs_confdir/go/src/zabbix
|
|
|
|
export GOBIN=${GOBIN}
|
|
AC_SUBST(GOBIN)
|
|
AC_SUBST(GOCMD)
|
|
AC_SUBST(GOWORKDIR)
|
|
|
|
dnl *****************************************************************
|
|
dnl * *
|
|
dnl * Other checks *
|
|
dnl * *
|
|
dnl *****************************************************************
|
|
|
|
dnl Automake 1.8 to 1.9.6 sets mkdir_p macro (lower-cased).
|
|
AC_MSG_CHECKING(for mkdir -p candidate)
|
|
if test "x${MKDIR_P}" = "x"; then
|
|
if test "x${mkdir_p}" = "x"; then
|
|
AC_MSG_ERROR([No suitable "mkdir -p" candidate found.])
|
|
fi
|
|
AC_SUBST([MKDIR_P], ${mkdir_p})
|
|
fi
|
|
AC_MSG_RESULT([ok (${MKDIR_P})])
|
|
|
|
dnl Check if process statistics collector should be enabled
|
|
case "x$ARCH" in
|
|
xlinux|xsolaris)
|
|
AC_DEFINE(ZBX_PROCSTAT_COLLECTOR, 1 , [Define to 1 on linux and solaris platforms])
|
|
;;
|
|
esac
|
|
|
|
found_cmocka="no"
|
|
found_yaml="no"
|
|
|
|
dnl *****************************************************************
|
|
dnl * *
|
|
dnl * Output configuration results *
|
|
dnl * *
|
|
dnl *****************************************************************
|
|
|
|
m4_ifdef([CONF_TESTS],[CONF_TESTS])
|
|
AM_CONDITIONAL([TESTS],[test "x$found_cmocka" = "xyes"])
|
|
|
|
AC_CONFIG_FILES([
|
|
Makefile
|
|
include/Makefile
|
|
database/Makefile
|
|
database/mysql/Makefile
|
|
database/oracle/Makefile
|
|
database/postgresql/Makefile
|
|
database/sqlite3/Makefile
|
|
misc/Makefile
|
|
src/Makefile
|
|
src/go/Makefile
|
|
src/libs/Makefile
|
|
src/libs/zbxalgo/Makefile
|
|
src/libs/zbxasyncpoller/Makefile
|
|
src/libs/zbxasynchttppoller/Makefile
|
|
src/libs/zbxaudit/Makefile
|
|
src/libs/zbxautoreg/Makefile
|
|
src/libs/zbxavailability/Makefile
|
|
src/libs/zbxconnector/Makefile
|
|
src/libs/zbxcommon/Makefile
|
|
src/libs/zbxcomms/Makefile
|
|
src/libs/zbxcommshigh/Makefile
|
|
src/libs/zbxcompress/Makefile
|
|
src/libs/zbxconf/Makefile
|
|
src/libs/zbxcrypto/Makefile
|
|
src/libs/zbxdb/Makefile
|
|
src/libs/zbxdbsyncer/Makefile
|
|
src/libs/zbxcacheconfig/Makefile
|
|
src/libs/zbxcachehistory/Makefile
|
|
src/libs/zbxcachevalue/Makefile
|
|
src/libs/zbxdbhigh/Makefile
|
|
src/libs/zbxdbwrap/Makefile
|
|
src/libs/zbxdbschema/Makefile
|
|
src/libs/zbxdbupgrade/Makefile
|
|
src/libs/zbxdiag/Makefile
|
|
src/libs/zbxdiscovery/Makefile
|
|
src/libs/zbxembed/Makefile
|
|
src/libs/zbxeval/Makefile
|
|
src/libs/zbxevent/Makefile
|
|
src/libs/zbxexec/Makefile
|
|
src/libs/zbxexport/Makefile
|
|
src/libs/zbxexpr/Makefile
|
|
src/libs/zbxfile/Makefile
|
|
src/libs/zbxgetopt/Makefile
|
|
src/libs/zbxhash/Makefile
|
|
src/libs/zbxhistory/Makefile
|
|
src/libs/zbxhttp/Makefile
|
|
src/libs/zbxicmpping/Makefile
|
|
src/libs/zbxip/Makefile
|
|
src/libs/zbxipcservice/Makefile
|
|
src/libs/zbxjson/Makefile
|
|
src/libs/zbxkvs/Makefile
|
|
src/libs/zbxlog/Makefile
|
|
src/libs/zbxmedia/Makefile
|
|
src/libs/zbxmodules/Makefile
|
|
src/libs/zbxmutexs/Makefile
|
|
src/libs/zbxprof/Makefile
|
|
src/libs/zbxnix/Makefile
|
|
src/libs/zbxnum/Makefile
|
|
src/libs/zbxodbc/Makefile
|
|
src/libs/zbxparam/Makefile
|
|
src/libs/zbxpreproc/Makefile
|
|
src/libs/zbxprometheus/Makefile
|
|
src/libs/zbxproxybuffer/Makefile
|
|
src/libs/zbxregexp/Makefile
|
|
src/libs/zbxrtc/Makefile
|
|
src/libs/zbxself/Makefile
|
|
src/libs/zbxserialize/Makefile
|
|
src/libs/zbxexpression/Makefile
|
|
src/libs/zbxscripts/Makefile
|
|
src/libs/zbxservice/Makefile
|
|
src/libs/zbxshmem/Makefile
|
|
src/libs/zbxstr/Makefile
|
|
src/libs/zbxsysinfo/Makefile
|
|
src/libs/zbxsysinfo/agent/Makefile
|
|
src/libs/zbxsysinfo/aix/Makefile
|
|
src/libs/zbxsysinfo/alias/Makefile
|
|
src/libs/zbxsysinfo/common/Makefile
|
|
src/libs/zbxsysinfo/freebsd/Makefile
|
|
src/libs/zbxsysinfo/hpux/Makefile
|
|
src/libs/zbxsysinfo/linux/Makefile
|
|
src/libs/zbxsysinfo/netbsd/Makefile
|
|
src/libs/zbxsysinfo/openbsd/Makefile
|
|
src/libs/zbxsysinfo/osf/Makefile
|
|
src/libs/zbxsysinfo/osx/Makefile
|
|
src/libs/zbxsysinfo/simple/Makefile
|
|
src/libs/zbxsysinfo/solaris/Makefile
|
|
src/libs/zbxsysinfo/unknown/Makefile
|
|
src/libs/zbxstats/Makefile
|
|
src/libs/zbxtagfilter/Makefile
|
|
src/libs/zbxtasks/Makefile
|
|
src/libs/zbxthreads/Makefile
|
|
src/libs/zbxtime/Makefile
|
|
src/libs/zbxtimekeeper/Makefile
|
|
src/libs/zbxtrends/Makefile
|
|
src/libs/zbxvariant/Makefile
|
|
src/libs/zbxvault/Makefile
|
|
src/libs/zbxversion/Makefile
|
|
src/libs/zbxxml/Makefile
|
|
src/zabbix_agent/Makefile
|
|
src/zabbix_agent/logfiles/Makefile
|
|
src/zabbix_agent/active_checks/Makefile
|
|
src/zabbix_agent/agent_conf/Makefile
|
|
src/zabbix_agent/listener/Makefile
|
|
src/zabbix_get/Makefile
|
|
src/zabbix_java/Makefile
|
|
src/zabbix_js/Makefile
|
|
src/zabbix_proxy/Makefile
|
|
src/zabbix_proxy/datasender/Makefile
|
|
src/zabbix_proxy/diag/Makefile
|
|
src/zabbix_proxy/housekeeper/Makefile
|
|
src/zabbix_proxy/proxyconfig/Makefile
|
|
src/zabbix_proxy/rtc/Makefile
|
|
src/zabbix_proxy/preproc/Makefile
|
|
src/zabbix_proxy/proxyconfigwrite/Makefile
|
|
src/zabbix_proxy/stats/Makefile
|
|
src/zabbix_proxy/taskmanager/Makefile
|
|
src/zabbix_sender/Makefile
|
|
src/zabbix_server/Makefile
|
|
src/zabbix_server/alerter/Makefile
|
|
src/zabbix_server/connector/Makefile
|
|
src/zabbix_server/dbconfig/Makefile
|
|
src/zabbix_server/diag/Makefile
|
|
src/zabbix_server/discoverer/Makefile
|
|
src/zabbix_server/escalator/Makefile
|
|
src/zabbix_server/events/Makefile
|
|
src/zabbix_server/ha/Makefile
|
|
src/zabbix_server/housekeeper/Makefile
|
|
src/zabbix_server/httppoller/Makefile
|
|
src/zabbix_server/ipmi/Makefile
|
|
src/zabbix_server/lld/Makefile
|
|
src/zabbix_server/pinger/Makefile
|
|
src/zabbix_server/poller/Makefile
|
|
src/zabbix_server/preproc/Makefile
|
|
src/zabbix_server/proxyconfigread/Makefile
|
|
src/zabbix_server/proxypoller/Makefile
|
|
src/zabbix_server/reporter/Makefile
|
|
src/zabbix_server/rtc/Makefile
|
|
src/zabbix_server/service/Makefile
|
|
src/zabbix_server/snmptrapper/Makefile
|
|
src/zabbix_server/stats/Makefile
|
|
src/zabbix_server/taskmanager/Makefile
|
|
src/zabbix_server/timer/Makefile
|
|
src/zabbix_server/trapper/Makefile
|
|
src/zabbix_server/vmware/Makefile
|
|
man/Makefile
|
|
])
|
|
AC_OUTPUT
|
|
|
|
dnl The following variables use autoconf variables such as
|
|
dnl ${sysconfdir} and ${datadir} . Which in turn contain
|
|
dnl variables such as ${prefix}. In order to completely
|
|
dnl substitute all variables and output end-value in
|
|
dnl Configuration output below it is required to perform 2
|
|
dnl substitutions.
|
|
|
|
SERVER_CONFIG_FILE=`eval echo "${SERVER_CONFIG_FILE}"`
|
|
SERVER_CONFIG_FILE=`eval echo "${SERVER_CONFIG_FILE}"`
|
|
|
|
PROXY_CONFIG_FILE=`eval echo "${PROXY_CONFIG_FILE}"`
|
|
PROXY_CONFIG_FILE=`eval echo "${PROXY_CONFIG_FILE}"`
|
|
|
|
AGENT_CONFIG_FILE=`eval echo "${AGENT_CONFIG_FILE}"`
|
|
AGENT_CONFIG_FILE=`eval echo "${AGENT_CONFIG_FILE}"`
|
|
|
|
AGENT2_CONFIG_FILE=`eval echo "${AGENT2_CONFIG_FILE}"`
|
|
AGENT2_CONFIG_FILE=`eval echo "${AGENT2_CONFIG_FILE}"`
|
|
|
|
AGENT2_CONFIG_PATH=`eval echo "${AGENT2_CONFIG_PATH}"`
|
|
AGENT2_CONFIG_PATH=`eval echo "${AGENT2_CONFIG_PATH}"`
|
|
|
|
AGENT2_CONFIG_PLUGINS_PATH=`eval echo "${AGENT2_CONFIG_PLUGINS_PATH}"`
|
|
AGENT2_CONFIG_PLUGINS_PATH=`eval echo "${AGENT2_CONFIG_PLUGINS_PATH}"`
|
|
|
|
WEBSERVICE_CONFIG_FILE=`eval echo "${WEBSERVICE_CONFIG_FILE}"`
|
|
WEBSERVICE_CONFIG_FILE=`eval echo "${WEBSERVICE_CONFIG_FILE}"`
|
|
|
|
EXTERNAL_SCRIPTS_PATH=`eval echo "${EXTERNAL_SCRIPTS_PATH}"`
|
|
EXTERNAL_SCRIPTS_PATH=`eval echo "${EXTERNAL_SCRIPTS_PATH}"`
|
|
|
|
ALERT_SCRIPTS_PATH=`eval echo "${ALERT_SCRIPTS_PATH}"`
|
|
ALERT_SCRIPTS_PATH=`eval echo "${ALERT_SCRIPTS_PATH}"`
|
|
|
|
CURL_SSL_CERT_LOCATION=`eval echo "${CURL_SSL_CERT_LOCATION}"`
|
|
CURL_SSL_CERT_LOCATION=`eval echo "${CURL_SSL_CERT_LOCATION}"`
|
|
|
|
CURL_SSL_KEY_LOCATION=`eval echo "${CURL_SSL_KEY_LOCATION}"`
|
|
CURL_SSL_KEY_LOCATION=`eval echo "${CURL_SSL_KEY_LOCATION}"`
|
|
|
|
LOAD_MODULE_PATH=`eval echo "${LOAD_MODULE_PATH}"`
|
|
LOAD_MODULE_PATH=`eval echo "${LOAD_MODULE_PATH}"`
|
|
|
|
echo "
|
|
|
|
Configuration:
|
|
|
|
Detected OS: ${host_os}
|
|
Install path: ${prefix}
|
|
Compilation arch: ${ARCH}
|
|
|
|
Compiler: ${CC}
|
|
Compiler flags: ${CFLAGS}
|
|
|
|
Library-specific flags:"
|
|
|
|
if test "x$DB_CFLAGS" != "x"; then
|
|
echo " database: ${DB_CFLAGS}"
|
|
fi
|
|
|
|
if test "x$LIBPCRE_CFLAGS" != "x"; then
|
|
echo " libpcre: ${LIBPCRE_CFLAGS}"
|
|
fi
|
|
|
|
if test "x$LIBPCRE2_CFLAGS" != "x"; then
|
|
echo " libpcre2: ${LIBPCRE2_CFLAGS}"
|
|
fi
|
|
|
|
if test "x$LIBXML2_CFLAGS" != "x"; then
|
|
echo " libXML2: ${LIBXML2_CFLAGS}"
|
|
fi
|
|
|
|
if test "x$UNIXODBC_CFLAGS" != "x"; then
|
|
echo " unixODBC: ${UNIXODBC_CFLAGS}"
|
|
fi
|
|
|
|
if test "x$SNMP_CFLAGS" != "x"; then
|
|
echo " Net-SNMP: ${SNMP_CFLAGS}"
|
|
fi
|
|
|
|
if test "x$OPENIPMI_CFLAGS" != "x"; then
|
|
echo " OpenIPMI: ${OPENIPMI_CFLAGS}"
|
|
fi
|
|
|
|
if test "x$SSH2_CFLAGS" != "x"; then
|
|
echo " libssh2: ${SSH2_CFLAGS}"
|
|
fi
|
|
|
|
if test "x$SSH_CFLAGS" != "x"; then
|
|
echo " libssh: ${SSH_CFLAGS}"
|
|
fi
|
|
|
|
if test "x$LIBMODBUS_CFLAGS" != "x"; then
|
|
echo " libmodbus: ${LIBMODBUS_CFLAGS}"
|
|
fi
|
|
|
|
if test "x$TLS_CFLAGS" != "x"; then
|
|
echo " TLS: ${TLS_CFLAGS}"
|
|
fi
|
|
|
|
if test "x$LDAP_CPPFLAGS" != "x"; then
|
|
echo " LDAP: ${LDAP_CPPFLAGS}"
|
|
fi
|
|
|
|
if test "x$ICONV_CFLAGS" != "x"; then
|
|
echo " iconv: ${ICONV_CFLAGS}"
|
|
fi
|
|
|
|
if test "x$LIBEVENT_CFLAGS" != "x"; then
|
|
echo " libevent: ${LIBEVENT_CFLAGS}"
|
|
fi
|
|
|
|
echo "
|
|
Enable server: ${server}"
|
|
|
|
if test "x$server" != "xno"; then
|
|
|
|
echo " Server details:
|
|
With database: ${have_db}
|
|
WEB Monitoring: ${have_web_monitoring}"
|
|
|
|
if test "x$have_web_monitoring" = "xcURL"; then
|
|
echo " SSL certificates: ${CURL_SSL_CERT_LOCATION}
|
|
SSL keys: ${CURL_SSL_KEY_LOCATION}"
|
|
fi
|
|
|
|
echo " SNMP: ${have_snmp}
|
|
IPMI: ${have_ipmi}
|
|
SSH: ${have_ssh}
|
|
TLS: ${have_tls}
|
|
ODBC: ${have_unixodbc}
|
|
Linker flags: ${SERVER_LDFLAGS} ${LDFLAGS}
|
|
Libraries: ${SERVER_LIBS} ${LIBS}
|
|
Configuration file: ${SERVER_CONFIG_FILE}
|
|
External scripts: ${EXTERNAL_SCRIPTS_PATH}
|
|
Alert scripts: ${ALERT_SCRIPTS_PATH}
|
|
Modules: ${LOAD_MODULE_PATH}"
|
|
|
|
fi
|
|
|
|
echo "
|
|
Enable proxy: ${proxy}"
|
|
|
|
if test "x$proxy" != "xno"; then
|
|
|
|
echo " Proxy details:
|
|
With database: ${have_db}
|
|
WEB Monitoring: ${have_web_monitoring}"
|
|
|
|
if test "x$have_web_monitoring" = "xcURL"; then
|
|
echo " SSL certificates: ${CURL_SSL_CERT_LOCATION}
|
|
SSL keys: ${CURL_SSL_KEY_LOCATION}"
|
|
fi
|
|
|
|
echo " SNMP: ${have_snmp}
|
|
IPMI: ${have_ipmi}
|
|
SSH: ${have_ssh}
|
|
TLS: ${have_tls}
|
|
ODBC: ${have_unixodbc}
|
|
Linker flags: ${PROXY_LDFLAGS} ${LDFLAGS}
|
|
Libraries: ${PROXY_LIBS} ${LIBS}
|
|
Configuration file: ${PROXY_CONFIG_FILE}
|
|
External scripts: ${EXTERNAL_SCRIPTS_PATH}
|
|
Modules: ${LOAD_MODULE_PATH}"
|
|
|
|
fi
|
|
|
|
echo "
|
|
Enable agent: ${agent}"
|
|
|
|
if test "x$agent" != "xno"; then
|
|
|
|
echo " Agent details:
|
|
TLS: ${have_tls}
|
|
Modbus: ${have_libmodbus}
|
|
Linker flags: ${AGENT_LDFLAGS} ${LDFLAGS}
|
|
Libraries: ${AGENT_LIBS} ${LIBS}
|
|
Configuration file: ${AGENT_CONFIG_FILE}
|
|
Modules: ${LOAD_MODULE_PATH}"
|
|
|
|
fi
|
|
|
|
echo "
|
|
Enable agent 2: ${agent2}"
|
|
|
|
echo "
|
|
Enable web service: ${webservice}"
|
|
|
|
echo "
|
|
Enable Java gateway: ${java}"
|
|
|
|
if test "x$java" != "xno"; then
|
|
|
|
echo " Java gateway details:
|
|
Java compiler: ${JAVAC}
|
|
Java archiver: ${JAR}"
|
|
|
|
fi
|
|
|
|
echo "
|
|
LDAP support: ${found_ldap}
|
|
IPv6 support: ${have_ipv6}
|
|
cmocka support: ${found_cmocka}"
|
|
|
|
if test "x$found_cmocka" != "xno"; then
|
|
|
|
echo " cmocka library details:
|
|
Compiler flags: ${CMOCKA_CFLAGS}
|
|
Linker flags: ${CMOCKA_LDFLAGS}
|
|
Libraries: ${CMOCKA_LIBS}
|
|
Library location: ${CMOCKA_LIBRARY_PATH}"
|
|
|
|
fi
|
|
|
|
echo "
|
|
yaml support: ${found_yaml}"
|
|
|
|
if test "x$found_yaml" != "xno"; then
|
|
|
|
echo " yaml library details:
|
|
Compiler flags: ${YAML_CFLAGS}
|
|
Linker flags: ${YAML_LDFLAGS}
|
|
Libraries: ${YAML_LIBS}
|
|
Library location: ${YAML_LIBRARY_PATH}"
|
|
|
|
fi
|
|
|
|
echo
|
|
echo "***********************************************************"
|
|
echo "* Now run '${am_make} install' *"
|
|
echo "* *"
|
|
echo "* Thank you for using Zabbix! *"
|
|
echo "* <http://www.zabbix.com> *"
|
|
echo "***********************************************************"
|
|
echo
|