configure.in 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. dnl Process this 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.1"
  10. PKG_HOME_URL="http://www.nagios.org/"
  11. PKG_REL_DATE="10-14-2003"
  12. dnl Figure out how to invoke "install" and what install options to use.
  13. AC_PROG_INSTALL
  14. AC_SUBST(INSTALL)
  15. dnl Checks for programs.
  16. AC_PROG_CC
  17. AC_PROG_MAKE_SET
  18. dnl Checks for header files.
  19. AC_HEADER_STDC
  20. AC_HEADER_TIME
  21. AC_HEADER_SYS_WAIT
  22. 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 sys/types.h sys/time.h sys/resource.h sys/wait.h sys/socket.h sys/stat.h)
  23. dnl Checks for typedefs, structures, and compiler characteristics.
  24. AC_C_CONST
  25. AC_STRUCT_TM
  26. AC_TYPE_MODE_T
  27. AC_TYPE_PID_T
  28. AC_TYPE_SIZE_T
  29. AC_TYPE_SIGNAL
  30. AC_TYPE_GETGROUPS
  31. dnl Check lengths for later tests of u_int32_t and int32_t
  32. AC_CHECK_SIZEOF(int)
  33. AC_CHECK_SIZEOF(short)
  34. AC_CHECK_SIZEOF(long)
  35. dnl Define u_int32_t if we don't have it already (Solaris, etc.)
  36. AC_CHECK_TYPE(uint32_t,unsigned int)
  37. AC_CHECK_TYPE(u_int32_t,unsigned int)
  38. if test "$ac_cv_type_u_int32_t" = no ; then
  39. if test "$ac_cv_type_u_int32_t" = yes ; then
  40. AC_DEFINE(U_INT32_T_IS_UINT32_T)
  41. else
  42. if test "$ac_cv_sizeof_int" = 4 ; then
  43. AC_DEFINE(U_INT32_T_IS_UINT)
  44. else
  45. if test "$ac_cv_sizeof_long" = 4 ; then
  46. AC_DEFINE(U_INT32_T_IS_ULONG)
  47. else
  48. if test "$ac_cv_sizeof_short" = 4 ; then
  49. AC_DEFINE(U_INT32_T_IS_USHORT)
  50. fi
  51. fi
  52. fi
  53. fi
  54. fi
  55. dnl Define int32_t if we don't have it already
  56. AC_CHECK_TYPE(int32_t,int)
  57. if test "$ac_cv_type_int32_t" = no ; then
  58. if test "$ac_cv_sizeof_int" = 4 ; then
  59. AC_DEFINE(INT32_T_IS_UINT)
  60. else
  61. if test "$ac_cv_sizeof_long" = 4 ; then
  62. AC_DEFINE(INT32_T_IS_ULONG)
  63. else
  64. if test "$ac_cv_sizeof_short" = 4 ; then
  65. AC_DEFINE(INT32_T_IS_USHORT)
  66. fi
  67. fi
  68. fi
  69. fi
  70. dnl Check for getopt_long (Solaris)
  71. AC_CHECK_FUNCS([getopt_long],,AC_CHECK_LIB([iberty],[getopt_long],OTHERLIBS="$OTHERLIBS -liberty"))
  72. AC_SUBST(OTHERLIBS)
  73. dnl Checks for library functions.
  74. AC_CHECK_LIB(nsl,main,SOCKETLIBS="$SOCKETLIBS -lnsl")
  75. AC_CHECK_LIB(socket,socket,SOCKETLIBS="$SOCKETLIBS -lsocket")
  76. AC_SUBST(SOCKETLIBS)
  77. AC_CHECK_LIB(wrap,main,[
  78. LIBWRAPLIBS="$LIBWRAPLIBS -lwrap"
  79. AC_DEFINE(HAVE_LIBWRAP)
  80. ])
  81. AC_SUBST(LIBWRAPLIBS)
  82. AC_CHECK_FUNCS(strdup strstr strtoul initgroups)
  83. AC_MSG_CHECKING(for type of socket size)
  84. AC_TRY_COMPILE([#include <stdlib.h>
  85. #include <sys/types.h>
  86. #include <sys/socket.h>
  87. ],
  88. [int a = send(1, (const void *)0, (size_t *) 0, (int *) 0);],
  89. [AC_DEFINE(SOCKET_SIZE_TYPE, size_t) AC_MSG_RESULT(size_t)],
  90. [AC_DEFINE(SOCKET_SIZE_TYPE, int) AC_MSG_RESULT(int)])
  91. dnl Does user want to check for SSL?
  92. AC_ARG_ENABLE(ssl,--enable-ssl enables native SSL support,[
  93. if test x$enableval = xyes; then
  94. check_for_ssl=yes
  95. else
  96. check_for_ssl=no
  97. fi
  98. ],check_for_ssl=yes)
  99. dnl Optional SSL library and include paths
  100. ssl_lib_dir=
  101. ssl_inc_dir=
  102. AC_ARG_WITH(ssl-lib,--with-ssl-lib=DIR sets location of the SSL library,[
  103. ssl_lib_dir=$withval
  104. ])
  105. AC_ARG_WITH(ssl-inc,--with-ssl-inc=DIR sets location of the SSL include files,[
  106. ssl_inc_dir=$withval
  107. ])
  108. AC_ARG_WITH(kerberos-inc,--with-kerberos-inc=DIR sets location of the Kerberos include files,[
  109. kerberos_inc_dir=$withval
  110. ])
  111. dnl Check for SSL support
  112. dnl Modified version of Mark Ethan Trostler's macro <trostler@juniper.net>
  113. if test x$check_for_ssl = xyes; then
  114. AC_MSG_CHECKING(for SSL)
  115. found_ssl=no
  116. for dir in $ssl_inc_dir /usr/local/openssl /usr/local/ssl /usr/lib/ssl /usr/ssl /usr/pkg /usr/local /usr; do
  117. ssldir="$dir"
  118. if test -f "$dir/include/openssl/ssl.h"; then
  119. found_ssl=yes
  120. CFLAGS="$CFLAGS -I$ssldir/include/openssl -I$ssldir/include"
  121. break
  122. fi
  123. if test -f "$dir/include/ssl.h"; then
  124. found_ssl=yes
  125. CFLAGS="$CFLAGS -I$ssldir/include"
  126. break
  127. fi
  128. done
  129. if test x_$found_ssl != x_yes; then
  130. AC_MSG_ERROR(Cannot find ssl libraries)
  131. else
  132. printf "SSL found in $ssldir\n";
  133. LIBS="$LIBS -lssl -lcrypto";
  134. if test x$ssl_lib_dir != x; then
  135. LDFLAGS="$LDFLAGS -L$ssl_lib_dir";
  136. else
  137. LDFLAGS="$LDFLAGS -L$ssldir/lib";
  138. fi
  139. AC_DEFINE_UNQUOTED(HAVE_SSL)
  140. AC_SUBST(HAVE_SSL)
  141. dnl Generate DH parameters
  142. echo ""
  143. echo "*** Generating DH Parameters for SSL/TLS ***"
  144. if test -f "$ssldir/sbin/openssl"; then
  145. sslbin=$ssldir/sbin/openssl
  146. else
  147. sslbin=$ssldir/bin/openssl
  148. fi
  149. $sslbin dhparam -out /dev/null -C 512 > include/dh.h
  150. fi
  151. dnl RedHat 8.0 and 9.0 include openssl compiled with kerberos, so we must include header file
  152. AC_MSG_CHECKING(for Kerberos include files)
  153. found_kerberos=no
  154. for dir in $kerberos_inc_dir /usr/kerberos/include; do
  155. kerbdir="$dir"
  156. if test -f "$dir/krb5.h"; then
  157. found_kerberos=yes
  158. CFLAGS="$CFLAGS -I$kerbdir"
  159. AC_DEFINE_UNQUOTED(HAVE_KRB5_H)
  160. dnl AC_CHECK_HEADERS(krb5.h)
  161. break
  162. fi
  163. done
  164. if test x_$found_kerberos != x_yes; then
  165. printf "could not find include files\n";
  166. else
  167. printf "found Kerberos include files in $kerbdir\n";
  168. fi
  169. fi
  170. AC_ARG_WITH(nrpe_user,--with-nrpe-user=<user> sets user name to run NRPE,nrpe_user=$withval,nrpe_user=nagios)
  171. AC_ARG_WITH(nrpe_group,--with-nrpe-group=<group> sets group name to run NRPE,nrpe_grp=$withval,nrpe_grp=nagios)
  172. AC_ARG_WITH(nrpe_port,--with-nrpe-port=<port> sets port number for NRPE to listen on,nrpe_port=$withval,nrpe_port=5666)
  173. AC_SUBST(nrpe_user)
  174. AC_SUBST(nrpe_grp)
  175. AC_SUBST(nrpe_port)
  176. AC_DEFINE_UNQUOTED(DEFAULT_SERVER_PORT,$nrpe_port)
  177. 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))
  178. AC_PATH_PROG(PERL,perl)
  179. AC_OUTPUT(Makefile src/Makefile subst)
  180. perl subst init-script
  181. perl subst init-script.debian
  182. perl subst init-script.freebsd
  183. perl subst sample-config/nrpe.cfg
  184. perl subst sample-config/nrpe.xinetd
  185. dnl Review options
  186. echo ""
  187. echo ""
  188. AC_MSG_RESULT([*** Configuration summary for $PKG_NAME $PKG_VERSION $PKG_REL_DATE ***:])
  189. echo ""
  190. echo " General Options:"
  191. echo " -------------------------"
  192. AC_MSG_RESULT([ NRPE port: $nrpe_port])
  193. AC_MSG_RESULT([ NRPE user: $nrpe_user])
  194. AC_MSG_RESULT([ NRPE group: $nrpe_grp])
  195. echo ""
  196. echo ""
  197. echo "Review the options above for accuracy. If they look okay,"
  198. echo "type 'make all' to compile the NRPE daemon and client."
  199. echo ""