1 dnl #############################################################
3 dnl # For information about autoconf, see:
5 dnl # http://www.gnu.org/software/autoconf/
7 dnl # The recommended order is:
10 dnl # 0. checks for compiler, libtool, and command line options
11 dnl # 1. checks for programs
12 dnl # 2. checks for libraries
13 dnl # 3. checks for header files
14 dnl # 4. checks for typedefs
15 dnl # 5. checks for structures and functions
16 dnl # 6. checks for compiler characteristics
17 dnl # 7. checks for library functions
18 dnl # 8. checks for system services
19 dnl # AC_OUTPUT([file...])
21 dnl #############################################################
24 export CFLAGS LIBS LDFLAGS CPPFLAGS
25 AC_INIT(src/main/radiusd.c)
26 AC_CONFIG_HEADER(src/include/autoconf.h)
27 AC_REVISION($Revision$)dnl
29 dnl # The version of the software
30 RADIUSD_VERSION=`cat VERSION`
31 RADIUSD_MAJOR_VERSION=`cat VERSION | sed 's/\..*//'`
32 RADIUSD_MINOR_VERSION=`cat VERSION | sed 's/^2\.//'`
35 dnl #############################################################
37 dnl # 0. Checks for compiler, libtool, and command line options.
39 dnl #############################################################
46 dnl # check for AIX, to allow us to use some BSD functions
47 dnl # must be before macros that call the compiler.
51 AC_PROG_GCC_TRADITIONAL
55 dnl Compile in large (2G+) file support.
58 dnl # check for system bytesex
59 dnl # AC_DEFINES WORDS_BIGENDIAN
63 AC_CHECK_PROG(GMAKE, gmake, yes, no)
64 if test $GMAKE = no; then
65 AC_PATH_PROG(MAKE, make, /usr/local/bin/make)
67 AC_PATH_PROG(MAKE, gmake, /usr/local/gnu/bin/make)
69 makever=`$ac_cv_path_MAKE --version 2>&1 | grep "GNU Make"`
70 if test -z "$makever"; then
71 AC_MSG_ERROR(GNU Make is not installed. Please download and install it
72 from ftp://prep.ai.mit.edu/pub/gnu/make/ before continuing.)
75 dnl libltdl is installable
76 AC_LIBLTDL_INSTALLABLE
78 dnl tell Makefile to build ltdl if needed
79 if test x"$enable_ltdl_install" = x"yes"; then
82 AC_SUBST(LTDL_SUBDIRS)
84 dnl use system-wide libtool, if it exists
85 AC_ARG_WITH(system-libtool,
86 [ --with-system-libtool try to use libtool installed in your system [default=use our own]],
87 [ AC_PATH_PROG(LIBTOOL, libtool,,$PATH:/usr/local/bin) ],
89 LIBTOOL="`pwd`/libtool"
91 dnl ensure that we're looking for dlopen
94 dnl Figure out how to build shared libraries
99 dnl Put this in later, when all distributed modules use autoconf.
100 dnl AC_ARG_WITH(disablemodulefoo,
101 dnl [ --without-rlm_foo Disables module compilation. Module list:]
102 dnl esyscmd([find src/modules -type d -name rlm_\* -print |\
103 dnl sed -e 's%src/modules/.*/% (sub)- %; s%.*/%- %' |\
104 dnl awk '{print " "$0}']))
106 AC_ARG_ENABLE(strict-dependencies,
107 [ --enable-strict-dependencies Fail configure on lack of module dependancy.])
109 dnl extra argument: --with-docdir
110 docdir='${datadir}/doc/freeradius'
111 AC_MSG_CHECKING(docdir)
113 [ --with-docdir=DIR Directory for documentation [DATADIR/doc/freeradius] ],
120 [[\\/$]]* | ?:[[\\/]]* )
124 AC_MSG_ERROR([expected an absolute directory name for --with-docdir: $withval])
129 AC_MSG_RESULT($docdir)
130 if test "x$docdir" = xno; then
131 AC_MSG_WARN(Documentation files will NOT be installed.)
134 dnl extra argument: --with-logdir
135 logdir='${localstatedir}/log/radius'
136 AC_MSG_CHECKING(logdir)
138 [ --with-logdir=DIR Directory for logfiles [LOCALSTATEDIR/log/radius] ],
141 AC_MSG_ERROR(Need logdir)
145 [[\\/$]]* | ?:[[\\/]]* )
149 AC_MSG_ERROR([expected an absolute directory name for --with-logdir: $withval])
154 AC_MSG_RESULT($logdir)
156 dnl extra argument: --with-radacctdir
157 radacctdir='${logdir}/radacct'
158 AC_MSG_CHECKING(radacctdir)
159 AC_ARG_WITH(radacctdir,
160 [ --with-radacctdir=DIR Directory for detail files [LOGDIR/radacct] ],
163 AC_MSG_ERROR(Need radacctdir)
167 [[\\/$]]* | ?:[[\\/]]* )
168 radacctdir="$withval"
171 AC_MSG_ERROR([expected an absolute directory name for --with-radacctdir: $withval])
176 AC_MSG_RESULT($radacctdir)
178 dnl extra argument: --with-raddbdir
179 raddbdir='${sysconfdir}/raddb'
180 AC_MSG_CHECKING(raddbdir)
181 AC_ARG_WITH(raddbdir,
182 [ --with-raddbdir=DIR Directory for config files [SYSCONFDIR/raddb] ],
185 AC_MSG_ERROR(Need raddbdir)
189 [[\\/$]]* | ?:[[\\/]]* )
193 AC_MSG_ERROR([expected an absolute directory name for --with-raddbdir: $withval])
198 AC_MSG_RESULT($raddbdir)
200 dnl extra argument: --with-ascend-binary
202 AC_ARG_WITH(ascend-binary,
203 [ --with-ascend-binary Include support for Ascend binary filter attributes (default=yes)],
211 if test "X$ASCEND_BINARY" = "Xyes"; then
212 AC_DEFINE(ASCEND_BINARY, [], [Include support for Ascend binary filter attributes])
215 dnl extra argument: --with-threads
218 [ --with-threads Use threads, if available. (default=yes) ],
227 dnl extra argument: --with-vmps
230 [ --with-vmps Compile in VMPS support. (default=yes)],
238 if test "x$WITH_VMPS" = "xyes"; then
239 AC_DEFINE(WITH_VMPS, [1], [define if you want VMPS support])
242 dnl extra argument: --with-dhcp
244 [ --with-dhcp Compile in DHCP support. (default=no)],
247 AC_DEFINE(WITH_DHCP, [1], [Include experimental support for DHCP])
256 dnl # Allow the user to specify a list of modules to be linked
257 dnl # statically to the server.
260 AC_ARG_WITH(static_modules,
261 [ --with-static-modules=QUOTED-MODULE-LIST],[
262 for i in $withval; do
263 STATIC_MODULES="$STATIC_MODULES -dlpreopen ../modules/rlm_$i/rlm_$i.la"
269 [ --with-modules=QUOTED-MODULE-LIST],[
270 for i in $withval; do
271 MODULES="$MODULES $i"
276 dnl # Enable developer C compiler warnings
278 AC_ARG_ENABLE(developer,
279 [ --enable-developer Enables features of interest to developers.],
280 [ case "$enableval" in
289 if test "x$developer" != "xno" -a -d $srcdir/CVS; then
290 dnl turn on the developer flag when taken from a CVS checkout (not a release)
294 if test "x$developer" != "xno" -a -d $srcdir/.git; then
295 dnl turn on the developer flag when taken from a git checkout (not a release)
299 dnl extra argument: --with-experimental-modules
301 AC_ARG_WITH(experimental-modules,
302 [ --with-experimental-modules Use experimental and unstable modules. (default=no) ],
311 dnl extra argument: --with-openssl
314 [ --with-openssl Use OpenSSL. (default=yes)],
326 dnl # extra argument: --with-openssl-includes=dir
329 AC_ARG_WITH(openssl-includes,
330 [ --with-openssl-includes=DIR Directory to look for OpenSSL include files],
332 *) OPENSSL_INCLUDE_DIR="$withval"
338 dnl # extra argument: --with-openssl-libraries=dir
341 AC_ARG_WITH(openssl-libraries,
342 [ --with-openssl-libraries=DIR Directory to look for OpenSSL library files],
344 *) OPENSSL_LIB_DIR="$withval"
350 dnl # These next two arguments don't actually do anything. They're
351 dnl # place holders so that the top-level configure script can tell
352 dnl # the user how to configure lower-level modules
356 dnl # extra argument: --with-rlm-FOO-lib-dir
358 AC_ARG_WITH(rlm-FOO-lib-dir,
359 [ --with-rlm-FOO-lib-dir=DIR Directory to look for library files used by module FOO],
367 dnl # extra argument: --with-rlm-FOO-include-dir
369 AC_ARG_WITH(rlm-FOO-include-dir,
370 [ --with-rlm-FOO-include-dir=DIR Directory to look for include files used by module FOO],
377 dnl See what include-style is used by the make program.
378 dnl AC_MSG_CHECKING(include style for make)
379 dnl echo "include /dev/null" > testmake.$$
380 dnl echo "all:" >> testmake.$$
381 dnl make -f testmake.$$ >/dev/null 2>&1
390 dnl rm -f testmake.$$
391 dnl AC_MSG_RESULT(" $INCLUDE")
392 dnl AC_SUBST(INCLUDE)
395 dnl extra argument: --with-udpfromto
397 AC_ARG_WITH(udpfromto,
398 [ --with-udpfromto Compile in UDPFROMTO support. (default=no)],
408 if test "x$WITH_UDPFROMTO" = "xyes"; then
409 AC_DEFINE(WITH_UDPFROMTO, [], [define if you want udpfromto])
412 dnl #############################################################
414 dnl # 1. Checks for programs
416 dnl #############################################################
419 AC_PATH_PROG(PERL, perl, /usr/local/bin/perl)
420 if test "x$ac_cv_path_PERL" = "x"; then
421 AC_MSG_WARN(perl not found - Simultaneous-Use and checkrad.pl may not work)
423 AC_PATH_PROG(SNMPGET, snmpget)
424 if test "x$ac_cv_path_SNMPGET" = "x"; then
425 AC_MSG_WARN(snmpget not found - Simultaneous-Use and checkrad.pl may not work)
428 AC_PATH_PROG(SNMPWALK, snmpwalk)
429 if test "x$ac_cv_path_SNMPWALK" = "x"; then
430 AC_MSG_WARN(snmpwalk not found - Simultaneous-Use and checkrad.pl may not work)
433 AC_PATH_PROG(RUSERS, rusers, /usr/bin/rusers)
435 dnl FIXME This is truly gross.
436 missing_dir=`cd $ac_aux_dir && pwd`
437 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
438 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
439 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
441 AC_PATH_PROG(LOCATE,locate)
442 AC_PATH_PROG(DIRNAME,dirname)
443 AC_PATH_PROG(GREP,grep)
445 dnl #############################################################
447 dnl # 2. Checks for libraries
449 dnl #############################################################
451 dnl If using pthreads, check for -lpthread (posix) or -lc_r (*BSD)
453 if test "x$WITH_THREADS" = "xyes"; then
454 if test $ac_cv_prog_suncc = "yes"; then
458 AC_CHECK_HEADERS(pthread.h, [], [ WITH_THREADS="no" ])
461 dnl # pthread stuff is usually in -lpthread
462 dnl # or in -lc_r, on *BSD
464 dnl # On Some systems, we need extra pre-processor flags, to get them to
465 dnl # to do the threading properly.
467 AC_CHECK_LIB(pthread, pthread_create,
468 [ CFLAGS="$CFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS"
469 LIBS="$LIBS -lpthread" ],
470 AC_CHECK_LIB(c_r, pthread_create,
471 [ CFLAGS="$CFLAGS -pthread -D_THREAD_SAFE" ],
472 [ WITH_THREADS="no" ]
478 dnl # If we have NO pthread libraries, remove any knowledge of threads.
480 if test "x$WITH_THREADS" != "xyes"; then
482 ac_cv_header_pthread_h="no"
486 dnl # We need sem_init() and friends, as they're the friendliest
487 dnl # semaphore functions for threading.
489 dnl # HP/UX requires linking with librt, too, to get the sem_* symbols.
490 dnl # Some systems have them in -lsem
491 dnl # Solaris has them in -lposix4
492 dnl # NetBSD has them in -lsemaphore
494 AC_SEARCH_LIBS(sem_init, pthread sem posix4 rt semaphore,
496 [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)]
500 dnl Check if we need -lsocket
501 AC_CHECK_LIB(socket, getsockname)
503 dnl Check for -lresolv
504 dnl This library may be needed later.
505 AC_CHECK_LIB(resolv, inet_aton)
507 dnl Check if we need -lnsl. Usually if we want to
508 dnl link against -lsocket we need to include -lnsl as well.
509 AC_CHECK_LIB(nsl, inet_ntoa)
511 dnl Check for OpenSSL libraries.
513 if test "x$WITH_OPENSSL" = xyes; then
515 if test "x$OPENSSL_LIB_DIR" != "x"; then
516 LIBS="-L$OPENSSL_LIB_DIR $LIBS"
518 AC_CHECK_LIB(crypto, DH_new,
520 LIBS="-lcrypto $LIBS"
521 AC_DEFINE(HAVE_LIBCRYPTO, 1,
522 [Define to 1 if you have the `crypto' library (-lcrypto).])
523 AC_CHECK_LIB(ssl, SSL_new,
525 AC_DEFINE(HAVE_LIBSSL, 1,
526 [Define to 1 if you have the `ssl' library (-lssl).])
527 if test "x$OPENSSL_LIB_DIR" != "x"; then
528 OPENSSL_LIBS="-L$OPENSSL_LIB_DIR"
530 OPENSSL_LIBS="$OPENSSL_LIBS -lcrypto -lssl -lcrypto"
536 AC_CHECK_LIB(ws2_32, htonl)
538 dnl Check the pcap library for the RADIUS sniffer.
540 AC_CHECK_LIB(pcap, pcap_open_live,
542 AC_DEFINE(HAVE_LIBPCAP, 1,
543 [Define to 1 if you have the `pcap' library (-lpcap).])
545 [ AC_MSG_WARN([pcap library not found, silently disabling the RADIUS sniffer.]) ])
547 dnl #############################################################
549 dnl # 3. Checks for header files
551 dnl #############################################################
554 dnl # Interix requires us to set -D_ALL_SOURCE, otherwise
555 dnl # getopt will be #included, but won't link. <sigh>
560 CFLAGS="$CFLAGS -D_ALL_SOURCE"
563 CFLAGS="$CFLAGS -DDARWIN"
564 LIBS="-framework DirectoryService $LIBS"
610 dnl FreeBSD requires sys/socket.h before net/if.h
611 AC_CHECK_HEADERS(net/if.h, [], [],
612 [#ifdef HAVE_SYS_SOCKET_H
613 # include <sys/socket.h>
618 AC_CHECK_HEADER(regex.h, AC_DEFINE(HAVE_REGEX_H, [], [define this if we have the <regex.h> header file]))
619 if test "x$ac_cv_header_regex_h" = "xyes"; then
627 ], [AC_DEFINE(HAVE_REG_EXTENDED, [], [define this if we have REG_EXTENDED (from <regex.h>)]) REGEX_EXTENDED=yes])
630 AC_SUBST(REGEX_EXTENDED)
633 dnl # other checks which require headers
635 if test "x$ac_cv_header_sys_security_h" = "xyes" && test "x$ac_cv_header_prot_h" = "xyes"
637 AC_DEFINE(OSFC2, [], [define if you have OSFC2 authentication])
640 if test "x$ac_cv_header_sia_h" = "xyes" && test "x$ac_cv_header_siad_h" = "xyes"
642 AC_DEFINE(OSFSIA, [], [define if you have OSFSIA authentication])
645 dnl Check for OpenSSL includes.
646 OPENSSL_INCLUDE="-DNO_OPENSSL"
647 if test "x$WITH_OPENSSL" = xyes; then
648 if test "x$OPENSSL_LIBS" = "x"; then
649 AC_MSG_NOTICE([skipping test for openssl/ssl.h])
651 old_CPPFLAGS=$CPPFLAGS
652 if test "x$OPENSSL_INCLUDE_DIR" != "x"; then
653 CPPFLAGS="$CPPFLAGS -I$OPENSSL_INCLUDE_DIR"
655 dnl # stupid RedHat shit
656 CPPFLAGS="$CPPFLAGS -DOPENSSL_NO_KRB5"
666 if test "x$OPENSSL_LIBS" != "x"; then
667 AC_MSG_CHECKING([for OpenSSL version >= 0.9.7])
669 [#include <openssl/crypto.h>
670 #if (OPENSSL_VERSION_NUMBER >= 0x00907000L)
674 if test "x$goodssl" != "xyes"; then
679 if test "x$OPENSSL_INCLUDE_DIR" != "x"; then
680 OPENSSL_INCLUDE="-I$OPENSSL_INCLUDE_DIR -DOPENSSL_NO_KRB5"
682 OPENSSL_INCLUDE="-DOPENSSL_NO_KRB5"
686 CPPFLAGS=$old_CPPFLAGS
689 AC_SUBST(OPENSSL_INCLUDE)
690 AC_SUBST(OPENSSL_LIBS)
693 dnl Check the pcap includes for the RADIUS sniffer.
694 if test "x$PCAP_LIBS" = x; then
695 AC_MSG_NOTICE([skipping test for pcap.h.])
697 AC_CHECK_HEADER(pcap.h,
698 AC_DEFINE(HAVE_PCAP_H, 1,
699 [Define to 1 if you have the <pcap.h> header file.]),
701 AC_MSG_WARN([pcap.h not found, silently disabling the RADIUS sniffer.])
706 dnl #############################################################
708 dnl # 4. Checks for typedefs
710 dnl #############################################################
713 dnl # Ensure that these are defined
720 dnl check for socklen_t
721 FR_CHECK_TYPE_INCLUDE([
722 #ifdef HAVE_SYS_TYPES_H
723 #include <sys/types.h>
725 #ifdef HAVE_SYS_SOCKET_H
726 #include <sys/socket.h>
728 ],socklen_t, int, [socklen_t is generally 'int' on systems which don't use it])
730 dnl check for uint8_t
731 FR_CHECK_TYPE_INCLUDE([
732 #ifdef HAVE_INTTYPES_H
733 #include <inttypes.h>
738 ],uint8_t, unsigned char, [uint8_t should be the canonical 'octet' for network traffic])
740 dnl check for uint16_t
741 FR_CHECK_TYPE_INCLUDE([
742 #ifdef HAVE_INTTYPES_H
743 #include <inttypes.h>
748 ],uint16_t, unsigned short, [uint16_t should be the canonical '2 octets' for network traffic])
750 dnl check for uint32_t
751 FR_CHECK_TYPE_INCLUDE([
752 #ifdef HAVE_INTTYPES_H
753 #include <inttypes.h>
758 ],uint32_t, unsigned int, [uint32_t should be the canonical 'network integer])
760 AC_CHECK_TYPE(struct in6_addr, AC_DEFINE(HAVE_STRUCT_IN6_ADDR, 1, [IPv6 address structure]), [], [
761 #ifdef HAVE_NETINET_IN_H
762 #include <netinet/in.h>
766 AC_CHECK_TYPE(struct sockaddr_storage, AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE, 1, [Generic socket addresses]), [], [
767 #ifdef HAVE_NETINET_IN_H
768 #include <netinet/in.h>
770 #ifdef HAVE_SYS_SOCKET_H
771 #include <sys/socket.h>
775 AC_CHECK_TYPE(struct sockaddr_in6, AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6, 1, [IPv6 socket addresses]), [], [
776 #ifdef HAVE_NETINET_IN_H
777 #include <netinet/in.h>
781 AC_CHECK_TYPE(struct addrinfo, AC_DEFINE(HAVE_STRUCT_ADDRINFO, 1, [Generic DNS lookups]), [], [
782 #ifdef HAVE_SYS_TYPES_H
783 #include <sys/types.h>
785 #ifdef HAVE_SYS_SOCKET_H
786 #include <sys/socket.h>
793 dnl #############################################################
795 dnl # 5. Checks for structures and functions
797 dnl #############################################################
828 RADIUSD_NEED_DECLARATIONS( \
840 dnl # check if we have utmpx.h
841 dnl # if so, check if struct utmpx has entry ut_xtime
842 dnl # if not, set it to define ut_xtime == ut_tv.tv_sec
843 if test "x$ac_cv_header_utmpx_h" = "xyes"
845 FR_CHECK_STRUCT_HAS_MEMBER([#include <utmpx.h>], [struct utmpx], ut_xtime)
846 if test "x$ac_cv_type_struct_utmpx_has_ut_xtime" = "x"
848 AC_DEFINE(ut_xtime,ut_tv.tv_sec, [define to something if you don't have ut_xtime in struct utmpx])
852 dnl # struct ip_pktinfo
853 FR_CHECK_STRUCT_HAS_MEMBER([#include <netinet/in.h>], [struct in_pktinfo], ipi_addr)
854 if test "x$ac_cv_type_struct_in_pktinfo_has_ipi_addr" = "xyes"
856 AC_DEFINE(HAVE_IP_PKTINFO, [], [define if you have IP_PKTINFO (Linux)])
859 dnl # struct in6_pktinfo
860 FR_CHECK_STRUCT_HAS_MEMBER([#include <netinet/in.h>], [struct in6_pktinfo], ipi6_addr)
861 if test "x$ac_cv_type_struct_in6_pktinfo_has_ipi6_addr" = "xyes"
863 AC_DEFINE(HAVE_IN6_PKTINFO, [], [define if you have IN6_PKTINFO (Linux)])
866 dnl #############################################################
868 dnl # 6. Checks for compiler characteristics
870 dnl #############################################################
873 dnl # Ensure that these are defined
878 dnl # See if this is OS/2
880 AC_MSG_CHECKING(type of OS)
883 if test "$OS" = "OS/2"; then
891 dnl # Set Default CFLAGS
893 if test "x$GCC" = "xyes"; then
894 CFLAGS="$CFLAGS -Wall -D_GNU_SOURCE"
897 AC_MSG_CHECKING(for developer gcc flags)
898 if test "x$developer" = "xyes" -a "x$GCC" = "xyes"; then
899 devflags="-g -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -W -Wredundant-decls -Wundef"
900 CFLAGS="$CFLAGS $devflags"
902 AC_MSG_RESULT(yes. Using $devflags)
905 CFLAGS="$CFLAGS -DNDEBUG"
912 dnl #############################################################
914 dnl # 7. Checks for library functions
916 dnl #############################################################
918 dnl Check for libcrypt
919 dnl We use crypt(3) which may be in libc, or in libcrypt (eg FreeBSD)
920 AC_CHECK_LIB(crypt, crypt,
923 if test "$CRYPTLIB" != ""; then
924 AC_DEFINE(HAVE_CRYPT, [], [Do we have the crypt function])
926 AC_CHECK_FUNC(crypt, AC_DEFINE(HAVE_CRYPT, [], [Do we have the crypt function]))
929 dnl Check for libcipher
930 AC_CHECK_LIB(cipher, setkey,
931 CRYPTLIB="${CRYPTLIB} -lcipher"
935 dnl Check the style of gethostbyaddr, in order of preference
936 dnl GNU (_r eight args)
937 AC_DEFINE(GNUSTYLE, [1], [GNU-Style get*byaddr_r])
938 dnl SYSV (_r six args)
939 AC_DEFINE(SYSVSTYLE, [2], [SYSV-Style get*byaddr_r])
940 dnl BSD (three args, may not be thread safe)
941 AC_DEFINE(BSDSTYLE, [3], [BSD-Style get*byaddr_r])
942 dnl Tru64 has BSD version, but it is thread safe
943 dnl http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/1739____.HTM
944 dnl We need #stdio.h to define NULL on FreeBSD (at least)
945 gethostbyaddrrstyle=""
946 AC_MSG_CHECKING([gethostbyaddr_r() syntax])
949 dnl With FreeBSD, check if there's a prototype for gethostbyaddr_r.
950 dnl Some versions (FreeBSD 5.1?) have a symbol but no prototype - so we
951 dnl override this test to BSDSTYLE. FreeBSD 6.2 and up have proper GNU
953 AC_CHECK_DECLS([gethostbyaddr_r], [], [
954 AC_DEFINE(GETHOSTBYADDRRSTYLE, BSDSTYLE,
955 [style of gethostbyaddr_r functions ])
956 gethostbyaddrrstyle=BSD
957 AC_MSG_WARN([FreeBSD overridden to BSD-style])
965 if test "x$gethostbyaddrrstyle" = "x"; then
969 ], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL, NULL) ], [
970 AC_DEFINE(GETHOSTBYADDRRSTYLE, GNUSTYLE, [style of gethostbyaddr_r functions ])
971 gethostbyaddrrstyle=GNU
974 if test "x$gethostbyaddrrstyle" = "x"; then
978 ], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL) ] , [
979 AC_DEFINE(GETHOSTBYADDRRSTYLE, SYSVSTYLE, [style of gethostbyaddr_r functions ])
980 gethostbyaddrrstyle=SYSV
983 if test "x$gethostbyaddrrstyle" = "x"; then
987 ], [ gethostbyaddr(NULL, 0, 0) ], [
988 AC_DEFINE(GETHOSTBYADDRRSTYLE, BSDSTYLE, [style of gethostbyaddr_r functions ])
989 gethostbyaddrrstyle=BSD
993 if test "x$gethostbyaddrrstyle" = "x"; then
994 AC_MSG_RESULT([none! It must not exist, here.])
996 AC_MSG_RESULT([${gethostbyaddrrstyle}-style])
999 if test "x$gethostbyaddrrstyle" = "xBSD"; then
1000 AC_MSG_WARN([ ****** BSD-style gethostbyaddr might NOT be thread-safe! ****** ])
1003 dnl Check the style of gethostbyname, in order of preference
1004 dnl GNU (_r seven args)
1005 dnl SYSV (_r five args)
1006 dnl BSD (two args, may not be thread safe)
1007 dnl Tru64 has BSD version, but it _is_ thread safe
1008 dnl http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/1946____.HTM
1009 dnl We need #stdio.h to define NULL on FreeBSD (at least)
1010 gethostbynamerstyle=""
1011 AC_MSG_CHECKING([gethostbyname_r() syntax])
1015 ], [ gethostbyname_r(NULL, NULL, NULL, 0, NULL, NULL) ], [
1016 AC_DEFINE(GETHOSTBYNAMERSTYLE, GNUSTYLE, [style of gethostbyname_r functions ])
1017 gethostbynamerstyle=GNU
1019 if test "x$gethostbynamerstyle" = "x"; then
1023 ], [ gethostbyname_r(NULL, NULL, NULL, 0, NULL) ] , [
1024 AC_DEFINE(GETHOSTBYNAMERSTYLE, SYSVSTYLE, [style of gethostbyname_r functions ])
1025 gethostbynamerstyle=SYSV
1028 if test "x$gethostbynamerstyle" = "x"; then
1032 ], [ gethostbyname(NULL) ], [
1033 AC_DEFINE(GETHOSTBYNAMERSTYLE, BSDSTYLE, [style of gethostbyname_r functions ])
1034 gethostbynamerstyle=BSD
1038 if test "x$gethostbynamerstyle" = "x"; then
1039 AC_MSG_RESULT([none! It must not exist, here.])
1041 AC_MSG_RESULT([${gethostbynamerstyle}-style])
1044 if test "x$gethostbynamerstyle" = "xBSD"; then
1045 AC_MSG_WARN([ ****** BSD-style gethostbyname might NOT be thread-safe! ****** ])
1048 dnl check for non-posix solaris ctime_r (extra buflen int arg)
1049 AC_DEFINE(POSIXSTYLE, [1], [Posix-Style ctime_r])
1050 AC_DEFINE(SOLARISSTYLE, [2], [Solaris-Style ctime_r])
1052 AC_MSG_CHECKING([ctime_r() syntax])
1055 ], [ ctime_r(NULL, NULL, 0) ], [
1056 AC_DEFINE(CTIMERSTYLE, SOLARISSTYLE, [style of ctime_r function])
1057 ctimerstyle="SOLARIS"
1059 if test "x$ctimerstyle" = "x"; then
1062 ], [ ctime_r(NULL, NULL) ], [
1063 AC_DEFINE(CTIMERSTYLE, POSIXSTYLE, [style of ctime_r function])
1068 if test "x$ctimerstyle" = "x"; then
1069 AC_MSG_RESULT([none! It must not exist, here.])
1071 AC_MSG_RESULT([${ctimerstyle}-style])
1074 AC_SUBST(HOSTINFO, $host)
1076 dnl #############################################################
1078 dnl # 8. Checks for system services
1080 dnl #############################################################
1083 dnl # Figure out where libtool is located,
1087 AC_MSG_RESULT([top_builddir=$top_builddir])
1088 dnl # AC_SUBST(top_builddir)
1092 dnl import libtool stuff
1094 dnl #############################################################
1096 dnl # Configure in any module directories.
1098 dnl #############################################################
1100 mysubdirs="$LIBLTDLPATH"
1101 if test "x$EXPERIMENTAL" = "xyes"; then
1102 bar=`ls -1 "${srcdir}"/src/modules/rlm_*/configure | sed 's%/configure%%'`
1103 dnl # get rid of LF's.
1104 mysubdirs=`echo $mysubdirs $bar`
1107 dnl # Find 'configure' in ONLY the stable modules
1109 for bar in `cat "${srcdir}"/src/modules/stable`; do
1110 if test -f "${srcdir}"/src/modules/$bar/configure; then
1111 mysubdirs="$mysubdirs src/modules/$bar"
1116 dnl ############################################################
1117 dnl # make modules by list
1118 dnl #############################################################
1119 if test "x$EXPERIMENTAL" = "xyes"; then
1120 for foo in `ls -1 "${srcdir}"/src/modules | grep rlm_`; do
1121 MODULES="$MODULES $foo"
1125 dnl # make ONLY the stable modules
1127 for foo in `cat "${srcdir}"/src/modules/stable`; do
1128 MODULES="$MODULES $foo"
1133 dnl # Don't change the variable name here. Autoconf goes bonkers
1136 AC_CONFIG_SUBDIRS($LTDL_SUBDIRS $mysubdirs)
1139 dnl #############################################################
1141 dnl # And finally, output the results.
1143 dnl #############################################################
1145 AC_CONFIG_COMMANDS([stamp-h], [echo timestamp > src/include/stamp-h])
1146 AC_CONFIG_COMMANDS([build-radpaths-h], [(cd ./src/include && /bin/sh ./build-radpaths-h)])
1147 AC_CONFIG_COMMANDS([main-chmod], [(cd ./src/main && chmod +x checkrad.pl radlast radtest)])
1148 AC_CONFIG_COMMANDS([scripts-chmod], [(cd ./scripts && chmod +x rc.radiusd radwatch radiusd.cron.daily radiusd.cron.monthly cryptpasswd)])
1151 dnl # Substitute whatever libraries we found to be necessary
1154 AC_SUBST(INSTALLSTRIP)
1156 USE_SHARED_LIBS=$enable_shared
1157 AC_SUBST(USE_SHARED_LIBS)
1158 USE_STATIC_LIBS=$enable_static
1159 AC_SUBST(USE_STATIC_LIBS)
1160 AC_SUBST(STATIC_MODULES)
1161 AC_SUBST(RADIUSD_MAJOR_VERSION)
1162 AC_SUBST(RADIUSD_MINOR_VERSION)
1163 AC_SUBST(RADIUSD_VERSION)
1167 ./src/include/build-radpaths-h \
1168 ./src/main/Makefile \
1169 ./src/main/checkrad.pl \
1170 ./src/main/radlast \
1171 ./src/main/radtest \
1172 ./scripts/rc.radiusd \
1173 ./scripts/radwatch \
1174 ./scripts/radiusd.cron.daily \
1175 ./scripts/radiusd.cron.monthly \
1176 ./scripts/cryptpasswd \
1177 ./raddb/dictionary \
1178 ./raddb/radiusd.conf