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
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
263 [ --with-dhcp Compile in DHCP support. (default=yes)],
271 if test "x$WITH_DHCP" = "xyes"; then
272 AC_DEFINE(WITH_DHCP, [1], [define if you want DHCP support])
276 dnl extra argument: --with-post-proxy-authorize
277 WITH_POST_PROXY_AUTHORIZE=
278 AC_ARG_WITH(post-proxy-authorize,
279 [ --with-post-proxy-authorize 1.x compatibility (default=no) ],
282 WITH_POST_PROXY_AUTHORIZE=""
290 dnl # Allow the user to specify a list of modules to be linked
291 dnl # statically to the server.
294 AC_ARG_WITH(static_modules,
295 [ --with-static-modules=QUOTED-MODULE-LIST],[
296 for i in $withval; do
297 STATIC_MODULES="$STATIC_MODULES -dlpreopen ../modules/rlm_$i/rlm_$i.la"
303 [ --with-modules=QUOTED-MODULE-LIST],[
304 for i in $withval; do
305 MODULES="$MODULES $i"
310 dnl # Enable developer C compiler warnings
312 AC_ARG_ENABLE(developer,
313 [ --enable-developer Enables features of interest to developers.],
314 [ case "$enableval" in
323 if test "x$developer" != "xno" -a -d $srcdir/CVS; then
324 dnl turn on the developer flag when taken from a CVS checkout (not a release)
328 if test "x$developer" != "xno" -a -d $srcdir/.git; then
329 dnl turn on the developer flag when taken from a git checkout (not a release)
333 dnl extra argument: --with-experimental-modules
335 AC_ARG_WITH(experimental-modules,
336 [ --with-experimental-modules Use experimental and unstable modules. (default=no) ],
345 dnl extra argument: --with-openssl
348 [ --with-openssl Use OpenSSL. (default=yes)],
360 dnl # extra argument: --with-openssl-includes=dir
363 AC_ARG_WITH(openssl-includes,
364 [ --with-openssl-includes=DIR Directory to look for OpenSSL include files],
366 *) OPENSSL_INCLUDE_DIR="$withval"
372 dnl # extra argument: --with-openssl-libraries=dir
375 AC_ARG_WITH(openssl-libraries,
376 [ --with-openssl-libraries=DIR Directory to look for OpenSSL library files],
378 *) OPENSSL_LIB_DIR="$withval"
384 dnl # These next two arguments don't actually do anything. They're
385 dnl # place holders so that the top-level configure script can tell
386 dnl # the user how to configure lower-level modules
390 dnl # extra argument: --with-rlm-FOO-lib-dir
392 AC_ARG_WITH(rlm-FOO-lib-dir,
393 [ --with-rlm-FOO-lib-dir=DIR Directory to look for library files used by module FOO],
401 dnl # extra argument: --with-rlm-FOO-include-dir
403 AC_ARG_WITH(rlm-FOO-include-dir,
404 [ --with-rlm-FOO-include-dir=DIR Directory to look for include files used by module FOO],
411 dnl See what include-style is used by the make program.
412 dnl AC_MSG_CHECKING(include style for make)
413 dnl echo "include /dev/null" > testmake.$$
414 dnl echo "all:" >> testmake.$$
415 dnl make -f testmake.$$ >/dev/null 2>&1
424 dnl rm -f testmake.$$
425 dnl AC_MSG_RESULT(" $INCLUDE")
426 dnl AC_SUBST(INCLUDE)
429 dnl extra argument: --with-udpfromto
431 AC_ARG_WITH(udpfromto,
432 [ --with-udpfromto Compile in UDPFROMTO support. (default=no)],
442 if test "x$WITH_UDPFROMTO" = "xyes"; then
443 AC_DEFINE(WITH_UDPFROMTO, [], [define if you want udpfromto])
446 dnl #############################################################
448 dnl # 1. Checks for programs
450 dnl #############################################################
453 AC_PATH_PROG(PERL, perl, /usr/local/bin/perl)
454 if test "x$ac_cv_path_PERL" = "x"; then
455 AC_MSG_WARN(perl not found - Simultaneous-Use and checkrad.pl may not work)
457 AC_PATH_PROG(SNMPGET, snmpget)
458 if test "x$ac_cv_path_SNMPGET" = "x"; then
459 AC_MSG_WARN(snmpget not found - Simultaneous-Use and checkrad.pl may not work)
462 AC_PATH_PROG(SNMPWALK, snmpwalk)
463 if test "x$ac_cv_path_SNMPWALK" = "x"; then
464 AC_MSG_WARN(snmpwalk not found - Simultaneous-Use and checkrad.pl may not work)
467 AC_PATH_PROG(RUSERS, rusers, /usr/bin/rusers)
469 dnl FIXME This is truly gross.
470 missing_dir=`cd $ac_aux_dir && pwd`
471 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
472 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
473 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
475 AC_PATH_PROG(LOCATE,locate)
476 AC_PATH_PROG(DIRNAME,dirname)
477 AC_PATH_PROG(GREP,grep)
479 dnl #############################################################
481 dnl # 2. Checks for libraries
483 dnl #############################################################
485 dnl If using pthreads, check for -lpthread (posix) or -lc_r (*BSD)
487 if test "x$WITH_THREADS" = "xyes"; then
488 if test $ac_cv_prog_suncc = "yes"; then
492 AC_CHECK_HEADERS(pthread.h, [], [ WITH_THREADS="no" ])
495 dnl # pthread stuff is usually in -lpthread
496 dnl # or in -lc_r, on *BSD
498 dnl # On Some systems, we need extra pre-processor flags, to get them to
499 dnl # to do the threading properly.
501 AC_CHECK_LIB(pthread, pthread_create,
502 [ CFLAGS="$CFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS"
503 LIBS="$LIBS -lpthread" ],
504 AC_CHECK_LIB(c_r, pthread_create,
505 [ CFLAGS="$CFLAGS -pthread -D_THREAD_SAFE" ],
506 [ WITH_THREADS="no" ]
512 dnl # If we have NO pthread libraries, remove any knowledge of threads.
514 if test "x$WITH_THREADS" != "xyes"; then
516 ac_cv_header_pthread_h="no"
520 dnl # We need sem_init() and friends, as they're the friendliest
521 dnl # semaphore functions for threading.
523 dnl # HP/UX requires linking with librt, too, to get the sem_* symbols.
524 dnl # Some systems have them in -lsem
525 dnl # Solaris has them in -lposix4
526 dnl # NetBSD has them in -lsemaphore
528 AC_SEARCH_LIBS(sem_init, pthread sem posix4 rt semaphore,
530 [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)]
534 dnl Check if we need -lsocket
535 AC_CHECK_LIB(socket, getsockname)
537 dnl Check for -lresolv
538 dnl This library may be needed later.
539 AC_CHECK_LIB(resolv, inet_aton)
541 dnl Check if we need -lnsl. Usually if we want to
542 dnl link against -lsocket we need to include -lnsl as well.
543 AC_CHECK_LIB(nsl, inet_ntoa)
545 dnl Check for OpenSSL libraries.
547 if test "x$WITH_OPENSSL" = xyes; then
549 old_LDFLAGS="$LDFLAGS"
550 if test "x$OPENSSL_LIB_DIR" != "x"; then
551 LDFLAGS="$LDFLAGS -L$OPENSSL_LIB_DIR"
553 AC_CHECK_LIB(crypto, DH_new,
555 LIBS="-lcrypto $LIBS"
556 AC_DEFINE(HAVE_LIBCRYPTO, 1,
557 [Define to 1 if you have the `crypto' library (-lcrypto).])
558 AC_CHECK_LIB(ssl, SSL_new,
560 AC_DEFINE(HAVE_LIBSSL, 1,
561 [Define to 1 if you have the `ssl' library (-lssl).])
562 if test "x$OPENSSL_LIB_DIR" != "x"; then
563 OPENSSL_LIBS="-L$OPENSSL_LIB_DIR"
565 OPENSSL_LIBS="$OPENSSL_LIBS -lcrypto -lssl -lcrypto"
569 LDFLAGS="$old_LDFLAGS"
572 AC_CHECK_LIB(ws2_32, htonl)
574 dnl Check the pcap library for the RADIUS sniffer.
576 AC_CHECK_LIB(pcap, pcap_open_live,
578 AC_DEFINE(HAVE_LIBPCAP, 1,
579 [Define to 1 if you have the `pcap' library (-lpcap).])
581 [ AC_MSG_WARN([pcap library not found, silently disabling the RADIUS sniffer.]) ])
585 dnl #############################################################
587 dnl # 3. Checks for header files
589 dnl #############################################################
592 dnl # Interix requires us to set -D_ALL_SOURCE, otherwise
593 dnl # getopt will be #included, but won't link. <sigh>
598 CFLAGS="$CFLAGS -D_ALL_SOURCE"
601 CFLAGS="$CFLAGS -DDARWIN"
602 LIBS="-framework DirectoryService $LIBS"
651 dnl FreeBSD requires sys/socket.h before net/if.h
652 AC_CHECK_HEADERS(net/if.h, [], [],
653 [#ifdef HAVE_SYS_SOCKET_H
654 # include <sys/socket.h>
659 AC_CHECK_HEADER(regex.h, AC_DEFINE(HAVE_REGEX_H, [], [define this if we have the <regex.h> header file]))
660 if test "x$ac_cv_header_regex_h" = "xyes"; then
668 ], [AC_DEFINE(HAVE_REG_EXTENDED, [], [define this if we have REG_EXTENDED (from <regex.h>)]) REGEX_EXTENDED=yes])
671 AC_SUBST(REGEX_EXTENDED)
674 dnl # other checks which require headers
676 if test "x$ac_cv_header_sys_security_h" = "xyes" && test "x$ac_cv_header_prot_h" = "xyes"
678 AC_DEFINE(OSFC2, [], [define if you have OSFC2 authentication])
681 if test "x$ac_cv_header_sia_h" = "xyes" && test "x$ac_cv_header_siad_h" = "xyes"
683 AC_DEFINE(OSFSIA, [], [define if you have OSFSIA authentication])
686 dnl Check for OpenSSL includes.
687 OPENSSL_INCLUDE="-DNO_OPENSSL"
688 if test "x$WITH_OPENSSL" = xyes; then
689 if test "x$OPENSSL_LIBS" = "x"; then
690 AC_MSG_NOTICE([skipping test for openssl/ssl.h])
692 old_CPPFLAGS=$CPPFLAGS
693 if test "x$OPENSSL_INCLUDE_DIR" != "x"; then
694 CPPFLAGS="$CPPFLAGS -I$OPENSSL_INCLUDE_DIR"
696 dnl # stupid RedHat shit
697 CPPFLAGS="$CPPFLAGS -DOPENSSL_NO_KRB5"
708 if test "x$OPENSSL_LIBS" != "x"; then
709 AC_MSG_CHECKING([for OpenSSL version >= 0.9.7])
711 [#include <openssl/crypto.h>
712 #if (OPENSSL_VERSION_NUMBER >= 0x00907000L)
716 if test "x$goodssl" != "xyes"; then
721 if test "x$OPENSSL_INCLUDE_DIR" != "x"; then
722 OPENSSL_INCLUDE="-I$OPENSSL_INCLUDE_DIR -DOPENSSL_NO_KRB5"
724 OPENSSL_INCLUDE="-DOPENSSL_NO_KRB5"
728 CPPFLAGS=$old_CPPFLAGS
731 AC_SUBST(OPENSSL_INCLUDE)
732 AC_SUBST(OPENSSL_LIBS)
735 dnl Check the pcap includes for the RADIUS sniffer.
736 if test "x$PCAP_LIBS" = x; then
737 AC_MSG_NOTICE([skipping test for pcap.h.])
739 AC_CHECK_HEADER(pcap.h,
740 AC_DEFINE(HAVE_PCAP_H, 1,
741 [Define to 1 if you have the <pcap.h> header file.]),
743 AC_MSG_WARN([pcap.h not found, silently disabling the RADIUS sniffer.])
746 AC_CHECK_LIB(pcap, pcap_fopen_offline,
747 [ AC_DEFINE(HAVE_PCAP_FOPEN_OFFLINE, 1,
748 [Define to 1 if you have the function pcap_fopen_offline.])
750 AC_CHECK_LIB(pcap, pcap_dump_fopen,
751 [ AC_DEFINE(HAVE_PCAP_DUMP_FOPEN, 1,
752 [Define to 1 if you have the function pcap_dump_fopen.])
757 dnl #############################################################
759 dnl # 4. Checks for typedefs
761 dnl #############################################################
764 dnl # Ensure that these are defined
771 dnl check for socklen_t
772 FR_CHECK_TYPE_INCLUDE([
773 #ifdef HAVE_SYS_TYPES_H
774 #include <sys/types.h>
776 #ifdef HAVE_SYS_SOCKET_H
777 #include <sys/socket.h>
779 ],socklen_t, int, [socklen_t is generally 'int' on systems which don't use it])
781 dnl check for uint8_t
782 FR_CHECK_TYPE_INCLUDE([
783 #ifdef HAVE_INTTYPES_H
784 #include <inttypes.h>
789 ],uint8_t, unsigned char, [uint8_t should be the canonical 'octet' for network traffic])
791 dnl check for uint16_t
792 FR_CHECK_TYPE_INCLUDE([
793 #ifdef HAVE_INTTYPES_H
794 #include <inttypes.h>
799 ],uint16_t, unsigned short, [uint16_t should be the canonical '2 octets' for network traffic])
801 dnl check for uint32_t
802 FR_CHECK_TYPE_INCLUDE([
803 #ifdef HAVE_INTTYPES_H
804 #include <inttypes.h>
809 ],uint32_t, unsigned int, [uint32_t should be the canonical 'network integer])
811 AC_CHECK_TYPE(struct in6_addr, AC_DEFINE(HAVE_STRUCT_IN6_ADDR, 1, [IPv6 address structure]), [], [
812 #ifdef HAVE_NETINET_IN_H
813 #include <netinet/in.h>
817 AC_CHECK_TYPE(struct sockaddr_storage, AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE, 1, [Generic socket addresses]), [], [
818 #ifdef HAVE_NETINET_IN_H
819 #include <netinet/in.h>
821 #ifdef HAVE_SYS_SOCKET_H
822 #include <sys/socket.h>
826 AC_CHECK_TYPE(struct sockaddr_in6, AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6, 1, [IPv6 socket addresses]), [], [
827 #ifdef HAVE_NETINET_IN_H
828 #include <netinet/in.h>
832 AC_CHECK_TYPE(struct addrinfo, AC_DEFINE(HAVE_STRUCT_ADDRINFO, 1, [Generic DNS lookups]), [], [
833 #ifdef HAVE_SYS_TYPES_H
834 #include <sys/types.h>
836 #ifdef HAVE_SYS_SOCKET_H
837 #include <sys/socket.h>
844 dnl #############################################################
846 dnl # 5. Checks for structures and functions
848 dnl #############################################################
883 RADIUSD_NEED_DECLARATIONS( \
895 dnl # check if we have utmpx.h
896 dnl # if so, check if struct utmpx has entry ut_xtime
897 dnl # if not, set it to define ut_xtime == ut_tv.tv_sec
898 if test "x$ac_cv_header_utmpx_h" = "xyes"
900 FR_CHECK_STRUCT_HAS_MEMBER([#include <utmpx.h>], [struct utmpx], ut_xtime)
901 if test "x$ac_cv_type_struct_utmpx_has_ut_xtime" = "x"
903 AC_DEFINE(ut_xtime,ut_tv.tv_sec, [define to something if you don't have ut_xtime in struct utmpx])
907 dnl # struct ip_pktinfo
908 FR_CHECK_STRUCT_HAS_MEMBER([#include <netinet/in.h>], [struct in_pktinfo], ipi_addr)
909 if test "x$ac_cv_type_struct_in_pktinfo_has_ipi_addr" = "xyes"
911 AC_DEFINE(HAVE_IP_PKTINFO, [], [define if you have IP_PKTINFO (Linux)])
914 dnl # struct in6_pktinfo
915 FR_CHECK_STRUCT_HAS_MEMBER([#include <netinet/in.h>], [struct in6_pktinfo], ipi6_addr)
916 if test "x$ac_cv_type_struct_in6_pktinfo_has_ipi6_addr" = "xyes"
918 AC_DEFINE(HAVE_IN6_PKTINFO, [], [define if you have IN6_PKTINFO (Linux)])
921 dnl #############################################################
923 dnl # 6. Checks for compiler characteristics
925 dnl #############################################################
928 dnl # Ensure that these are defined
933 dnl # See if this is OS/2
935 AC_MSG_CHECKING(type of OS)
938 if test "$OS" = "OS/2"; then
945 AC_MSG_CHECKING(for developer gcc flags)
946 if test "x$developer" = "xyes" -a "x$GCC" = "xyes"; then
947 devflags="-g -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -W -Wredundant-decls -Wundef"
948 CFLAGS="$CFLAGS $devflags"
950 AC_MSG_RESULT(yes. Using $devflags)
953 CFLAGS="$CFLAGS -DNDEBUG"
960 dnl #############################################################
962 dnl # 7. Checks for library functions
964 dnl #############################################################
967 LIBS="$LIBS $LIBLTDL"
968 AC_CHECK_FUNC(lt_dladvise_init, AC_DEFINE(HAVE_LT_DLADVISE_INIT, [], [Do we have the lt_dladvise_init function]))
971 dnl Check for libcrypt
972 dnl We use crypt(3) which may be in libc, or in libcrypt (eg FreeBSD)
973 AC_CHECK_LIB(crypt, crypt,
976 if test "$CRYPTLIB" != ""; then
977 AC_DEFINE(HAVE_CRYPT, [], [Do we have the crypt function])
979 AC_CHECK_FUNC(crypt, AC_DEFINE(HAVE_CRYPT, [], [Do we have the crypt function]))
982 dnl Check for libcipher
983 AC_CHECK_LIB(cipher, setkey,
984 CRYPTLIB="${CRYPTLIB} -lcipher"
988 dnl Check the style of gethostbyaddr, in order of preference
989 dnl GNU (_r eight args)
990 AC_DEFINE(GNUSTYLE, [1], [GNU-Style get*byaddr_r])
991 dnl SYSV (_r six args)
992 AC_DEFINE(SYSVSTYLE, [2], [SYSV-Style get*byaddr_r])
993 dnl BSD (three args, may not be thread safe)
994 AC_DEFINE(BSDSTYLE, [3], [BSD-Style get*byaddr_r])
995 dnl Tru64 has BSD version, but it is thread safe
996 dnl http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/1739____.HTM
997 dnl We need #stdio.h to define NULL on FreeBSD (at least)
998 gethostbyaddrrstyle=""
999 AC_MSG_CHECKING([gethostbyaddr_r() syntax])
1002 dnl With FreeBSD, check if there's a prototype for gethostbyaddr_r.
1003 dnl Some versions (FreeBSD 5.1?) have a symbol but no prototype - so we
1004 dnl override this test to BSDSTYLE. FreeBSD 6.2 and up have proper GNU
1006 AC_CHECK_DECLS([gethostbyaddr_r], [], [
1007 AC_DEFINE(GETHOSTBYADDRRSTYLE, BSDSTYLE,
1008 [style of gethostbyaddr_r functions ])
1009 gethostbyaddrrstyle=BSD
1010 AC_MSG_WARN([FreeBSD overridden to BSD-style])
1018 if test "x$gethostbyaddrrstyle" = "x"; then
1022 ], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL, NULL) ], [
1023 AC_DEFINE(GETHOSTBYADDRRSTYLE, GNUSTYLE, [style of gethostbyaddr_r functions ])
1024 gethostbyaddrrstyle=GNU
1027 if test "x$gethostbyaddrrstyle" = "x"; then
1031 ], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL) ] , [
1032 AC_DEFINE(GETHOSTBYADDRRSTYLE, SYSVSTYLE, [style of gethostbyaddr_r functions ])
1033 gethostbyaddrrstyle=SYSV
1036 if test "x$gethostbyaddrrstyle" = "x"; then
1040 ], [ gethostbyaddr(NULL, 0, 0) ], [
1041 AC_DEFINE(GETHOSTBYADDRRSTYLE, BSDSTYLE, [style of gethostbyaddr_r functions ])
1042 gethostbyaddrrstyle=BSD
1046 if test "x$gethostbyaddrrstyle" = "x"; then
1047 AC_MSG_RESULT([none! It must not exist, here.])
1049 AC_MSG_RESULT([${gethostbyaddrrstyle}-style])
1052 if test "x$gethostbyaddrrstyle" = "xBSD"; then
1053 AC_MSG_WARN([ ****** BSD-style gethostbyaddr might NOT be thread-safe! ****** ])
1056 dnl Check the style of gethostbyname, in order of preference
1057 dnl GNU (_r seven args)
1058 dnl SYSV (_r five args)
1059 dnl BSD (two args, may not be thread safe)
1060 dnl Tru64 has BSD version, but it _is_ thread safe
1061 dnl http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/1946____.HTM
1062 dnl We need #stdio.h to define NULL on FreeBSD (at least)
1063 gethostbynamerstyle=""
1064 AC_MSG_CHECKING([gethostbyname_r() syntax])
1068 ], [ gethostbyname_r(NULL, NULL, NULL, 0, NULL, NULL) ], [
1069 AC_DEFINE(GETHOSTBYNAMERSTYLE, GNUSTYLE, [style of gethostbyname_r functions ])
1070 gethostbynamerstyle=GNU
1072 if test "x$gethostbynamerstyle" = "x"; then
1076 ], [ gethostbyname_r(NULL, NULL, NULL, 0, NULL) ] , [
1077 AC_DEFINE(GETHOSTBYNAMERSTYLE, SYSVSTYLE, [style of gethostbyname_r functions ])
1078 gethostbynamerstyle=SYSV
1081 if test "x$gethostbynamerstyle" = "x"; then
1085 ], [ gethostbyname(NULL) ], [
1086 AC_DEFINE(GETHOSTBYNAMERSTYLE, BSDSTYLE, [style of gethostbyname_r functions ])
1087 gethostbynamerstyle=BSD
1091 if test "x$gethostbynamerstyle" = "x"; then
1092 AC_MSG_RESULT([none! It must not exist, here.])
1094 AC_MSG_RESULT([${gethostbynamerstyle}-style])
1097 if test "x$gethostbynamerstyle" = "xBSD"; then
1098 AC_MSG_WARN([ ****** BSD-style gethostbyname might NOT be thread-safe! ****** ])
1101 dnl check for non-posix solaris ctime_r (extra buflen int arg)
1102 AC_DEFINE(POSIXSTYLE, [1], [Posix-Style ctime_r])
1103 AC_DEFINE(SOLARISSTYLE, [2], [Solaris-Style ctime_r])
1105 AC_MSG_CHECKING([ctime_r() syntax])
1108 ], [ ctime_r(NULL, NULL, 0) ], [
1109 AC_DEFINE(CTIMERSTYLE, SOLARISSTYLE, [style of ctime_r function])
1110 ctimerstyle="SOLARIS"
1112 if test "x$ctimerstyle" = "x"; then
1115 ], [ ctime_r(NULL, NULL) ], [
1116 AC_DEFINE(CTIMERSTYLE, POSIXSTYLE, [style of ctime_r function])
1121 if test "x$ctimerstyle" = "x"; then
1122 AC_MSG_RESULT([none! It must not exist, here.])
1124 AC_MSG_RESULT([${ctimerstyle}-style])
1127 AC_SUBST(HOSTINFO, $host)
1129 if test "x$WITH_POST_PROXY_AUTHORIZE" != "x"; then
1130 AC_DEFINE(WITH_POST_PROXY_AUTHORIZE, 1, [1.x compatibility])
1133 dnl #############################################################
1135 dnl # 8. Checks for system services
1137 dnl #############################################################
1140 dnl # Figure out where libtool is located,
1144 AC_MSG_RESULT([top_builddir=$top_builddir])
1145 dnl # AC_SUBST(top_builddir)
1149 dnl import libtool stuff
1151 dnl #############################################################
1153 dnl # Configure in any module directories.
1155 dnl #############################################################
1157 mysubdirs="$LIBLTDLPATH"
1158 if test "x$EXPERIMENTAL" = "xyes"; then
1159 bar=`ls -1 "${srcdir}"/src/modules/rlm_*/configure | sed 's%/configure%%'`
1160 dnl # get rid of LF's.
1161 mysubdirs=`echo $mysubdirs $bar`
1164 dnl # Find 'configure' in ONLY the stable modules
1166 for bar in `cat "${srcdir}"/src/modules/stable`; do
1167 if test -f "${srcdir}"/src/modules/$bar/configure; then
1168 mysubdirs="$mysubdirs src/modules/$bar"
1173 dnl ############################################################
1174 dnl # make modules by list
1175 dnl #############################################################
1176 if test "x$EXPERIMENTAL" = "xyes"; then
1177 for foo in `ls -1 "${srcdir}"/src/modules | grep rlm_`; do
1178 MODULES="$MODULES $foo"
1182 dnl # make ONLY the stable modules
1184 for foo in `cat "${srcdir}"/src/modules/stable`; do
1185 MODULES="$MODULES $foo"
1190 dnl # Don't change the variable name here. Autoconf goes bonkers
1193 AC_CONFIG_SUBDIRS($LTDL_SUBDIRS $mysubdirs)
1196 dnl #############################################################
1198 dnl # And finally, output the results.
1200 dnl #############################################################
1202 AC_CONFIG_COMMANDS([stamp-h], [echo timestamp > src/include/stamp-h])
1203 AC_CONFIG_COMMANDS([build-radpaths-h], [(cd ./src/include && /bin/sh ./build-radpaths-h)])
1204 AC_CONFIG_COMMANDS([main-chmod], [(cd ./src/main && chmod +x checkrad.pl radlast radtest)])
1205 AC_CONFIG_COMMANDS([scripts-chmod], [(cd ./scripts && chmod +x rc.radiusd radwatch radiusd.cron.daily radiusd.cron.monthly cryptpasswd)])
1208 dnl # Substitute whatever libraries we found to be necessary
1211 AC_SUBST(INSTALLSTRIP)
1213 USE_SHARED_LIBS=$enable_shared
1214 AC_SUBST(USE_SHARED_LIBS)
1215 USE_STATIC_LIBS=$enable_static
1216 AC_SUBST(USE_STATIC_LIBS)
1217 AC_SUBST(STATIC_MODULES)
1218 AC_SUBST(RADIUSD_MAJOR_VERSION)
1219 AC_SUBST(RADIUSD_MINOR_VERSION)
1220 AC_SUBST(RADIUSD_VERSION)
1224 ./src/include/build-radpaths-h \
1225 ./src/main/Makefile \
1226 ./src/main/checkrad.pl \
1227 ./src/main/radlast \
1228 ./src/main/radtest \
1229 ./scripts/rc.radiusd \
1230 ./scripts/radwatch \
1231 ./scripts/radiusd.cron.daily \
1232 ./scripts/radiusd.cron.monthly \
1233 ./scripts/cryptpasswd \
1234 ./raddb/dictionary \
1235 ./raddb/radrelay.conf \
1236 ./raddb/radiusd.conf