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
56 dnl # Set Default CFLAGS
58 if test "x$GCC" = "xyes"; then
59 CFLAGS="$CFLAGS -Wall -D_GNU_SOURCE"
62 dnl Compile in large (2G+) file support.
65 dnl # check for system bytesex
66 dnl # AC_DEFINES WORDS_BIGENDIAN
70 AC_CHECK_PROG(GMAKE, gmake, yes, no)
71 if test $GMAKE = no; then
72 AC_PATH_PROG(MAKE, make, /usr/local/bin/make)
74 AC_PATH_PROG(MAKE, gmake, /usr/local/gnu/bin/make)
76 makever=`$ac_cv_path_MAKE --version 2>&1 | grep "GNU Make"`
77 if test -z "$makever"; then
78 AC_MSG_ERROR(GNU Make is not installed. Please download and install it
79 from ftp://prep.ai.mit.edu/pub/gnu/make/ before continuing.)
82 AC_ARG_WITH(system-libltdl,
83 [ --with-system-libltdl Use the libltdl installed in your system (default=use our own)],
90 dnl If libltdl isn't installable, set it to be installable.
91 [test x"$enable_ltdl_install" = x && enable_ltdl_install=yes]
92 AC_LIBLTDL_INSTALLABLE
94 dnl tell Makefile to build ltdl if needed
95 if test x"$enable_ltdl_install" = x"yes"; then
99 AC_SUBST(LTDL_SUBDIRS)
101 dnl use system-wide libtool, if it exists
102 AC_ARG_WITH(system-libtool,
103 [ --with-system-libtool Use the libtool installed in your system (default=use our own)],
104 [ AC_PATH_PROG(LIBTOOL, libtool,,$PATH:/usr/local/bin) AC_LIBTOOL_DLOPEN
107 LIBTOOL="`pwd`/libtool"
109 dnl ensure that we're looking for dlopen
112 dnl Figure out how to build shared libraries
117 dnl Put this in later, when all distributed modules use autoconf.
118 dnl AC_ARG_WITH(disablemodulefoo,
119 dnl [ --without-rlm_foo Disables module compilation. Module list:]
120 dnl esyscmd([find src/modules -type d -name rlm_\* -print |\
121 dnl sed -e 's%src/modules/.*/% (sub)- %; s%.*/%- %' |\
122 dnl awk '{print " "$0}']))
124 AC_ARG_ENABLE(strict-dependencies,
125 [ --enable-strict-dependencies Fail configure on lack of module dependancy.])
127 dnl extra argument: --with-docdir
128 docdir='${datadir}/doc/freeradius'
129 AC_MSG_CHECKING(docdir)
131 [ --with-docdir=DIR Directory for documentation [DATADIR/doc/freeradius] ],
138 [[\\/$]]* | ?:[[\\/]]* )
142 AC_MSG_ERROR([expected an absolute directory name for --with-docdir: $withval])
147 AC_MSG_RESULT($docdir)
148 if test "x$docdir" = xno; then
149 AC_MSG_WARN(Documentation files will NOT be installed.)
152 dnl extra argument: --with-logdir
153 logdir='${localstatedir}/log/radius'
154 AC_MSG_CHECKING(logdir)
156 [ --with-logdir=DIR Directory for logfiles [LOCALSTATEDIR/log/radius] ],
159 AC_MSG_ERROR(Need logdir)
163 [[\\/$]]* | ?:[[\\/]]* )
167 AC_MSG_ERROR([expected an absolute directory name for --with-logdir: $withval])
172 AC_MSG_RESULT($logdir)
174 dnl extra argument: --with-radacctdir
175 radacctdir='${logdir}/radacct'
176 AC_MSG_CHECKING(radacctdir)
177 AC_ARG_WITH(radacctdir,
178 [ --with-radacctdir=DIR Directory for detail files [LOGDIR/radacct] ],
181 AC_MSG_ERROR(Need radacctdir)
185 [[\\/$]]* | ?:[[\\/]]* )
186 radacctdir="$withval"
189 AC_MSG_ERROR([expected an absolute directory name for --with-radacctdir: $withval])
194 AC_MSG_RESULT($radacctdir)
196 dnl extra argument: --with-raddbdir
197 raddbdir='${sysconfdir}/raddb'
198 AC_MSG_CHECKING(raddbdir)
199 AC_ARG_WITH(raddbdir,
200 [ --with-raddbdir=DIR Directory for config files [SYSCONFDIR/raddb] ],
203 AC_MSG_ERROR(Need raddbdir)
207 [[\\/$]]* | ?:[[\\/]]* )
211 AC_MSG_ERROR([expected an absolute directory name for --with-raddbdir: $withval])
216 AC_MSG_RESULT($raddbdir)
218 dnl extra argument: --with-ascend-binary
220 AC_ARG_WITH(ascend-binary,
221 [ --with-ascend-binary Include support for Ascend binary filter attributes (default=yes)],
229 if test "X$ASCEND_BINARY" = "Xyes"; then
230 AC_DEFINE(ASCEND_BINARY, [], [Include support for Ascend binary filter attributes])
233 dnl extra argument: --with-threads
236 [ --with-threads Use threads, if available. (default=yes) ],
245 dnl extra argument: --with-vmps
248 [ --with-vmps Compile in VMPS support. (default=yes)],
256 if test "x$WITH_VMPS" = "xyes"; then
257 AC_DEFINE(WITH_VMPS, [1], [define if you want VMPS support])
260 dnl extra argument: --with-dhcp
262 [ --with-dhcp Compile in DHCP support. (default=no)],
265 AC_DEFINE(WITH_DHCP, [1], [Include experimental support for DHCP])
274 dnl # Allow the user to specify a list of modules to be linked
275 dnl # statically to the server.
278 AC_ARG_WITH(static_modules,
279 [ --with-static-modules=QUOTED-MODULE-LIST],[
280 for i in $withval; do
281 STATIC_MODULES="$STATIC_MODULES -dlpreopen ../modules/rlm_$i/rlm_$i.la"
287 [ --with-modules=QUOTED-MODULE-LIST],[
288 for i in $withval; do
289 MODULES="$MODULES $i"
294 dnl # Enable developer C compiler warnings
296 AC_ARG_ENABLE(developer,
297 [ --enable-developer Enables features of interest to developers.],
298 [ case "$enableval" in
307 if test "x$developer" != "xno" -a -d $srcdir/CVS; then
308 dnl turn on the developer flag when taken from a CVS checkout (not a release)
312 if test "x$developer" != "xno" -a -d $srcdir/.git; then
313 dnl turn on the developer flag when taken from a git checkout (not a release)
317 dnl extra argument: --with-experimental-modules
319 AC_ARG_WITH(experimental-modules,
320 [ --with-experimental-modules Use experimental and unstable modules. (default=no) ],
329 dnl extra argument: --with-openssl
332 [ --with-openssl Use OpenSSL. (default=yes)],
344 dnl # extra argument: --with-openssl-includes=dir
347 AC_ARG_WITH(openssl-includes,
348 [ --with-openssl-includes=DIR Directory to look for OpenSSL include files],
350 *) OPENSSL_INCLUDE_DIR="$withval"
356 dnl # extra argument: --with-openssl-libraries=dir
359 AC_ARG_WITH(openssl-libraries,
360 [ --with-openssl-libraries=DIR Directory to look for OpenSSL library files],
362 *) OPENSSL_LIB_DIR="$withval"
368 dnl # These next two arguments don't actually do anything. They're
369 dnl # place holders so that the top-level configure script can tell
370 dnl # the user how to configure lower-level modules
374 dnl # extra argument: --with-rlm-FOO-lib-dir
376 AC_ARG_WITH(rlm-FOO-lib-dir,
377 [ --with-rlm-FOO-lib-dir=DIR Directory to look for library files used by module FOO],
385 dnl # extra argument: --with-rlm-FOO-include-dir
387 AC_ARG_WITH(rlm-FOO-include-dir,
388 [ --with-rlm-FOO-include-dir=DIR Directory to look for include files used by module FOO],
395 dnl See what include-style is used by the make program.
396 dnl AC_MSG_CHECKING(include style for make)
397 dnl echo "include /dev/null" > testmake.$$
398 dnl echo "all:" >> testmake.$$
399 dnl make -f testmake.$$ >/dev/null 2>&1
408 dnl rm -f testmake.$$
409 dnl AC_MSG_RESULT(" $INCLUDE")
410 dnl AC_SUBST(INCLUDE)
413 dnl extra argument: --with-udpfromto
415 AC_ARG_WITH(udpfromto,
416 [ --with-udpfromto Compile in UDPFROMTO support. (default=no)],
426 if test "x$WITH_UDPFROMTO" = "xyes"; then
427 AC_DEFINE(WITH_UDPFROMTO, [], [define if you want udpfromto])
430 dnl #############################################################
432 dnl # 1. Checks for programs
434 dnl #############################################################
437 AC_PATH_PROG(PERL, perl, /usr/local/bin/perl)
438 if test "x$ac_cv_path_PERL" = "x"; then
439 AC_MSG_WARN(perl not found - Simultaneous-Use and checkrad.pl may not work)
441 AC_PATH_PROG(SNMPGET, snmpget)
442 if test "x$ac_cv_path_SNMPGET" = "x"; then
443 AC_MSG_WARN(snmpget not found - Simultaneous-Use and checkrad.pl may not work)
446 AC_PATH_PROG(SNMPWALK, snmpwalk)
447 if test "x$ac_cv_path_SNMPWALK" = "x"; then
448 AC_MSG_WARN(snmpwalk not found - Simultaneous-Use and checkrad.pl may not work)
451 AC_PATH_PROG(RUSERS, rusers, /usr/bin/rusers)
453 dnl FIXME This is truly gross.
454 missing_dir=`cd $ac_aux_dir && pwd`
455 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
456 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
457 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
459 AC_PATH_PROG(LOCATE,locate)
460 AC_PATH_PROG(DIRNAME,dirname)
461 AC_PATH_PROG(GREP,grep)
463 dnl #############################################################
465 dnl # 2. Checks for libraries
467 dnl #############################################################
469 dnl If using pthreads, check for -lpthread (posix) or -lc_r (*BSD)
471 if test "x$WITH_THREADS" = "xyes"; then
472 if test $ac_cv_prog_suncc = "yes"; then
476 AC_CHECK_HEADERS(pthread.h, [], [ WITH_THREADS="no" ])
479 dnl # pthread stuff is usually in -lpthread
480 dnl # or in -lc_r, on *BSD
482 dnl # On Some systems, we need extra pre-processor flags, to get them to
483 dnl # to do the threading properly.
485 AC_CHECK_LIB(pthread, pthread_create,
486 [ CFLAGS="$CFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS"
487 LIBS="$LIBS -lpthread" ],
488 AC_CHECK_LIB(c_r, pthread_create,
489 [ CFLAGS="$CFLAGS -pthread -D_THREAD_SAFE" ],
490 [ WITH_THREADS="no" ]
496 dnl # If we have NO pthread libraries, remove any knowledge of threads.
498 if test "x$WITH_THREADS" != "xyes"; then
500 ac_cv_header_pthread_h="no"
504 dnl # We need sem_init() and friends, as they're the friendliest
505 dnl # semaphore functions for threading.
507 dnl # HP/UX requires linking with librt, too, to get the sem_* symbols.
508 dnl # Some systems have them in -lsem
509 dnl # Solaris has them in -lposix4
510 dnl # NetBSD has them in -lsemaphore
512 AC_SEARCH_LIBS(sem_init, pthread sem posix4 rt semaphore,
514 [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)]
518 dnl Check if we need -lsocket
519 AC_CHECK_LIB(socket, getsockname)
521 dnl Check for -lresolv
522 dnl This library may be needed later.
523 AC_CHECK_LIB(resolv, inet_aton)
525 dnl Check if we need -lnsl. Usually if we want to
526 dnl link against -lsocket we need to include -lnsl as well.
527 AC_CHECK_LIB(nsl, inet_ntoa)
529 dnl Check for OpenSSL libraries.
531 if test "x$WITH_OPENSSL" = xyes; then
533 old_LDFLAGS="$LDFLAGS"
534 if test "x$OPENSSL_LIB_DIR" != "x"; then
535 LDFLAGS="$LDFLAGS -L$OPENSSL_LIB_DIR"
537 AC_CHECK_LIB(crypto, DH_new,
539 LIBS="-lcrypto $LIBS"
540 AC_DEFINE(HAVE_LIBCRYPTO, 1,
541 [Define to 1 if you have the `crypto' library (-lcrypto).])
542 AC_CHECK_LIB(ssl, SSL_new,
544 AC_DEFINE(HAVE_LIBSSL, 1,
545 [Define to 1 if you have the `ssl' library (-lssl).])
546 if test "x$OPENSSL_LIB_DIR" != "x"; then
547 OPENSSL_LIBS="-L$OPENSSL_LIB_DIR"
549 OPENSSL_LIBS="$OPENSSL_LIBS -lcrypto -lssl -lcrypto"
553 LDFLAGS="$old_LDFLAGS"
556 AC_CHECK_LIB(ws2_32, htonl)
558 dnl Check the pcap library for the RADIUS sniffer.
560 AC_CHECK_LIB(pcap, pcap_open_live,
562 AC_DEFINE(HAVE_LIBPCAP, 1,
563 [Define to 1 if you have the `pcap' library (-lpcap).])
565 [ AC_MSG_WARN([pcap library not found, silently disabling the RADIUS sniffer.]) ])
569 dnl #############################################################
571 dnl # 3. Checks for header files
573 dnl #############################################################
576 dnl # Interix requires us to set -D_ALL_SOURCE, otherwise
577 dnl # getopt will be #included, but won't link. <sigh>
582 CFLAGS="$CFLAGS -D_ALL_SOURCE"
585 CFLAGS="$CFLAGS -DDARWIN"
586 LIBS="-framework DirectoryService $LIBS"
635 dnl FreeBSD requires sys/socket.h before net/if.h
636 AC_CHECK_HEADERS(net/if.h, [], [],
637 [#ifdef HAVE_SYS_SOCKET_H
638 # include <sys/socket.h>
643 AC_CHECK_HEADER(regex.h, AC_DEFINE(HAVE_REGEX_H, [], [define this if we have the <regex.h> header file]))
644 if test "x$ac_cv_header_regex_h" = "xyes"; then
652 ], [AC_DEFINE(HAVE_REG_EXTENDED, [], [define this if we have REG_EXTENDED (from <regex.h>)]) REGEX_EXTENDED=yes])
655 AC_SUBST(REGEX_EXTENDED)
658 dnl # other checks which require headers
660 if test "x$ac_cv_header_sys_security_h" = "xyes" && test "x$ac_cv_header_prot_h" = "xyes"
662 AC_DEFINE(OSFC2, [], [define if you have OSFC2 authentication])
665 if test "x$ac_cv_header_sia_h" = "xyes" && test "x$ac_cv_header_siad_h" = "xyes"
667 AC_DEFINE(OSFSIA, [], [define if you have OSFSIA authentication])
670 dnl Check for OpenSSL includes.
671 OPENSSL_INCLUDE="-DNO_OPENSSL"
672 if test "x$WITH_OPENSSL" = xyes; then
673 if test "x$OPENSSL_LIBS" = "x"; then
674 AC_MSG_NOTICE([skipping test for openssl/ssl.h])
676 old_CPPFLAGS=$CPPFLAGS
677 if test "x$OPENSSL_INCLUDE_DIR" != "x"; then
678 CPPFLAGS="$CPPFLAGS -I$OPENSSL_INCLUDE_DIR"
680 dnl # stupid RedHat shit
681 CPPFLAGS="$CPPFLAGS -DOPENSSL_NO_KRB5"
692 if test "x$OPENSSL_LIBS" != "x"; then
693 AC_MSG_CHECKING([for OpenSSL version >= 0.9.7])
695 [#include <openssl/crypto.h>
696 #if (OPENSSL_VERSION_NUMBER >= 0x00907000L)
700 if test "x$goodssl" != "xyes"; then
705 if test "x$OPENSSL_INCLUDE_DIR" != "x"; then
706 OPENSSL_INCLUDE="-I$OPENSSL_INCLUDE_DIR -DOPENSSL_NO_KRB5"
708 OPENSSL_INCLUDE="-DOPENSSL_NO_KRB5"
712 CPPFLAGS=$old_CPPFLAGS
715 AC_SUBST(OPENSSL_INCLUDE)
716 AC_SUBST(OPENSSL_LIBS)
719 dnl Check the pcap includes for the RADIUS sniffer.
720 if test "x$PCAP_LIBS" = x; then
721 AC_MSG_NOTICE([skipping test for pcap.h.])
723 AC_CHECK_HEADER(pcap.h,
724 AC_DEFINE(HAVE_PCAP_H, 1,
725 [Define to 1 if you have the <pcap.h> header file.]),
727 AC_MSG_WARN([pcap.h not found, silently disabling the RADIUS sniffer.])
730 AC_CHECK_LIB(pcap, pcap_fopen_offline,
731 [ AC_DEFINE(HAVE_PCAP_FOPEN_OFFLINE, 1,
732 [Define to 1 if you have the function pcap_fopen_offline.])
734 AC_CHECK_LIB(pcap, pcap_dump_fopen,
735 [ AC_DEFINE(HAVE_PCAP_DUMP_FOPEN, 1,
736 [Define to 1 if you have the function pcap_dump_fopen.])
741 dnl #############################################################
743 dnl # 4. Checks for typedefs
745 dnl #############################################################
748 dnl # Ensure that these are defined
755 dnl check for socklen_t
756 FR_CHECK_TYPE_INCLUDE([
757 #ifdef HAVE_SYS_TYPES_H
758 #include <sys/types.h>
760 #ifdef HAVE_SYS_SOCKET_H
761 #include <sys/socket.h>
763 ],socklen_t, int, [socklen_t is generally 'int' on systems which don't use it])
765 dnl check for uint8_t
766 FR_CHECK_TYPE_INCLUDE([
767 #ifdef HAVE_INTTYPES_H
768 #include <inttypes.h>
773 ],uint8_t, unsigned char, [uint8_t should be the canonical 'octet' for network traffic])
775 dnl check for uint16_t
776 FR_CHECK_TYPE_INCLUDE([
777 #ifdef HAVE_INTTYPES_H
778 #include <inttypes.h>
783 ],uint16_t, unsigned short, [uint16_t should be the canonical '2 octets' for network traffic])
785 dnl check for uint32_t
786 FR_CHECK_TYPE_INCLUDE([
787 #ifdef HAVE_INTTYPES_H
788 #include <inttypes.h>
793 ],uint32_t, unsigned int, [uint32_t should be the canonical 'network integer])
795 AC_CHECK_TYPE(struct in6_addr, AC_DEFINE(HAVE_STRUCT_IN6_ADDR, 1, [IPv6 address structure]), [], [
796 #ifdef HAVE_NETINET_IN_H
797 #include <netinet/in.h>
801 AC_CHECK_TYPE(struct sockaddr_storage, AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE, 1, [Generic socket addresses]), [], [
802 #ifdef HAVE_NETINET_IN_H
803 #include <netinet/in.h>
805 #ifdef HAVE_SYS_SOCKET_H
806 #include <sys/socket.h>
810 AC_CHECK_TYPE(struct sockaddr_in6, AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6, 1, [IPv6 socket addresses]), [], [
811 #ifdef HAVE_NETINET_IN_H
812 #include <netinet/in.h>
816 AC_CHECK_TYPE(struct addrinfo, AC_DEFINE(HAVE_STRUCT_ADDRINFO, 1, [Generic DNS lookups]), [], [
817 #ifdef HAVE_SYS_TYPES_H
818 #include <sys/types.h>
820 #ifdef HAVE_SYS_SOCKET_H
821 #include <sys/socket.h>
828 dnl #############################################################
830 dnl # 5. Checks for structures and functions
832 dnl #############################################################
867 RADIUSD_NEED_DECLARATIONS( \
879 dnl # check if we have utmpx.h
880 dnl # if so, check if struct utmpx has entry ut_xtime
881 dnl # if not, set it to define ut_xtime == ut_tv.tv_sec
882 if test "x$ac_cv_header_utmpx_h" = "xyes"
884 FR_CHECK_STRUCT_HAS_MEMBER([#include <utmpx.h>], [struct utmpx], ut_xtime)
885 if test "x$ac_cv_type_struct_utmpx_has_ut_xtime" = "x"
887 AC_DEFINE(ut_xtime,ut_tv.tv_sec, [define to something if you don't have ut_xtime in struct utmpx])
891 dnl # struct ip_pktinfo
892 FR_CHECK_STRUCT_HAS_MEMBER([#include <netinet/in.h>], [struct in_pktinfo], ipi_addr)
893 if test "x$ac_cv_type_struct_in_pktinfo_has_ipi_addr" = "xyes"
895 AC_DEFINE(HAVE_IP_PKTINFO, [], [define if you have IP_PKTINFO (Linux)])
898 dnl # struct in6_pktinfo
899 FR_CHECK_STRUCT_HAS_MEMBER([#include <netinet/in.h>], [struct in6_pktinfo], ipi6_addr)
900 if test "x$ac_cv_type_struct_in6_pktinfo_has_ipi6_addr" = "xyes"
902 AC_DEFINE(HAVE_IN6_PKTINFO, [], [define if you have IN6_PKTINFO (Linux)])
905 dnl #############################################################
907 dnl # 6. Checks for compiler characteristics
909 dnl #############################################################
912 dnl # Ensure that these are defined
917 dnl # See if this is OS/2
919 AC_MSG_CHECKING(type of OS)
922 if test "$OS" = "OS/2"; then
929 AC_MSG_CHECKING(for developer gcc flags)
930 if test "x$developer" = "xyes" -a "x$GCC" = "xyes"; then
931 devflags="-g -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -W -Wredundant-decls -Wundef"
932 CFLAGS="$CFLAGS $devflags"
934 AC_MSG_RESULT(yes. Using $devflags)
937 CFLAGS="$CFLAGS -DNDEBUG"
944 dnl #############################################################
946 dnl # 7. Checks for library functions
948 dnl #############################################################
951 LIBS="$LIBS $LIBLTDL"
952 AC_CHECK_FUNC(lt_dladvise_init, AC_DEFINE(HAVE_LT_DLADVISE_INIT, [], [Do we have the lt_dladvise_init function]))
955 dnl Check for libcrypt
956 dnl We use crypt(3) which may be in libc, or in libcrypt (eg FreeBSD)
957 AC_CHECK_LIB(crypt, crypt,
960 if test "$CRYPTLIB" != ""; then
961 AC_DEFINE(HAVE_CRYPT, [], [Do we have the crypt function])
963 AC_CHECK_FUNC(crypt, AC_DEFINE(HAVE_CRYPT, [], [Do we have the crypt function]))
966 dnl Check for libcipher
967 AC_CHECK_LIB(cipher, setkey,
968 CRYPTLIB="${CRYPTLIB} -lcipher"
972 dnl Check the style of gethostbyaddr, in order of preference
973 dnl GNU (_r eight args)
974 AC_DEFINE(GNUSTYLE, [1], [GNU-Style get*byaddr_r])
975 dnl SYSV (_r six args)
976 AC_DEFINE(SYSVSTYLE, [2], [SYSV-Style get*byaddr_r])
977 dnl BSD (three args, may not be thread safe)
978 AC_DEFINE(BSDSTYLE, [3], [BSD-Style get*byaddr_r])
979 dnl Tru64 has BSD version, but it is thread safe
980 dnl http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/1739____.HTM
981 dnl We need #stdio.h to define NULL on FreeBSD (at least)
982 gethostbyaddrrstyle=""
983 AC_MSG_CHECKING([gethostbyaddr_r() syntax])
986 dnl With FreeBSD, check if there's a prototype for gethostbyaddr_r.
987 dnl Some versions (FreeBSD 5.1?) have a symbol but no prototype - so we
988 dnl override this test to BSDSTYLE. FreeBSD 6.2 and up have proper GNU
990 AC_CHECK_DECLS([gethostbyaddr_r], [], [
991 AC_DEFINE(GETHOSTBYADDRRSTYLE, BSDSTYLE,
992 [style of gethostbyaddr_r functions ])
993 gethostbyaddrrstyle=BSD
994 AC_MSG_WARN([FreeBSD overridden to BSD-style])
1002 if test "x$gethostbyaddrrstyle" = "x"; then
1006 ], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL, NULL) ], [
1007 AC_DEFINE(GETHOSTBYADDRRSTYLE, GNUSTYLE, [style of gethostbyaddr_r functions ])
1008 gethostbyaddrrstyle=GNU
1011 if test "x$gethostbyaddrrstyle" = "x"; then
1015 ], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL) ] , [
1016 AC_DEFINE(GETHOSTBYADDRRSTYLE, SYSVSTYLE, [style of gethostbyaddr_r functions ])
1017 gethostbyaddrrstyle=SYSV
1020 if test "x$gethostbyaddrrstyle" = "x"; then
1024 ], [ gethostbyaddr(NULL, 0, 0) ], [
1025 AC_DEFINE(GETHOSTBYADDRRSTYLE, BSDSTYLE, [style of gethostbyaddr_r functions ])
1026 gethostbyaddrrstyle=BSD
1030 if test "x$gethostbyaddrrstyle" = "x"; then
1031 AC_MSG_RESULT([none! It must not exist, here.])
1033 AC_MSG_RESULT([${gethostbyaddrrstyle}-style])
1036 if test "x$gethostbyaddrrstyle" = "xBSD"; then
1037 AC_MSG_WARN([ ****** BSD-style gethostbyaddr might NOT be thread-safe! ****** ])
1040 dnl Check the style of gethostbyname, in order of preference
1041 dnl GNU (_r seven args)
1042 dnl SYSV (_r five args)
1043 dnl BSD (two args, may not be thread safe)
1044 dnl Tru64 has BSD version, but it _is_ thread safe
1045 dnl http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/1946____.HTM
1046 dnl We need #stdio.h to define NULL on FreeBSD (at least)
1047 gethostbynamerstyle=""
1048 AC_MSG_CHECKING([gethostbyname_r() syntax])
1052 ], [ gethostbyname_r(NULL, NULL, NULL, 0, NULL, NULL) ], [
1053 AC_DEFINE(GETHOSTBYNAMERSTYLE, GNUSTYLE, [style of gethostbyname_r functions ])
1054 gethostbynamerstyle=GNU
1056 if test "x$gethostbynamerstyle" = "x"; then
1060 ], [ gethostbyname_r(NULL, NULL, NULL, 0, NULL) ] , [
1061 AC_DEFINE(GETHOSTBYNAMERSTYLE, SYSVSTYLE, [style of gethostbyname_r functions ])
1062 gethostbynamerstyle=SYSV
1065 if test "x$gethostbynamerstyle" = "x"; then
1069 ], [ gethostbyname(NULL) ], [
1070 AC_DEFINE(GETHOSTBYNAMERSTYLE, BSDSTYLE, [style of gethostbyname_r functions ])
1071 gethostbynamerstyle=BSD
1075 if test "x$gethostbynamerstyle" = "x"; then
1076 AC_MSG_RESULT([none! It must not exist, here.])
1078 AC_MSG_RESULT([${gethostbynamerstyle}-style])
1081 if test "x$gethostbynamerstyle" = "xBSD"; then
1082 AC_MSG_WARN([ ****** BSD-style gethostbyname might NOT be thread-safe! ****** ])
1085 dnl check for non-posix solaris ctime_r (extra buflen int arg)
1086 AC_DEFINE(POSIXSTYLE, [1], [Posix-Style ctime_r])
1087 AC_DEFINE(SOLARISSTYLE, [2], [Solaris-Style ctime_r])
1089 AC_MSG_CHECKING([ctime_r() syntax])
1092 ], [ ctime_r(NULL, NULL, 0) ], [
1093 AC_DEFINE(CTIMERSTYLE, SOLARISSTYLE, [style of ctime_r function])
1094 ctimerstyle="SOLARIS"
1096 if test "x$ctimerstyle" = "x"; then
1099 ], [ ctime_r(NULL, NULL) ], [
1100 AC_DEFINE(CTIMERSTYLE, POSIXSTYLE, [style of ctime_r function])
1105 if test "x$ctimerstyle" = "x"; then
1106 AC_MSG_RESULT([none! It must not exist, here.])
1108 AC_MSG_RESULT([${ctimerstyle}-style])
1111 AC_SUBST(HOSTINFO, $host)
1113 dnl #############################################################
1115 dnl # 8. Checks for system services
1117 dnl #############################################################
1120 dnl # Figure out where libtool is located,
1124 AC_MSG_RESULT([top_builddir=$top_builddir])
1125 dnl # AC_SUBST(top_builddir)
1129 dnl import libtool stuff
1131 dnl #############################################################
1133 dnl # Configure in any module directories.
1135 dnl #############################################################
1137 mysubdirs="$LIBLTDLPATH"
1138 if test "x$EXPERIMENTAL" = "xyes"; then
1139 bar=`ls -1 "${srcdir}"/src/modules/rlm_*/configure | sed 's%/configure%%'`
1140 dnl # get rid of LF's.
1141 mysubdirs=`echo $mysubdirs $bar`
1144 dnl # Find 'configure' in ONLY the stable modules
1146 for bar in `cat "${srcdir}"/src/modules/stable`; do
1147 if test -f "${srcdir}"/src/modules/$bar/configure; then
1148 mysubdirs="$mysubdirs src/modules/$bar"
1153 dnl ############################################################
1154 dnl # make modules by list
1155 dnl #############################################################
1156 if test "x$EXPERIMENTAL" = "xyes"; then
1157 for foo in `ls -1 "${srcdir}"/src/modules | grep rlm_`; do
1158 MODULES="$MODULES $foo"
1162 dnl # make ONLY the stable modules
1164 for foo in `cat "${srcdir}"/src/modules/stable`; do
1165 MODULES="$MODULES $foo"
1170 dnl # Don't change the variable name here. Autoconf goes bonkers
1173 AC_CONFIG_SUBDIRS($LTDL_SUBDIRS $mysubdirs)
1176 dnl #############################################################
1178 dnl # And finally, output the results.
1180 dnl #############################################################
1182 AC_CONFIG_COMMANDS([stamp-h], [echo timestamp > src/include/stamp-h])
1183 AC_CONFIG_COMMANDS([build-radpaths-h], [(cd ./src/include && /bin/sh ./build-radpaths-h)])
1184 AC_CONFIG_COMMANDS([main-chmod], [(cd ./src/main && chmod +x checkrad.pl radlast radtest)])
1185 AC_CONFIG_COMMANDS([scripts-chmod], [(cd ./scripts && chmod +x rc.radiusd radwatch radiusd.cron.daily radiusd.cron.monthly cryptpasswd)])
1188 dnl # Substitute whatever libraries we found to be necessary
1191 AC_SUBST(INSTALLSTRIP)
1193 USE_SHARED_LIBS=$enable_shared
1194 AC_SUBST(USE_SHARED_LIBS)
1195 USE_STATIC_LIBS=$enable_static
1196 AC_SUBST(USE_STATIC_LIBS)
1197 AC_SUBST(STATIC_MODULES)
1198 AC_SUBST(RADIUSD_MAJOR_VERSION)
1199 AC_SUBST(RADIUSD_MINOR_VERSION)
1200 AC_SUBST(RADIUSD_VERSION)
1204 ./src/include/build-radpaths-h \
1205 ./src/main/Makefile \
1206 ./src/main/checkrad.pl \
1207 ./src/main/radlast \
1208 ./src/main/radtest \
1209 ./scripts/rc.radiusd \
1210 ./scripts/radwatch \
1211 ./scripts/radiusd.cron.daily \
1212 ./scripts/radiusd.cron.monthly \
1213 ./scripts/cryptpasswd \
1214 ./raddb/dictionary \
1215 ./raddb/radrelay.conf \
1216 ./raddb/radiusd.conf