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
264 [ --with-dhcp Compile in DHCP support. (default=yes)],
272 if test "x$WITH_DHCP" = "xyes"; then
273 AC_DEFINE(WITH_DHCP, [1], [define if you want DHCP support])
278 dnl # Allow the user to specify a list of modules to be linked
279 dnl # statically to the server.
282 AC_ARG_WITH(static_modules,
283 [ --with-static-modules=QUOTED-MODULE-LIST],[
284 for i in $withval; do
285 STATIC_MODULES="$STATIC_MODULES -dlpreopen ../modules/rlm_$i/rlm_$i.la"
291 [ --with-modules=QUOTED-MODULE-LIST],[
292 for i in $withval; do
293 MODULES="$MODULES $i"
298 dnl # Enable developer C compiler warnings
300 AC_ARG_ENABLE(developer,
301 [ --enable-developer Enables features of interest to developers.],
302 [ case "$enableval" in
311 if test "x$developer" != "xno" -a -d $srcdir/CVS; then
312 dnl turn on the developer flag when taken from a CVS checkout (not a release)
316 if test "x$developer" != "xno" -a -d $srcdir/.git; then
317 dnl turn on the developer flag when taken from a git checkout (not a release)
321 dnl extra argument: --with-experimental-modules
323 AC_ARG_WITH(experimental-modules,
324 [ --with-experimental-modules Use experimental and unstable modules. (default=no) ],
333 dnl extra argument: --with-openssl
336 [ --with-openssl Use OpenSSL. (default=yes)],
348 dnl # extra argument: --with-openssl-includes=dir
351 AC_ARG_WITH(openssl-includes,
352 [ --with-openssl-includes=DIR Directory to look for OpenSSL include files],
354 *) OPENSSL_INCLUDE_DIR="$withval"
360 dnl # extra argument: --with-openssl-libraries=dir
363 AC_ARG_WITH(openssl-libraries,
364 [ --with-openssl-libraries=DIR Directory to look for OpenSSL library files],
366 *) OPENSSL_LIB_DIR="$withval"
372 dnl # These next two arguments don't actually do anything. They're
373 dnl # place holders so that the top-level configure script can tell
374 dnl # the user how to configure lower-level modules
378 dnl # extra argument: --with-rlm-FOO-lib-dir
380 AC_ARG_WITH(rlm-FOO-lib-dir,
381 [ --with-rlm-FOO-lib-dir=DIR Directory to look for library files used by module FOO],
389 dnl # extra argument: --with-rlm-FOO-include-dir
391 AC_ARG_WITH(rlm-FOO-include-dir,
392 [ --with-rlm-FOO-include-dir=DIR Directory to look for include files used by module FOO],
399 dnl See what include-style is used by the make program.
400 dnl AC_MSG_CHECKING(include style for make)
401 dnl echo "include /dev/null" > testmake.$$
402 dnl echo "all:" >> testmake.$$
403 dnl make -f testmake.$$ >/dev/null 2>&1
412 dnl rm -f testmake.$$
413 dnl AC_MSG_RESULT(" $INCLUDE")
414 dnl AC_SUBST(INCLUDE)
417 dnl extra argument: --with-udpfromto
419 AC_ARG_WITH(udpfromto,
420 [ --with-udpfromto Compile in UDPFROMTO support. (default=no)],
430 if test "x$WITH_UDPFROMTO" = "xyes"; then
431 AC_DEFINE(WITH_UDPFROMTO, [], [define if you want udpfromto])
434 dnl #############################################################
436 dnl # 1. Checks for programs
438 dnl #############################################################
441 AC_PATH_PROG(PERL, perl, /usr/local/bin/perl)
442 if test "x$ac_cv_path_PERL" = "x"; then
443 AC_MSG_WARN(perl not found - Simultaneous-Use and checkrad.pl may not work)
445 AC_PATH_PROG(SNMPGET, snmpget)
446 if test "x$ac_cv_path_SNMPGET" = "x"; then
447 AC_MSG_WARN(snmpget not found - Simultaneous-Use and checkrad.pl may not work)
450 AC_PATH_PROG(SNMPWALK, snmpwalk)
451 if test "x$ac_cv_path_SNMPWALK" = "x"; then
452 AC_MSG_WARN(snmpwalk not found - Simultaneous-Use and checkrad.pl may not work)
455 AC_PATH_PROG(RUSERS, rusers, /usr/bin/rusers)
457 dnl FIXME This is truly gross.
458 missing_dir=`cd $ac_aux_dir && pwd`
459 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
460 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
461 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
463 AC_PATH_PROG(LOCATE,locate)
464 AC_PATH_PROG(DIRNAME,dirname)
465 AC_PATH_PROG(GREP,grep)
467 dnl #############################################################
469 dnl # 2. Checks for libraries
471 dnl #############################################################
473 dnl If using pthreads, check for -lpthread (posix) or -lc_r (*BSD)
475 if test "x$WITH_THREADS" = "xyes"; then
476 if test $ac_cv_prog_suncc = "yes"; then
480 AC_CHECK_HEADERS(pthread.h, [], [ WITH_THREADS="no" ])
483 dnl # pthread stuff is usually in -lpthread
484 dnl # or in -lc_r, on *BSD
486 dnl # On Some systems, we need extra pre-processor flags, to get them to
487 dnl # to do the threading properly.
489 AC_CHECK_LIB(pthread, pthread_create,
490 [ CFLAGS="$CFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS"
491 LIBS="$LIBS -lpthread" ],
492 AC_CHECK_LIB(c_r, pthread_create,
493 [ CFLAGS="$CFLAGS -pthread -D_THREAD_SAFE" ],
494 [ WITH_THREADS="no" ]
500 dnl # If we have NO pthread libraries, remove any knowledge of threads.
502 if test "x$WITH_THREADS" != "xyes"; then
504 ac_cv_header_pthread_h="no"
508 dnl # We need sem_init() and friends, as they're the friendliest
509 dnl # semaphore functions for threading.
511 dnl # HP/UX requires linking with librt, too, to get the sem_* symbols.
512 dnl # Some systems have them in -lsem
513 dnl # Solaris has them in -lposix4
514 dnl # NetBSD has them in -lsemaphore
516 AC_SEARCH_LIBS(sem_init, pthread sem posix4 rt semaphore,
518 [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)]
522 dnl Check if we need -lsocket
523 AC_CHECK_LIB(socket, getsockname)
525 dnl Check for -lresolv
526 dnl This library may be needed later.
527 AC_CHECK_LIB(resolv, inet_aton)
529 dnl Check if we need -lnsl. Usually if we want to
530 dnl link against -lsocket we need to include -lnsl as well.
531 AC_CHECK_LIB(nsl, inet_ntoa)
533 dnl Check for OpenSSL libraries.
535 if test "x$WITH_OPENSSL" = xyes; then
537 old_LDFLAGS="$LDFLAGS"
538 if test "x$OPENSSL_LIB_DIR" != "x"; then
539 LDFLAGS="$LDFLAGS -L$OPENSSL_LIB_DIR"
541 AC_CHECK_LIB(crypto, DH_new,
543 LIBS="-lcrypto $LIBS"
544 AC_DEFINE(HAVE_LIBCRYPTO, 1,
545 [Define to 1 if you have the `crypto' library (-lcrypto).])
546 AC_CHECK_LIB(ssl, SSL_new,
548 AC_DEFINE(HAVE_LIBSSL, 1,
549 [Define to 1 if you have the `ssl' library (-lssl).])
550 if test "x$OPENSSL_LIB_DIR" != "x"; then
551 OPENSSL_LIBS="-L$OPENSSL_LIB_DIR"
553 OPENSSL_LIBS="$OPENSSL_LIBS -lcrypto -lssl -lcrypto"
557 LDFLAGS="$old_LDFLAGS"
560 AC_CHECK_LIB(ws2_32, htonl)
562 dnl Check the pcap library for the RADIUS sniffer.
564 AC_CHECK_LIB(pcap, pcap_open_live,
566 AC_DEFINE(HAVE_LIBPCAP, 1,
567 [Define to 1 if you have the `pcap' library (-lpcap).])
569 [ AC_MSG_WARN([pcap library not found, silently disabling the RADIUS sniffer.]) ])
573 dnl #############################################################
575 dnl # 3. Checks for header files
577 dnl #############################################################
580 dnl # Interix requires us to set -D_ALL_SOURCE, otherwise
581 dnl # getopt will be #included, but won't link. <sigh>
586 CFLAGS="$CFLAGS -D_ALL_SOURCE"
589 CFLAGS="$CFLAGS -DDARWIN"
590 LIBS="-framework DirectoryService $LIBS"
639 dnl FreeBSD requires sys/socket.h before net/if.h
640 AC_CHECK_HEADERS(net/if.h, [], [],
641 [#ifdef HAVE_SYS_SOCKET_H
642 # include <sys/socket.h>
647 AC_CHECK_HEADER(pcreposix.h, AC_DEFINE(HAVE_PCREPOSIX_H, [], [define this if we have the <pcreposix.h> header file]))
648 if test "x$ac_cv_header_pcreposix_h" = "xyes"; then
649 AC_DEFINE(HAVE_REGEX_H [], [define if we have any regex])
653 LIBS="$LIBS -lpcreposix"
656 AC_CHECK_HEADER(regex.h, AC_DEFINE(HAVE_REGEX_H, [], [define this if we have the <regex.h> header file]))
657 if test "x$ac_cv_header_regex_h" = "xyes"; then
666 ], [AC_DEFINE(HAVE_REG_EXTENDED, [], [define this if we have REG_EXTENDED (from <regex.h>)]) REGEX_EXTENDED=yes])
672 AC_SUBST(REGEX_EXTENDED)
675 dnl # other checks which require headers
677 if test "x$ac_cv_header_sys_security_h" = "xyes" && test "x$ac_cv_header_prot_h" = "xyes"
679 AC_DEFINE(OSFC2, [], [define if you have OSFC2 authentication])
682 if test "x$ac_cv_header_sia_h" = "xyes" && test "x$ac_cv_header_siad_h" = "xyes"
684 AC_DEFINE(OSFSIA, [], [define if you have OSFSIA authentication])
687 dnl Check for OpenSSL includes.
688 OPENSSL_INCLUDE="-DNO_OPENSSL"
689 if test "x$WITH_OPENSSL" = xyes; then
690 if test "x$OPENSSL_LIBS" = "x"; then
691 AC_MSG_NOTICE([skipping test for openssl/ssl.h])
693 old_CPPFLAGS=$CPPFLAGS
694 if test "x$OPENSSL_INCLUDE_DIR" != "x"; then
695 CPPFLAGS="$CPPFLAGS -I$OPENSSL_INCLUDE_DIR"
697 dnl # stupid RedHat shit
698 CPPFLAGS="$CPPFLAGS -DOPENSSL_NO_KRB5"
712 if test "x$OPENSSL_LIBS" != "x"; then
713 AC_MSG_CHECKING([for OpenSSL version >= 0.9.7])
715 [#include <openssl/crypto.h>
716 #if (OPENSSL_VERSION_NUMBER >= 0x00907000L)
720 if test "x$goodssl" != "xyes"; then
725 if test "x$OPENSSL_INCLUDE_DIR" != "x"; then
726 OPENSSL_INCLUDE="-I$OPENSSL_INCLUDE_DIR -DOPENSSL_NO_KRB5"
728 OPENSSL_INCLUDE="-DOPENSSL_NO_KRB5"
732 CPPFLAGS=$old_CPPFLAGS
735 AC_SUBST(OPENSSL_INCLUDE)
736 AC_SUBST(OPENSSL_LIBS)
739 dnl Check the pcap includes for the RADIUS sniffer.
740 if test "x$PCAP_LIBS" = x; then
741 AC_MSG_NOTICE([skipping test for pcap.h.])
743 AC_CHECK_HEADER(pcap.h,
744 AC_DEFINE(HAVE_PCAP_H, 1,
745 [Define to 1 if you have the <pcap.h> header file.]),
747 AC_MSG_WARN([pcap.h not found, silently disabling the RADIUS sniffer.])
750 AC_CHECK_LIB(pcap, pcap_fopen_offline,
751 [ AC_DEFINE(HAVE_PCAP_FOPEN_OFFLINE, 1,
752 [Define to 1 if you have the function pcap_fopen_offline.])
754 AC_CHECK_LIB(pcap, pcap_dump_fopen,
755 [ AC_DEFINE(HAVE_PCAP_DUMP_FOPEN, 1,
756 [Define to 1 if you have the function pcap_dump_fopen.])
761 dnl #############################################################
763 dnl # 4. Checks for typedefs
765 dnl #############################################################
768 dnl # Ensure that these are defined
775 dnl check for socklen_t
776 FR_CHECK_TYPE_INCLUDE([
777 #ifdef HAVE_SYS_TYPES_H
778 #include <sys/types.h>
780 #ifdef HAVE_SYS_SOCKET_H
781 #include <sys/socket.h>
783 ],socklen_t, int, [socklen_t is generally 'int' on systems which don't use it])
785 dnl check for uint8_t
786 FR_CHECK_TYPE_INCLUDE([
787 #ifdef HAVE_INTTYPES_H
788 #include <inttypes.h>
793 ],uint8_t, unsigned char, [uint8_t should be the canonical 'octet' for network traffic])
795 dnl check for uint16_t
796 FR_CHECK_TYPE_INCLUDE([
797 #ifdef HAVE_INTTYPES_H
798 #include <inttypes.h>
803 ],uint16_t, unsigned short, [uint16_t should be the canonical '2 octets' for network traffic])
805 dnl check for uint32_t
806 FR_CHECK_TYPE_INCLUDE([
807 #ifdef HAVE_INTTYPES_H
808 #include <inttypes.h>
813 ],uint32_t, unsigned int, [uint32_t should be the canonical 'network integer])
815 AC_CHECK_TYPE(struct in6_addr, AC_DEFINE(HAVE_STRUCT_IN6_ADDR, 1, [IPv6 address structure]), [], [
816 #ifdef HAVE_NETINET_IN_H
817 #include <netinet/in.h>
821 AC_CHECK_TYPE(struct sockaddr_storage, AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE, 1, [Generic socket addresses]), [], [
822 #ifdef HAVE_NETINET_IN_H
823 #include <netinet/in.h>
825 #ifdef HAVE_SYS_SOCKET_H
826 #include <sys/socket.h>
830 AC_CHECK_TYPE(struct sockaddr_in6, AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6, 1, [IPv6 socket addresses]), [], [
831 #ifdef HAVE_NETINET_IN_H
832 #include <netinet/in.h>
836 AC_CHECK_TYPE(struct addrinfo, AC_DEFINE(HAVE_STRUCT_ADDRINFO, 1, [Generic DNS lookups]), [], [
837 #ifdef HAVE_SYS_TYPES_H
838 #include <sys/types.h>
840 #ifdef HAVE_SYS_SOCKET_H
841 #include <sys/socket.h>
848 dnl #############################################################
850 dnl # 5. Checks for structures and functions
852 dnl #############################################################
887 RADIUSD_NEED_DECLARATIONS( \
899 dnl # check if we have utmpx.h
900 dnl # if so, check if struct utmpx has entry ut_xtime
901 dnl # if not, set it to define ut_xtime == ut_tv.tv_sec
902 if test "x$ac_cv_header_utmpx_h" = "xyes"
904 FR_CHECK_STRUCT_HAS_MEMBER([#include <utmpx.h>], [struct utmpx], ut_xtime)
905 if test "x$ac_cv_type_struct_utmpx_has_ut_xtime" = "x"
907 AC_DEFINE(ut_xtime,ut_tv.tv_sec, [define to something if you don't have ut_xtime in struct utmpx])
911 dnl # struct ip_pktinfo
912 FR_CHECK_STRUCT_HAS_MEMBER([#include <netinet/in.h>], [struct in_pktinfo], ipi_addr)
913 if test "x$ac_cv_type_struct_in_pktinfo_has_ipi_addr" = "xyes"
915 AC_DEFINE(HAVE_IP_PKTINFO, [], [define if you have IP_PKTINFO (Linux)])
918 dnl # struct in6_pktinfo
919 FR_CHECK_STRUCT_HAS_MEMBER([#include <netinet/in.h>], [struct in6_pktinfo], ipi6_addr)
920 if test "x$ac_cv_type_struct_in6_pktinfo_has_ipi6_addr" = "xyes"
922 AC_DEFINE(HAVE_IN6_PKTINFO, [], [define if you have IN6_PKTINFO (Linux)])
925 dnl #############################################################
927 dnl # 6. Checks for compiler characteristics
929 dnl #############################################################
932 dnl # Ensure that these are defined
937 dnl # See if this is OS/2
939 AC_MSG_CHECKING(type of OS)
942 if test "$OS" = "OS/2"; then
949 AC_MSG_CHECKING(for developer gcc flags)
950 if test "x$developer" = "xyes" -a "x$GCC" = "xyes"; then
951 devflags="-g -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -W -Wredundant-decls -Wundef"
952 CFLAGS="$CFLAGS $devflags"
954 AC_MSG_RESULT(yes. Using $devflags)
957 CFLAGS="$CFLAGS -DNDEBUG"
964 dnl #############################################################
966 dnl # 7. Checks for library functions
968 dnl #############################################################
971 LIBS="$LIBS $LIBLTDL"
972 AC_CHECK_FUNC(lt_dladvise_init, AC_DEFINE(HAVE_LT_DLADVISE_INIT, [], [Do we have the lt_dladvise_init function]))
975 dnl Check for libcrypt
976 dnl We use crypt(3) which may be in libc, or in libcrypt (eg FreeBSD)
977 AC_CHECK_LIB(crypt, crypt,
980 if test "$CRYPTLIB" != ""; then
981 AC_DEFINE(HAVE_CRYPT, [], [Do we have the crypt function])
983 AC_CHECK_FUNC(crypt, AC_DEFINE(HAVE_CRYPT, [], [Do we have the crypt function]))
986 dnl Check for libcipher
987 AC_CHECK_LIB(cipher, setkey,
988 CRYPTLIB="${CRYPTLIB} -lcipher"
992 dnl Check the style of gethostbyaddr, in order of preference
993 dnl GNU (_r eight args)
994 AC_DEFINE(GNUSTYLE, [1], [GNU-Style get*byaddr_r])
995 dnl SYSV (_r six args)
996 AC_DEFINE(SYSVSTYLE, [2], [SYSV-Style get*byaddr_r])
997 dnl BSD (three args, may not be thread safe)
998 AC_DEFINE(BSDSTYLE, [3], [BSD-Style get*byaddr_r])
999 dnl Tru64 has BSD version, but it is thread safe
1000 dnl http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/1739____.HTM
1001 dnl We need #stdio.h to define NULL on FreeBSD (at least)
1002 gethostbyaddrrstyle=""
1003 AC_MSG_CHECKING([gethostbyaddr_r() syntax])
1006 dnl With FreeBSD, check if there's a prototype for gethostbyaddr_r.
1007 dnl Some versions (FreeBSD 5.1?) have a symbol but no prototype - so we
1008 dnl override this test to BSDSTYLE. FreeBSD 6.2 and up have proper GNU
1010 AC_CHECK_DECLS([gethostbyaddr_r], [], [
1011 AC_DEFINE(GETHOSTBYADDRRSTYLE, BSDSTYLE,
1012 [style of gethostbyaddr_r functions ])
1013 gethostbyaddrrstyle=BSD
1014 AC_MSG_WARN([FreeBSD overridden to BSD-style])
1022 if test "x$gethostbyaddrrstyle" = "x"; then
1026 ], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL, NULL) ], [
1027 AC_DEFINE(GETHOSTBYADDRRSTYLE, GNUSTYLE, [style of gethostbyaddr_r functions ])
1028 gethostbyaddrrstyle=GNU
1031 if test "x$gethostbyaddrrstyle" = "x"; then
1035 ], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL) ] , [
1036 AC_DEFINE(GETHOSTBYADDRRSTYLE, SYSVSTYLE, [style of gethostbyaddr_r functions ])
1037 gethostbyaddrrstyle=SYSV
1040 if test "x$gethostbyaddrrstyle" = "x"; then
1044 ], [ gethostbyaddr(NULL, 0, 0) ], [
1045 AC_DEFINE(GETHOSTBYADDRRSTYLE, BSDSTYLE, [style of gethostbyaddr_r functions ])
1046 gethostbyaddrrstyle=BSD
1050 if test "x$gethostbyaddrrstyle" = "x"; then
1051 AC_MSG_RESULT([none! It must not exist, here.])
1053 AC_MSG_RESULT([${gethostbyaddrrstyle}-style])
1056 if test "x$gethostbyaddrrstyle" = "xBSD"; then
1057 AC_MSG_WARN([ ****** BSD-style gethostbyaddr might NOT be thread-safe! ****** ])
1060 dnl Check the style of gethostbyname, in order of preference
1061 dnl GNU (_r seven args)
1062 dnl SYSV (_r five args)
1063 dnl BSD (two args, may not be thread safe)
1064 dnl Tru64 has BSD version, but it _is_ thread safe
1065 dnl http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/1946____.HTM
1066 dnl We need #stdio.h to define NULL on FreeBSD (at least)
1067 gethostbynamerstyle=""
1068 AC_MSG_CHECKING([gethostbyname_r() syntax])
1072 ], [ gethostbyname_r(NULL, NULL, NULL, 0, NULL, NULL) ], [
1073 AC_DEFINE(GETHOSTBYNAMERSTYLE, GNUSTYLE, [style of gethostbyname_r functions ])
1074 gethostbynamerstyle=GNU
1076 if test "x$gethostbynamerstyle" = "x"; then
1080 ], [ gethostbyname_r(NULL, NULL, NULL, 0, NULL) ] , [
1081 AC_DEFINE(GETHOSTBYNAMERSTYLE, SYSVSTYLE, [style of gethostbyname_r functions ])
1082 gethostbynamerstyle=SYSV
1085 if test "x$gethostbynamerstyle" = "x"; then
1089 ], [ gethostbyname(NULL) ], [
1090 AC_DEFINE(GETHOSTBYNAMERSTYLE, BSDSTYLE, [style of gethostbyname_r functions ])
1091 gethostbynamerstyle=BSD
1095 if test "x$gethostbynamerstyle" = "x"; then
1096 AC_MSG_RESULT([none! It must not exist, here.])
1098 AC_MSG_RESULT([${gethostbynamerstyle}-style])
1101 if test "x$gethostbynamerstyle" = "xBSD"; then
1102 AC_MSG_WARN([ ****** BSD-style gethostbyname might NOT be thread-safe! ****** ])
1105 dnl check for non-posix solaris ctime_r (extra buflen int arg)
1106 AC_DEFINE(POSIXSTYLE, [1], [Posix-Style ctime_r])
1107 AC_DEFINE(SOLARISSTYLE, [2], [Solaris-Style ctime_r])
1109 AC_MSG_CHECKING([ctime_r() syntax])
1112 ], [ ctime_r(NULL, NULL, 0) ], [
1113 AC_DEFINE(CTIMERSTYLE, SOLARISSTYLE, [style of ctime_r function])
1114 ctimerstyle="SOLARIS"
1116 if test "x$ctimerstyle" = "x"; then
1119 ], [ ctime_r(NULL, NULL) ], [
1120 AC_DEFINE(CTIMERSTYLE, POSIXSTYLE, [style of ctime_r function])
1125 if test "x$ctimerstyle" = "x"; then
1126 AC_MSG_RESULT([none! It must not exist, here.])
1128 AC_MSG_RESULT([${ctimerstyle}-style])
1131 AC_SUBST(HOSTINFO, $host)
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/radsniff.mk \
1227 ./src/main/checkrad.pl \
1228 ./src/main/radlast \
1229 ./src/main/radtest \
1230 ./scripts/rc.radiusd \
1231 ./scripts/radwatch \
1232 ./scripts/radiusd.cron.daily \
1233 ./scripts/radiusd.cron.monthly \
1234 ./scripts/cryptpasswd \
1235 ./raddb/dictionary \
1236 ./raddb/radrelay.conf \
1237 ./raddb/radiusd.conf