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)],
86 INCLTDL=-DWITH_SYSTEM_LTDL
88 enable_ltdl_install=no
91 dnl If libltdl isn't installable, set it to be installable.
92 [test x"$enable_ltdl_install" = x && enable_ltdl_install=yes]
93 AC_LIBLTDL_INSTALLABLE
95 dnl tell Makefile to build ltdl if needed
96 if test x"$enable_ltdl_install" = x"yes"; then
100 AC_SUBST(LTDL_SUBDIRS)
102 dnl use system-wide libtool, if it exists
103 AC_ARG_WITH(system-libtool,
104 [ --with-system-libtool Use the libtool installed in your system (default=use our own)],
105 [ AC_PATH_PROG(LIBTOOL, libtool,,$PATH:/usr/local/bin) AC_LIBTOOL_DLOPEN
108 LIBTOOL="`pwd`/libtool"
110 dnl ensure that we're looking for dlopen
113 dnl Figure out how to build shared libraries
118 dnl Put this in later, when all distributed modules use autoconf.
119 dnl AC_ARG_WITH(disablemodulefoo,
120 dnl [ --without-rlm_foo Disables module compilation. Module list:]
121 dnl esyscmd([find src/modules -type d -name rlm_\* -print |\
122 dnl sed -e 's%src/modules/.*/% (sub)- %; s%.*/%- %' |\
123 dnl awk '{print " "$0}']))
125 AC_ARG_ENABLE(strict-dependencies,
126 [ --enable-strict-dependencies Fail configure on lack of module dependancy.])
128 dnl extra argument: --with-docdir
129 docdir='${datadir}/doc/freeradius'
130 AC_MSG_CHECKING(docdir)
132 [ --with-docdir=DIR Directory for documentation [DATADIR/doc/freeradius] ],
139 [[\\/$]]* | ?:[[\\/]]* )
143 AC_MSG_ERROR([expected an absolute directory name for --with-docdir: $withval])
148 AC_MSG_RESULT($docdir)
149 if test "x$docdir" = xno; then
150 AC_MSG_WARN(Documentation files will NOT be installed.)
153 dnl extra argument: --with-logdir
154 logdir='${localstatedir}/log/radius'
155 AC_MSG_CHECKING(logdir)
157 [ --with-logdir=DIR Directory for logfiles [LOCALSTATEDIR/log/radius] ],
160 AC_MSG_ERROR(Need logdir)
164 [[\\/$]]* | ?:[[\\/]]* )
168 AC_MSG_ERROR([expected an absolute directory name for --with-logdir: $withval])
173 AC_MSG_RESULT($logdir)
175 dnl extra argument: --with-radacctdir
176 radacctdir='${logdir}/radacct'
177 AC_MSG_CHECKING(radacctdir)
178 AC_ARG_WITH(radacctdir,
179 [ --with-radacctdir=DIR Directory for detail files [LOGDIR/radacct] ],
182 AC_MSG_ERROR(Need radacctdir)
186 [[\\/$]]* | ?:[[\\/]]* )
187 radacctdir="$withval"
190 AC_MSG_ERROR([expected an absolute directory name for --with-radacctdir: $withval])
195 AC_MSG_RESULT($radacctdir)
197 dnl extra argument: --with-raddbdir
198 raddbdir='${sysconfdir}/raddb'
199 AC_MSG_CHECKING(raddbdir)
200 AC_ARG_WITH(raddbdir,
201 [ --with-raddbdir=DIR Directory for config files [SYSCONFDIR/raddb] ],
204 AC_MSG_ERROR(Need raddbdir)
208 [[\\/$]]* | ?:[[\\/]]* )
212 AC_MSG_ERROR([expected an absolute directory name for --with-raddbdir: $withval])
217 AC_MSG_RESULT($raddbdir)
219 dnl extra argument: --with-ascend-binary
221 AC_ARG_WITH(ascend-binary,
222 [ --with-ascend-binary Include support for Ascend binary filter attributes (default=yes)],
230 if test "X$ASCEND_BINARY" = "Xyes"; then
231 AC_DEFINE(ASCEND_BINARY, [], [Include support for Ascend binary filter attributes])
234 dnl extra argument: --with-threads
237 [ --with-threads Use threads, if available. (default=yes) ],
246 dnl extra argument: --with-vmps
249 [ --with-vmps Compile in VMPS support. (default=yes)],
257 if test "x$WITH_VMPS" = "xyes"; then
258 AC_DEFINE(WITH_VMPS, [1], [define if you want VMPS support])
261 dnl extra argument: --with-dhcp
263 [ --with-dhcp Compile in DHCP support. (default=no)],
266 AC_DEFINE(WITH_DHCP, [1], [Include experimental support for DHCP])
275 dnl # Allow the user to specify a list of modules to be linked
276 dnl # statically to the server.
279 AC_ARG_WITH(static_modules,
280 [ --with-static-modules=QUOTED-MODULE-LIST],[
281 for i in $withval; do
282 STATIC_MODULES="$STATIC_MODULES -dlpreopen ../modules/rlm_$i/rlm_$i.la"
288 [ --with-modules=QUOTED-MODULE-LIST],[
289 for i in $withval; do
290 MODULES="$MODULES $i"
295 dnl # Enable developer C compiler warnings
297 AC_ARG_ENABLE(developer,
298 [ --enable-developer Enables features of interest to developers.],
299 [ case "$enableval" in
308 if test "x$developer" != "xno" -a -d $srcdir/CVS; then
309 dnl turn on the developer flag when taken from a CVS checkout (not a release)
313 if test "x$developer" != "xno" -a -d $srcdir/.git; then
314 dnl turn on the developer flag when taken from a git checkout (not a release)
318 dnl extra argument: --with-experimental-modules
320 AC_ARG_WITH(experimental-modules,
321 [ --with-experimental-modules Use experimental and unstable modules. (default=no) ],
330 dnl extra argument: --with-openssl
333 [ --with-openssl Use OpenSSL. (default=yes)],
345 dnl # extra argument: --with-openssl-includes=dir
348 AC_ARG_WITH(openssl-includes,
349 [ --with-openssl-includes=DIR Directory to look for OpenSSL include files],
351 *) OPENSSL_INCLUDE_DIR="$withval"
357 dnl # extra argument: --with-openssl-libraries=dir
360 AC_ARG_WITH(openssl-libraries,
361 [ --with-openssl-libraries=DIR Directory to look for OpenSSL library files],
363 *) OPENSSL_LIB_DIR="$withval"
369 dnl # These next two arguments don't actually do anything. They're
370 dnl # place holders so that the top-level configure script can tell
371 dnl # the user how to configure lower-level modules
375 dnl # extra argument: --with-rlm-FOO-lib-dir
377 AC_ARG_WITH(rlm-FOO-lib-dir,
378 [ --with-rlm-FOO-lib-dir=DIR Directory to look for library files used by module FOO],
386 dnl # extra argument: --with-rlm-FOO-include-dir
388 AC_ARG_WITH(rlm-FOO-include-dir,
389 [ --with-rlm-FOO-include-dir=DIR Directory to look for include files used by module FOO],
396 dnl See what include-style is used by the make program.
397 dnl AC_MSG_CHECKING(include style for make)
398 dnl echo "include /dev/null" > testmake.$$
399 dnl echo "all:" >> testmake.$$
400 dnl make -f testmake.$$ >/dev/null 2>&1
409 dnl rm -f testmake.$$
410 dnl AC_MSG_RESULT(" $INCLUDE")
411 dnl AC_SUBST(INCLUDE)
414 dnl extra argument: --with-udpfromto
416 AC_ARG_WITH(udpfromto,
417 [ --with-udpfromto Compile in UDPFROMTO support. (default=no)],
427 if test "x$WITH_UDPFROMTO" = "xyes"; then
428 AC_DEFINE(WITH_UDPFROMTO, [], [define if you want udpfromto])
431 dnl #############################################################
433 dnl # 1. Checks for programs
435 dnl #############################################################
438 AC_PATH_PROG(PERL, perl, /usr/local/bin/perl)
439 if test "x$ac_cv_path_PERL" = "x"; then
440 AC_MSG_WARN(perl not found - Simultaneous-Use and checkrad.pl may not work)
442 AC_PATH_PROG(SNMPGET, snmpget)
443 if test "x$ac_cv_path_SNMPGET" = "x"; then
444 AC_MSG_WARN(snmpget not found - Simultaneous-Use and checkrad.pl may not work)
447 AC_PATH_PROG(SNMPWALK, snmpwalk)
448 if test "x$ac_cv_path_SNMPWALK" = "x"; then
449 AC_MSG_WARN(snmpwalk not found - Simultaneous-Use and checkrad.pl may not work)
452 AC_PATH_PROG(RUSERS, rusers, /usr/bin/rusers)
454 dnl FIXME This is truly gross.
455 missing_dir=`cd $ac_aux_dir && pwd`
456 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
457 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
458 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
460 AC_PATH_PROG(LOCATE,locate)
461 AC_PATH_PROG(DIRNAME,dirname)
462 AC_PATH_PROG(GREP,grep)
464 dnl #############################################################
466 dnl # 2. Checks for libraries
468 dnl #############################################################
470 dnl If using pthreads, check for -lpthread (posix) or -lc_r (*BSD)
472 if test "x$WITH_THREADS" = "xyes"; then
473 if test $ac_cv_prog_suncc = "yes"; then
477 AC_CHECK_HEADERS(pthread.h, [], [ WITH_THREADS="no" ])
480 dnl # pthread stuff is usually in -lpthread
481 dnl # or in -lc_r, on *BSD
483 dnl # On Some systems, we need extra pre-processor flags, to get them to
484 dnl # to do the threading properly.
486 AC_CHECK_LIB(pthread, pthread_create,
487 [ CFLAGS="$CFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS"
488 LIBS="$LIBS -lpthread" ],
489 AC_CHECK_LIB(c_r, pthread_create,
490 [ CFLAGS="$CFLAGS -pthread -D_THREAD_SAFE" ],
491 [ WITH_THREADS="no" ]
497 dnl # If we have NO pthread libraries, remove any knowledge of threads.
499 if test "x$WITH_THREADS" != "xyes"; then
501 ac_cv_header_pthread_h="no"
505 dnl # We need sem_init() and friends, as they're the friendliest
506 dnl # semaphore functions for threading.
508 dnl # HP/UX requires linking with librt, too, to get the sem_* symbols.
509 dnl # Some systems have them in -lsem
510 dnl # Solaris has them in -lposix4
511 dnl # NetBSD has them in -lsemaphore
513 AC_SEARCH_LIBS(sem_init, pthread sem posix4 rt semaphore,
515 [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)]
519 dnl Check if we need -lsocket
520 AC_CHECK_LIB(socket, getsockname)
522 dnl Check for -lresolv
523 dnl This library may be needed later.
524 AC_CHECK_LIB(resolv, inet_aton)
526 dnl Check if we need -lnsl. Usually if we want to
527 dnl link against -lsocket we need to include -lnsl as well.
528 AC_CHECK_LIB(nsl, inet_ntoa)
530 dnl Check for OpenSSL libraries.
532 if test "x$WITH_OPENSSL" = xyes; then
534 old_LDFLAGS="$LDFLAGS"
535 if test "x$OPENSSL_LIB_DIR" != "x"; then
536 LDFLAGS="$LDFLAGS -L$OPENSSL_LIB_DIR"
538 AC_CHECK_LIB(crypto, DH_new,
540 LIBS="-lcrypto $LIBS"
541 AC_DEFINE(HAVE_LIBCRYPTO, 1,
542 [Define to 1 if you have the `crypto' library (-lcrypto).])
543 AC_CHECK_LIB(ssl, SSL_new,
545 AC_DEFINE(HAVE_LIBSSL, 1,
546 [Define to 1 if you have the `ssl' library (-lssl).])
547 if test "x$OPENSSL_LIB_DIR" != "x"; then
548 OPENSSL_LIBS="-L$OPENSSL_LIB_DIR"
550 OPENSSL_LIBS="$OPENSSL_LIBS -lcrypto -lssl -lcrypto"
554 LDFLAGS="$old_LDFLAGS"
557 AC_CHECK_LIB(ws2_32, htonl)
559 dnl Check the pcap library for the RADIUS sniffer.
561 AC_CHECK_LIB(pcap, pcap_open_live,
563 AC_DEFINE(HAVE_LIBPCAP, 1,
564 [Define to 1 if you have the `pcap' library (-lpcap).])
566 [ AC_MSG_WARN([pcap library not found, silently disabling the RADIUS sniffer.]) ])
570 dnl #############################################################
572 dnl # 3. Checks for header files
574 dnl #############################################################
577 dnl # Interix requires us to set -D_ALL_SOURCE, otherwise
578 dnl # getopt will be #included, but won't link. <sigh>
583 CFLAGS="$CFLAGS -D_ALL_SOURCE"
586 CFLAGS="$CFLAGS -DDARWIN"
587 LIBS="-framework DirectoryService $LIBS"
636 dnl FreeBSD requires sys/socket.h before net/if.h
637 AC_CHECK_HEADERS(net/if.h, [], [],
638 [#ifdef HAVE_SYS_SOCKET_H
639 # include <sys/socket.h>
644 AC_CHECK_HEADER(pcreposix.h, AC_DEFINE(HAVE_PCREPOSIX_H, [], [define this if we have the <pcreposix.h> header file]))
645 if test "x$ac_cv_header_pcreposix_h" = "xyes"; then
646 AC_DEFINE(HAVE_REGEX_H [], [define if we have any regex])
650 LIBS="$LIBS -lpcreposix"
653 AC_CHECK_HEADER(regex.h, AC_DEFINE(HAVE_REGEX_H, [], [define this if we have the <regex.h> header file]))
654 if test "x$ac_cv_header_regex_h" = "xyes"; then
663 ], [AC_DEFINE(HAVE_REG_EXTENDED, [], [define this if we have REG_EXTENDED (from <regex.h>)]) REGEX_EXTENDED=yes])
669 AC_SUBST(REGEX_EXTENDED)
672 dnl # other checks which require headers
674 if test "x$ac_cv_header_sys_security_h" = "xyes" && test "x$ac_cv_header_prot_h" = "xyes"
676 AC_DEFINE(OSFC2, [], [define if you have OSFC2 authentication])
679 if test "x$ac_cv_header_sia_h" = "xyes" && test "x$ac_cv_header_siad_h" = "xyes"
681 AC_DEFINE(OSFSIA, [], [define if you have OSFSIA authentication])
684 dnl Check for OpenSSL includes.
685 OPENSSL_INCLUDE="-DNO_OPENSSL"
686 if test "x$WITH_OPENSSL" = xyes; then
687 if test "x$OPENSSL_LIBS" = "x"; then
688 AC_MSG_NOTICE([skipping test for openssl/ssl.h])
690 old_CPPFLAGS=$CPPFLAGS
691 if test "x$OPENSSL_INCLUDE_DIR" != "x"; then
692 CPPFLAGS="$CPPFLAGS -I$OPENSSL_INCLUDE_DIR"
694 dnl # stupid RedHat shit
695 CPPFLAGS="$CPPFLAGS -DOPENSSL_NO_KRB5"
709 if test "x$OPENSSL_LIBS" != "x"; then
710 AC_MSG_CHECKING([for OpenSSL version >= 0.9.7])
712 [#include <openssl/crypto.h>
713 #if (OPENSSL_VERSION_NUMBER >= 0x00907000L)
717 if test "x$goodssl" != "xyes"; then
722 if test "x$OPENSSL_INCLUDE_DIR" != "x"; then
723 OPENSSL_INCLUDE="-I$OPENSSL_INCLUDE_DIR -DOPENSSL_NO_KRB5"
725 OPENSSL_INCLUDE="-DOPENSSL_NO_KRB5"
729 CPPFLAGS=$old_CPPFLAGS
732 AC_SUBST(OPENSSL_INCLUDE)
733 AC_SUBST(OPENSSL_LIBS)
736 dnl Check the pcap includes for the RADIUS sniffer.
737 if test "x$PCAP_LIBS" = x; then
738 AC_MSG_NOTICE([skipping test for pcap.h.])
740 AC_CHECK_HEADER(pcap.h,
741 AC_DEFINE(HAVE_PCAP_H, 1,
742 [Define to 1 if you have the <pcap.h> header file.]),
744 AC_MSG_WARN([pcap.h not found, silently disabling the RADIUS sniffer.])
747 AC_CHECK_LIB(pcap, pcap_fopen_offline,
748 [ AC_DEFINE(HAVE_PCAP_FOPEN_OFFLINE, 1,
749 [Define to 1 if you have the function pcap_fopen_offline.])
751 AC_CHECK_LIB(pcap, pcap_dump_fopen,
752 [ AC_DEFINE(HAVE_PCAP_DUMP_FOPEN, 1,
753 [Define to 1 if you have the function pcap_dump_fopen.])
758 dnl #############################################################
760 dnl # 4. Checks for typedefs
762 dnl #############################################################
765 dnl # Ensure that these are defined
772 dnl check for socklen_t
773 FR_CHECK_TYPE_INCLUDE([
774 #ifdef HAVE_SYS_TYPES_H
775 #include <sys/types.h>
777 #ifdef HAVE_SYS_SOCKET_H
778 #include <sys/socket.h>
780 ],socklen_t, int, [socklen_t is generally 'int' on systems which don't use it])
782 dnl check for uint8_t
783 FR_CHECK_TYPE_INCLUDE([
784 #ifdef HAVE_INTTYPES_H
785 #include <inttypes.h>
790 ],uint8_t, unsigned char, [uint8_t should be the canonical 'octet' for network traffic])
792 dnl check for uint16_t
793 FR_CHECK_TYPE_INCLUDE([
794 #ifdef HAVE_INTTYPES_H
795 #include <inttypes.h>
800 ],uint16_t, unsigned short, [uint16_t should be the canonical '2 octets' for network traffic])
802 dnl check for uint32_t
803 FR_CHECK_TYPE_INCLUDE([
804 #ifdef HAVE_INTTYPES_H
805 #include <inttypes.h>
810 ],uint32_t, unsigned int, [uint32_t should be the canonical 'network integer])
812 AC_CHECK_TYPE(struct in6_addr, AC_DEFINE(HAVE_STRUCT_IN6_ADDR, 1, [IPv6 address structure]), [], [
813 #ifdef HAVE_NETINET_IN_H
814 #include <netinet/in.h>
818 AC_CHECK_TYPE(struct sockaddr_storage, AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE, 1, [Generic socket addresses]), [], [
819 #ifdef HAVE_NETINET_IN_H
820 #include <netinet/in.h>
822 #ifdef HAVE_SYS_SOCKET_H
823 #include <sys/socket.h>
827 AC_CHECK_TYPE(struct sockaddr_in6, AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6, 1, [IPv6 socket addresses]), [], [
828 #ifdef HAVE_NETINET_IN_H
829 #include <netinet/in.h>
833 AC_CHECK_TYPE(struct addrinfo, AC_DEFINE(HAVE_STRUCT_ADDRINFO, 1, [Generic DNS lookups]), [], [
834 #ifdef HAVE_SYS_TYPES_H
835 #include <sys/types.h>
837 #ifdef HAVE_SYS_SOCKET_H
838 #include <sys/socket.h>
845 dnl #############################################################
847 dnl # 5. Checks for structures and functions
849 dnl #############################################################
884 RADIUSD_NEED_DECLARATIONS( \
896 dnl # check if we have utmpx.h
897 dnl # if so, check if struct utmpx has entry ut_xtime
898 dnl # if not, set it to define ut_xtime == ut_tv.tv_sec
899 if test "x$ac_cv_header_utmpx_h" = "xyes"
901 FR_CHECK_STRUCT_HAS_MEMBER([#include <utmpx.h>], [struct utmpx], ut_xtime)
902 if test "x$ac_cv_type_struct_utmpx_has_ut_xtime" = "x"
904 AC_DEFINE(ut_xtime,ut_tv.tv_sec, [define to something if you don't have ut_xtime in struct utmpx])
908 dnl # struct ip_pktinfo
909 FR_CHECK_STRUCT_HAS_MEMBER([#include <netinet/in.h>], [struct in_pktinfo], ipi_addr)
910 if test "x$ac_cv_type_struct_in_pktinfo_has_ipi_addr" = "xyes"
912 AC_DEFINE(HAVE_IP_PKTINFO, [], [define if you have IP_PKTINFO (Linux)])
915 dnl # struct in6_pktinfo
916 FR_CHECK_STRUCT_HAS_MEMBER([#include <netinet/in.h>], [struct in6_pktinfo], ipi6_addr)
917 if test "x$ac_cv_type_struct_in6_pktinfo_has_ipi6_addr" = "xyes"
919 AC_DEFINE(HAVE_IN6_PKTINFO, [], [define if you have IN6_PKTINFO (Linux)])
922 dnl #############################################################
924 dnl # 6. Checks for compiler characteristics
926 dnl #############################################################
929 dnl # Ensure that these are defined
934 dnl # See if this is OS/2
936 AC_MSG_CHECKING(type of OS)
939 if test "$OS" = "OS/2"; then
946 AC_MSG_CHECKING(for developer gcc flags)
947 if test "x$developer" = "xyes" -a "x$GCC" = "xyes"; then
948 devflags="-g -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -W -Wredundant-decls -Wundef"
949 CFLAGS="$CFLAGS $devflags"
951 AC_MSG_RESULT(yes. Using $devflags)
954 CFLAGS="$CFLAGS -DNDEBUG"
961 dnl #############################################################
963 dnl # 7. Checks for library functions
965 dnl #############################################################
968 LIBS="$LIBS $LIBLTDL"
969 AC_CHECK_FUNC(lt_dladvise_init, AC_DEFINE(HAVE_LT_DLADVISE_INIT, [], [Do we have the lt_dladvise_init function]))
972 dnl Check for libcrypt
973 dnl We use crypt(3) which may be in libc, or in libcrypt (eg FreeBSD)
974 AC_CHECK_LIB(crypt, crypt,
977 if test "$CRYPTLIB" != ""; then
978 AC_DEFINE(HAVE_CRYPT, [], [Do we have the crypt function])
980 AC_CHECK_FUNC(crypt, AC_DEFINE(HAVE_CRYPT, [], [Do we have the crypt function]))
983 dnl Check for libcipher
984 AC_CHECK_LIB(cipher, setkey,
985 CRYPTLIB="${CRYPTLIB} -lcipher"
989 dnl Check the style of gethostbyaddr, in order of preference
990 dnl GNU (_r eight args)
991 AC_DEFINE(GNUSTYLE, [1], [GNU-Style get*byaddr_r])
992 dnl SYSV (_r six args)
993 AC_DEFINE(SYSVSTYLE, [2], [SYSV-Style get*byaddr_r])
994 dnl BSD (three args, may not be thread safe)
995 AC_DEFINE(BSDSTYLE, [3], [BSD-Style get*byaddr_r])
996 dnl Tru64 has BSD version, but it is thread safe
997 dnl http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/1739____.HTM
998 dnl We need #stdio.h to define NULL on FreeBSD (at least)
999 gethostbyaddrrstyle=""
1000 AC_MSG_CHECKING([gethostbyaddr_r() syntax])
1003 dnl With FreeBSD, check if there's a prototype for gethostbyaddr_r.
1004 dnl Some versions (FreeBSD 5.1?) have a symbol but no prototype - so we
1005 dnl override this test to BSDSTYLE. FreeBSD 6.2 and up have proper GNU
1007 AC_CHECK_DECLS([gethostbyaddr_r], [], [
1008 AC_DEFINE(GETHOSTBYADDRRSTYLE, BSDSTYLE,
1009 [style of gethostbyaddr_r functions ])
1010 gethostbyaddrrstyle=BSD
1011 AC_MSG_WARN([FreeBSD overridden to BSD-style])
1019 if test "x$gethostbyaddrrstyle" = "x"; then
1023 ], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL, NULL) ], [
1024 AC_DEFINE(GETHOSTBYADDRRSTYLE, GNUSTYLE, [style of gethostbyaddr_r functions ])
1025 gethostbyaddrrstyle=GNU
1028 if test "x$gethostbyaddrrstyle" = "x"; then
1032 ], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL) ] , [
1033 AC_DEFINE(GETHOSTBYADDRRSTYLE, SYSVSTYLE, [style of gethostbyaddr_r functions ])
1034 gethostbyaddrrstyle=SYSV
1037 if test "x$gethostbyaddrrstyle" = "x"; then
1041 ], [ gethostbyaddr(NULL, 0, 0) ], [
1042 AC_DEFINE(GETHOSTBYADDRRSTYLE, BSDSTYLE, [style of gethostbyaddr_r functions ])
1043 gethostbyaddrrstyle=BSD
1047 if test "x$gethostbyaddrrstyle" = "x"; then
1048 AC_MSG_RESULT([none! It must not exist, here.])
1050 AC_MSG_RESULT([${gethostbyaddrrstyle}-style])
1053 if test "x$gethostbyaddrrstyle" = "xBSD"; then
1054 AC_MSG_WARN([ ****** BSD-style gethostbyaddr might NOT be thread-safe! ****** ])
1057 dnl Check the style of gethostbyname, in order of preference
1058 dnl GNU (_r seven args)
1059 dnl SYSV (_r five args)
1060 dnl BSD (two args, may not be thread safe)
1061 dnl Tru64 has BSD version, but it _is_ thread safe
1062 dnl http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/1946____.HTM
1063 dnl We need #stdio.h to define NULL on FreeBSD (at least)
1064 gethostbynamerstyle=""
1065 AC_MSG_CHECKING([gethostbyname_r() syntax])
1069 ], [ gethostbyname_r(NULL, NULL, NULL, 0, NULL, NULL) ], [
1070 AC_DEFINE(GETHOSTBYNAMERSTYLE, GNUSTYLE, [style of gethostbyname_r functions ])
1071 gethostbynamerstyle=GNU
1073 if test "x$gethostbynamerstyle" = "x"; then
1077 ], [ gethostbyname_r(NULL, NULL, NULL, 0, NULL) ] , [
1078 AC_DEFINE(GETHOSTBYNAMERSTYLE, SYSVSTYLE, [style of gethostbyname_r functions ])
1079 gethostbynamerstyle=SYSV
1082 if test "x$gethostbynamerstyle" = "x"; then
1086 ], [ gethostbyname(NULL) ], [
1087 AC_DEFINE(GETHOSTBYNAMERSTYLE, BSDSTYLE, [style of gethostbyname_r functions ])
1088 gethostbynamerstyle=BSD
1092 if test "x$gethostbynamerstyle" = "x"; then
1093 AC_MSG_RESULT([none! It must not exist, here.])
1095 AC_MSG_RESULT([${gethostbynamerstyle}-style])
1098 if test "x$gethostbynamerstyle" = "xBSD"; then
1099 AC_MSG_WARN([ ****** BSD-style gethostbyname might NOT be thread-safe! ****** ])
1102 dnl check for non-posix solaris ctime_r (extra buflen int arg)
1103 AC_DEFINE(POSIXSTYLE, [1], [Posix-Style ctime_r])
1104 AC_DEFINE(SOLARISSTYLE, [2], [Solaris-Style ctime_r])
1106 AC_MSG_CHECKING([ctime_r() syntax])
1109 ], [ ctime_r(NULL, NULL, 0) ], [
1110 AC_DEFINE(CTIMERSTYLE, SOLARISSTYLE, [style of ctime_r function])
1111 ctimerstyle="SOLARIS"
1113 if test "x$ctimerstyle" = "x"; then
1116 ], [ ctime_r(NULL, NULL) ], [
1117 AC_DEFINE(CTIMERSTYLE, POSIXSTYLE, [style of ctime_r function])
1122 if test "x$ctimerstyle" = "x"; then
1123 AC_MSG_RESULT([none! It must not exist, here.])
1125 AC_MSG_RESULT([${ctimerstyle}-style])
1128 AC_SUBST(HOSTINFO, $host)
1130 dnl #############################################################
1132 dnl # 8. Checks for system services
1134 dnl #############################################################
1137 dnl # Figure out where libtool is located,
1141 AC_MSG_RESULT([top_builddir=$top_builddir])
1142 dnl # AC_SUBST(top_builddir)
1146 dnl import libtool stuff
1148 dnl #############################################################
1150 dnl # Configure in any module directories.
1152 dnl #############################################################
1154 mysubdirs="$LIBLTDLPATH"
1155 if test "x$EXPERIMENTAL" = "xyes"; then
1156 bar=`ls -1 "${srcdir}"/src/modules/rlm_*/configure | sed 's%/configure%%'`
1157 dnl # get rid of LF's.
1158 mysubdirs=`echo $mysubdirs $bar`
1161 dnl # Find 'configure' in ONLY the stable modules
1163 for bar in `cat "${srcdir}"/src/modules/stable`; do
1164 if test -f "${srcdir}"/src/modules/$bar/configure; then
1165 mysubdirs="$mysubdirs src/modules/$bar"
1170 dnl ############################################################
1171 dnl # make modules by list
1172 dnl #############################################################
1173 if test "x$EXPERIMENTAL" = "xyes"; then
1174 for foo in `ls -1 "${srcdir}"/src/modules | grep rlm_`; do
1175 MODULES="$MODULES $foo"
1179 dnl # make ONLY the stable modules
1181 for foo in `cat "${srcdir}"/src/modules/stable`; do
1182 MODULES="$MODULES $foo"
1187 dnl # Don't change the variable name here. Autoconf goes bonkers
1190 AC_CONFIG_SUBDIRS($LTDL_SUBDIRS $mysubdirs)
1193 dnl #############################################################
1195 dnl # And finally, output the results.
1197 dnl #############################################################
1199 AC_CONFIG_COMMANDS([stamp-h], [echo timestamp > src/include/stamp-h])
1200 AC_CONFIG_COMMANDS([build-radpaths-h], [(cd ./src/include && /bin/sh ./build-radpaths-h)])
1201 AC_CONFIG_COMMANDS([main-chmod], [(cd ./src/main && chmod +x checkrad.pl radlast radtest)])
1202 AC_CONFIG_COMMANDS([scripts-chmod], [(cd ./scripts && chmod +x rc.radiusd radwatch radiusd.cron.daily radiusd.cron.monthly cryptpasswd)])
1205 dnl # Substitute whatever libraries we found to be necessary
1208 AC_SUBST(INSTALLSTRIP)
1210 USE_SHARED_LIBS=$enable_shared
1211 AC_SUBST(USE_SHARED_LIBS)
1212 USE_STATIC_LIBS=$enable_static
1213 AC_SUBST(USE_STATIC_LIBS)
1214 AC_SUBST(STATIC_MODULES)
1215 AC_SUBST(RADIUSD_MAJOR_VERSION)
1216 AC_SUBST(RADIUSD_MINOR_VERSION)
1217 AC_SUBST(RADIUSD_VERSION)
1221 ./src/include/build-radpaths-h \
1222 ./src/main/Makefile \
1223 ./src/main/radsniff.mk \
1224 ./src/main/checkrad.pl \
1225 ./src/main/radlast \
1226 ./src/main/radtest \
1227 ./scripts/rc.radiusd \
1228 ./scripts/radwatch \
1229 ./scripts/radiusd.cron.daily \
1230 ./scripts/radiusd.cron.monthly \
1231 ./scripts/cryptpasswd \
1232 ./raddb/dictionary \
1233 ./raddb/radrelay.conf \
1234 ./raddb/radiusd.conf