| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398 |
- dnl Process this -*-m4-*- file with autoconf to produce a configure script.
- dnl Disable caching
- define([AC_CACHE_LOAD],)
- define([AC_CACHE_SAVE],)
- AC_INIT(src/nrpe.c)
- AC_CONFIG_HEADER(include/config.h)
- AC_PREFIX_DEFAULT(/usr/local/nagios)
- PKG_NAME=nrpe
- PKG_VERSION="2.9"
- PKG_HOME_URL="http://www.nagios.org/"
- PKG_REL_DATE="08-13-2007"
- dnl Figure out how to invoke "install" and what install options to use.
- AC_PROG_INSTALL
- AC_SUBST(INSTALL)
- dnl What OS are we running?
- AC_CANONICAL_HOST
- dnl Checks for programs.
- AC_PROG_CC
- AC_PROG_MAKE_SET
- dnl Checks for header files.
- AC_HEADER_STDC
- AC_HEADER_TIME
- AC_HEADER_SYS_WAIT
- AC_CHECK_HEADERS(ctype.h dirent.h errno.h fcntl.h getopt.h grp.h inttypes.h netdb.h pwd.h signal.h stdint.h strings.h string.h syslog.h tcpd.h unistd.h arpa/inet.h netinet/in.h socket.h sys/types.h sys/time.h sys/resource.h sys/wait.h sys/socket.h sys/stat.h)
- dnl Checks for typedefs, structures, and compiler characteristics.
- AC_C_CONST
- AC_STRUCT_TM
- AC_TYPE_MODE_T
- AC_TYPE_PID_T
- AC_TYPE_SIZE_T
- AC_TYPE_SIGNAL
- AC_TYPE_GETGROUPS
- dnl Check lengths for later tests of u_int32_t and int32_t
- AC_CHECK_SIZEOF(int)
- AC_CHECK_SIZEOF(short)
- AC_CHECK_SIZEOF(long)
- dnl Define u_int32_t if we don't have it already (Solaris, etc.)
- AC_CHECK_TYPE(uint32_t,unsigned int)
- AC_CHECK_TYPE(u_int32_t,unsigned int)
- if test "$ac_cv_type_u_int32_t" = no ; then
- if test "$ac_cv_type_u_int32_t" = yes ; then
- AC_DEFINE(U_INT32_T_IS_UINT32_T)
- else
- if test "$ac_cv_sizeof_int" = 4 ; then
- AC_DEFINE(U_INT32_T_IS_UINT)
- else
- if test "$ac_cv_sizeof_long" = 4 ; then
- AC_DEFINE(U_INT32_T_IS_ULONG)
- else
- if test "$ac_cv_sizeof_short" = 4 ; then
- AC_DEFINE(U_INT32_T_IS_USHORT)
- fi
- fi
- fi
- fi
- fi
- dnl Define int32_t if we don't have it already
- AC_CHECK_TYPE(int32_t,int)
- if test "$ac_cv_type_int32_t" = no ; then
- if test "$ac_cv_sizeof_int" = 4 ; then
- AC_DEFINE(INT32_T_IS_UINT)
- else
- if test "$ac_cv_sizeof_long" = 4 ; then
- AC_DEFINE(INT32_T_IS_ULONG)
- else
- if test "$ac_cv_sizeof_short" = 4 ; then
- AC_DEFINE(INT32_T_IS_USHORT)
- fi
- fi
- fi
- fi
- dnl Check for asprintf() and friends...
- AC_CACHE_CHECK([for va_copy],ac_cv_HAVE_VA_COPY,[
- AC_TRY_LINK([#include <stdarg.h>
- va_list ap1,ap2;], [va_copy(ap1,ap2);],
- ac_cv_HAVE_VA_COPY=yes,
- ac_cv_HAVE_VA_COPY=no)])
- if test x"$ac_cv_HAVE_VA_COPY" = x"yes"; then
- AC_DEFINE(HAVE_VA_COPY,1,[Whether va_copy() is available])
- else
- AC_CACHE_CHECK([for __va_copy],ac_cv_HAVE___VA_COPY,[
- AC_TRY_LINK([#include <stdarg.h>
- va_list ap1,ap2;], [__va_copy(ap1,ap2);],
- ac_cv_HAVE___VA_COPY=yes,
- ac_cv_HAVE___VA_COPY=no)])
- if test x"$ac_cv_HAVE___VA_COPY" = x"yes"; then
- AC_DEFINE(HAVE___VA_COPY,1,[Whether __va_copy() is available])
- fi
- fi
- AC_CHECK_FUNC(vsnprintf,,SNPRINTF_O=./snprintf.o)
- AC_CHECK_FUNC(snprintf,,SNPRINTF_O=./snprintf.o)
- AC_CHECK_FUNC(asprintf,,SNPRINTF_O=./snprintf.o)
- AC_CHECK_FUNC(vasprintf,,SNPRINTF_O=./snprintf.o)
- AC_CACHE_CHECK([for C99 vsnprintf],ac_cv_HAVE_C99_VSNPRINTF,[
- AC_TRY_RUN([
- #include <sys/types.h>
- #include <stdarg.h>
- void foo(const char *format, ...) {
- va_list ap;
- int len;
- char buf[5];
- va_start(ap, format);
- len = vsnprintf(buf, 0, format, ap);
- va_end(ap);
- if (len != 5) exit(1);
- va_start(ap, format);
- len = vsnprintf(0, 0, format, ap);
- va_end(ap);
- if (len != 5) exit(1);
- if (snprintf(buf, 3, "hello") != 5 || strcmp(buf, "he") != 0) exit(1);
- exit(0);
- }
- main() { foo("hello"); }
- ],
- ac_cv_HAVE_C99_VSNPRINTF=yes,ac_cv_HAVE_C99_VSNPRINTF=no,ac_cv_HAVE_C99_VSNPRINTF=cross)])
- if test x"$ac_cv_HAVE_C99_VSNPRINTF" = x"yes"; then
- AC_DEFINE(HAVE_C99_VSNPRINTF,1,[Define if system has C99 compatible vsnprintf])
- fi
- dnl AC_CHECK_FUNC(snprintf,AC_DEFINE(HAVE_SNPRINTF),SNPRINTF_O=./snprintf.o)
- AC_SUBST(SNPRINTF_O)
- dnl Check for getopt_long (Solaris)
- AC_CHECK_FUNCS([getopt_long],,AC_CHECK_LIB([iberty],[getopt_long],OTHERLIBS="$OTHERLIBS -liberty"))
- AC_SUBST(OTHERLIBS)
- dnl Checks for library functions.
- AC_CHECK_LIB(nsl,main,SOCKETLIBS="$SOCKETLIBS -lnsl")
- AC_CHECK_LIB(socket,socket,SOCKETLIBS="$SOCKETLIBS -lsocket")
- AC_SUBST(SOCKETLIBS)
- AC_CHECK_LIB(wrap,main,[
- LIBWRAPLIBS="$LIBWRAPLIBS -lwrap"
- AC_DEFINE(HAVE_LIBWRAP)
- ])
- AC_SUBST(LIBWRAPLIBS)
- AC_CHECK_FUNCS(strdup strstr strtoul initgroups closesocket)
- dnl socklen_t check - from curl
- AC_CHECK_TYPE([socklen_t], ,[
- AC_MSG_CHECKING([for socklen_t equivalent])
- AC_CACHE_VAL([curl_cv_socklen_t_equiv],
- [
- # Systems have either "struct sockaddr *" or
- # "void *" as the second argument to getpeername
- curl_cv_socklen_t_equiv=
- for arg2 in "struct sockaddr" void; do
- for t in int size_t unsigned long "unsigned long"; do
- AC_TRY_COMPILE([
- #ifdef HAVE_SYS_TYPES_H
- #include <sys/types.h>
- #endif
- #ifdef HAVE_SYS_SOCKET_H
- #include <sys/socket.h>
- #endif
-
- int getpeername (int, $arg2 *, $t *);
- ],[
- $t len;
- getpeername(0,0,&len);
- ],[
- curl_cv_socklen_t_equiv="$t"
- break
- ])
- done
- done
-
- if test "x$curl_cv_socklen_t_equiv" = x; then
- AC_MSG_ERROR([Cannot find a type to use in place of socklen_t])
- fi
- ])
- AC_MSG_RESULT($curl_cv_socklen_t_equiv)
- AC_DEFINE_UNQUOTED(socklen_t, $curl_cv_socklen_t_equiv,
- [type to use in place of socklen_t if not defined])],
- [#include <sys/types.h>
- #include <sys/socket.h>])
- AC_MSG_CHECKING(for type of socket size)
- AC_TRY_COMPILE([#include <stdlib.h>
- #include <sys/types.h>
- #include <sys/socket.h>
- ],
- [int a = send(1, (const void *)0, (size_t *) 0, (int *) 0);],
- [AC_DEFINE(SOCKET_SIZE_TYPE, size_t) AC_MSG_RESULT(size_t)],
- [AC_DEFINE(SOCKET_SIZE_TYPE, int) AC_MSG_RESULT(int)])
- dnl Stolen from Python code: loewis@users.sourceforge.net
- #AC_CHECK_TYPE(socklen_t,int,
- # AC_DEFINE(socklen_t,int,
- # Define to `int' if <sys/socket.h> does not define.),[
- # #ifdef HAVE_SYS_TYPES_H
- # #include <sys/types.h>
- # #endif
- # #ifdef HAVE_SYS_SOCKET_H
- # #include <sys/socket.h>
- # #endif
- # ])
- dnl Does user want to check for SSL?
- AC_ARG_ENABLE(ssl,--enable-ssl enables native SSL support,[
- if test x$enableval = xyes; then
- check_for_ssl=yes
- else
- check_for_ssl=no
- fi
- ],check_for_ssl=yes)
- dnl Optional SSL library and include paths
- ssl_dir=
- ssl_inc_dir=
- ssl_lib_dir=
- AC_ARG_WITH(ssl,--with-ssl=DIR sets location of the SSL installation,[
- ssl_dir=$withval
- ])
- AC_ARG_WITH(ssl-inc,--with-ssl-inc=DIR sets location of the SSL include files,[
- ssl_inc_dir=$withval
- ])
- AC_ARG_WITH(ssl-lib,--with-ssl-lib=DIR sets location of the SSL libraries,[
- ssl_lib_dir=$withval
- ])
- AC_ARG_WITH(kerberos-inc,--with-kerberos-inc=DIR sets location of the Kerberos include files,[
- kerberos_inc_dir=$withval
- ])
- dnl Check for SSL support
- dnl Modified version of Mark Ethan Trostler's macro <trostler@juniper.net>
- if test x$check_for_ssl = xyes; then
- AC_MSG_CHECKING(for SSL headers)
- found_ssl=no
- for dir in $ssl_inc_dir $ssl_dir /usr/local/openssl /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr /usr/freeware/lib/openssl; do
- ssldir="$dir"
- if test -f "$dir/include/openssl/ssl.h"; then
- found_ssl=yes
- CFLAGS="$CFLAGS -I$dir/include/openssl -I$ssldir/include"
- sslincdir="$dir/include/openssl"
- break
- fi
- if test -f "$dir/include/ssl.h"; then
- found_ssl=yes
- CFLAGS="$CFLAGS -I$dir/include"
- sslincdir="$dir/include"
- break
- fi
- if test -f "$dir/ssl.h"; then
- found_ssl=yes
- CFLAGS="$CFLAGS -I$dir"
- sslincdir="$dir"
- ssldir="$dir/.."
- break
- fi
- if test -f "$dir/openssl/ssl.h"; then
- found_ssl=yes
- CFLAGS="$CFLAGS -I$dir/openssl"
- sslincdir="$dir/openssl"
- ssldir="$dir/.."
- break
- fi
- done
- if test x_$found_ssl != x_yes; then
- AC_MSG_ERROR(Cannot find ssl headers)
- else
- printf "SSL headers found in $ssldir\n";
- dnl Now try and find SSL libraries
- AC_MSG_CHECKING(for SSL libraries)
- found_ssl=no
- for dir in $ssl_lib_dir $ssl_dir /usr/lib64 /usr/lib /usr/local/lib /usr/lib/ssl /usr/ssl/lib /usr/openssl/lib /usr/pkg/lib /usr/freeware/lib/openssl; do
- ssllibdir="$dir"
- if test -f "$dir/libssl.so"; then
- found_ssl=yes
- break
- fi
- done
- if test x_$found_ssl != x_yes; then
- AC_MSG_ERROR(Cannot find ssl libraries)
- else
- printf "SSL libraries found in $ssllibdir\n";
- LDFLAGS="$LDFLAGS -L$ssllibdir";
- LIBS="$LIBS -lssl -lcrypto";
- AC_DEFINE_UNQUOTED(HAVE_SSL)
- AC_SUBST(HAVE_SSL)
-
- dnl Generate DH parameters
- echo ""
- echo "*** Generating DH Parameters for SSL/TLS ***"
- if test -f "$ssldir/sbin/openssl"; then
- sslbin=$ssldir/sbin/openssl
- else
- sslbin=$ssldir/bin/openssl
- fi
- # awk to strip off meta data at bottom of dhparam output
- $sslbin dhparam -C 512 | awk '/^-----/ {exit} {print}' > include/dh.h
- fi
- fi
- dnl RedHat 8.0 and 9.0 include openssl compiled with kerberos, so we must include header file
- AC_MSG_CHECKING(for Kerberos include files)
- found_kerberos=no
- for dir in $kerberos_inc_dir /usr/kerberos/include; do
- kerbdir="$dir"
- if test -f "$dir/krb5.h"; then
- found_kerberos=yes
- CFLAGS="$CFLAGS -I$kerbdir"
- AC_DEFINE_UNQUOTED(HAVE_KRB5_H)
- dnl AC_CHECK_HEADERS(krb5.h)
- break
- fi
- done
- if test x_$found_kerberos != x_yes; then
- printf "could not find include files\n";
- else
- printf "found Kerberos include files in $kerbdir\n";
- fi
-
- fi
- AC_ARG_WITH(log_facility,--with-log-facility=<facility> sets NRPE syslog facility,log_facility=$withval,log_facility=daemon)
- AC_SUBST(log_facility)
- AC_DEFINE_UNQUOTED(NRPE_LOG_FACILITY,["$log_facility"])
- AC_ARG_WITH(nrpe_user,--with-nrpe-user=<user> sets user name to run NRPE,nrpe_user=$withval,nrpe_user=nagios)
- AC_ARG_WITH(nrpe_group,--with-nrpe-group=<group> sets group name to run NRPE,nrpe_group=$withval,nrpe_group=nagios)
- AC_ARG_WITH(nrpe_port,--with-nrpe-port=<port> sets port number for NRPE to listen on,nrpe_port=$withval,nrpe_port=5666)
- AC_SUBST(nrpe_user)
- AC_SUBST(nrpe_group)
- NRPE_INSTALL_OPTS="-o $nrpe_user -g $nrpe_group"
- AC_SUBST(NRPE_INSTALL_OPTS)
- AC_SUBST(nrpe_port)
- AC_DEFINE_UNQUOTED(DEFAULT_SERVER_PORT,$nrpe_port)
- AC_ARG_WITH(nagios_user,--with-nagios-user=<user> sets user name for file permissions,nagios_user=$withval,nagios_user=nagios)
- AC_ARG_WITH(nagios_group,--with-nagios-group=<grp> sets group name file permissions,nagios_group=$withval,nagios_group=nagios)
- AC_SUBST(nagios_user)
- AC_SUBST(nagios_group)
- NAGIOS_INSTALL_OPTS="-o $nagios_user -g $nagios_group"
- AC_SUBST(NAGIOS_INSTALL_OPTS)
- AC_ARG_ENABLE(command-args,--enable-command-args allows clients to specify command arguments. *** THIS IS A SECURITY RISK! *** Read the SECURITY file before using this option!,AC_DEFINE_UNQUOTED(ENABLE_COMMAND_ARGUMENTS))
- AC_PATH_PROG(PERL,perl)
- AC_OUTPUT(Makefile src/Makefile subst)
- perl subst init-script
- perl subst init-script.debian
- perl subst init-script.suse
- perl subst sample-config/nrpe.cfg
- perl subst sample-config/nrpe.xinetd
- dnl Review options
- echo ""
- echo ""
- AC_MSG_RESULT([*** Configuration summary for $PKG_NAME $PKG_VERSION $PKG_REL_DATE ***:])
- echo ""
- echo " General Options:"
- echo " -------------------------"
- AC_MSG_RESULT([ NRPE port: $nrpe_port])
- AC_MSG_RESULT([ NRPE user: $nrpe_user])
- AC_MSG_RESULT([ NRPE group: $nrpe_group])
- AC_MSG_RESULT([ Nagios user: $nagios_user])
- AC_MSG_RESULT([ Nagios group: $nagios_group])
- echo ""
- echo ""
- echo "Review the options above for accuracy. If they look okay,"
- echo "type 'make all' to compile the NRPE daemon and client."
- echo ""
|