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 AC_ARG_WITH(system-libtldl,
76 [ --with-system-libtldl Use the libltdl installed in your system (default=use our own)],
81 enable_ltdl_install=no
84 AC_LIBLTDL_INSTALLABLE
86 dnl tell Makefile to build ltdl if needed
87 if test x"$enable_ltdl_install" = x"yes"; then
91 AC_SUBST(LTDL_SUBDIRS)
93 dnl use system-wide libtool, if it exists
94 AC_ARG_WITH(system-libtool,
95 [ --with-system-libtool Use the libtool installed in your system (default=use our own)],
96 [ AC_PATH_PROG(LIBTOOL, libtool,,$PATH:/usr/local/bin) ],
98 LIBTOOL="`pwd`/libtool"
100 dnl ensure that we're looking for dlopen
103 dnl Figure out how to build shared libraries
108 dnl Put this in later, when all distributed modules use autoconf.
109 dnl AC_ARG_WITH(disablemodulefoo,
110 dnl [ --without-rlm_foo Disables module compilation. Module list:]
111 dnl esyscmd([find src/modules -type d -name rlm_\* -print |\
112 dnl sed -e 's%src/modules/.*/% (sub)- %; s%.*/%- %' |\
113 dnl awk '{print " "$0}']))
115 AC_ARG_ENABLE(strict-dependencies,
116 [ --enable-strict-dependencies Fail configure on lack of module dependancy.])
118 dnl extra argument: --with-docdir
119 docdir='${datadir}/doc/freeradius'
120 AC_MSG_CHECKING(docdir)
122 [ --with-docdir=DIR Directory for documentation [DATADIR/doc/freeradius] ],
129 [[\\/$]]* | ?:[[\\/]]* )
133 AC_MSG_ERROR([expected an absolute directory name for --with-docdir: $withval])
138 AC_MSG_RESULT($docdir)
139 if test "x$docdir" = xno; then
140 AC_MSG_WARN(Documentation files will NOT be installed.)
143 dnl extra argument: --with-logdir
144 logdir='${localstatedir}/log/radius'
145 AC_MSG_CHECKING(logdir)
147 [ --with-logdir=DIR Directory for logfiles [LOCALSTATEDIR/log/radius] ],
150 AC_MSG_ERROR(Need logdir)
154 [[\\/$]]* | ?:[[\\/]]* )
158 AC_MSG_ERROR([expected an absolute directory name for --with-logdir: $withval])
163 AC_MSG_RESULT($logdir)
165 dnl extra argument: --with-radacctdir
166 radacctdir='${logdir}/radacct'
167 AC_MSG_CHECKING(radacctdir)
168 AC_ARG_WITH(radacctdir,
169 [ --with-radacctdir=DIR Directory for detail files [LOGDIR/radacct] ],
172 AC_MSG_ERROR(Need radacctdir)
176 [[\\/$]]* | ?:[[\\/]]* )
177 radacctdir="$withval"
180 AC_MSG_ERROR([expected an absolute directory name for --with-radacctdir: $withval])
185 AC_MSG_RESULT($radacctdir)
187 dnl extra argument: --with-raddbdir
188 raddbdir='${sysconfdir}/raddb'
189 AC_MSG_CHECKING(raddbdir)
190 AC_ARG_WITH(raddbdir,
191 [ --with-raddbdir=DIR Directory for config files [SYSCONFDIR/raddb] ],
194 AC_MSG_ERROR(Need raddbdir)
198 [[\\/$]]* | ?:[[\\/]]* )
202 AC_MSG_ERROR([expected an absolute directory name for --with-raddbdir: $withval])
207 AC_MSG_RESULT($raddbdir)
209 dnl extra argument: --with-ascend-binary
211 AC_ARG_WITH(ascend-binary,
212 [ --with-ascend-binary Include support for Ascend binary filter attributes (default=yes)],
220 if test "X$ASCEND_BINARY" = "Xyes"; then
221 AC_DEFINE(ASCEND_BINARY, [], [Include support for Ascend binary filter attributes])
224 dnl extra argument: --with-threads
227 [ --with-threads Use threads, if available. (default=yes) ],
236 dnl extra argument: --with-vmps
239 [ --with-vmps Compile in VMPS support. (default=yes)],
247 if test "x$WITH_VMPS" = "xyes"; then
248 AC_DEFINE(WITH_VMPS, [1], [define if you want VMPS support])
251 dnl extra argument: --with-dhcp
253 [ --with-dhcp Compile in DHCP support. (default=no)],
256 AC_DEFINE(WITH_DHCP, [1], [Include experimental support for DHCP])
265 dnl # Allow the user to specify a list of modules to be linked
266 dnl # statically to the server.
269 AC_ARG_WITH(static_modules,
270 [ --with-static-modules=QUOTED-MODULE-LIST],[
271 for i in $withval; do
272 STATIC_MODULES="$STATIC_MODULES -dlpreopen ../modules/rlm_$i/rlm_$i.la"
278 [ --with-modules=QUOTED-MODULE-LIST],[
279 for i in $withval; do
280 MODULES="$MODULES $i"
285 dnl # Enable developer C compiler warnings
287 AC_ARG_ENABLE(developer,
288 [ --enable-developer Enables features of interest to developers.],
289 [ case "$enableval" in
298 if test "x$developer" != "xno" -a -d $srcdir/CVS; then
299 dnl turn on the developer flag when taken from a CVS checkout (not a release)
303 if test "x$developer" != "xno" -a -d $srcdir/.git; then
304 dnl turn on the developer flag when taken from a git checkout (not a release)
308 dnl extra argument: --with-experimental-modules
310 AC_ARG_WITH(experimental-modules,
311 [ --with-experimental-modules Use experimental and unstable modules. (default=no) ],
320 dnl extra argument: --with-openssl
323 [ --with-openssl Use OpenSSL. (default=yes)],
335 dnl # extra argument: --with-openssl-includes=dir
338 AC_ARG_WITH(openssl-includes,
339 [ --with-openssl-includes=DIR Directory to look for OpenSSL include files],
341 *) OPENSSL_INCLUDE_DIR="$withval"
347 dnl # extra argument: --with-openssl-libraries=dir
350 AC_ARG_WITH(openssl-libraries,
351 [ --with-openssl-libraries=DIR Directory to look for OpenSSL library files],
353 *) OPENSSL_LIB_DIR="$withval"
359 dnl # These next two arguments don't actually do anything. They're
360 dnl # place holders so that the top-level configure script can tell
361 dnl # the user how to configure lower-level modules
365 dnl # extra argument: --with-rlm-FOO-lib-dir
367 AC_ARG_WITH(rlm-FOO-lib-dir,
368 [ --with-rlm-FOO-lib-dir=DIR Directory to look for library files used by module FOO],
376 dnl # extra argument: --with-rlm-FOO-include-dir
378 AC_ARG_WITH(rlm-FOO-include-dir,
379 [ --with-rlm-FOO-include-dir=DIR Directory to look for include files used by module FOO],
386 dnl See what include-style is used by the make program.
387 dnl AC_MSG_CHECKING(include style for make)
388 dnl echo "include /dev/null" > testmake.$$
389 dnl echo "all:" >> testmake.$$
390 dnl make -f testmake.$$ >/dev/null 2>&1
399 dnl rm -f testmake.$$
400 dnl AC_MSG_RESULT(" $INCLUDE")
401 dnl AC_SUBST(INCLUDE)
404 dnl extra argument: --with-udpfromto
406 AC_ARG_WITH(udpfromto,
407 [ --with-udpfromto Compile in UDPFROMTO support. (default=no)],
417 if test "x$WITH_UDPFROMTO" = "xyes"; then
418 AC_DEFINE(WITH_UDPFROMTO, [], [define if you want udpfromto])
421 dnl #############################################################
423 dnl # 1. Checks for programs
425 dnl #############################################################
428 AC_PATH_PROG(PERL, perl, /usr/local/bin/perl)
429 if test "x$ac_cv_path_PERL" = "x"; then
430 AC_MSG_WARN(perl not found - Simultaneous-Use and checkrad.pl may not work)
432 AC_PATH_PROG(SNMPGET, snmpget)
433 if test "x$ac_cv_path_SNMPGET" = "x"; then
434 AC_MSG_WARN(snmpget not found - Simultaneous-Use and checkrad.pl may not work)
437 AC_PATH_PROG(SNMPWALK, snmpwalk)
438 if test "x$ac_cv_path_SNMPWALK" = "x"; then
439 AC_MSG_WARN(snmpwalk not found - Simultaneous-Use and checkrad.pl may not work)
442 AC_PATH_PROG(RUSERS, rusers, /usr/bin/rusers)
444 dnl FIXME This is truly gross.
445 missing_dir=`cd $ac_aux_dir && pwd`
446 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
447 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
448 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
450 AC_PATH_PROG(LOCATE,locate)
451 AC_PATH_PROG(DIRNAME,dirname)
452 AC_PATH_PROG(GREP,grep)
454 dnl #############################################################
456 dnl # 2. Checks for libraries
458 dnl #############################################################
460 dnl If using pthreads, check for -lpthread (posix) or -lc_r (*BSD)
462 if test "x$WITH_THREADS" = "xyes"; then
463 if test $ac_cv_prog_suncc = "yes"; then
467 AC_CHECK_HEADERS(pthread.h, [], [ WITH_THREADS="no" ])
470 dnl # pthread stuff is usually in -lpthread
471 dnl # or in -lc_r, on *BSD
473 dnl # On Some systems, we need extra pre-processor flags, to get them to
474 dnl # to do the threading properly.
476 AC_CHECK_LIB(pthread, pthread_create,
477 [ CFLAGS="$CFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS"
478 LIBS="$LIBS -lpthread" ],
479 AC_CHECK_LIB(c_r, pthread_create,
480 [ CFLAGS="$CFLAGS -pthread -D_THREAD_SAFE" ],
481 [ WITH_THREADS="no" ]
487 dnl # If we have NO pthread libraries, remove any knowledge of threads.
489 if test "x$WITH_THREADS" != "xyes"; then
491 ac_cv_header_pthread_h="no"
495 dnl # We need sem_init() and friends, as they're the friendliest
496 dnl # semaphore functions for threading.
498 dnl # HP/UX requires linking with librt, too, to get the sem_* symbols.
499 dnl # Some systems have them in -lsem
500 dnl # Solaris has them in -lposix4
501 dnl # NetBSD has them in -lsemaphore
503 AC_SEARCH_LIBS(sem_init, pthread sem posix4 rt semaphore,
505 [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)]
509 dnl Check if we need -lsocket
510 AC_CHECK_LIB(socket, getsockname)
512 dnl Check for -lresolv
513 dnl This library may be needed later.
514 AC_CHECK_LIB(resolv, inet_aton)
516 dnl Check if we need -lnsl. Usually if we want to
517 dnl link against -lsocket we need to include -lnsl as well.
518 AC_CHECK_LIB(nsl, inet_ntoa)
520 dnl Check for OpenSSL libraries.
522 if test "x$WITH_OPENSSL" = xyes; then
524 old_LDFLAGS="$LDFLAGS"
525 if test "x$OPENSSL_LIB_DIR" != "x"; then
526 LDFLAGS="$LDFLAGS -L$OPENSSL_LIB_DIR"
528 AC_CHECK_LIB(crypto, DH_new,
530 LIBS="-lcrypto $LIBS"
531 AC_DEFINE(HAVE_LIBCRYPTO, 1,
532 [Define to 1 if you have the `crypto' library (-lcrypto).])
533 AC_CHECK_LIB(ssl, SSL_new,
535 AC_DEFINE(HAVE_LIBSSL, 1,
536 [Define to 1 if you have the `ssl' library (-lssl).])
537 if test "x$OPENSSL_LIB_DIR" != "x"; then
538 OPENSSL_LIBS="-L$OPENSSL_LIB_DIR"
540 OPENSSL_LIBS="$OPENSSL_LIBS -lcrypto -lssl -lcrypto"
544 LDFLAGS="$old_LDFLAGS"
547 AC_CHECK_LIB(ws2_32, htonl)
549 dnl Check the pcap library for the RADIUS sniffer.
551 AC_CHECK_LIB(pcap, pcap_open_live,
553 AC_DEFINE(HAVE_LIBPCAP, 1,
554 [Define to 1 if you have the `pcap' library (-lpcap).])
556 [ AC_MSG_WARN([pcap library not found, silently disabling the RADIUS sniffer.]) ])
560 dnl #############################################################
562 dnl # 3. Checks for header files
564 dnl #############################################################
567 dnl # Interix requires us to set -D_ALL_SOURCE, otherwise
568 dnl # getopt will be #included, but won't link. <sigh>
573 CFLAGS="$CFLAGS -D_ALL_SOURCE"
576 CFLAGS="$CFLAGS -DDARWIN"
577 LIBS="-framework DirectoryService $LIBS"
624 dnl FreeBSD requires sys/socket.h before net/if.h
625 AC_CHECK_HEADERS(net/if.h, [], [],
626 [#ifdef HAVE_SYS_SOCKET_H
627 # include <sys/socket.h>
632 AC_CHECK_HEADER(regex.h, AC_DEFINE(HAVE_REGEX_H, [], [define this if we have the <regex.h> header file]))
633 if test "x$ac_cv_header_regex_h" = "xyes"; then
641 ], [AC_DEFINE(HAVE_REG_EXTENDED, [], [define this if we have REG_EXTENDED (from <regex.h>)]) REGEX_EXTENDED=yes])
644 AC_SUBST(REGEX_EXTENDED)
647 dnl # other checks which require headers
649 if test "x$ac_cv_header_sys_security_h" = "xyes" && test "x$ac_cv_header_prot_h" = "xyes"
651 AC_DEFINE(OSFC2, [], [define if you have OSFC2 authentication])
654 if test "x$ac_cv_header_sia_h" = "xyes" && test "x$ac_cv_header_siad_h" = "xyes"
656 AC_DEFINE(OSFSIA, [], [define if you have OSFSIA authentication])
659 dnl Check for OpenSSL includes.
660 OPENSSL_INCLUDE="-DNO_OPENSSL"
661 if test "x$WITH_OPENSSL" = xyes; then
662 if test "x$OPENSSL_LIBS" = "x"; then
663 AC_MSG_NOTICE([skipping test for openssl/ssl.h])
665 old_CPPFLAGS=$CPPFLAGS
666 if test "x$OPENSSL_INCLUDE_DIR" != "x"; then
667 CPPFLAGS="$CPPFLAGS -I$OPENSSL_INCLUDE_DIR"
669 dnl # stupid RedHat shit
670 CPPFLAGS="$CPPFLAGS -DOPENSSL_NO_KRB5"
680 if test "x$OPENSSL_LIBS" != "x"; then
681 AC_MSG_CHECKING([for OpenSSL version >= 0.9.7])
683 [#include <openssl/crypto.h>
684 #if (OPENSSL_VERSION_NUMBER >= 0x00907000L)
688 if test "x$goodssl" != "xyes"; then
693 if test "x$OPENSSL_INCLUDE_DIR" != "x"; then
694 OPENSSL_INCLUDE="-I$OPENSSL_INCLUDE_DIR -DOPENSSL_NO_KRB5"
696 OPENSSL_INCLUDE="-DOPENSSL_NO_KRB5"
700 CPPFLAGS=$old_CPPFLAGS
703 AC_SUBST(OPENSSL_INCLUDE)
704 AC_SUBST(OPENSSL_LIBS)
707 dnl Check the pcap includes for the RADIUS sniffer.
708 if test "x$PCAP_LIBS" = x; then
709 AC_MSG_NOTICE([skipping test for pcap.h.])
711 AC_CHECK_HEADER(pcap.h,
712 AC_DEFINE(HAVE_PCAP_H, 1,
713 [Define to 1 if you have the <pcap.h> header file.]),
715 AC_MSG_WARN([pcap.h not found, silently disabling the RADIUS sniffer.])
720 dnl #############################################################
722 dnl # 4. Checks for typedefs
724 dnl #############################################################
727 dnl # Ensure that these are defined
734 dnl check for socklen_t
735 FR_CHECK_TYPE_INCLUDE([
736 #ifdef HAVE_SYS_TYPES_H
737 #include <sys/types.h>
739 #ifdef HAVE_SYS_SOCKET_H
740 #include <sys/socket.h>
742 ],socklen_t, int, [socklen_t is generally 'int' on systems which don't use it])
744 dnl check for uint8_t
745 FR_CHECK_TYPE_INCLUDE([
746 #ifdef HAVE_INTTYPES_H
747 #include <inttypes.h>
752 ],uint8_t, unsigned char, [uint8_t should be the canonical 'octet' for network traffic])
754 dnl check for uint16_t
755 FR_CHECK_TYPE_INCLUDE([
756 #ifdef HAVE_INTTYPES_H
757 #include <inttypes.h>
762 ],uint16_t, unsigned short, [uint16_t should be the canonical '2 octets' for network traffic])
764 dnl check for uint32_t
765 FR_CHECK_TYPE_INCLUDE([
766 #ifdef HAVE_INTTYPES_H
767 #include <inttypes.h>
772 ],uint32_t, unsigned int, [uint32_t should be the canonical 'network integer])
774 AC_CHECK_TYPE(struct in6_addr, AC_DEFINE(HAVE_STRUCT_IN6_ADDR, 1, [IPv6 address structure]), [], [
775 #ifdef HAVE_NETINET_IN_H
776 #include <netinet/in.h>
780 AC_CHECK_TYPE(struct sockaddr_storage, AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE, 1, [Generic socket addresses]), [], [
781 #ifdef HAVE_NETINET_IN_H
782 #include <netinet/in.h>
784 #ifdef HAVE_SYS_SOCKET_H
785 #include <sys/socket.h>
789 AC_CHECK_TYPE(struct sockaddr_in6, AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6, 1, [IPv6 socket addresses]), [], [
790 #ifdef HAVE_NETINET_IN_H
791 #include <netinet/in.h>
795 AC_CHECK_TYPE(struct addrinfo, AC_DEFINE(HAVE_STRUCT_ADDRINFO, 1, [Generic DNS lookups]), [], [
796 #ifdef HAVE_SYS_TYPES_H
797 #include <sys/types.h>
799 #ifdef HAVE_SYS_SOCKET_H
800 #include <sys/socket.h>
807 dnl #############################################################
809 dnl # 5. Checks for structures and functions
811 dnl #############################################################
846 RADIUSD_NEED_DECLARATIONS( \
858 dnl # check if we have utmpx.h
859 dnl # if so, check if struct utmpx has entry ut_xtime
860 dnl # if not, set it to define ut_xtime == ut_tv.tv_sec
861 if test "x$ac_cv_header_utmpx_h" = "xyes"
863 FR_CHECK_STRUCT_HAS_MEMBER([#include <utmpx.h>], [struct utmpx], ut_xtime)
864 if test "x$ac_cv_type_struct_utmpx_has_ut_xtime" = "x"
866 AC_DEFINE(ut_xtime,ut_tv.tv_sec, [define to something if you don't have ut_xtime in struct utmpx])
870 dnl # struct ip_pktinfo
871 FR_CHECK_STRUCT_HAS_MEMBER([#include <netinet/in.h>], [struct in_pktinfo], ipi_addr)
872 if test "x$ac_cv_type_struct_in_pktinfo_has_ipi_addr" = "xyes"
874 AC_DEFINE(HAVE_IP_PKTINFO, [], [define if you have IP_PKTINFO (Linux)])
877 dnl # struct in6_pktinfo
878 FR_CHECK_STRUCT_HAS_MEMBER([#include <netinet/in.h>], [struct in6_pktinfo], ipi6_addr)
879 if test "x$ac_cv_type_struct_in6_pktinfo_has_ipi6_addr" = "xyes"
881 AC_DEFINE(HAVE_IN6_PKTINFO, [], [define if you have IN6_PKTINFO (Linux)])
884 dnl #############################################################
886 dnl # 6. Checks for compiler characteristics
888 dnl #############################################################
891 dnl # Ensure that these are defined
896 dnl # See if this is OS/2
898 AC_MSG_CHECKING(type of OS)
901 if test "$OS" = "OS/2"; then
909 dnl # Set Default CFLAGS
911 if test "x$GCC" = "xyes"; then
912 CFLAGS="$CFLAGS -Wall -D_GNU_SOURCE"
915 AC_MSG_CHECKING(for developer gcc flags)
916 if test "x$developer" = "xyes" -a "x$GCC" = "xyes"; then
917 devflags="-g -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -W -Wredundant-decls -Wundef"
918 CFLAGS="$CFLAGS $devflags"
920 AC_MSG_RESULT(yes. Using $devflags)
923 CFLAGS="$CFLAGS -DNDEBUG"
930 dnl #############################################################
932 dnl # 7. Checks for library functions
934 dnl #############################################################
937 LIBS="$LIBS $LIBLTDL"
938 AC_CHECK_FUNC(lt_dladvise_init, AC_DEFINE(HAVE_HAVE_LT_DLADVISE_INIT, [], [Do we have the lt_dladvise_init function]))
941 dnl Check for libcrypt
942 dnl We use crypt(3) which may be in libc, or in libcrypt (eg FreeBSD)
943 AC_CHECK_LIB(crypt, crypt,
946 if test "$CRYPTLIB" != ""; then
947 AC_DEFINE(HAVE_CRYPT, [], [Do we have the crypt function])
949 AC_CHECK_FUNC(crypt, AC_DEFINE(HAVE_CRYPT, [], [Do we have the crypt function]))
952 dnl Check for libcipher
953 AC_CHECK_LIB(cipher, setkey,
954 CRYPTLIB="${CRYPTLIB} -lcipher"
958 dnl Check the style of gethostbyaddr, in order of preference
959 dnl GNU (_r eight args)
960 AC_DEFINE(GNUSTYLE, [1], [GNU-Style get*byaddr_r])
961 dnl SYSV (_r six args)
962 AC_DEFINE(SYSVSTYLE, [2], [SYSV-Style get*byaddr_r])
963 dnl BSD (three args, may not be thread safe)
964 AC_DEFINE(BSDSTYLE, [3], [BSD-Style get*byaddr_r])
965 dnl Tru64 has BSD version, but it is thread safe
966 dnl http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/1739____.HTM
967 dnl We need #stdio.h to define NULL on FreeBSD (at least)
968 gethostbyaddrrstyle=""
969 AC_MSG_CHECKING([gethostbyaddr_r() syntax])
972 dnl With FreeBSD, check if there's a prototype for gethostbyaddr_r.
973 dnl Some versions (FreeBSD 5.1?) have a symbol but no prototype - so we
974 dnl override this test to BSDSTYLE. FreeBSD 6.2 and up have proper GNU
976 AC_CHECK_DECLS([gethostbyaddr_r], [], [
977 AC_DEFINE(GETHOSTBYADDRRSTYLE, BSDSTYLE,
978 [style of gethostbyaddr_r functions ])
979 gethostbyaddrrstyle=BSD
980 AC_MSG_WARN([FreeBSD overridden to BSD-style])
988 if test "x$gethostbyaddrrstyle" = "x"; then
992 ], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL, NULL) ], [
993 AC_DEFINE(GETHOSTBYADDRRSTYLE, GNUSTYLE, [style of gethostbyaddr_r functions ])
994 gethostbyaddrrstyle=GNU
997 if test "x$gethostbyaddrrstyle" = "x"; then
1001 ], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL) ] , [
1002 AC_DEFINE(GETHOSTBYADDRRSTYLE, SYSVSTYLE, [style of gethostbyaddr_r functions ])
1003 gethostbyaddrrstyle=SYSV
1006 if test "x$gethostbyaddrrstyle" = "x"; then
1010 ], [ gethostbyaddr(NULL, 0, 0) ], [
1011 AC_DEFINE(GETHOSTBYADDRRSTYLE, BSDSTYLE, [style of gethostbyaddr_r functions ])
1012 gethostbyaddrrstyle=BSD
1016 if test "x$gethostbyaddrrstyle" = "x"; then
1017 AC_MSG_RESULT([none! It must not exist, here.])
1019 AC_MSG_RESULT([${gethostbyaddrrstyle}-style])
1022 if test "x$gethostbyaddrrstyle" = "xBSD"; then
1023 AC_MSG_WARN([ ****** BSD-style gethostbyaddr might NOT be thread-safe! ****** ])
1026 dnl Check the style of gethostbyname, in order of preference
1027 dnl GNU (_r seven args)
1028 dnl SYSV (_r five args)
1029 dnl BSD (two args, may not be thread safe)
1030 dnl Tru64 has BSD version, but it _is_ thread safe
1031 dnl http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/1946____.HTM
1032 dnl We need #stdio.h to define NULL on FreeBSD (at least)
1033 gethostbynamerstyle=""
1034 AC_MSG_CHECKING([gethostbyname_r() syntax])
1038 ], [ gethostbyname_r(NULL, NULL, NULL, 0, NULL, NULL) ], [
1039 AC_DEFINE(GETHOSTBYNAMERSTYLE, GNUSTYLE, [style of gethostbyname_r functions ])
1040 gethostbynamerstyle=GNU
1042 if test "x$gethostbynamerstyle" = "x"; then
1046 ], [ gethostbyname_r(NULL, NULL, NULL, 0, NULL) ] , [
1047 AC_DEFINE(GETHOSTBYNAMERSTYLE, SYSVSTYLE, [style of gethostbyname_r functions ])
1048 gethostbynamerstyle=SYSV
1051 if test "x$gethostbynamerstyle" = "x"; then
1055 ], [ gethostbyname(NULL) ], [
1056 AC_DEFINE(GETHOSTBYNAMERSTYLE, BSDSTYLE, [style of gethostbyname_r functions ])
1057 gethostbynamerstyle=BSD
1061 if test "x$gethostbynamerstyle" = "x"; then
1062 AC_MSG_RESULT([none! It must not exist, here.])
1064 AC_MSG_RESULT([${gethostbynamerstyle}-style])
1067 if test "x$gethostbynamerstyle" = "xBSD"; then
1068 AC_MSG_WARN([ ****** BSD-style gethostbyname might NOT be thread-safe! ****** ])
1071 dnl check for non-posix solaris ctime_r (extra buflen int arg)
1072 AC_DEFINE(POSIXSTYLE, [1], [Posix-Style ctime_r])
1073 AC_DEFINE(SOLARISSTYLE, [2], [Solaris-Style ctime_r])
1075 AC_MSG_CHECKING([ctime_r() syntax])
1078 ], [ ctime_r(NULL, NULL, 0) ], [
1079 AC_DEFINE(CTIMERSTYLE, SOLARISSTYLE, [style of ctime_r function])
1080 ctimerstyle="SOLARIS"
1082 if test "x$ctimerstyle" = "x"; then
1085 ], [ ctime_r(NULL, NULL) ], [
1086 AC_DEFINE(CTIMERSTYLE, POSIXSTYLE, [style of ctime_r function])
1091 if test "x$ctimerstyle" = "x"; then
1092 AC_MSG_RESULT([none! It must not exist, here.])
1094 AC_MSG_RESULT([${ctimerstyle}-style])
1097 AC_SUBST(HOSTINFO, $host)
1099 dnl #############################################################
1101 dnl # 8. Checks for system services
1103 dnl #############################################################
1106 dnl # Figure out where libtool is located,
1110 AC_MSG_RESULT([top_builddir=$top_builddir])
1111 dnl # AC_SUBST(top_builddir)
1115 dnl import libtool stuff
1117 dnl #############################################################
1119 dnl # Configure in any module directories.
1121 dnl #############################################################
1123 mysubdirs="$LIBLTDLPATH"
1124 if test "x$EXPERIMENTAL" = "xyes"; then
1125 bar=`ls -1 "${srcdir}"/src/modules/rlm_*/configure | sed 's%/configure%%'`
1126 dnl # get rid of LF's.
1127 mysubdirs=`echo $mysubdirs $bar`
1130 dnl # Find 'configure' in ONLY the stable modules
1132 for bar in `cat "${srcdir}"/src/modules/stable`; do
1133 if test -f "${srcdir}"/src/modules/$bar/configure; then
1134 mysubdirs="$mysubdirs src/modules/$bar"
1139 dnl ############################################################
1140 dnl # make modules by list
1141 dnl #############################################################
1142 if test "x$EXPERIMENTAL" = "xyes"; then
1143 for foo in `ls -1 "${srcdir}"/src/modules | grep rlm_`; do
1144 MODULES="$MODULES $foo"
1148 dnl # make ONLY the stable modules
1150 for foo in `cat "${srcdir}"/src/modules/stable`; do
1151 MODULES="$MODULES $foo"
1156 dnl # Don't change the variable name here. Autoconf goes bonkers
1159 AC_CONFIG_SUBDIRS($LTDL_SUBDIRS $mysubdirs)
1162 dnl #############################################################
1164 dnl # And finally, output the results.
1166 dnl #############################################################
1168 AC_CONFIG_COMMANDS([stamp-h], [echo timestamp > src/include/stamp-h])
1169 AC_CONFIG_COMMANDS([build-radpaths-h], [(cd ./src/include && /bin/sh ./build-radpaths-h)])
1170 AC_CONFIG_COMMANDS([main-chmod], [(cd ./src/main && chmod +x checkrad.pl radlast radtest)])
1171 AC_CONFIG_COMMANDS([scripts-chmod], [(cd ./scripts && chmod +x rc.radiusd radwatch radiusd.cron.daily radiusd.cron.monthly cryptpasswd)])
1174 dnl # Substitute whatever libraries we found to be necessary
1177 AC_SUBST(INSTALLSTRIP)
1179 USE_SHARED_LIBS=$enable_shared
1180 AC_SUBST(USE_SHARED_LIBS)
1181 USE_STATIC_LIBS=$enable_static
1182 AC_SUBST(USE_STATIC_LIBS)
1183 AC_SUBST(STATIC_MODULES)
1184 AC_SUBST(RADIUSD_MAJOR_VERSION)
1185 AC_SUBST(RADIUSD_MINOR_VERSION)
1186 AC_SUBST(RADIUSD_VERSION)
1190 ./src/include/build-radpaths-h \
1191 ./src/main/Makefile \
1192 ./src/main/checkrad.pl \
1193 ./src/main/radlast \
1194 ./src/main/radtest \
1195 ./scripts/rc.radiusd \
1196 ./scripts/radwatch \
1197 ./scripts/radiusd.cron.daily \
1198 ./scripts/radiusd.cron.monthly \
1199 ./scripts/cryptpasswd \
1200 ./raddb/dictionary \
1201 ./raddb/radrelay.conf \
1202 ./raddb/radiusd.conf