1 dnl #############################################################
3 dnl # For information about autoconf, see:
5 dnl # http://www.gnu.org/software/autoconf/
7 dnl # The recommended order is:
10 dnl # 0. checks for compiler, libtool, and command line options
11 dnl # 1. checks for programs
12 dnl # 2. checks for libraries
13 dnl # 3. checks for header files
14 dnl # 4. checks for typedefs
15 dnl # 5. checks for structures and functions
16 dnl # 6. checks for compiler characteristics
17 dnl # 7. checks for library functions
18 dnl # 8. checks for system services
19 dnl # AC_OUTPUT([file...])
21 dnl #############################################################
24 export CFLAGS LIBS LDFLAGS CPPFLAGS
25 AC_INIT(src/main/radiusd.c)
26 AC_CONFIG_HEADER(src/include/autoconf.h)
27 AC_REVISION($Revision$)dnl
29 dnl # The version of the software
30 RADIUSD_VERSION=`cat VERSION`
31 RADIUSD_MAJOR_VERSION=`cat VERSION | sed 's/\..*//'`
32 RADIUSD_MINOR_VERSION=`cat VERSION | sed 's/^2\.//'`
35 dnl #############################################################
37 dnl # 0. Checks for compiler, libtool, and command line options.
39 dnl #############################################################
46 dnl # check for AIX, to allow us to use some BSD functions
47 dnl # must be before macros that call the compiler.
51 AC_PROG_GCC_TRADITIONAL
55 dnl Compile in large (2G+) file support.
58 dnl # check for system bytesex
59 dnl # AC_DEFINES WORDS_BIGENDIAN
63 AC_CHECK_PROG(GMAKE, gmake, yes, no)
64 if test $GMAKE = no; then
65 AC_PATH_PROG(MAKE, make, /usr/local/bin/make)
67 AC_PATH_PROG(MAKE, gmake, /usr/local/gnu/bin/make)
69 makever=`$ac_cv_path_MAKE --version 2>&1 | grep "GNU Make"`
70 if test -z "$makever"; then
71 AC_MSG_ERROR(GNU Make is not installed. Please download and install it
72 from ftp://prep.ai.mit.edu/pub/gnu/make/ before continuing.)
75 AC_ARG_WITH(system-libltdl,
76 [ --with-system-libltdl Use the libltdl installed in your system (default=use our own)],
81 enable_ltdl_install=no
84 dnl If libltdl isn't installable, set it to be installable.
85 [test x"$enable_ltdl_install" = x && enable_ltdl_install=yes]
86 AC_LIBLTDL_INSTALLABLE
88 dnl tell Makefile to build ltdl if needed
89 if test x"$enable_ltdl_install" = x"yes"; then
93 AC_SUBST(LTDL_SUBDIRS)
95 dnl use system-wide libtool, if it exists
96 AC_ARG_WITH(system-libtool,
97 [ --with-system-libtool Use the libtool installed in your system (default=use our own)],
98 [ AC_PATH_PROG(LIBTOOL, libtool,,$PATH:/usr/local/bin) ],
100 LIBTOOL="`pwd`/libtool"
102 dnl ensure that we're looking for dlopen
105 dnl Figure out how to build shared libraries
110 dnl Put this in later, when all distributed modules use autoconf.
111 dnl AC_ARG_WITH(disablemodulefoo,
112 dnl [ --without-rlm_foo Disables module compilation. Module list:]
113 dnl esyscmd([find src/modules -type d -name rlm_\* -print |\
114 dnl sed -e 's%src/modules/.*/% (sub)- %; s%.*/%- %' |\
115 dnl awk '{print " "$0}']))
117 AC_ARG_ENABLE(strict-dependencies,
118 [ --enable-strict-dependencies Fail configure on lack of module dependancy.])
120 dnl extra argument: --with-docdir
121 docdir='${datadir}/doc/freeradius'
122 AC_MSG_CHECKING(docdir)
124 [ --with-docdir=DIR Directory for documentation [DATADIR/doc/freeradius] ],
131 [[\\/$]]* | ?:[[\\/]]* )
135 AC_MSG_ERROR([expected an absolute directory name for --with-docdir: $withval])
140 AC_MSG_RESULT($docdir)
141 if test "x$docdir" = xno; then
142 AC_MSG_WARN(Documentation files will NOT be installed.)
145 dnl extra argument: --with-logdir
146 logdir='${localstatedir}/log/radius'
147 AC_MSG_CHECKING(logdir)
149 [ --with-logdir=DIR Directory for logfiles [LOCALSTATEDIR/log/radius] ],
152 AC_MSG_ERROR(Need logdir)
156 [[\\/$]]* | ?:[[\\/]]* )
160 AC_MSG_ERROR([expected an absolute directory name for --with-logdir: $withval])
165 AC_MSG_RESULT($logdir)
167 dnl extra argument: --with-radacctdir
168 radacctdir='${logdir}/radacct'
169 AC_MSG_CHECKING(radacctdir)
170 AC_ARG_WITH(radacctdir,
171 [ --with-radacctdir=DIR Directory for detail files [LOGDIR/radacct] ],
174 AC_MSG_ERROR(Need radacctdir)
178 [[\\/$]]* | ?:[[\\/]]* )
179 radacctdir="$withval"
182 AC_MSG_ERROR([expected an absolute directory name for --with-radacctdir: $withval])
187 AC_MSG_RESULT($radacctdir)
189 dnl extra argument: --with-raddbdir
190 raddbdir='${sysconfdir}/raddb'
191 AC_MSG_CHECKING(raddbdir)
192 AC_ARG_WITH(raddbdir,
193 [ --with-raddbdir=DIR Directory for config files [SYSCONFDIR/raddb] ],
196 AC_MSG_ERROR(Need raddbdir)
200 [[\\/$]]* | ?:[[\\/]]* )
204 AC_MSG_ERROR([expected an absolute directory name for --with-raddbdir: $withval])
209 AC_MSG_RESULT($raddbdir)
211 dnl extra argument: --with-ascend-binary
213 AC_ARG_WITH(ascend-binary,
214 [ --with-ascend-binary Include support for Ascend binary filter attributes (default=yes)],
222 if test "X$ASCEND_BINARY" = "Xyes"; then
223 AC_DEFINE(ASCEND_BINARY, [], [Include support for Ascend binary filter attributes])
226 dnl extra argument: --with-threads
229 [ --with-threads Use threads, if available. (default=yes) ],
238 dnl extra argument: --with-vmps
241 [ --with-vmps Compile in VMPS support. (default=yes)],
249 if test "x$WITH_VMPS" = "xyes"; then
250 AC_DEFINE(WITH_VMPS, [1], [define if you want VMPS support])
253 dnl extra argument: --with-dhcp
255 [ --with-dhcp Compile in DHCP support. (default=no)],
258 AC_DEFINE(WITH_DHCP, [1], [Include experimental support for DHCP])
267 dnl # Allow the user to specify a list of modules to be linked
268 dnl # statically to the server.
271 AC_ARG_WITH(static_modules,
272 [ --with-static-modules=QUOTED-MODULE-LIST],[
273 for i in $withval; do
274 STATIC_MODULES="$STATIC_MODULES -dlpreopen ../modules/rlm_$i/rlm_$i.la"
280 [ --with-modules=QUOTED-MODULE-LIST],[
281 for i in $withval; do
282 MODULES="$MODULES $i"
287 dnl # Enable developer C compiler warnings
289 AC_ARG_ENABLE(developer,
290 [ --enable-developer Enables features of interest to developers.],
291 [ case "$enableval" in
300 if test "x$developer" != "xno" -a -d $srcdir/CVS; then
301 dnl turn on the developer flag when taken from a CVS checkout (not a release)
305 if test "x$developer" != "xno" -a -d $srcdir/.git; then
306 dnl turn on the developer flag when taken from a git checkout (not a release)
310 dnl extra argument: --with-experimental-modules
312 AC_ARG_WITH(experimental-modules,
313 [ --with-experimental-modules Use experimental and unstable modules. (default=no) ],
322 dnl extra argument: --with-openssl
325 [ --with-openssl Use OpenSSL. (default=yes)],
337 dnl # extra argument: --with-openssl-includes=dir
340 AC_ARG_WITH(openssl-includes,
341 [ --with-openssl-includes=DIR Directory to look for OpenSSL include files],
343 *) OPENSSL_INCLUDE_DIR="$withval"
349 dnl # extra argument: --with-openssl-libraries=dir
352 AC_ARG_WITH(openssl-libraries,
353 [ --with-openssl-libraries=DIR Directory to look for OpenSSL library files],
355 *) OPENSSL_LIB_DIR="$withval"
361 dnl # These next two arguments don't actually do anything. They're
362 dnl # place holders so that the top-level configure script can tell
363 dnl # the user how to configure lower-level modules
367 dnl # extra argument: --with-rlm-FOO-lib-dir
369 AC_ARG_WITH(rlm-FOO-lib-dir,
370 [ --with-rlm-FOO-lib-dir=DIR Directory to look for library files used by module FOO],
378 dnl # extra argument: --with-rlm-FOO-include-dir
380 AC_ARG_WITH(rlm-FOO-include-dir,
381 [ --with-rlm-FOO-include-dir=DIR Directory to look for include files used by module FOO],
388 dnl See what include-style is used by the make program.
389 dnl AC_MSG_CHECKING(include style for make)
390 dnl echo "include /dev/null" > testmake.$$
391 dnl echo "all:" >> testmake.$$
392 dnl make -f testmake.$$ >/dev/null 2>&1
401 dnl rm -f testmake.$$
402 dnl AC_MSG_RESULT(" $INCLUDE")
403 dnl AC_SUBST(INCLUDE)
406 dnl extra argument: --with-udpfromto
408 AC_ARG_WITH(udpfromto,
409 [ --with-udpfromto Compile in UDPFROMTO support. (default=no)],
419 if test "x$WITH_UDPFROMTO" = "xyes"; then
420 AC_DEFINE(WITH_UDPFROMTO, [], [define if you want udpfromto])
423 dnl #############################################################
425 dnl # 1. Checks for programs
427 dnl #############################################################
430 AC_PATH_PROG(PERL, perl, /usr/local/bin/perl)
431 if test "x$ac_cv_path_PERL" = "x"; then
432 AC_MSG_WARN(perl not found - Simultaneous-Use and checkrad.pl may not work)
434 AC_PATH_PROG(SNMPGET, snmpget)
435 if test "x$ac_cv_path_SNMPGET" = "x"; then
436 AC_MSG_WARN(snmpget not found - Simultaneous-Use and checkrad.pl may not work)
439 AC_PATH_PROG(SNMPWALK, snmpwalk)
440 if test "x$ac_cv_path_SNMPWALK" = "x"; then
441 AC_MSG_WARN(snmpwalk not found - Simultaneous-Use and checkrad.pl may not work)
444 AC_PATH_PROG(RUSERS, rusers, /usr/bin/rusers)
446 dnl FIXME This is truly gross.
447 missing_dir=`cd $ac_aux_dir && pwd`
448 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
449 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
450 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
452 AC_PATH_PROG(LOCATE,locate)
453 AC_PATH_PROG(DIRNAME,dirname)
454 AC_PATH_PROG(GREP,grep)
456 dnl #############################################################
458 dnl # 2. Checks for libraries
460 dnl #############################################################
462 dnl If using pthreads, check for -lpthread (posix) or -lc_r (*BSD)
464 if test "x$WITH_THREADS" = "xyes"; then
465 if test $ac_cv_prog_suncc = "yes"; then
469 AC_CHECK_HEADERS(pthread.h, [], [ WITH_THREADS="no" ])
472 dnl # pthread stuff is usually in -lpthread
473 dnl # or in -lc_r, on *BSD
475 dnl # On Some systems, we need extra pre-processor flags, to get them to
476 dnl # to do the threading properly.
478 AC_CHECK_LIB(pthread, pthread_create,
479 [ CFLAGS="$CFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS"
480 LIBS="$LIBS -lpthread" ],
481 AC_CHECK_LIB(c_r, pthread_create,
482 [ CFLAGS="$CFLAGS -pthread -D_THREAD_SAFE" ],
483 [ WITH_THREADS="no" ]
489 dnl # If we have NO pthread libraries, remove any knowledge of threads.
491 if test "x$WITH_THREADS" != "xyes"; then
493 ac_cv_header_pthread_h="no"
497 dnl # We need sem_init() and friends, as they're the friendliest
498 dnl # semaphore functions for threading.
500 dnl # HP/UX requires linking with librt, too, to get the sem_* symbols.
501 dnl # Some systems have them in -lsem
502 dnl # Solaris has them in -lposix4
503 dnl # NetBSD has them in -lsemaphore
505 AC_SEARCH_LIBS(sem_init, pthread sem posix4 rt semaphore,
507 [AC_MSG_ERROR(-lsem not found. You may want to download it from ftp://ftp.to.gd-es.com/pub/BSDI/libsem.tar.bz2 or ftp://ftp.freeradius.org/pub/radius/contrib/libsem.tar.gz)]
511 dnl Check if we need -lsocket
512 AC_CHECK_LIB(socket, getsockname)
514 dnl Check for -lresolv
515 dnl This library may be needed later.
516 AC_CHECK_LIB(resolv, inet_aton)
518 dnl Check if we need -lnsl. Usually if we want to
519 dnl link against -lsocket we need to include -lnsl as well.
520 AC_CHECK_LIB(nsl, inet_ntoa)
522 dnl Check for OpenSSL libraries.
524 if test "x$WITH_OPENSSL" = xyes; then
526 old_LDFLAGS="$LDFLAGS"
527 if test "x$OPENSSL_LIB_DIR" != "x"; then
528 LDFLAGS="$LDFLAGS -L$OPENSSL_LIB_DIR"
530 AC_CHECK_LIB(crypto, DH_new,
532 LIBS="-lcrypto $LIBS"
533 AC_DEFINE(HAVE_LIBCRYPTO, 1,
534 [Define to 1 if you have the `crypto' library (-lcrypto).])
535 AC_CHECK_LIB(ssl, SSL_new,
537 AC_DEFINE(HAVE_LIBSSL, 1,
538 [Define to 1 if you have the `ssl' library (-lssl).])
539 if test "x$OPENSSL_LIB_DIR" != "x"; then
540 OPENSSL_LIBS="-L$OPENSSL_LIB_DIR"
542 OPENSSL_LIBS="$OPENSSL_LIBS -lcrypto -lssl -lcrypto"
546 LDFLAGS="$old_LDFLAGS"
549 AC_CHECK_LIB(ws2_32, htonl)
551 dnl Check the pcap library for the RADIUS sniffer.
553 AC_CHECK_LIB(pcap, pcap_open_live,
555 AC_DEFINE(HAVE_LIBPCAP, 1,
556 [Define to 1 if you have the `pcap' library (-lpcap).])
558 [ AC_MSG_WARN([pcap library not found, silently disabling the RADIUS sniffer.]) ])
562 dnl #############################################################
564 dnl # 3. Checks for header files
566 dnl #############################################################
569 dnl # Interix requires us to set -D_ALL_SOURCE, otherwise
570 dnl # getopt will be #included, but won't link. <sigh>
575 CFLAGS="$CFLAGS -D_ALL_SOURCE"
578 CFLAGS="$CFLAGS -DDARWIN"
579 LIBS="-framework DirectoryService $LIBS"
626 dnl FreeBSD requires sys/socket.h before net/if.h
627 AC_CHECK_HEADERS(net/if.h, [], [],
628 [#ifdef HAVE_SYS_SOCKET_H
629 # include <sys/socket.h>
634 AC_CHECK_HEADER(regex.h, AC_DEFINE(HAVE_REGEX_H, [], [define this if we have the <regex.h> header file]))
635 if test "x$ac_cv_header_regex_h" = "xyes"; then
643 ], [AC_DEFINE(HAVE_REG_EXTENDED, [], [define this if we have REG_EXTENDED (from <regex.h>)]) REGEX_EXTENDED=yes])
646 AC_SUBST(REGEX_EXTENDED)
649 dnl # other checks which require headers
651 if test "x$ac_cv_header_sys_security_h" = "xyes" && test "x$ac_cv_header_prot_h" = "xyes"
653 AC_DEFINE(OSFC2, [], [define if you have OSFC2 authentication])
656 if test "x$ac_cv_header_sia_h" = "xyes" && test "x$ac_cv_header_siad_h" = "xyes"
658 AC_DEFINE(OSFSIA, [], [define if you have OSFSIA authentication])
661 dnl Check for OpenSSL includes.
662 OPENSSL_INCLUDE="-DNO_OPENSSL"
663 if test "x$WITH_OPENSSL" = xyes; then
664 if test "x$OPENSSL_LIBS" = "x"; then
665 AC_MSG_NOTICE([skipping test for openssl/ssl.h])
667 old_CPPFLAGS=$CPPFLAGS
668 if test "x$OPENSSL_INCLUDE_DIR" != "x"; then
669 CPPFLAGS="$CPPFLAGS -I$OPENSSL_INCLUDE_DIR"
671 dnl # stupid RedHat shit
672 CPPFLAGS="$CPPFLAGS -DOPENSSL_NO_KRB5"
682 if test "x$OPENSSL_LIBS" != "x"; then
683 AC_MSG_CHECKING([for OpenSSL version >= 0.9.7])
685 [#include <openssl/crypto.h>
686 #if (OPENSSL_VERSION_NUMBER >= 0x00907000L)
690 if test "x$goodssl" != "xyes"; then
695 if test "x$OPENSSL_INCLUDE_DIR" != "x"; then
696 OPENSSL_INCLUDE="-I$OPENSSL_INCLUDE_DIR -DOPENSSL_NO_KRB5"
698 OPENSSL_INCLUDE="-DOPENSSL_NO_KRB5"
702 CPPFLAGS=$old_CPPFLAGS
705 AC_SUBST(OPENSSL_INCLUDE)
706 AC_SUBST(OPENSSL_LIBS)
709 dnl Check the pcap includes for the RADIUS sniffer.
710 if test "x$PCAP_LIBS" = x; then
711 AC_MSG_NOTICE([skipping test for pcap.h.])
713 AC_CHECK_HEADER(pcap.h,
714 AC_DEFINE(HAVE_PCAP_H, 1,
715 [Define to 1 if you have the <pcap.h> header file.]),
717 AC_MSG_WARN([pcap.h not found, silently disabling the RADIUS sniffer.])
720 AC_CHECK_LIB(pcap, pcap_fopen_offline,
721 [ AC_DEFINE(HAVE_PCAP_FOPEN_OFFLINE, 1,
722 [Define to 1 if you have the function pcap_fopen_offline.])
724 AC_CHECK_LIB(pcap, pcap_dump_fopen,
725 [ AC_DEFINE(HAVE_PCAP_DUMP_FOPEN, 1,
726 [Define to 1 if you have the function pcap_dump_fopen.])
731 dnl #############################################################
733 dnl # 4. Checks for typedefs
735 dnl #############################################################
738 dnl # Ensure that these are defined
745 dnl check for socklen_t
746 FR_CHECK_TYPE_INCLUDE([
747 #ifdef HAVE_SYS_TYPES_H
748 #include <sys/types.h>
750 #ifdef HAVE_SYS_SOCKET_H
751 #include <sys/socket.h>
753 ],socklen_t, int, [socklen_t is generally 'int' on systems which don't use it])
755 dnl check for uint8_t
756 FR_CHECK_TYPE_INCLUDE([
757 #ifdef HAVE_INTTYPES_H
758 #include <inttypes.h>
763 ],uint8_t, unsigned char, [uint8_t should be the canonical 'octet' for network traffic])
765 dnl check for uint16_t
766 FR_CHECK_TYPE_INCLUDE([
767 #ifdef HAVE_INTTYPES_H
768 #include <inttypes.h>
773 ],uint16_t, unsigned short, [uint16_t should be the canonical '2 octets' for network traffic])
775 dnl check for uint32_t
776 FR_CHECK_TYPE_INCLUDE([
777 #ifdef HAVE_INTTYPES_H
778 #include <inttypes.h>
783 ],uint32_t, unsigned int, [uint32_t should be the canonical 'network integer])
785 AC_CHECK_TYPE(struct in6_addr, AC_DEFINE(HAVE_STRUCT_IN6_ADDR, 1, [IPv6 address structure]), [], [
786 #ifdef HAVE_NETINET_IN_H
787 #include <netinet/in.h>
791 AC_CHECK_TYPE(struct sockaddr_storage, AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE, 1, [Generic socket addresses]), [], [
792 #ifdef HAVE_NETINET_IN_H
793 #include <netinet/in.h>
795 #ifdef HAVE_SYS_SOCKET_H
796 #include <sys/socket.h>
800 AC_CHECK_TYPE(struct sockaddr_in6, AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6, 1, [IPv6 socket addresses]), [], [
801 #ifdef HAVE_NETINET_IN_H
802 #include <netinet/in.h>
806 AC_CHECK_TYPE(struct addrinfo, AC_DEFINE(HAVE_STRUCT_ADDRINFO, 1, [Generic DNS lookups]), [], [
807 #ifdef HAVE_SYS_TYPES_H
808 #include <sys/types.h>
810 #ifdef HAVE_SYS_SOCKET_H
811 #include <sys/socket.h>
818 dnl #############################################################
820 dnl # 5. Checks for structures and functions
822 dnl #############################################################
857 RADIUSD_NEED_DECLARATIONS( \
869 dnl # check if we have utmpx.h
870 dnl # if so, check if struct utmpx has entry ut_xtime
871 dnl # if not, set it to define ut_xtime == ut_tv.tv_sec
872 if test "x$ac_cv_header_utmpx_h" = "xyes"
874 FR_CHECK_STRUCT_HAS_MEMBER([#include <utmpx.h>], [struct utmpx], ut_xtime)
875 if test "x$ac_cv_type_struct_utmpx_has_ut_xtime" = "x"
877 AC_DEFINE(ut_xtime,ut_tv.tv_sec, [define to something if you don't have ut_xtime in struct utmpx])
881 dnl # struct ip_pktinfo
882 FR_CHECK_STRUCT_HAS_MEMBER([#include <netinet/in.h>], [struct in_pktinfo], ipi_addr)
883 if test "x$ac_cv_type_struct_in_pktinfo_has_ipi_addr" = "xyes"
885 AC_DEFINE(HAVE_IP_PKTINFO, [], [define if you have IP_PKTINFO (Linux)])
888 dnl # struct in6_pktinfo
889 FR_CHECK_STRUCT_HAS_MEMBER([#include <netinet/in.h>], [struct in6_pktinfo], ipi6_addr)
890 if test "x$ac_cv_type_struct_in6_pktinfo_has_ipi6_addr" = "xyes"
892 AC_DEFINE(HAVE_IN6_PKTINFO, [], [define if you have IN6_PKTINFO (Linux)])
895 dnl #############################################################
897 dnl # 6. Checks for compiler characteristics
899 dnl #############################################################
902 dnl # Ensure that these are defined
907 dnl # See if this is OS/2
909 AC_MSG_CHECKING(type of OS)
912 if test "$OS" = "OS/2"; then
920 dnl # Set Default CFLAGS
922 if test "x$GCC" = "xyes"; then
923 CFLAGS="$CFLAGS -Wall -D_GNU_SOURCE"
926 AC_MSG_CHECKING(for developer gcc flags)
927 if test "x$developer" = "xyes" -a "x$GCC" = "xyes"; then
928 devflags="-g -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -W -Wredundant-decls -Wundef"
929 CFLAGS="$CFLAGS $devflags"
931 AC_MSG_RESULT(yes. Using $devflags)
934 CFLAGS="$CFLAGS -DNDEBUG"
941 dnl #############################################################
943 dnl # 7. Checks for library functions
945 dnl #############################################################
948 LIBS="$LIBS $LIBLTDL"
949 AC_CHECK_FUNC(lt_dladvise_init, AC_DEFINE(HAVE_HAVE_LT_DLADVISE_INIT, [], [Do we have the lt_dladvise_init function]))
952 dnl Check for libcrypt
953 dnl We use crypt(3) which may be in libc, or in libcrypt (eg FreeBSD)
954 AC_CHECK_LIB(crypt, crypt,
957 if test "$CRYPTLIB" != ""; then
958 AC_DEFINE(HAVE_CRYPT, [], [Do we have the crypt function])
960 AC_CHECK_FUNC(crypt, AC_DEFINE(HAVE_CRYPT, [], [Do we have the crypt function]))
963 dnl Check for libcipher
964 AC_CHECK_LIB(cipher, setkey,
965 CRYPTLIB="${CRYPTLIB} -lcipher"
969 dnl Check the style of gethostbyaddr, in order of preference
970 dnl GNU (_r eight args)
971 AC_DEFINE(GNUSTYLE, [1], [GNU-Style get*byaddr_r])
972 dnl SYSV (_r six args)
973 AC_DEFINE(SYSVSTYLE, [2], [SYSV-Style get*byaddr_r])
974 dnl BSD (three args, may not be thread safe)
975 AC_DEFINE(BSDSTYLE, [3], [BSD-Style get*byaddr_r])
976 dnl Tru64 has BSD version, but it is thread safe
977 dnl http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/1739____.HTM
978 dnl We need #stdio.h to define NULL on FreeBSD (at least)
979 gethostbyaddrrstyle=""
980 AC_MSG_CHECKING([gethostbyaddr_r() syntax])
983 dnl With FreeBSD, check if there's a prototype for gethostbyaddr_r.
984 dnl Some versions (FreeBSD 5.1?) have a symbol but no prototype - so we
985 dnl override this test to BSDSTYLE. FreeBSD 6.2 and up have proper GNU
987 AC_CHECK_DECLS([gethostbyaddr_r], [], [
988 AC_DEFINE(GETHOSTBYADDRRSTYLE, BSDSTYLE,
989 [style of gethostbyaddr_r functions ])
990 gethostbyaddrrstyle=BSD
991 AC_MSG_WARN([FreeBSD overridden to BSD-style])
999 if test "x$gethostbyaddrrstyle" = "x"; then
1003 ], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL, NULL) ], [
1004 AC_DEFINE(GETHOSTBYADDRRSTYLE, GNUSTYLE, [style of gethostbyaddr_r functions ])
1005 gethostbyaddrrstyle=GNU
1008 if test "x$gethostbyaddrrstyle" = "x"; then
1012 ], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL) ] , [
1013 AC_DEFINE(GETHOSTBYADDRRSTYLE, SYSVSTYLE, [style of gethostbyaddr_r functions ])
1014 gethostbyaddrrstyle=SYSV
1017 if test "x$gethostbyaddrrstyle" = "x"; then
1021 ], [ gethostbyaddr(NULL, 0, 0) ], [
1022 AC_DEFINE(GETHOSTBYADDRRSTYLE, BSDSTYLE, [style of gethostbyaddr_r functions ])
1023 gethostbyaddrrstyle=BSD
1027 if test "x$gethostbyaddrrstyle" = "x"; then
1028 AC_MSG_RESULT([none! It must not exist, here.])
1030 AC_MSG_RESULT([${gethostbyaddrrstyle}-style])
1033 if test "x$gethostbyaddrrstyle" = "xBSD"; then
1034 AC_MSG_WARN([ ****** BSD-style gethostbyaddr might NOT be thread-safe! ****** ])
1037 dnl Check the style of gethostbyname, in order of preference
1038 dnl GNU (_r seven args)
1039 dnl SYSV (_r five args)
1040 dnl BSD (two args, may not be thread safe)
1041 dnl Tru64 has BSD version, but it _is_ thread safe
1042 dnl http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/1946____.HTM
1043 dnl We need #stdio.h to define NULL on FreeBSD (at least)
1044 gethostbynamerstyle=""
1045 AC_MSG_CHECKING([gethostbyname_r() syntax])
1049 ], [ gethostbyname_r(NULL, NULL, NULL, 0, NULL, NULL) ], [
1050 AC_DEFINE(GETHOSTBYNAMERSTYLE, GNUSTYLE, [style of gethostbyname_r functions ])
1051 gethostbynamerstyle=GNU
1053 if test "x$gethostbynamerstyle" = "x"; then
1057 ], [ gethostbyname_r(NULL, NULL, NULL, 0, NULL) ] , [
1058 AC_DEFINE(GETHOSTBYNAMERSTYLE, SYSVSTYLE, [style of gethostbyname_r functions ])
1059 gethostbynamerstyle=SYSV
1062 if test "x$gethostbynamerstyle" = "x"; then
1066 ], [ gethostbyname(NULL) ], [
1067 AC_DEFINE(GETHOSTBYNAMERSTYLE, BSDSTYLE, [style of gethostbyname_r functions ])
1068 gethostbynamerstyle=BSD
1072 if test "x$gethostbynamerstyle" = "x"; then
1073 AC_MSG_RESULT([none! It must not exist, here.])
1075 AC_MSG_RESULT([${gethostbynamerstyle}-style])
1078 if test "x$gethostbynamerstyle" = "xBSD"; then
1079 AC_MSG_WARN([ ****** BSD-style gethostbyname might NOT be thread-safe! ****** ])
1082 dnl check for non-posix solaris ctime_r (extra buflen int arg)
1083 AC_DEFINE(POSIXSTYLE, [1], [Posix-Style ctime_r])
1084 AC_DEFINE(SOLARISSTYLE, [2], [Solaris-Style ctime_r])
1086 AC_MSG_CHECKING([ctime_r() syntax])
1089 ], [ ctime_r(NULL, NULL, 0) ], [
1090 AC_DEFINE(CTIMERSTYLE, SOLARISSTYLE, [style of ctime_r function])
1091 ctimerstyle="SOLARIS"
1093 if test "x$ctimerstyle" = "x"; then
1096 ], [ ctime_r(NULL, NULL) ], [
1097 AC_DEFINE(CTIMERSTYLE, POSIXSTYLE, [style of ctime_r function])
1102 if test "x$ctimerstyle" = "x"; then
1103 AC_MSG_RESULT([none! It must not exist, here.])
1105 AC_MSG_RESULT([${ctimerstyle}-style])
1108 AC_SUBST(HOSTINFO, $host)
1110 dnl #############################################################
1112 dnl # 8. Checks for system services
1114 dnl #############################################################
1117 dnl # Figure out where libtool is located,
1121 AC_MSG_RESULT([top_builddir=$top_builddir])
1122 dnl # AC_SUBST(top_builddir)
1126 dnl import libtool stuff
1128 dnl #############################################################
1130 dnl # Configure in any module directories.
1132 dnl #############################################################
1134 mysubdirs="$LIBLTDLPATH"
1135 if test "x$EXPERIMENTAL" = "xyes"; then
1136 bar=`ls -1 "${srcdir}"/src/modules/rlm_*/configure | sed 's%/configure%%'`
1137 dnl # get rid of LF's.
1138 mysubdirs=`echo $mysubdirs $bar`
1141 dnl # Find 'configure' in ONLY the stable modules
1143 for bar in `cat "${srcdir}"/src/modules/stable`; do
1144 if test -f "${srcdir}"/src/modules/$bar/configure; then
1145 mysubdirs="$mysubdirs src/modules/$bar"
1150 dnl ############################################################
1151 dnl # make modules by list
1152 dnl #############################################################
1153 if test "x$EXPERIMENTAL" = "xyes"; then
1154 for foo in `ls -1 "${srcdir}"/src/modules | grep rlm_`; do
1155 MODULES="$MODULES $foo"
1159 dnl # make ONLY the stable modules
1161 for foo in `cat "${srcdir}"/src/modules/stable`; do
1162 MODULES="$MODULES $foo"
1167 dnl # Don't change the variable name here. Autoconf goes bonkers
1170 AC_CONFIG_SUBDIRS($LTDL_SUBDIRS $mysubdirs)
1173 dnl #############################################################
1175 dnl # And finally, output the results.
1177 dnl #############################################################
1179 AC_CONFIG_COMMANDS([stamp-h], [echo timestamp > src/include/stamp-h])
1180 AC_CONFIG_COMMANDS([build-radpaths-h], [(cd ./src/include && /bin/sh ./build-radpaths-h)])
1181 AC_CONFIG_COMMANDS([main-chmod], [(cd ./src/main && chmod +x checkrad.pl radlast radtest)])
1182 AC_CONFIG_COMMANDS([scripts-chmod], [(cd ./scripts && chmod +x rc.radiusd radwatch radiusd.cron.daily radiusd.cron.monthly cryptpasswd)])
1185 dnl # Substitute whatever libraries we found to be necessary
1188 AC_SUBST(INSTALLSTRIP)
1190 USE_SHARED_LIBS=$enable_shared
1191 AC_SUBST(USE_SHARED_LIBS)
1192 USE_STATIC_LIBS=$enable_static
1193 AC_SUBST(USE_STATIC_LIBS)
1194 AC_SUBST(STATIC_MODULES)
1195 AC_SUBST(RADIUSD_MAJOR_VERSION)
1196 AC_SUBST(RADIUSD_MINOR_VERSION)
1197 AC_SUBST(RADIUSD_VERSION)
1201 ./src/include/build-radpaths-h \
1202 ./src/main/Makefile \
1203 ./src/main/checkrad.pl \
1204 ./src/main/radlast \
1205 ./src/main/radtest \
1206 ./scripts/rc.radiusd \
1207 ./scripts/radwatch \
1208 ./scripts/radiusd.cron.daily \
1209 ./scripts/radiusd.cron.monthly \
1210 ./scripts/cryptpasswd \
1211 ./raddb/dictionary \
1212 ./raddb/radrelay.conf \
1213 ./raddb/radiusd.conf