1dnl Process this -*-m4-*- file with autoconf to produce a configure script.
2
3dnl Disable caching
4define([AC_CACHE_LOAD],)
5define([AC_CACHE_SAVE],)
6
7AC_INIT(src/nsca.c)
8AC_CONFIG_HEADER(include/config.h)
9AC_PREFIX_DEFAULT(/usr/local/nagios)
10
11PKG_NAME=nsca
12PKG_VERSION="2.7.2"
13PKG_HOME_URL="http://www.nagios.org/"
14PKG_REL_DATE="07-03-2007"
15
16dnl Figure out how to invoke "install" and what install options to use.
17AC_PROG_INSTALL
18AC_SUBST(INSTALL)
19
20dnl What OS are we running?
21AC_CANONICAL_HOST
22
23dnl Checks for programs.
24AC_PROG_CC
25AC_PROG_MAKE_SET
26
27dnl Checks for header files.
28AC_HEADER_STDC
29AC_HEADER_TIME
30AC_HEADER_SYS_WAIT
31AC_CHECK_HEADERS(db.h ctype.h errno.h fcntl.h grp.h inttypes.h netdb.h pwd.h regex.h signal.h stdint.h strings.h string.h syslog.h tcpd.h unistd.h arpa/inet.h netinet/in.h sys/config.h sys/int_types.h sys/poll.h sys/types.h sys/time.h sys/resource.h sys/socket.h sys/stat.h sys/wait.h)
32
33dnl Checks for typedefs, structures, and compiler characteristics.
34AC_C_CONST
35AC_STRUCT_TM
36AC_TYPE_MODE_T
37AC_TYPE_PID_T
38AC_TYPE_SIZE_T
39AC_TYPE_SIGNAL
40AC_TYPE_GETGROUPS
41
42dnl Check lengths for later tests of u_int32_t and int32_t
43AC_CHECK_SIZEOF(int)
44AC_CHECK_SIZEOF(short)
45AC_CHECK_SIZEOF(long)
46
47dnl Define u_int32_t if we don't have it already (Solaris, etc.)
48AC_CHECK_TYPE(uint32_t,unsigned int)
49AC_CHECK_TYPE(u_int32_t,unsigned int)
50if test "$ac_cv_type_u_int32_t" = no ; then
51	if test "$ac_cv_type_u_int32_t" = yes ; then
52		AC_DEFINE(U_INT32_T_IS_UINT32_T)
53	else
54		if test "$ac_cv_sizeof_int" = 4 ; then
55			AC_DEFINE(U_INT32_T_IS_UINT)
56		else
57			if test "$ac_cv_sizeof_long" = 4 ; then
58				AC_DEFINE(U_INT32_T_IS_ULONG)
59			else
60				if test "$ac_cv_sizeof_short" = 4 ; then
61					AC_DEFINE(U_INT32_T_IS_USHORT)
62				fi
63			fi
64		fi
65	fi
66fi
67
68dnl Define int32_t if we don't have it already
69AC_CHECK_TYPE(int32_t,int)
70if test "$ac_cv_type_int32_t" = no ; then
71	if test "$ac_cv_sizeof_int" = 4 ; then
72		AC_DEFINE(INT32_T_IS_UINT)
73	else
74		if test "$ac_cv_sizeof_long" = 4 ; then
75			AC_DEFINE(INT32_T_IS_ULONG)
76		else
77			if test "$ac_cv_sizeof_short" = 4 ; then
78				AC_DEFINE(INT32_T_IS_USHORT)
79			fi
80		fi
81	fi
82fi
83
84dnl Checks for library functions.
85AC_CHECK_LIB(nsl,main,SOCKETLIBS="$SOCKETLIBS -lnsl")
86AC_CHECK_LIB(socket,socket,SOCKETLIBS="$SOCKETLIBS -lsocket")
87AC_SUBST(SOCKETLIBS)
88AC_CHECK_LIB(wrap,main,[
89	LIBWRAPLIBS="$LIBWRAPLIBS -lwrap"
90	AC_DEFINE(HAVE_LIBWRAP)
91	])
92AC_SUBST(LIBWRAPLIBS)
93AC_CHECK_FUNCS(strdup strstr strtoul)
94
95dnl socklen_t check - from curl
96AC_CHECK_TYPE([socklen_t], ,[
97       AC_MSG_CHECKING([for socklen_t equivalent])
98       AC_CACHE_VAL([curl_cv_socklen_t_equiv],
99       [
100          # Systems have either "struct sockaddr *" or
101          # "void *" as the second argument to getpeername
102          curl_cv_socklen_t_equiv=
103          for arg2 in "struct sockaddr" void; do
104             for t in int size_t unsigned long "unsigned long"; do
105                AC_TRY_COMPILE([
106                   #ifdef HAVE_SYS_TYPES_H
107                   #include <sys/types.h>
108                   #endif
109                   #ifdef HAVE_SYS_SOCKET_H
110                   #include <sys/socket.h>
111                   #endif
112
113                   int getpeername (int, $arg2 *, $t *);
114                ],[
115                   $t len;
116                   getpeername(0,0,&len);
117                ],[
118                   curl_cv_socklen_t_equiv="$t"
119                   break
120                ])
121             done
122          done
123
124          if test "x$curl_cv_socklen_t_equiv" = x; then
125             AC_MSG_ERROR([Cannot find a type to use in place of socklen_t])
126          fi
127       ])
128       AC_MSG_RESULT($curl_cv_socklen_t_equiv)
129       AC_DEFINE_UNQUOTED(socklen_t, $curl_cv_socklen_t_equiv,
130                         [type to use in place of socklen_t if not defined])],
131       [#include <sys/types.h>
132#include <sys/socket.h>])
133
134AC_MSG_CHECKING(for type of socket size)
135AC_TRY_COMPILE([#include <stdlib.h>
136#include <sys/types.h>
137#include <sys/socket.h>
138],
139[int a = send(1, (const void *)0, (size_t *) 0, (int *) 0);],
140[AC_DEFINE(SOCKET_SIZE_TYPE, size_t) AC_MSG_RESULT(size_t)],
141[AC_DEFINE(SOCKET_SIZE_TYPE, int) AC_MSG_RESULT(int)])
142
143dnl Optional mcrypt library and include paths
144AC_ARG_WITH(mcrypt-lib,--with-mcrypt-lib=DIR sets location of the mcrypt client library,[
145	LDFLAGS="${LDFLAGS} -L${withval}"
146	LD_RUN_PATH="${withval}${LD_RUN_PATH:+:}${LD_RUN_PATH}"
147	])
148AC_ARG_WITH(mcrypt-inc,--with-mcrypt-inc=DIR sets location of the mcrypt client include files,[
149	CFLAGS="${CFLAGS} -I${withval}"
150	])
151
152dnl Old checks for libmcrypt, no longer needed - 01/17/02 EG
153dnl AC_CHECK_LIB(ltdl,main)
154dnl AC_CHECK_LIB(mcrypt,mcrypt,MCRYPTLIBFOUND=yep)
155
156dnl Check for mcrypt library
157MCRYPTLIBFOUND=yep
158AM_PATH_LIBMCRYPT(2.4.11,,MCRYPTLIBFOUND=nope)
159
160dnl added for automatic use of mcrypt stark@suse.de
161if test $MCRYPTLIBFOUND = yep; then
162	CFLAGS="${CFLAGS} -DHAVE_LIBMCRYPT ${LIBMCRYPT_CFLAGS}"
163	LDFLAGS="${LDFLAGS} ${LIBMCRYPT_LIBS}"
164fi
165
166dnl Did we find the mcrypt library?
167if test x$MCRYPTLIBFOUND = xnope; then
168	echo ""
169	echo ""
170	echo "**************************************************************"
171	echo "MCRYPT LIBRARY (libmcrypt) COULD NOT BE LOCATED..."
172	echo ""
173	echo "The mcrypt library could not be located on your system.  This"
174	echo "means that you will NOT be able to use any crypto algorithms"
175	echo "in the NSCA client or daemon."
176	echo ""
177	echo "Read the SECURITY text file for more information on why"
178	echo "encryption is important to ensuring that the NSCA daemon is"
179	echo "not abused by malicious users."
180	echo ""
181	echo "You can download libmcrypt from:"
182	echo ""
183	echo "        http://mcrypt.sourceforge.net/"
184	echo ""
185	echo ""
186	echo "NOTE: After you install the MCRYPT library on your system:"
187	echo ""
188	echo "      1. Make sure /etc/ld.so.conf has an entry for the"
189	echo "         directory in which the MCRYPT library is installed."
190	echo "      2. Run 'ldconfig' to update the run-time linker options."
191	echo "      3. Run 'make devclean' in the NSCA distribution to clean"
192	echo "         out any old references to your previous compile."
193	echo "      4. Rerun the configure script."
194	echo ""
195	echo "**************************************************************"
196	echo ""
197fi
198
199
200AC_ARG_WITH(nsca_user,--with-nsca-user=<user> sets user name to run NSCA,nsca_user=$withval,nsca_user=nagios)
201AC_ARG_WITH(nsca_grp,--with-nsca-grp=<grp> sets group name to run NSCA,nsca_grp=$withval,nsca_grp=nagios)
202AC_ARG_WITH(nsca_port,--with-nsca-port=<port> sets port number for NSCA to listen on,nsca_port=$withval,nsca_port=5667)
203AC_SUBST(nsca_user)
204AC_SUBST(nsca_grp)
205AC_SUBST(nsca_port)
206AC_DEFINE_UNQUOTED(DEFAULT_SERVER_PORT,$nsca_port)
207
208AC_PATH_PROG(PERL,perl)
209AC_OUTPUT(Makefile subst src/Makefile)
210
211perl subst init-script
212perl subst sample-config/nsca.xinetd
213perl subst sample-config/nsca.cfg
214perl subst sample-config/send_nsca.cfg
215
216
217dnl Review options
218echo ""
219echo ""
220AC_MSG_RESULT([*** Configuration summary for $PKG_NAME $PKG_VERSION $PKG_REL_DATE ***:])
221
222echo ""
223echo " General Options:"
224echo " -------------------------"
225
226AC_MSG_RESULT([ NSCA port:  $nsca_port])
227AC_MSG_RESULT([ NSCA user:  $nsca_user])
228AC_MSG_RESULT([ NSCA group: $nsca_grp])
229
230
231echo ""
232echo ""
233echo "Review the options above for accuracy.  If they look okay,"
234echo "type 'make all' to compile the NSCA daemon and client."
235echo ""
236
237