Code

Removed acconfig.h from EXTRA_DIST
[nagiosplug.git] / configure.in
1 dnl Process this file with autoconf to produce a configure script.
2 AC_REVISION ($Revision$)
3 AC_INIT(Helper.pm)
4 VER=1.3.0
5 REL=1
6 AC_SUBST(VER)
7 AC_SUBST(REL)
8 PACKAGE_VERSION="${VER}"
9 AC_SUBST(PACKAGE_VERSION)
10 PACKAGE_RELEASE="${REL}"
11 AC_SUBST(PACKAGE_RELEASE)
12 AM_INIT_AUTOMAKE(nagios-plugins,${PACKAGE_VERSION})
13 AM_CONFIG_HEADER(plugins/config.h plugins/common.h plugins/version.h plugins/netutils.h plugins/utils.h plugins/popen.h)
14 AC_CANONICAL_HOST
16 AC_PREFIX_DEFAULT(/usr/local/nagios)
18 dnl Figure out how to invoke "install" and what install options to use.
20 AC_PROG_INSTALL
21 AC_SUBST(INSTALL)
23 AC_PROG_CC
24 AC_PROG_CPP
25 AC_PROG_GCC_TRADITIONAL
26 AC_PROG_RANLIB
27 AC_AIX
28 AC_MINIX
30 AC_PROG_MAKE_SET
31 AC_PROG_AWK
33 # Check for SunOS statfs brokenness wrt partitions 2GB and larger.
34 # If <sys/vfs.h> exists and struct statfs has a member named f_spare,
35 # enable the work-around code in fsusage.c.
36 AC_MSG_CHECKING([for statfs that truncates block counts])
37 AC_CACHE_VAL(fu_cv_sys_truncating_statfs,
38 [AC_TRY_COMPILE([
39 #if !defined(sun) && !defined(__sun)
40 choke -- this is a workaround for a Sun-specific problem
41 #endif
42 #include <sys/types.h>
43 #include <sys/vfs.h>],
44 [struct statfs t; long c = *(t.f_spare);],
45 fu_cv_sys_truncating_statfs=yes,
46 fu_cv_sys_truncating_statfs=no,
47 )])
48 if test $fu_cv_sys_truncating_statfs = yes; then
49   AC_DEFINE(STATFS_TRUNCATES_BLOCK_COUNTS, 1,
50 [  Define if the block counts reported by statfs may be truncated to 2GB
51    and the correct values may be stored in the f_spare array.
52    (SunOS 4.1.2, 4.1.3, and 4.1.3_U1 are reported to have this problem.
53    SunOS 4.1.1 seems not to be affected.)])
54 fi
56 saved_srcdir=$srcdir
57 srcdir=$srcdir/lib
58 test -f $srcdir/getloadavg.c \
59   || AC_MSG_ERROR([getloadavg.c is not in $srcdir])
60 AC_FUNC_GETLOADAVG
61 srcdir=$saved_srcdir
63 ifdef([AC_FUNC_STRTOD],[AC_FUNC_STRTOD],[AM_FUNC_STRTOD])
64 dnl AM_WITH_REGEX
65 AC_PROG_RANLIB
67 AC_PATH_PROG(ACLOCAL,aclocal)
68 AC_PATH_PROG(AUTOMAKE,automake)
69 AC_PATH_PROG(AUTOCONF,autoconf)
70 AC_PATH_PROG(AUTOHEADER,autoheader)
72 PLUGIN_TEST=`echo $srcdir/plugins/t/*.t|sed -e 's,\.*/plugins/,,g'`
73 AC_SUBST(PLUGIN_TEST)dnl
75 SCRIPT_TEST=`echo $srcdir/plugins-scripts/t/*.t|sed -e 's,\.*/plugins-scripts/,,g'`
76 AC_SUBST(SCRIPT_TEST)dnl
78 WARRANTY="The nagios plugins come with ABSOLUTELY NO WARRANTY. You may redistribute\ncopies of the plugins under the terms of the GNU General Public License.\nFor more information about these matters, see the file named COPYING.\n"
79 AC_SUBST(WARRANTY)
81 SUPPORT="Send email to nagios-users@lists.sourceforge.net if you have questions\nregarding use of this software. To submit patches or suggest improvements,\nsend email to nagiosplug-devel@lists.sourceforge.net\n"
82 AC_SUBST(SUPPORT)
84 dnl CGIURL has changed for Nagios with 1.0 beta
85 AC_ARG_WITH(cgiurl,
86         ACX_HELP_STRING([--with-cgiurl=DIR],
87                 [sets URL for cgi programs]),
88         cgiurl=$withval,
89         cgiurl=/nagios/cgi-bin)
90 CGIURL="$cgiurl"
91 AC_DEFINE_UNQUOTED(CGIURL,"$CGIURL",[URL of CGI programs])
93 AC_ARG_WITH(nagios_user,
94         ACX_HELP_STRING([--with-nagios-user=USER],
95                 [set user name to run nagios]),
96         nagios_usr=$withval,
97         nagios_usr=nagios)
98 AC_ARG_WITH(nagios_group,
99         ACX_HELP_STRING([--with-nagios-group=GROUP],
100                 [set group name to run nagios]),
101         nagios_grp=$withval,
102         nagios_grp=nagios)
103 AC_SUBST(nagios_usr)
104 AC_SUBST(nagios_grp)
105 INSTALL_OPTS="-o $nagios_usr -g $nagios_grp"
106 AC_SUBST(INSTALL_OPTS)
108 AC_ARG_WITH(trusted_path,
109         ACX_HELP_STRING([--with-trusted-path=PATH],
110                 [sets trusted path for executables called by scripts (default=/bin:/sbin:/usr/bin:/usr/sbin)]),
111         trusted_path=$withval,
112         trusted_path=/bin:/sbin:/usr/bin:/usr/sbin)
113 AC_SUBST(trusted_path)
115 EXTRAS=
116 dnl PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/etc:/usr/local/bin:/usr/local/sbin:$PATH
118 LDFLAGS="$LDFLAGS -L."
120 ac_cv_uname_m=`uname -m`
121 ac_cv_uname_s=`uname -s`
122 ac_cv_uname_r=`uname -r`
123 ac_cv_uname_v=`uname -v`
125 dnl Checks for programs.
126 AC_PATH_PROG(PYTHON,python)
127 AC_PATH_PROG(PERL,perl)
128 AC_PATH_PROG(SH,sh)
130 AC_PATH_PROG(HOSTNAME,hostname)
131 AC_PATH_PROG(BASENAME,basename)
133 dnl
134 dnl Check for miscellaneous stuff
135 dnl 
137 case $host_vender-$host_os in
138 sun*)
139         AC_DEFINE(__EXTENSIONS__,1,[Sun's netdb.h needs this for getaddrinfo])
140         ;;
141 osf*)
142         AC_DEFINE(_OSF_SOURCE,1,[OSF needs this for getaddrinfo])
143         ;;
144 esac
146 dnl
147 dnl Checks for libraries.
148 dnl
150 AC_CHECK_LIB(dce,main,SOCKETLIBS="$SOCKETLIBS -ldce")
151 AC_CHECK_LIB(nsl,main,SOCKETLIBS="$SOCKETLIBS -lnsl")
152 AC_CHECK_LIB(socket,socket,SOCKETLIBS="$SOCKETLIBS -lsocket")
153 AC_CHECK_LIB(resolv,main,SOCKETLIBS="$SOCKETLIBS -lresolv")
154 AC_SUBST(SOCKETLIBS)
156 dnl Check for PostgreSQL libraries
157 _SAVEDLIBS="$LIBS"
158 _SAVEDCPPFLAGS="$CPPFLAGS"
159 AC_ARG_WITH(pgsql,
160         ACX_HELP_STRING([--with-pgsql=DIR],
161                 [sets path to pgsql installation]),
162         PGSQL=$withval,)
163 AC_CHECK_LIB(crypt,main)
164 if test "$ac_cv_lib_crypt_main" = "yes"; then
165   if test -n "$PGSQL"; then
166     LDFLAGS="$LDFLAGS -L$PGSQL/lib"
167     CPPFLAGS="$CPPFLAGS -I$PGSQL/include"
168   fi
169   AC_CHECK_LIB(pq,PQsetdbLogin,,,-lcrypt)
170   if test "$ac_cv_lib_pq_PQsetdbLogin" = "yes"; then
171     AC_CHECK_HEADERS(pgsql/libpq-fe.h)
172     AC_CHECK_HEADERS(postgresql/libpq-fe.h)
173     AC_CHECK_HEADERS(libpq-fe.h)
174     if [[ -n "$PGSQL" -a "$ac_cv_header_libpq_fe_h" = "yes" ]]; then
175       PGLIBS="-L$PGSQL/lib -lpq -lcrypt"
176       PGINCLUDE="-I$PGSQL/include"
177     elif test  "$ac_cv_header_pgsql_libpq_fe_h" = "yes"; then
178       PGLIBS="-lpq -lcrypt"
179       PGINCLUDE="-I/usr/include/pgsql"
180     elif test  "$ac_cv_header_postgresql_libpq_fe_h" = "yes"; then
181       PGLIBS="-L$PGSQL/lib -lpq -lcrypt"
182       PGINCLUDE="-I/usr/include/postgresql"
183     elif test  "$ac_cv_header_libpq_fe_h" = "yes"; then
184       PGLIBS="-L$PGSQL/lib -lpq -lcrypt"
185       PGINCLUDE="-I$PGSQL/include"
186     fi
187     if test -z "$PGINCLUDE"; then
188       AC_MSG_WARN([Skipping PostgreSQL plugin (check_pgsql)])
189       AC_MSG_WARN([install PostgreSQL headers to compile this plugin (see REQUIREMENTS).])
190     else
191       AC_SUBST(PGLIBS)
192       AC_SUBST(PGINCLUDE)
193       EXTRAS="$EXTRAS check_pgsql"
194     fi
195   else
196     AC_MSG_WARN([Skipping PostgreSQL plugin (check_pgsql)])
197     AC_MSG_WARN([LIBS="$LIBS" CPPFLAGS="$CPPFLAGS"])
198     AC_MSG_WARN([install PostgreSQL libs to compile this plugin (see REQUIREMENTS).])
199   fi
200 else
201   AC_MSG_WARN([Skipping PostgreSQL plugin (check_pgsql)])
202   AC_MSG_WARN([install lib crypt and PostgreSQL libs to compile this plugin (see REQUIREMENTS).])
203 fi
204 LIBS="$_SAVEDLIBS"
205 CPPFLAGS="$_SAVEDCPPFLAGS"
207 dnl Check for radius libraries
208 _SAVEDLIBS="$LIBS"
209 AC_CHECK_LIB(radiusclient,rc_read_config)
210 if test "$ac_cv_lib_radiusclient_rc_read_config" = "yes"; then
211   EXTRAS="$EXTRAS check_radius"
212         RADIUSLIBS="-lradiusclient"
213   AC_SUBST(RADIUSLIBS)
214 else
215   AC_MSG_WARN([Skipping radius plugin])
216   AC_MSG_WARN([install radius libs to compile this plugin (see REQUIREMENTS).])
217 fi
218 LIBS="$_SAVEDLIBS"
220 dnl Check for LDAP libraries
221 _SAVEDLIBS="$LIBS"
222 AC_CHECK_LIB(ldap,main,,,-llber)
223 if test "$ac_cv_lib_ldap_main" = "yes"; then
224   LDAPLIBS="-lldap -llber"\
225   LDAPINCLUDE="-I/usr/include/ldap"
226   AC_SUBST(LDAPLIBS)
227   AC_SUBST(LDAPINCLUDE)
228   EXTRAS="$EXTRAS check_ldap"
229 else
230   AC_MSG_WARN([Skipping LDAP plugin])
231   AC_MSG_WARN([install LDAP libs to compile this plugin (see REQUIREMENTS).])
232 fi
233 LIBS="$_SAVEDLIBS"
236 dnl Check for mysql libraries
237 _SAVEDLIBS="$LIBS"
238 _SAVEDCPPFLAGS="$CPPFLAGS"
239 AC_ARG_WITH(mysql,
240         ACX_HELP_STRING([--with-mysql=DIR],
241                 [sets path to mysql installation (assumes lib/mysql and include subdirs]),
242         MYSQL=$withval,)
243 if test -n "$MYSQL"; then
244   MYSQLLIBDIR=$MYSQL/lib/mysql
245   CPPFLAGS="-I$MYSQL/include"
246   AC_CHECK_LIB(mysqlclient,mysql_init,MYSQLLIBS="-lmysqlclient -lz" check_mysql_LDFLAGS="-L$MYSQLLIBDIR ",,-L$MYSQLLIBDIR -lz)
247   AC_CHECK_LIB(mysqlclient,mysql_close,MYSQLLIBS="-lmysqlclient")
248 elif test -f /usr/lib/libmysqlclient.so; then
249   AC_CHECK_LIB(mysqlclient,mysql_init,MYSQLLIBS="-lmysqlclient -lz",,-lz)
250   AC_CHECK_LIB(mysqlclient,mysql_close,MYSQLLIBS="-lmysqlclient")
251 elif test -f /usr/lib/libmysqlclient.a; then
252   AC_CHECK_LIB(mysqlclient,mysql_init,MYSQLLIBS="-lmysqlclient -lz",,-lz)
253   AC_CHECK_LIB(mysqlclient,mysql_close,MYSQLLIBS="-lmysqlclient")
254 elif test -f /usr/lib/mysql/libmysqlclient.so; then
255   AC_CHECK_LIB(mysqlclient,mysql_init,MYSQLLIBS="-lmysqlclient -lz" check_mysql_LDFLAGS="-L/usr/lib/mysql",,-L/usr/lib/mysql -lz)
256   AC_CHECK_LIB(mysqlclient,mysql_close,MYSQLLIBS="-lmysqlclient" check_mysql_LDFLAGS="-L/usr/lib/mysql",,-L/usr/lib/mysql)
257 elif test -f /usr/lib/mysql/libmysqlclient.a; then
258   AC_CHECK_LIB(mysqlclient,mysql_init,MYSQLLIBS="-lmysqlclient -lz" check_mysql_LDFLAGS="-L/usr/lib/mysql",,-L/usr/lib/mysql -lz)
259   AC_CHECK_LIB(mysqlclient,mysql_close,MYSQLLIBS="-lmysqlclient" check_mysql_LDFLAGS="-L/usr/lib/mysql",,-L/usr/lib/mysql)
260 fi
261 if test "$ac_cv_lib_mysqlclient_mysql_init" = "yes" -o "$ac_cv_lib_mysqlclient_mysql_close" = "yes"; then
262   AC_CHECK_HEADERS(mysql/mysql.h mysql/errmsg.h, MYSQLINCLUDE="-I$MYSQL/include" )
263   if test "$ac_cv_header_mysql_mysql_h" = "yes" -a "$ac_cv_header_mysql_errmsg_h" = "yes"; then
264     EXTRAS="$EXTRAS check_mysql"
265     AC_SUBST(MYSQLINCLUDE)
266     AC_SUBST(MYSQLLIBS)
267     AC_SUBST(check_mysql_LDFLAGS)
268   else
269     AC_MSG_WARN([Skipping mysql plugin])
270     AC_MSG_WARN([install mysql client headers to compile this plugin (see REQUIREMENTS).])
271   fi
272 else
273   AC_MSG_WARN([Skipping mysql plugin])
274   AC_MSG_WARN([install mysql client libs to compile this plugin (see REQUIREMENTS).])
275 fi
276 CPPFLAGS="$_SAVEDCPPFLAGS"
277 LIBS="$_SAVEDLIBS"
279 dnl Check for OpenSSL location
280 AC_PATH_PROG(OPENSSL,openssl)
281 if test "$OPENSSL" = "/usr/bin/openssl"; then
282   OPENSSL=/usr
283 elif test "$OPENSSL" = "/usr/sbin/openssl"; then
284   OPENSSL=/usr
285 elif test "$OPENSSL" = "/opt/bin/openssl"; then
286   OPENSSL=/opt
287 elif test "$OPENSSL" = "/opt/openssl/bin/openssl"; then
288   OPENSSL=/opt/openssl
289 elif test "$OPENSSL" = "/usr/slocal/bin/openssl"; then
290   OPENSSL=/usr/slocal
291 elif test "$OPENSSL" = "/usr/local/bin/openssl"; then
292   OPENSSL=/usr/local
293 elif test "$OPENSSL" = "/usr/local/ssl/bin/openssl"; then
294   OPENSSL=/usr/local/ssl
295 fi
296 AC_ARG_WITH(openssl,
297         ACX_HELP_STRING([--with-openssl=DIR],
298                 [sets path to openssl installation]),
299         OPENSSL=$withval,)
301 dnl #########################################################################
302 dnl Check if Posix getaddrinfo() is available.  It is also possible to use
303 dnl the version from the lwres library distributed with BIND.
304 dnl #########################################################################
305 AC_ARG_ENABLE([emulate-getaddrinfo],
306               ACX_HELP_STRING([--enable-emulate-getaddrinfo],
307                              [enable getaddrinfo emulation (default=no)]),
308               ,
309               enable_emulate_getaddrinfo=no)
310 AC_ARG_WITH(lwres,
311             ACX_HELP_STRING([--with-lwres=DIR],
312                            [use lwres library for getaddrinfo (default=no)]),
313             ,
314             with_lwres=no)
316 dnl ## enable force to test getaddrinfo.c
317 if test x$enable_emulate_getaddrinfo = xforce ; then
318         enable_emulate_getaddrinfo=yes
319         have_getaddrinfo=no
320 else
322 have_getaddrinfo=no
323 if test x$with_lwres != xno ; then
324         if test "$with_lwres" != yes ; then
325                    CPPFLAGS="-I${with_lwres}/include $CPPFLAGS"
326                    LDFLAGS="-L${with_lwres}/lib $LDFLAGS"
327         fi
328         AC_CHECK_HEADERS(lwres/netdb.h, ,
329                         [AC_MSG_ERROR([cannot find <lwres/netdb.h>])])
330         AC_CHECK_LIB(lwres, lwres_getaddrinfo, ,
331                      [AC_MSG_ERROR([cannot find the lwres library])],
332                      -lnsl -lpthread)
333         have_getaddrinfo=yes
334 fi
336 if test x$have_getaddrinfo != xyes ; then
337         AC_SEARCH_LIBS(getaddrinfo, socket resolv bind nsl c_r cr, have_getaddrinfo=yes)
338 fi
340 dnl # Special nonsense for systems that actually have getaddrinfo but
341 dnl # redefine the name to something else, e.g. OSF
342 if test x$have_getaddrinfo != xyes ; then
343         AC_MSG_CHECKING(if getaddrinfo is redefined in netdb.h)
344         AC_TRY_LINK([
345 #               include <netdb.h>
346         ], [
347                 struct addrinfo hints, *res;
348                 int err;
350                 err = getaddrinfo ("host", "service", &hints, &res);
351         ], [
352                 have_getaddrinfo=yes
353                 AC_MSG_RESULT(yes)
354         ], [AC_MSG_RESULT(no)])
355 fi
357 fi
359 if test x$have_getaddrinfo != xno ; then
360         if test x$enable_emulate_getaddrinfo != xno ; then
361                 AC_MSG_ERROR([getaddrinfo found but emulate-getaddrinfo was enabled])
362         fi
363         AC_DEFINE(HAVE_GETADDRINFO, 1,
364                   [Does system provide RFC 2553/Posix getaddrinfo?])
365 else
366         if test x$enable_emulate_getaddrinfo != xyes ; then
367                 AC_MSG_ERROR([getaddrinfo not found: try --with-lwres or --enable-emulate-getaddrinfo])
368         fi
369         LIBOBJS="$LIBOBJS getaddrinfo.o"
370 fi
372 if test x"$enable_emulate_getaddrinfo" != xno ; then
373     have_resolver=no
375   dnl  Try for getipnodebyname
376     AC_SEARCH_LIBS(getipnodebyname, resolv bind nsl c_r cr, have_resolver=yes)
377     if test x"$have_resolver" != xno ; then
378          AC_DEFINE(HAVE_GETIPNODEBYNAME, 1,
379                    [Set when getipnodebyname is available])
380     fi
382   dnl  Try for gethostbyname_r
383     if test x"$have_resolver" = xno ; then
384         AC_SEARCH_LIBS(gethostbyname_r, resolv bind nsl c_r cr,
385                        [have_resolver=yes
386                         ACX_WHICH_GETHOSTBYNAME_R])
387     fi
389   dnl  Try for gethostbyname
390     if test x"$have_resolver" = xno ; then
391         if test x"$enable_pthreads" != xno ; then
392             AC_MSG_WARN([using threads but cannot find gethostbyname_r or getipnodebyname])
393         fi
394         AC_SEARCH_LIBS(gethostbyname, resolv bind nsl, ,
395                        [AC_MSG_ERROR([cannot find gethostbyname])])
396     fi
397     LIBOBJS="$LIBOBJS gethostbyname.o"
399     AC_CACHE_CHECK([for IPv6 support], acx_cv_sys_use_ipv6, [
400             AC_TRY_COMPILE([
401 #               include <netinet/in.h>
402             ], [
403                 struct sockaddr_in6 sin6;
404                 void *p;
406                 sin6.sin6_family = AF_INET6;
407                 sin6.sin6_port = 587;
408                 p = &sin6.sin6_addr;
409             ], [acx_cv_sys_use_ipv6=yes], [acx_cv_sys_use_ipv6=no])
410     ])
411     if test x"$acx_cv_sys_use_ipv6" != xno ; then
412             AC_DEFINE(USE_IPV6,1,[Enable IPv6 support])
413     fi
414 fi
416 AC_CHECK_HEADERS(krb5.h,FOUNDINCLUDE=yes,FOUNDINCLUDE=no)
417 if test "$FOUNDINCLUDE" = "no"; then
418   _SAVEDCPPFLAGS="$CPPFLAGS"
419   CPPFLAGS="$_SAVEDCPPFLAGS -I/usr/kerberos/include"
420   unset ac_cv_header_krb5_h
421   AC_CHECK_HEADERS(krb5.h,
422                    KRB5INCLUDE="-I/usr/kerberos/include"
423                    FOUNDINCLUDE=yes,
424                    FOUNDINCLUDE=no)
425 fi
426 AC_SUBST(KRBINCLUDE)
427 if test "$FOUNDINCLUDE" = "no"; then
428   CPPFLAGS="$_SAVEDCPPFLAGS"
429 fi
431 dnl Check for OpenSSL header files
432 unset FOUNDINCLUDE
433 _SAVEDCPPFLAGS="$CPPFLAGS"
434 CPPFLAGS="$CPPFLAGS -I$OPENSSL/include"
435 AC_CHECK_HEADERS(openssl/ssl.h openssl/x509.h openssl/rsa.h openssl/pem.h openssl/crypto.h openssl/err.h,
436                  SSLINCLUDE="-I$OPENSSL/include"
437                  FOUNDINCLUDE=yes,
438                  FOUNDINCLUDE=no)
439 if test "$FOUNDINCLUDE" = "no"; then
440   AC_CHECK_HEADERS(ssl.h x509.h rsa.h pem.h crypto.h err.h,
441                    SSLINCLUDE="-I$OPENSSL/include"
442                    FOUNDINCLUDE=yes,
443                    FOUNDINCLUDE=no)
444 fi
445 AC_SUBST(SSLINCLUDE)
446 if test "$FOUNDINCLUDE" = "no"; then
447   CPPFLAGS="$_SAVEDCPPFLAGS"
448 fi
450 dnl Check for crypto lib
451 _SAVEDLIBS="$LIBS"
452 AC_CHECK_LIB(crypto,CRYPTO_lock,,,-L$OPENSSL/lib)
453 if test "$ac_cv_lib_crypto_CRYPTO_lock" = "yes"; then
454   dnl Check for SSL lib
455   AC_CHECK_LIB(ssl,main,LDFLAGS="$LDFLAGS -L$OPENSSL/lib" SSLLIBS="-lssl -lcrypto",AC_CHECK_LIB(ssl,main,LDFLAGS="$LDFLAGS -L$OPENSSL/lib" SSLLIBS="-lssl -lcrypto"),-L$OPENSSL/lib -lcrypto)
456 fi
457 LIBS="$_SAVEDLIBS"
459 dnl test headers and libs to decide whether check_http should use SSL
460 if test "$ac_cv_lib_crypto_CRYPTO_lock" = "yes"; then
461   if test "$ac_cv_lib_ssl_main" = "yes"; then
462     if test "$FOUNDINCLUDE" = "yes"; then
463       AC_SUBST(SSLLIBS)
464       AC_DEFINE(HAVE_SSL,1,[Define if SSL libraries are found])
465     fi
466   fi
467 fi
468 CPPFLAGS="$_SAVEDCPPFLAGS"
470 dnl
471 dnl Checks for header files.
472 dnl
474 AC_HEADER_STDC
475 AC_HEADER_TIME
476 AC_HEADER_SYS_WAIT
477 AC_CHECK_HEADERS(signal.h strings.h string.h syslog.h unistd.h uio.h errno.h regex.h sys/types.h sys/time.h sys/socket.h sys/loadavg.h)
478 AC_CHECK_HEADERS(stdarg.h sys/unistd.h unistd.h ctype.h stdlib.h)
479 AC_CHECK_HEADERS(sys/vfs.h,
480                  [AC_TRY_COMPILE([#include <sys/vfs.h>],
481                                  [struct statfs *buf],
482                                  [AC_DEFINE(HAVE_STRUCT_STATFS,1,[Define if statfs struct can be found])])])
483 AC_CHECK_HEADERS(sys/param.h sys/mount.h,
484                  [AC_TRY_COMPILE([#include <sys/param.h>
485 #include <sys/mount.h>],
486                                  [struct statfs *buf],
487                                  [AC_DEFINE(HAVE_STRUCT_STATFS,1,[Define if statfs struct can be found])])])
489 dnl Checks for typedefs, structures, and compiler characteristics.
490 AC_C_CONST
491 AC_STRUCT_TM
492 AC_TYPE_PID_T
493 AC_TYPE_SIZE_T
494 AC_TYPE_SIGNAL
496 AC_CHECK_SIZEOF(int,cross)
497 AC_CHECK_SIZEOF(long,cross)
498 AC_CHECK_SIZEOF(short,cross)
500 AC_CACHE_CHECK([for long long],ac_cv_have_longlong,[
501 AC_TRY_RUN([#include <stdio.h>
502 main() { long long x = 1000000; x *= x; exit(((x/1000000) == 1000000)? 0: 1); }],
503 ac_cv_have_longlong=yes,ac_cv_have_longlong=no,ac_cv_have_longlong=cross)])
504 if test x"$ac_cv_have_longlong" = x"yes"; then
505     AC_DEFINE(HAVE_LONGLONG,1,[Define if system has long long type])
506 fi
509 # Check if the compiler supports the LL prefix on long long integers.
510 # AIX needs this.
512 AC_CACHE_CHECK([for LL suffix on long long integers],ac_cv_compiler_supports_ll, [
513     AC_TRY_COMPILE([#include <stdio.h>],[long long i = 0x8000000000LL],
514         ac_cv_compiler_supports_ll=yes,ac_cv_compiler_supports_ll=no)])
515 if test x"$ac_cv_compiler_supports_ll" = x"yes"; then
516    AC_DEFINE(COMPILER_SUPPORTS_LL,1,[Define if compiler support long long])
517 fi
519 AC_CACHE_CHECK([for __va_copy],ac_cv_HAVE_VA_COPY,[
520 AC_TRY_LINK([#include <stdarg.h>
521 va_list ap1,ap2;], [__va_copy(ap1,ap2);],
522 ac_cv_HAVE_VA_COPY=yes,ac_cv_HAVE_VA_COPY=no)])
523 if test x"$ac_cv_HAVE_VA_COPY" = x"yes"; then
524     AC_DEFINE(HAVE_VA_COPY,1,[Define if system has va_copy])
525 fi
527 AC_CHECK_FUNCS(vsnprintf snprintf asprintf vasprintf)
528 AC_CACHE_CHECK([for C99 vsnprintf],ac_cv_HAVE_C99_VSNPRINTF,[
529 AC_TRY_RUN([
530 #include <sys/types.h>
531 #include <stdarg.h>
532 void foo(const char *format, ...) { 
533        va_list ap;
534        int len;
535        char buf[5];
537        va_start(ap, format);
538        len = vsnprintf(buf, 0, format, ap);
539        va_end(ap);
540        if (len != 5) exit(1);
542        va_start(ap, format);
543        len = vsnprintf(0, 0, format, ap);
544        va_end(ap);
545        if (len != 5) exit(1);
547        if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
549        exit(0);
551 main() { foo("hello"); }
552 ],
553 ac_cv_HAVE_C99_VSNPRINTF=yes,ac_cv_HAVE_C99_VSNPRINTF=no,ac_cv_HAVE_C99_VSNPRINTF=cross)])
554 if test x"$ac_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
555     AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Define if system has C99 compatible vsnprintf])
556 fi
558 AC_TRY_COMPILE([#include <sys/time.h>],
559                [struct timeval *tv;
560                 struct timezone *tz;],
561                AC_DEFINE(HAVE_STRUCT_TIMEVAL,1,[Define if we have a timeval structure])
562                AC_TRY_COMPILE([#include <sys/time.h>],
563                               [struct timeval *tv;
564                                struct timezone *tz;
565                                gettimeofday(tv, tz);],
566                               AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define if gettimeofday is found]),
567                               AC_DEFINE(NEED_GETTIMEOFDAY,1,[Define if gettimeofday is needed])))
569 dnl Checks for library functions.
570 AC_CHECK_FUNCS(memmove select socket strdup strstr strtod strtol strtoul)
572 AC_MSG_CHECKING(return type of socket size)
573 AC_TRY_COMPILE([#include <stdlib.h>
574                 #include <sys/types.h>
575                 #include <sys/socket.h>],
576                [int a = send(1, (const void *) buffer, (size_t *) 0, (int *) 0);],
577                ac_cv_socket_size_type=["size_t"]
578                 AC_MSG_RESULT(size_t),
579                ac_cv_socket_size_type=["int"]
580                 AC_MSG_RESULT(int))
582 AC_DEFINE_UNQUOTED(SOCKET_SIZE_TYPE, $ac_cv_socket_size_type ,
583         [Define type of socket size])
585 if test -f "/proc/loadavg"
586 then
587   AC_DEFINE(HAVE_PROC_LOADAVG,1,[Define if /proc/loadavg or similar exists])
588   AC_DEFINE_UNQUOTED(PROC_LOADAVG,"/proc/loadavg",[Location of /proc/loadavg])
589 fi
591 dnl #### Process table test
593 AC_PATH_PROG(PATH_TO_PS,ps)
594 ac_cv_use_ps_vars=no
596 AC_MSG_CHECKING(for ps syntax)
597 dnl  STAT UCOMM              VSZ   RSS USER       UID  PPID COMMAND
598 if ps -weo 'stat comm vsz rss user uid ppid args' 2>/dev/null | \
599         egrep -i ["^ *S[TAUES]* +[UCOMDNA]+ +[VSIZE]+ +R[S]+ +U[SER]+ +U[ID]+ \
600         +P[PID]+ +[RGSCOMDNA]+"] >/dev/null
601 then
602         ac_cv_use_ps_vars=yes
603         ac_cv_ps_varlist="[procstat,&procuid,&procppid,procprog,&pos]"
604         ac_cv_ps_raw_command="$PATH_TO_PS -weo 'stat user ppid args'"
605         ac_cv_ps_command="$PATH_TO_PS -weo 'stat uid ppid comm args'"
606         ac_cv_ps_format="%s %d %d %s %n"
607         ac_cv_vsz_command="$PATH_TO_PS -weo 'vsz comm'"
608         ac_cv_vsz_format="%d %s"
609         ac_cv_rss_command="$PATH_TO_PS -weo 'rss comm'"
610         ac_cv_rss_format="%d %s"
611         EXTRAS="$EXTRAS check_nagios"
612         AC_MSG_RESULT([$ac_cv_ps_command])
614 dnl FreeBSD
615 elif ps waxco 'state command vsz rss uid user ppid' 2>/dev/null | \
616         egrep -i ["^STAT +COMMAND +VSZ +RSS +UID +USER +PPID"] >/dev/null
617 then
618         ac_cv_use_ps_vars=yes
619         ac_cv_ps_varlist="[procstat,&procuid,&procppid,procprog,&pos]"
620         ac_cv_ps_raw_command="$PATH_TO_PS waxo 'state uid ppid command'"
621         ac_cv_ps_command="$PATH_TO_PS waxco 'state uid ppid command command'"
622         ac_cv_ps_format="%s %d %d %s %n"
623         ac_cv_vsz_command="$PATH_TO_PS waxco 'vsz command'"
624         ac_cv_vsz_format="%d %s"
625         ac_cv_rss_command="$PATH_TO_PS waxco 'rss command'"
626         ac_cv_rss_format="%d %s"
627         EXTRAS="$EXTRAS check_nagios"
628         AC_MSG_RESULT([$ac_cv_ps_command])
630 dnl BSD-like mode in RH 6.1
631 elif ps waxno 'state comm vsz rss uid user ppid args' 2>/dev/null | \
632         egrep -i ["^S +COMMAND +VSZ +RSS +UID +USER +PPID +[RGSCOMDNA]+"] \
633         >/dev/null
634 then
635         ac_cv_use_ps_vars=yes
636         ac_cv_ps_varlist="[procstat,&procuid,&procppid,procprog,&pos]"
637         ac_cv_ps_raw_command="$PATH_TO_PS waxno 'state user ppid comm'"
638         ac_cv_ps_command="$PATH_TO_PS waxno 'state uid ppid comm args'"
639         ac_cv_ps_format="%s %d %d %s %n"
640         ac_cv_vsz_command="$PATH_TO_PS waxno 'vsz comm'"
641         ac_cv_vsz_format="%d %s"
642         ac_cv_rss_command="$PATH_TO_PS waxno 'rss comm'"
643         ac_cv_rss_format="%d %s"
644         EXTRAS="$EXTRAS check_nagios"
645         AC_MSG_RESULT([$ac_cv_ps_command])
647 dnl SunOS 4.1.3:
648 dnl  F  UID  PID  PPID  CP  PRI  NI  SZ  RSS  WCHAN  STAT  TT  TIME  COMMAND
649 elif ps -laxnwww 2>/dev/null | egrep -i ["^ *F(LAGS)? +UID +PID +PPID \
650         +CP +PRI +NI +(SZ)|(VSZ)|(SIZE) +RSS +WCHAN +STAT? +TTY? +TIME \
651         +COMMAND"] >/dev/null
652 then
653         ac_cv_use_ps_vars=yes
654         ac_cv_ps_raw_command="$PATH_TO_PS laxnwww"
655         ac_cv_ps_varlist="[&procuid,&procppid,procstat,&pos,procprog]"
656         ac_cv_ps_command="$PATH_TO_PS -laxnwww"
657         ac_cv_ps_format="%*s %d %*s %d %*s %*s %*s %*s %*s %*s %s %*s %*s %n%s"
658         ac_cv_vsz_command="$PATH_TO_PS laxnwww"
659         ac_cv_vsz_format="%*s %*s %*s %*s %*s %*s %*s %d"
660         ac_cv_rss_command="$PATH_TO_PS laxnwww"
661         ac_cv_rss_format="%*s %*s %*s %*s %*s %*s %*s %*s %d"
662         EXTRAS="$EXTRAS check_nagios"
663         AC_MSG_RESULT([$ac_cv_ps_command])
665 dnl Debian Linux / procps v1.2.9:
666 dnl  FLAGS   UID   PID  PPID PRI  NI   SIZE   RSS WCHAN       STA TTY TIME COMMAND
667 dnl    100     0     1     0   0   0    776    76  c0131c8c   S  ffff  0:11 init [2]
668 dnl
669 elif ps laxnwww 2>/dev/null | egrep -i ["^ *F(LAGS)? +UID +PID +PPID +PRI \
670         +NI +(VSZ)|(SIZE) +RSS +WCHAN +STAT? TTY +TIME +COMMAND"] >/dev/null
671 then
672         ac_cv_use_ps_vars=yes
673         ac_cv_ps_raw_command="$PATH_TO_PS laxnwww"
674         ac_cv_ps_varlist="[&procuid,&procppid,procstat,&pos,procprog]"
675         ac_cv_ps_command="$PATH_TO_PS laxnwww"
676         ac_cv_ps_format="%*s %d %*s %d %*s %*s %*s %*s %*s %s %*s %*s %n%s"
677         ac_cv_vsz_command="$PATH_TO_PS laxnwww"
678         ac_cv_vsz_format="%*s %*s %*s %*s %*s %*s %d"
679         ac_cv_rss_command="$PATH_TO_PS laxnwww"
680         ac_cv_rss_format="%*s %*s %*s %*s %*s %*s %*s %d"
681         EXTRAS="$EXTRAS check_nagios"
682         AC_MSG_RESULT([$ac_cv_ps_command])
684 dnl OpenBSD (needs to come early because -exo appears to work, but does not give all procs)
685 elif ps -axo 'stat comm vsz rss user uid ppid args' 2>/dev/null | \
686         egrep -i ["^ *S[TAUES]* +[UCOMDNA]+ +[VSIZE]+ +R[S]+ +U[SER]+ \
687         +U[ID]+ +P[PID]+ +[RGSCOMDNA]+"] >/dev/null
688 then
689         ac_cv_use_ps_vars=yes
690         ac_cv_ps_varlist="[procstat,&procuid,&procppid,procprog,&pos]"
691         ac_cv_ps_raw_command="$PATH_TO_PS -axo 'stat user ppid args'"
692         ac_cv_ps_command="$PATH_TO_PS -axo 'stat uid ppid comm args'"
693         ac_cv_ps_format="%s %d %d %s %n"
694         ac_cv_vsz_command="$PATH_TO_PS -axo 'vsz comm'"
695         ac_cv_vsz_format="%d %s"
696         ac_cv_rss_command="$PATH_TO_PS -axo 'rss comm'"
697         ac_cv_rss_format="%d %s"
698         EXTRAS="$EXTRAS check_nagios"
699         AC_MSG_RESULT([$ac_cv_ps_command])
701 dnl AIX 4.3.3 - needs verification. This works for Tru64 - needs %*[ +] in PS_FORMAT
702 elif ps -ao 'stat comm vsz rss user uid ppid args' 2>/dev/null | \
703         egrep -i ["^ *S[TAUES]* +[UCOMDNA]+ +[VSIZE]+ +R[S]+ +U[SER]+ \
704         +U[ID]+ +P[PID]+ +[RGSCOMDNA]+"] >/dev/null
705 then
706         ac_cv_use_ps_vars=yes
707         ac_cv_ps_varlist="[procstat,&procuid,&procppid,procprog,&pos]"
708         ac_cv_ps_raw_command="$PATH_TO_PS -ao 'stat user ppid args'"
709         ac_cv_ps_command="$PATH_TO_PS -ao 'stat uid ppid comm args'"
710         ac_cv_ps_format="[["%s%*[ +] %d %d %s %n"]]"
711         ac_cv_vsz_command="$PATH_TO_PS -ao 'vsz comm'"
712         ac_cv_vsz_format="%d %s"
713         ac_cv_rss_command="$PATH_TO_PS -ao 'rss comm'"
714         ac_cv_rss_format="%d %s"
715         EXTRAS="$EXTRAS check_nagios"
716         AC_MSG_RESULT([$ac_cv_ps_command])
718 elif ps -eo 's comm vsz rss user uid ppid args' 2>/dev/null | \
719         egrep -i ["^S[TAUES]* +C[OMDNA]+ +[VSIZE]+ +U[SER]+ +U[ID]+ \
720         +P[PID]+ +[RGSCOMDNA]+"] >/dev/null
721 then
722         ac_cv_use_ps_vars=yes
723         ac_cv_ps_varlist="[procstat,&procuid,&procppid,procprog,&pos]"
724         ac_cv_ps_raw_command="$PATH_TO_PS -eo 's user ppid args'"
725         ac_cv_ps_command="$PATH_TO_PS -eo 's uid ppid comm args'"
726         ac_cv_ps_format="%s %d %d %s %n"
727         ac_cv_vsz_command="$PATH_TO_PS -eo 'vsz comm'"
728         ac_cv_vsz_format="%d %s"
729         ac_cv_rss_command="$PATH_TO_PS -eo 'rss comm'"
730         ac_cv_rss_format="%d %s"
731         EXTRAS="$EXTRAS check_nagios"
732         AC_MSG_RESULT([$ac_cv_ps_command])
734 elif ps -Ao 's comm vsz rss uid user ppid args' 2>/dev/null | \
735         egrep -i ["^S[TAUES]* +C[OMDNA]+ +V[SIZE]+ +RSS +UID +USER \
736         +PPID +[RGSCOMDNA]+"] >/dev/null
737 then
738         ac_cv_use_ps_vars=yes
739         ac_cv_ps_varlist="[procstat,&procuid,&procppid,procprog,&pos]"
740         ac_cv_ps_raw_command="$PATH_TO_PS -Ao 's user ppid args'"
741         ac_cv_ps_command="$PATH_TO_PS -Ao 's uid ppid comm args'"
742         ac_cv_ps_format="%s %d %d %s %n"
743         ac_cv_vsz_command="$PATH_TO_PS -Ao 'vsz comm'"
744         ac_cv_vsz_format="%d %s"
745         ac_cv_rss_command="$PATH_TO_PS -Ao 'rss comm'"
746         ac_cv_rss_format="%d %s"
747         EXTRAS="$EXTRAS check_nagios"
748         AC_MSG_RESULT([$ac_cv_ps_command])
750 elif ps -Ao 'status comm vsz rss uid user ppid args' 2>/dev/null | \
751         egrep -i ["^S[TAUES]* +C[OMDNA]+ +V[SIZE]+ +RSS +UID +USER \
752         +PPID +[RGSCOMDNA]+"] >/dev/null
753 then
754         ac_cv_use_ps_vars=yes
755         ac_cv_ps_varlist="[procstat,&procuid,&procppid,procprog,&pos]"
756         ac_cv_ps_raw_command="$PATH_TO_PS -Ao 'status user ppid args'"
757         ac_cv_ps_command="$PATH_TO_PS -Ao 'status uid ppid comm args'"
758         ac_cv_ps_format="%s %d %d %s %n"
759         ac_cv_vsz_command="$PATH_TO_PS -Ao 'vsz comm'"
760         ac_cv_vsz_format="%d %s"
761         ac_cv_rss_command="$PATH_TO_PS -Ao 'rss comm'"
762         ac_cv_rss_format="%d %s"
763         EXTRAS="$EXTRAS check_nagios"
764         AC_MSG_RESULT([$ac_cv_ps_command])
766 elif ps -Ao 'state comm vsz rss uid user ppid args' 2>/dev/null | \
767         egrep -i ["^S[TAUES]* +C[OMDNA]+ +V[SIZE]+ +RSS +UID +USER \
768         +PPID +[RGSCOMDNA]+"] >/dev/null
769 then
770         ac_cv_use_ps_vars=yes
771         ac_cv_ps_varlist="[procstat,&procuid,&procppid,procprog,&pos]"
772         ac_cv_ps_raw_command="$PATH_TO_PS -Ao 'state user ppid args'"
773         ac_cv_ps_command="$PATH_TO_PS -Ao 'state uid ppid comm args'"
774         ac_cv_ps_format="%s %d %d %s %n"
775         ac_cv_vsz_command="$PATH_TO_PS -Ao 'vsz comm'"
776         ac_cv_vsz_format="%d %s"
777         ac_cv_rss_command="$PATH_TO_PS -Ao 'rss comm'"
778         ac_cv_rss_format="%d %s"
779         EXTRAS="$EXTRAS check_nagios"
780         AC_MSG_RESULT([$ac_cv_ps_command])
782 dnl wonder who takes state instead of stat
783 elif ps -ao 'state command vsz rss user ppid args' 2>/dev/null | \
784         egrep -i ["^S[TAUES]* +C[OMDNA]+ +V[SIZE]+ +RSS +UID +USER \
785         +PPID +[RGSCOMDNA]+"] >/dev/null
786 then
787         ac_cv_use_ps_vars=yes
788         ac_cv_ps_varlist="[procstat,&procuid,&procppid,procprog,&pos]"
789         ac_cv_ps_raw_command="$PATH_TO_PS -ao 'state user ppid args'"
790         ac_cv_ps_command="$PATH_TO_PS -ao 'state uid ppid command args'"
791         ac_cv_ps_format="%s %d %d %s %n"
792         ac_cv_vsz_command="$PATH_TO_PS -ao 'vsz command'"
793         ac_cv_vsz_format="%d %s"
794         ac_cv_rss_command="$PATH_TO_PS -ao 'rss command'"
795         ac_cv_rss_format="%d %s"
796         EXTRAS="$EXTRAS check_nagios"
797         AC_MSG_RESULT([$ac_cv_ps_command])
799 dnl IRIX 53
800 elif ps -el 2>/dev/null | egrep -i ["^ *F +S +UID +PID +PPID +C +PRI \
801         +NI +P +SZ +RSS +WCHAN +TTY +TIME +[RGSCOMDNA]+"] >/dev/null
802 then
803         ac_cv_use_ps_vars=yes
804         ac_cv_ps_varlist="[procstat,&procuid,&procppid,&pos,procprog]"
805         ac_cv_ps_command="$PATH_TO_PS -el"
806         ac_cv_ps_format="%*s %s %d %*s %d %*s %*s %*s %*s %*s %*s %*s %*s %*s %n%s"
807         ac_cv_vsz_command="$PATH_TO_PS -el"
808         ac_cv_vsz_format="%*s %*s %*s %*s %d"
809         ac_cv_rss_command="$PATH_TO_PS -el"
810         ac_cv_rss_format="%*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %d"
811         AC_MSG_RESULT([$ac_cv_ps_command])
813 dnl IRIX 63
814 elif ps -el 2>/dev/null | egrep -i ["^ *F +S +UID +PID +PPID +C +PRI \
815         +NI +P +ADDR +SZ +RSS +WCHAN +TTY +TIME +[RGSCOMDNA]+"] >/dev/null
816 then
817         ac_cv_use_ps_vars=yes
818         ac_cv_ps_varlist="[procstat,&procuid,&procppid,&pos,procprog]"
819         ac_cv_ps_command="$PATH_TO_PS -el"
820         ac_cv_ps_format="%*s %s %d %*s %d %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %n%s"
821         ac_cv_vsz_command="$PATH_TO_PS -el"
822         ac_cv_vsz_format="%*s %*s %*s %*s %d"
823         ac_cv_rss_command="$PATH_TO_PS -el"
824         ac_cv_rss_format="%*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %d"
825         AC_MSG_RESULT([$ac_cv_ps_command])
827 dnl AIX 4.1:
828 dnl     F S      UID   PID  PPID   C PRI NI ADDR  SZ  RSS   WCHAN    TTY  TIME CMD
829 dnl    303 A        0     0     0 120  16 -- 1c07  20   24              -  0:45 swapper
830 elif ps -el 2>/dev/null | egrep -i ["^ *F +S +UID +PID +PPID +C +PRI \
831         +NI +ADDR +SZ +WCHAN +TTY +TIME +[RGSCOMDNA]+"] >/dev/null
832 then
833         ac_cv_use_ps_vars=yes
834         ac_cv_ps_varlist="[procstat,&procuid,&procppid,&pos,procprog]"
835         ac_cv_ps_command="$PATH_TO_PS -el"
836         ac_cv_ps_format="%*s %s %d %*s %d %*s %*s %*s %*s %*s %*s %*s %*s %n%s"
837         ac_cv_vsz_command="$PATH_TO_PS -el"
838         ac_cv_vsz_format="%*s %*s %*s %*s %*s %*s %*s %*s %*s %d"
839         ac_cv_rss_command="$PATH_TO_PS -el"
840         ac_cv_rss_format="%*s %*s %*s %*s %*s %*s %*s %*s %*s %d"
841         AC_MSG_RESULT([$ac_cv_ps_command])
843 dnl AIX?
844 elif ps glaxen 2>/dev/null | egrep -i ["^ *F +UID +PID +PPID +PRI +NI \
845         +VSZ +RSS +WCHAN +STAT +TTY +TIME +COMMAND"] >/dev/null
846 then
847         ac_cv_use_ps_vars=yes
848         ac_cv_ps_varlist="[&procuid,&procppid,procstat,&pos,procprog]"
849         ac_cv_ps_command="$PATH_TO_PS glaxen"
850         ac_cv_ps_format="%*s %d %*s %d %*s %*s %*s %*s %*s %s %*s %*s %n%s"
851         ac_cv_vsz_command="$PATH_TO_PS glaxen"
852         ac_cv_vsz_format="%*s %*s %*s %*s %*s %*s %d"
853         ac_cv_rss_command="$PATH_TO_PS glaxen"
854         ac_cv_rss_format="%*s %*s %*s %*s %*s %*s %*s %d"
855         AC_MSG_RESULT([$ac_cv_ps_command])
857 dnl MacOSX / Darwin
858 dnl TODO: MacOSX has commands with spaces which will cause problems to PS_FORMAT
859 dnl STAT      VSZ    RSS   UID USER     PPID UCOMM            COMMAND
860 dnl Ss       1308    272     0 root        0 init             /sbin/init
861 elif ps waxo 'state vsz rss uid user ppid ucomm command' 2>/dev/null | \
862         egrep -i ["^STAT +VSZ +RSS +UID +USER +PPID +UCOMM +COMMAND"] >/dev/null
863 then
864         ac_cv_use_ps_vars=yes
865         ac_cv_ps_varlist="[procstat,&procuid,&procppid,procprog,&pos]"
866         ac_cv_ps_raw_command="$PATH_TO_PS waxo 'state uid ppid command'"
867         ac_cv_ps_command="$PATH_TO_PS waxo 'state uid ppid ucomm command'"
868         ac_cv_ps_format="%s %d %d %s %n"
869         ac_cv_vsz_command="$PATH_TO_PS waxco 'vsz command'"
870         ac_cv_vsz_format="%d %s"
871         ac_cv_rss_command="$PATH_TO_PS waxco 'rss command'"
872         ac_cv_rss_format="%d %s"
873         EXTRAS="$EXTRAS check_nagios"
874         AC_MSG_RESULT([$ac_cv_ps_command])
876 dnl UnixWare 
877 elif ps -Al 2>/dev/null | egrep -i ["^ *F +S +UID +PID +PPID +CLS +PRI \
878         +NI +C +ADDR +SZ +WCHAN +TTY +TIME +COMD"] >/dev/null
879 then
880         ac_cv_use_ps_vars=yes
881         ac_cv_ps_varlist="[procstat,&procuid,&procppid,&pos,procprog]"
882         ac_cv_ps_command="$PATH_TO_PS -Al"
883         ac_cv_ps_format="%*s %s %d %*s %d %*s %*s %*s %*s %*s %*s %*s %*s %*s %n%s"
884         if ps -Ao 'vsz comm' 2>/dev/null | \
885                 egrep -i ["^ *VSZ +COMMAND"] >/dev/null
886         then
887                 ac_cv_vsz_command="$PATH_TO_PS -Ao 'vsz comm'"
888                 ac_cv_vsz_format="%*s %d"
889         fi
890         AC_MSG_RESULT([$ac_cv_ps_command])
892 else
893         AC_MSG_WARN([unable to find usable ps syntax])
894 fi
896 if test "x$ac_cv_use_ps_vars" != "xno"
897 then
898         AC_DEFINE(USE_PS_VARS,1,[Define if 'ps' will be parsed with sscanf])
899 fi
900 AC_DEFINE_UNQUOTED(PS_VARLIST,$ac_cv_ps_varlist,
901         [Variable list for sscanf of 'ps' output])
902 AC_DEFINE_UNQUOTED(PS_RAW_COMMAND,"$ac_cv_ps_raw_command",
903         [Verbatim command to execute for ps in check_netsaint])
904 AC_DEFINE_UNQUOTED(PS_COMMAND,"$ac_cv_ps_command",
905         [Verbatim command to execute for ps in check_procs])
906 AC_DEFINE_UNQUOTED(PS_FORMAT,"$ac_cv_ps_format",
907         [Format string for scanning ps output in check_procs])
908 AC_DEFINE_UNQUOTED(VSZ_COMMAND,"$ac_cv_vsz_command",
909         [Verbatim command to execute for ps in check_vsz])
910 AC_DEFINE_UNQUOTED(VSZ_FORMAT,"$ac_cv_vsz_format",
911         [Format string for scanning ps output in check_vsz])
912 AC_DEFINE_UNQUOTED(RSS_COMMAND,"$ac_cv_rss_command",
913         [Verbatim command to execute for ps in check_rss])
914 AC_DEFINE_UNQUOTED(RSS_FORMAT,"$ac_cv_rss_format",
915         [Format string for scanning ps output in check_rss])
917 AC_PATH_PROG(PATH_TO_DF,df)
918 AC_PATH_PROG(PATH_TO_BDF,bdf)
920 AC_ARG_WITH(df_command,
921         ACX_HELP_STRING([--with-df-command=SYNTAX],
922                 [sets syntax for df]),
923         ac_cv_df_command=$withval,)
925 AC_MSG_CHECKING(for df syntax)
926 if test -n "$ac_cv_df_command"
927 then
928         AC_MSG_RESULT([$ac_cv_df_command])
930 elif df -Pk 2>/dev/null | egrep -i ["^(/dev/|[a-zA-Z]:)[a-z0-9/\\]+ +[0-9]+ +[0-9]+ +[0-9]+ +[0-9]+% +/[a-z0-9/\\]*"] >/dev/null
931 then
932         ac_cv_df_command="$PATH_TO_DF -Pk"
933         AC_MSG_RESULT([$ac_cv_df_command])
935 elif df -k 2>/dev/null | egrep -i ["^/dev/[a-z0-9/]+ +[0-9]+ +[0-9]+ +[0-9]+ +[0-9]+% +/[a-z0-9/]*"] >/dev/null
936 then
937         ac_cv_df_command="$PATH_TO_DF -k"
938         AC_MSG_RESULT([$ac_cv_df_command])
940 elif df 2>/dev/null | egrep -i ["^/dev/[a-z0-9/]+ +[0-9]+ +[0-9]+ +[0-9]+ +[0-9]+% +/[a-z0-9/]*"] >/dev/null
941 then
942         ac_cv_df_command="$PATH_TO_DF"
943         AC_MSG_RESULT([$ac_cv_df_command])
945 elif bdf 2>/dev/null | egrep -i ["^/dev/[a-z0-9/]+ +[0-9]+ +[0-9]+ +[0-9]+ +[0-9]+% +/[a-z0-9/]*"] >/dev/null
946 then
947         ac_cv_df_command="$PATH_TO_BDF"
948         AC_MSG_RESULT([$ac_cv_df_command])
950 else
951         AC_MSG_WARN([unable to find usable df syntax])
952 fi
954 AC_DEFINE_UNQUOTED(DF_COMMAND,"$ac_cv_df_command",[path and args for df command])
956 AC_PATH_PROG(PATH_TO_PING,ping)
957 AC_PATH_PROG(PATH_TO_PING6,ping6)
959 AC_ARG_WITH(ping_command,
960         ACX_HELP_STRING([--with-ping-command=SYNTAX],
961                 [sets syntax for ICMP ping]),
962         ac_cv_ping_command=$withval,)
964 AC_MSG_CHECKING(for ping syntax)
965 if test -n "$ac_cv_ping_command"
966 then
967         AC_MSG_RESULT([(command-line) $ac_cv_ping_command])
968         if test -n "$PING_PACKETS_FIRST"
969         then
970                 ac_cv_ping_packets_first=yes
971                 dnl AC_DEFINE_UNQUOTED(PING_PACKETS_FIRST,"$ac_cv_ping_command",
972                 dnl     [Define if packet count must precede host])
973         fi
975 elif [[ "z$ac_cv_uname_s" = "zUnixWare" ]] && \
976         $PATH_TO_PING -n -s 127.0.0.1 56 1 2>/dev/null | \
977         egrep -i "^round-trip|^rtt" >/dev/null
978 then
979         ac_cv_ping_command="$PATH_TO_PING -n -U -c %d %s"
980         ac_cv_ping_packets_first=yes
981         AC_MSG_RESULT([$ac_cv_ping_command])
983 elif $PATH_TO_PING -n -U -c 1 127.0.0.1 2>/dev/null | \
984         egrep -i "^round-trip|^rtt" >/dev/null
985 then
986         ac_cv_ping_command="$PATH_TO_PING -n -U -c %d %s"
987         ac_cv_ping_packets_first=yes
988         AC_MSG_RESULT([$ac_cv_ping_command])
990 elif $PATH_TO_PING -n -c 1 127.0.0.1 2>/dev/null | \
991         egrep -i "^round-trip|^rtt" >/dev/null
992 then
993         ac_cv_ping_command="$PATH_TO_PING -n -c %d %s"
994         ac_cv_ping_packets_first=yes
995         AC_MSG_RESULT([$ac_cv_ping_command])
997 elif $PATH_TO_PING -n 127.0.0.1 -c 1 2>/dev/null | \
998         egrep -i "^round-trip|^rtt" >/dev/null
999 then
1000         ac_cv_ping_command="$PATH_TO_PING -n %s -c %d"
1001         AC_MSG_RESULT([$ac_cv_ping_command])
1003 elif $PATH_TO_PING 127.0.0.1 -n 1 2>/dev/null | \
1004         egrep -i "^round-trip|^rtt" >/dev/null
1005 then
1006         ac_cv_ping_command="$PATH_TO_PING %s -n %d"
1007         AC_MSG_RESULT([$ac_cv_ping_command])
1009 elif $PATH_TO_PING -n -s 127.0.0.1 56 1 2>/dev/null | \
1010         egrep -i "^round-trip|^rtt" >/dev/null
1011 then
1012         ac_cv_ping_command="$PATH_TO_PING -n -s %s 56 %d"
1013         AC_MSG_RESULT([$ac_cv_ping_command])
1015 elif $PATH_TO_PING -n -h 127.0.0.1 -s 56 -c 1 2>/dev/null | \
1016         egrep -i "^round-trip|^rtt" >/dev/null
1017 then
1018         ac_cv_ping_command="$PATH_TO_PING -n -h %s -s 56 -c %d"
1019         AC_MSG_RESULT([$ac_cv_ping_command])
1021 elif $PATH_TO_PING -n -s 56 -c 1 127.0.0.1 2>/dev/null | \
1022         egrep -i "^round-trip|^rtt" >/dev/null
1023 then
1024         ac_cv_ping_command="$PATH_TO_PING -n -s 56 -c %d %s"
1025         ac_cv_ping_packets_first=yes
1026         AC_MSG_RESULT([$ac_cv_ping_command])
1028 elif $PATH_TO_PING -n -c 1 127.0.0.1 2>/dev/null | \
1029         egrep -i "^round-trip|^rtt" >/dev/null
1030 then
1031         ac_cv_ping_command="$PATH_TO_PING -n -c %d %s"
1032         ac_cv_ping_packets_first=yes
1033         AC_MSG_RESULT([$ac_cv_ping_command])
1035 else
1036         AC_MSG_WARN([unable to find usable ping syntax])
1037 fi
1039 AC_DEFINE_UNQUOTED(PING_COMMAND,"$ac_cv_ping_command",
1040         [path and args for ICMP ping command])
1042 if test x$ac_cv_ping_packets_first != xno
1043 then
1044         AC_DEFINE(PING_PACKETS_FIRST,1,
1045                 [Define if packet count must precede host])
1046 fi
1048 AC_ARG_WITH(ping6_command,
1049         ACX_HELP_STRING([--with-ping6-command=SYNTAX],
1050                 [sets syntax for ICMPv6 ping]),
1051         PING6_COMMAND=$withval,)
1053 AC_PATH_PROG(PATH_TO_NSLOOKUP,nslookup)
1055 AC_MSG_CHECKING(for nslookup syntax)
1056 if test -n "$PATH_TO_NSLOOKUP"
1057 then
1058         if $PATH_TO_NSLOOKUP -sil 127.0.0.1 2>&1 | grep ["Invalid option: sil"] >/dev/null
1059         then
1060                 ac_cv_nslookup_command="$PATH_TO_NSLOOKUP"
1061                 AC_MSG_RESULT([$ac_cv_nslookup_command])
1063         else
1064                 ac_cv_nslookup_command="$PATH_TO_NSLOOKUP -sil"
1065                 AC_MSG_RESULT([$ac_cv_nslookup_command])
1067         fi
1068         EXTRAS="$EXTRAS check_dns"
1070 else
1071         AC_MSG_WARN([nslookup command not found])
1072 fi
1074 AC_DEFINE_UNQUOTED(NSLOOKUP_COMMAND,"$ac_cv_nslookup_command",
1075         [path and args for nslookup])
1077 AC_PATH_PROG(PATH_TO_HOST,host)
1078 if test -n "$ac_cv_path_PATH_TO_HOST"
1079 then
1080         EXTRAS="$EXTRAS check_dns"
1081 fi
1083 AC_PATH_PROG(PATH_TO_UPTIME,uptime)
1084 AC_DEFINE_UNQUOTED(PATH_TO_UPTIME,"$PATH_TO_UPTIME",[path to uptime binary])
1086 AC_PATH_PROG(PATH_TO_RPCINFO,rpcinfo)
1087 AC_DEFINE_UNQUOTED(PATH_TO_RPCINFO,"$PATH_TO_RPCINFO",[path to rpcinfo binary])
1089 AC_PATH_PROG(PATH_TO_NTPDATE,ntpdate)
1090 AC_PATH_PROGS(PATH_TO_NTPDC,ntpdc xntpdc)
1091 AC_PATH_PROGS(PATH_TO_NTPQ,ntpq)
1092 if (test -x "$PATH_TO_NTPDATE" || test -x "$PATH_TO_NTPQ")
1093 then
1094         AC_DEFINE_UNQUOTED(PATH_TO_NTPQ,"$PATH_TO_NTPQ",[path to ntpq binary])
1095         AC_DEFINE_UNQUOTED(PATH_TO_NTPDATE,"$PATH_TO_NTPDATE",[path to ntpdate binary])
1096 else
1097         AC_MSG_WARN([Install NTP programs (http://www.ntp.org) if you want to monitor time synchronization])
1098 fi
1100 AC_PATH_PROG(PATH_TO_LMSTAT,lmstat)
1101 if test -x "$PATH_TO_LMSTAT"
1102 then
1103         AC_DEFINE_UNQUOTED(PATH_TO_LMSTAT,"$PATH_TO_LMSTAT",[path to lmstat])
1104 else
1105         AC_MSG_WARN([Get lmstat from Globetrotter Software to monitor flexlm licenses])
1106 fi
1108 AC_PATH_PROG(PATH_TO_SMBCLIENT,smbclient)
1109 if test -x "$PATH_TO_SMBCLIENT"
1110 then
1111         AC_DEFINE_UNQUOTED(PATH_TO_SMBCLIENT,"$PATH_TO_SMBCLIENT",[path to smbclient binary])
1112 else
1113         AC_MSG_WARN([Get smbclient from Samba.org to monitor SMB shares])
1114 fi
1117 AC_PATH_PROG(PATH_TO_WHO,who)
1119 if [$PATH_TO_WHO -q 2>/dev/null | egrep -i "^# users=[0-9]+$" >/dev/null]
1120 then
1121         ac_cv_path_to_who="$PATH_TO_WHO -q"
1122 else
1123         ac_cv_path_to_who="$PATH_TO_WHO"
1124 fi
1126 AC_DEFINE_UNQUOTED(WHO_COMMAND,"$ac_cv_path_to_who",
1127         [path and arguments for invoking 'who'])
1129 AC_PATH_PROG(PATH_TO_SNMPGET,snmpget)
1130 if test -x "$PATH_TO_SNMPGET"
1131 then
1132         AC_DEFINE_UNQUOTED(PATH_TO_SNMPGET,"$PATH_TO_SNMPGET",[path to snmpget binary])
1133         EXTRAS="$EXTRAS check_hpjd check_snmp"
1134 else
1135         AC_MSG_WARN([Get snmpget from http://net-snmp.sourceforge.net to make check_hpjd and check_snmp plugins])
1136 fi
1138 AC_PATH_PROG(PATH_TO_SNMPGETNEXT,snmpgetnext)
1139 if test -x "$PATH_TO_SNMPGETNEXT"
1140 then
1141         AC_DEFINE_UNQUOTED(PATH_TO_SNMPGETNEXT,"$PATH_TO_SNMPGETNEXT",[path to snmpgetnext binary])
1142 fi
1144 if ( $PERL -M"Net::SNMP 3.6" -e 'exit' 2>/dev/null  )
1145 then
1146         AC_MSG_CHECKING(for Net::SNMP perl module)
1147         AC_MSG_RESULT([found])
1148 else
1149         AC_MSG_WARN([Tried $PERL - install Net::SNMP perl module if you want to use the perl snmp plugins])
1150 fi
1152 AC_PATH_PROG(PATH_TO_QUAKESTAT,quakestat)
1153 AC_PATH_PROG(PATH_TO_QSTAT,qstat)
1155 if test -x "$PATH_TO_QUAKESTAT"
1156 then
1157         ac_cv_path_to_qstat="$PATH_TO_QUAKESTAT"
1158         EXTRAS="$EXTRAS check_game"
1160 elif test -x "$PATH_TO_QSTAT"
1161 then
1162         ac_cv_path_to_qstat="$PATH_TO_QSTAT"
1163         EXTRAS="$EXTRAS check_game"
1164 else
1165         AC_MSG_WARN([Get qstat from http://www.activesw.com/people/steve/qstat.html in order to make check_game plugin])
1166 fi
1168 if test $ac_cv_path_to_qstat 
1169 then
1170         AC_DEFINE_UNQUOTED(PATH_TO_QSTAT,"$ac_cv_path_to_qstat",
1171                 [path to qstat/quakestat])
1172 fi
1174 AC_PATH_PROG(PATH_TO_FPING,fping)
1175 if test -x "$PATH_TO_FPING"
1176 then
1177         AC_DEFINE_UNQUOTED(PATH_TO_FPING,"$PATH_TO_FPING",[path to fping])
1178         EXTRAS="$EXTRAS check_fping"
1179 else
1180         AC_MSG_WARN([Get fping from http://www.fping.com in order to make check_fping plugin])
1181 fi
1183 AC_PATH_PROG(PATH_TO_SSH,ssh)
1185 if test -x "$PATH_TO_SSH"
1186 then
1187         AC_DEFINE_UNQUOTED(SSH_COMMAND,"$PATH_TO_SSH",[path to ssh binary])
1188         EXTRAS="$EXTRAS check_by_ssh"
1189 else
1190         AC_MSG_WARN([Get ssh in order to make check_by_ssh plugin])
1191 fi
1194 AC_PATH_PROG(PATH_TO_MAILQ,mailq)
1195 if test -x "$PATH_TO_MAILQ"
1196 then
1197         AC_DEFINE_UNQUOTED(PATH_TO_MAILQ,"$PATH_TO_MAILQ",[path to mailq])
1198 else
1199         AC_MSG_WARN([Could not find mailq or eqivalent])
1200 fi
1202 dnl SWAP info required is amount allocated/available and amount free
1203 dnl The plugin works through all the swap devices and adds up the total swap
1204 dnl available.
1206 dnl dunno why this does not work below - use hack (kbd)
1207 dnl fine on linux, broken on solaris
1208 dnl if /bin/test -e "/proc/meminfo"
1210 AC_PATH_PROG(PATH_TO_SWAP,swap)
1211 AC_PATH_PROG(PATH_TO_SWAPINFO,swapinfo)
1213 AC_MSG_CHECKING(for how to check memory)
1214 if [cat /proc/meminfo > /dev/null 2>&1]
1215 then
1216         AC_MSG_RESULT([found /proc/meminfo])
1217         AC_DEFINE(HAVE_PROC_MEMINFO,1,[Define if we have /proc/meminfo])
1218         AC_DEFINE_UNQUOTED(PROC_MEMINFO,"/proc/meminfo",[path to /proc/meminfo if name changes])
1219         EXTRAS="$EXTRAS check_swap"
1221 elif [$PATH_TO_SWAP -l 2>&1 >/dev/null]
1222 then
1223         ac_cv_have_swap=yes
1224         ac_cv_swap_command="$PATH_TO_SWAP -l"
1225         if [$PATH_TO_SWAP -l 2>/dev/null | \
1226                 egrep -i "^lswap +path +pri +swaplo +blocks +free +maxswap" \
1227                 >/dev/null]
1228         then
1229                 ac_cv_swap_format=[" %*d %*s %*d,%*d %*d %*d %d %d"]
1230                 AC_MSG_RESULT([using IRIX format swap])
1232         elif [$PATH_TO_SWAP -l 2>/dev/null | egrep -i "^swapfile +dev +swaplo +blocks +free" >/dev/null]
1233         then
1234                 ac_cv_swap_format=["%*s %*[[0-9,-]] %*d %d %d"]
1235                 AC_MSG_RESULT([using Solaris format swap])
1237         elif [$PATH_TO_SWAP -l 2>/dev/null | egrep -i "^path +dev +swaplo +blocks +free" >/dev/null]
1238         then
1239                 ac_cv_swap_format=["%*s %*[[0-9,-]] %*d %d %d"]
1240                 AC_MSG_RESULT([using Unixware format swap])
1242         fi
1243         EXTRAS="$EXTRAS check_swap"
1245 elif [$PATH_TO_SWAPINFO -k 2>&1 | egrep -i "^Device" >/dev/null]
1246 then
1247         ac_cv_have_swap=yes
1248         ac_cv_swap_command="$PATH_TO_SWAPINFO -k"
1250         if [$PATH_TO_SWAPINFO -k 2>/dev/null | egrep -i "^Device +1K-blocks +Used +Avail" >/dev/null]
1251         then
1252                 ac_cv_swap_format=["%*s %d %*d %d"]
1253                 AC_MSG_RESULT([using FreeBSD format swapinfo])
1254         fi
1255         EXTRAS="$EXTRAS check_swap"
1257 elif [$PATH_TO_SWAPINFO -dfM 2>/dev/null | egrep -i "^TYPE +AVAIL +USED +FREE" >/dev/null]
1258 then
1259         ac_cv_have_swap=yes
1260         ac_cv_swap_command="$PATH_TO_SWAPINFO -dfM",
1261         ac_cv_swap_format=["%*s %d %*d %d"]
1262         AC_MSG_RESULT([using HP-UX format swapinfo])
1263 fi
1265 if test x$ac_cv_have_swap != x 
1266 then
1267         AC_DEFINE(HAVE_SWAP,1,[Define if swap/swapinfo command is found])
1268 fi
1269 AC_DEFINE_UNQUOTED(SWAP_FORMAT,"$ac_cv_swap_format",
1270         [Format string for parsing swap output])
1271 if test "x$ac_cv_swap_command" != "x" 
1272 then
1273         AC_DEFINE_UNQUOTED(SWAP_COMMAND,"$ac_cv_swap_command",
1274                 [Path to swap/swapinfo binary, with any args])
1275 fi
1277 AC_PATH_PROG(PATH_TO_DIG,dig)
1278 AC_DEFINE_UNQUOTED(PATH_TO_DIG,"$PATH_TO_DIG",[Path to dig command, if present])
1279 if test -n "$PATH_TO_DIG"; then
1280         EXTRAS="$EXTRAS check_dig"
1281 fi
1283 if test -f plugins/check_nt.c ; then
1284   EXTRAS="$EXTRAS check_nt"
1285 elif test -f ../plugins/check_nt.c ; then
1286   EXTRAS="$EXTRAS check_nt"
1287 fi
1289 AC_MSG_CHECKING(for va_list)
1290 AC_TRY_COMPILE([#ifdef __STDC__
1291                 #include <stdio.h>
1292                 #include <stdlib.h>
1293                 #include <stdarg.h>
1294                 #else
1295                 #include <sys/types.h>
1296                 #include <stdio.h>
1297                 #include <varargs.h>
1298                 #endif],
1299                 [va_list args;],
1300                 [AC_MSG_RESULT(yes)],
1301                 [NEED_VA_LIST=-DNEED_VA_LIST AC_SUBST(NEED_VA_LIST) AC_MSG_RESULT(no)])
1303 AC_SUBST(EXTRAS)
1304 AC_SUBST(DEPLIBS)
1306 AC_DEFINE_UNQUOTED(PACKAGE_VERSION,"${VERSION}",[package version])
1308 AC_OUTPUT(Makefile subst lib/Makefile plugins/Makefile plugins-scripts/Makefile plugins-scripts/subst plugins-scripts/utils.pm plugins-scripts/utils.sh command.cfg test.pl,echo timestamp > plugins/stamp-h1;echo timestamp > plugins/stamp-h2;echo timestamp > plugins/stamp-h3;echo timestamp > plugins/stamp-h4;echo timestamp > plugins/stamp-h5;echo timestamp > plugins/stamp-h6;PATH=.:..:$PATH subst.sh command.cfg)