configure.in 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311
  1. dnl Process this -*-m4-*- file with autoconf to produce a configure script.
  2. dnl Disable caching
  3. define([AC_CACHE_LOAD],)
  4. define([AC_CACHE_SAVE],)
  5. AC_INIT(src/nrpe.c)
  6. AC_CONFIG_HEADER(include/config.h)
  7. AC_PREFIX_DEFAULT(/usr/local/nagios)
  8. PKG_NAME=nrpe
  9. PKG_VERSION="2.7.1"
  10. PKG_HOME_URL="http://www.nagios.org/"
  11. PKG_REL_DATE="03-08-2007"
  12. dnl Figure out how to invoke "install" and what install options to use.
  13. AC_PROG_INSTALL
  14. AC_SUBST(INSTALL)
  15. dnl What OS are we running?
  16. AC_CANONICAL_HOST
  17. dnl Checks for programs.
  18. AC_PROG_CC
  19. AC_PROG_MAKE_SET
  20. dnl Checks for header files.
  21. AC_HEADER_STDC
  22. AC_HEADER_TIME
  23. AC_HEADER_SYS_WAIT
  24. 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)
  25. dnl Checks for typedefs, structures, and compiler characteristics.
  26. AC_C_CONST
  27. AC_STRUCT_TM
  28. AC_TYPE_MODE_T
  29. AC_TYPE_PID_T
  30. AC_TYPE_SIZE_T
  31. AC_TYPE_SIGNAL
  32. AC_TYPE_GETGROUPS
  33. dnl Check lengths for later tests of u_int32_t and int32_t
  34. AC_CHECK_SIZEOF(int)
  35. AC_CHECK_SIZEOF(short)
  36. AC_CHECK_SIZEOF(long)
  37. dnl Define u_int32_t if we don't have it already (Solaris, etc.)
  38. AC_CHECK_TYPE(uint32_t,unsigned int)
  39. AC_CHECK_TYPE(u_int32_t,unsigned int)
  40. if test "$ac_cv_type_u_int32_t" = no ; then
  41. if test "$ac_cv_type_u_int32_t" = yes ; then
  42. AC_DEFINE(U_INT32_T_IS_UINT32_T)
  43. else
  44. if test "$ac_cv_sizeof_int" = 4 ; then
  45. AC_DEFINE(U_INT32_T_IS_UINT)
  46. else
  47. if test "$ac_cv_sizeof_long" = 4 ; then
  48. AC_DEFINE(U_INT32_T_IS_ULONG)
  49. else
  50. if test "$ac_cv_sizeof_short" = 4 ; then
  51. AC_DEFINE(U_INT32_T_IS_USHORT)
  52. fi
  53. fi
  54. fi
  55. fi
  56. fi
  57. dnl Define int32_t if we don't have it already
  58. AC_CHECK_TYPE(int32_t,int)
  59. if test "$ac_cv_type_int32_t" = no ; then
  60. if test "$ac_cv_sizeof_int" = 4 ; then
  61. AC_DEFINE(INT32_T_IS_UINT)
  62. else
  63. if test "$ac_cv_sizeof_long" = 4 ; then
  64. AC_DEFINE(INT32_T_IS_ULONG)
  65. else
  66. if test "$ac_cv_sizeof_short" = 4 ; then
  67. AC_DEFINE(INT32_T_IS_USHORT)
  68. fi
  69. fi
  70. fi
  71. fi
  72. dnl Check for getopt_long (Solaris)
  73. AC_CHECK_FUNCS([getopt_long],,AC_CHECK_LIB([iberty],[getopt_long],OTHERLIBS="$OTHERLIBS -liberty"))
  74. AC_SUBST(OTHERLIBS)
  75. dnl Checks for library functions.
  76. AC_CHECK_LIB(nsl,main,SOCKETLIBS="$SOCKETLIBS -lnsl")
  77. AC_CHECK_LIB(socket,socket,SOCKETLIBS="$SOCKETLIBS -lsocket")
  78. AC_SUBST(SOCKETLIBS)
  79. AC_CHECK_LIB(wrap,main,[
  80. LIBWRAPLIBS="$LIBWRAPLIBS -lwrap"
  81. AC_DEFINE(HAVE_LIBWRAP)
  82. ])
  83. AC_SUBST(LIBWRAPLIBS)
  84. AC_CHECK_FUNCS(strdup strstr strtoul initgroups closesocket)
  85. dnl socklen_t check - from curl
  86. AC_CHECK_TYPE([socklen_t], ,[
  87. AC_MSG_CHECKING([for socklen_t equivalent])
  88. AC_CACHE_VAL([curl_cv_socklen_t_equiv],
  89. [
  90. # Systems have either "struct sockaddr *" or
  91. # "void *" as the second argument to getpeername
  92. curl_cv_socklen_t_equiv=
  93. for arg2 in "struct sockaddr" void; do
  94. for t in int size_t unsigned long "unsigned long"; do
  95. AC_TRY_COMPILE([
  96. #ifdef HAVE_SYS_TYPES_H
  97. #include <sys/types.h>
  98. #endif
  99. #ifdef HAVE_SYS_SOCKET_H
  100. #include <sys/socket.h>
  101. #endif
  102. int getpeername (int, $arg2 *, $t *);
  103. ],[
  104. $t len;
  105. getpeername(0,0,&len);
  106. ],[
  107. curl_cv_socklen_t_equiv="$t"
  108. break
  109. ])
  110. done
  111. done
  112. if test "x$curl_cv_socklen_t_equiv" = x; then
  113. AC_MSG_ERROR([Cannot find a type to use in place of socklen_t])
  114. fi
  115. ])
  116. AC_MSG_RESULT($curl_cv_socklen_t_equiv)
  117. AC_DEFINE_UNQUOTED(socklen_t, $curl_cv_socklen_t_equiv,
  118. [type to use in place of socklen_t if not defined])],
  119. [#include <sys/types.h>
  120. #include <sys/socket.h>])
  121. AC_MSG_CHECKING(for type of socket size)
  122. AC_TRY_COMPILE([#include <stdlib.h>
  123. #include <sys/types.h>
  124. #include <sys/socket.h>
  125. ],
  126. [int a = send(1, (const void *)0, (size_t *) 0, (int *) 0);],
  127. [AC_DEFINE(SOCKET_SIZE_TYPE, size_t) AC_MSG_RESULT(size_t)],
  128. [AC_DEFINE(SOCKET_SIZE_TYPE, int) AC_MSG_RESULT(int)])
  129. dnl Stolen from Python code: loewis@users.sourceforge.net
  130. #AC_CHECK_TYPE(socklen_t,int,
  131. # AC_DEFINE(socklen_t,int,
  132. # Define to `int' if <sys/socket.h> does not define.),[
  133. # #ifdef HAVE_SYS_TYPES_H
  134. # #include <sys/types.h>
  135. # #endif
  136. # #ifdef HAVE_SYS_SOCKET_H
  137. # #include <sys/socket.h>
  138. # #endif
  139. # ])
  140. dnl Does user want to check for SSL?
  141. AC_ARG_ENABLE(ssl,--enable-ssl enables native SSL support,[
  142. if test x$enableval = xyes; then
  143. check_for_ssl=yes
  144. else
  145. check_for_ssl=no
  146. fi
  147. ],check_for_ssl=yes)
  148. dnl Optional SSL library and include paths
  149. ssl_inc_dir=
  150. AC_ARG_WITH(ssl,--with-ssl=DIR sets location of the SSL installation,[
  151. ssl_dir=$withval
  152. ])
  153. AC_ARG_WITH(ssl-inc,--with-ssl-inc=DIR sets location of the SSL include files,[
  154. ssl_inc_dir=$withval
  155. ])
  156. AC_ARG_WITH(kerberos-inc,--with-kerberos-inc=DIR sets location of the Kerberos include files,[
  157. kerberos_inc_dir=$withval
  158. ])
  159. dnl Check for SSL support
  160. dnl Modified version of Mark Ethan Trostler's macro <trostler@juniper.net>
  161. if test x$check_for_ssl = xyes; then
  162. AC_MSG_CHECKING(for SSL)
  163. found_ssl=no
  164. 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
  165. ssldir="$dir"
  166. if test -f "$dir/include/openssl/ssl.h"; then
  167. found_ssl=yes
  168. CFLAGS="$CFLAGS -I$dir/include/openssl -I$ssldir/include"
  169. break
  170. fi
  171. if test -f "$dir/include/ssl.h"; then
  172. found_ssl=yes
  173. CFLAGS="$CFLAGS -I$dir/include"
  174. break
  175. fi
  176. if test -f "$dir/ssl.h"; then
  177. found_ssl=yes
  178. CFLAGS="$CFLAGS -I$dir/include"
  179. ssldir="$dir/.."
  180. break
  181. fi
  182. if test -f "$dir/openssl/ssl.h"; then
  183. found_ssl=yes
  184. CFLAGS="$CFLAGS -I$dir/include"
  185. ssldir="$dir/.."
  186. break
  187. fi
  188. done
  189. if test x_$found_ssl != x_yes; then
  190. AC_MSG_ERROR(Cannot find ssl libraries)
  191. else
  192. printf "SSL found in $ssldir\n";
  193. LIBS="$LIBS -lssl -lcrypto";
  194. if test x$ssl_lib_dir != x; then
  195. LDFLAGS="$LDFLAGS -L$ssl_lib_dir";
  196. else
  197. LDFLAGS="$LDFLAGS -L$ssldir/lib";
  198. fi
  199. AC_DEFINE_UNQUOTED(HAVE_SSL)
  200. AC_SUBST(HAVE_SSL)
  201. dnl Generate DH parameters
  202. echo ""
  203. echo "*** Generating DH Parameters for SSL/TLS ***"
  204. if test -f "$ssldir/sbin/openssl"; then
  205. sslbin=$ssldir/sbin/openssl
  206. else
  207. sslbin=$ssldir/bin/openssl
  208. fi
  209. # awk to strip off meta data at bottom of dhparam output
  210. $sslbin dhparam -C 512 | awk '/^-----/ {exit} {print}' > include/dh.h
  211. fi
  212. dnl RedHat 8.0 and 9.0 include openssl compiled with kerberos, so we must include header file
  213. AC_MSG_CHECKING(for Kerberos include files)
  214. found_kerberos=no
  215. for dir in $kerberos_inc_dir /usr/kerberos/include; do
  216. kerbdir="$dir"
  217. if test -f "$dir/krb5.h"; then
  218. found_kerberos=yes
  219. CFLAGS="$CFLAGS -I$kerbdir"
  220. AC_DEFINE_UNQUOTED(HAVE_KRB5_H)
  221. dnl AC_CHECK_HEADERS(krb5.h)
  222. break
  223. fi
  224. done
  225. if test x_$found_kerberos != x_yes; then
  226. printf "could not find include files\n";
  227. else
  228. printf "found Kerberos include files in $kerbdir\n";
  229. fi
  230. fi
  231. AC_ARG_WITH(nrpe_user,--with-nrpe-user=<user> sets user name to run NRPE,nrpe_user=$withval,nrpe_user=nagios)
  232. AC_ARG_WITH(nrpe_group,--with-nrpe-group=<group> sets group name to run NRPE,nrpe_grp=$withval,nrpe_group=nagios)
  233. AC_ARG_WITH(nrpe_port,--with-nrpe-port=<port> sets port number for NRPE to listen on,nrpe_port=$withval,nrpe_port=5666)
  234. AC_SUBST(nrpe_user)
  235. AC_SUBST(nrpe_group)
  236. NRPE_INSTALL_OPTS="-o $nrpe_user -g $nrpe_group"
  237. AC_SUBST(NRPE_INSTALL_OPTS)
  238. AC_SUBST(nrpe_port)
  239. AC_DEFINE_UNQUOTED(DEFAULT_SERVER_PORT,$nrpe_port)
  240. AC_ARG_WITH(nagios_user,--with-nagios-user=<user> sets user name forfile permissions,nagios_user=$withval,nagios_user=nagios)
  241. AC_ARG_WITH(nagios_group,--with-nagios-group=<grp> sets group name file permissions,nagios_grp=$withval,nagios_group=nagios)
  242. AC_SUBST(nagios_user)
  243. AC_SUBST(nagios_group)
  244. NAGIOS_INSTALL_OPTS="-o $nagios_user -g $nagios_group"
  245. AC_SUBST(NAGIOS_INSTALL_OPTS)
  246. A
  247. 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))
  248. AC_PATH_PROG(PERL,perl)
  249. AC_OUTPUT(Makefile src/Makefile subst)
  250. perl subst init-script
  251. perl subst init-script.debian
  252. perl subst init-script.suse
  253. perl subst sample-config/nrpe.cfg
  254. perl subst sample-config/nrpe.xinetd
  255. dnl Review options
  256. echo ""
  257. echo ""
  258. AC_MSG_RESULT([*** Configuration summary for $PKG_NAME $PKG_VERSION $PKG_REL_DATE ***:])
  259. echo ""
  260. echo " General Options:"
  261. echo " -------------------------"
  262. AC_MSG_RESULT([ NRPE port: $nrpe_port])
  263. AC_MSG_RESULT([ NRPE user: $nrpe_user])
  264. AC_MSG_RESULT([ NRPE group: $nrpe_group])
  265. echo ""
  266. echo ""
  267. echo "Review the options above for accuracy. If they look okay,"
  268. echo "type 'make all' to compile the NRPE daemon and client."
  269. echo ""