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-libltdl,
76 [ --with-system-libltdl Use the libltdl installed in your system (default=use our own)],
81 enable_ltdl_install=no
84 dnl If libltdl isn't installable, set it to be installable.
85 [test x"$enable_ltdl_install" = x && enable_ltdl_install=yes]
86 AC_LIBLTDL_INSTALLABLE
88 dnl tell Makefile to build ltdl if needed
89 if test x"$enable_ltdl_install" = x"yes"; then
93 AC_SUBST(LTDL_SUBDIRS)
95 dnl use system-wide libtool, if it exists
96 AC_ARG_WITH(system-libtool,
97 [ --with-system-libtool Use the libtool installed in your system (default=use our own)],
98 [ AC_PATH_PROG(LIBTOOL, libtool,,$PATH:/usr/local/bin) AC_LIBTOOL_DLOPEN
101 LIBTOOL="`pwd`/libtool"
103 dnl ensure that we're looking for dlopen
106 dnl Figure out how to build shared libraries
111 dnl Put this in later, when all distributed modules use autoconf.
112 dnl AC_ARG_WITH(disablemodulefoo,
113 dnl [ --without-rlm_foo Disables module compilation. Module list:]
114 dnl esyscmd([find src/modules -type d -name rlm_\* -print |\
115 dnl sed -e 's%src/modules/.*/% (sub)- %; s%.*/%- %' |\
116 dnl awk '{print " "$0}']))
118 AC_ARG_ENABLE(strict-dependencies,
119 [ --enable-strict-dependencies Fail configure on lack of module dependancy.])
121 dnl extra argument: --with-docdir
122 docdir='${datadir}/doc/freeradius'
123 AC_MSG_CHECKING(docdir)
125 [ --with-docdir=DIR Directory for documentation [DATADIR/doc/freeradius] ],
132 [[\\/$]]* | ?:[[\\/]]* )
136 AC_MSG_ERROR([expected an absolute directory name for --with-docdir: $withval])
141 AC_MSG_RESULT($docdir)
142 if test "x$docdir" = xno; then
143 AC_MSG_WARN(Documentation files will NOT be installed.)
146 dnl extra argument: --with-logdir
147 logdir='${localstatedir}/log/radius'
148 AC_MSG_CHECKING(logdir)
150 [ --with-logdir=DIR Directory for logfiles [LOCALSTATEDIR/log/radius] ],
153 AC_MSG_ERROR(Need logdir)
157 [[\\/$]]* | ?:[[\\/]]* )
161 AC_MSG_ERROR([expected an absolute directory name for --with-logdir: $withval])
166 AC_MSG_RESULT($logdir)
168 dnl extra argument: --with-radacctdir
169 radacctdir='${logdir}/radacct'
170 AC_MSG_CHECKING(radacctdir)
171 AC_ARG_WITH(radacctdir,
172 [ --with-radacctdir=DIR Directory for detail files [LOGDIR/radacct] ],
175 AC_MSG_ERROR(Need radacctdir)
179 [[\\/$]]* | ?:[[\\/]]* )
180 radacctdir="$withval"
183 AC_MSG_ERROR([expected an absolute directory name for --with-radacctdir: $withval])
188 AC_MSG_RESULT($radacctdir)
190 dnl extra argument: --with-raddbdir
191 raddbdir='${sysconfdir}/raddb'
192 AC_MSG_CHECKING(raddbdir)
193 AC_ARG_WITH(raddbdir,
194 [ --with-raddbdir=DIR Directory for config files [SYSCONFDIR/raddb] ],
197 AC_MSG_ERROR(Need raddbdir)
201 [[\\/$]]* | ?:[[\\/]]* )
205 AC_MSG_ERROR([expected an absolute directory name for --with-raddbdir: $withval])
210 AC_MSG_RESULT($raddbdir)
212 dnl extra argument: --with-ascend-binary
214 AC_ARG_WITH(ascend-binary,
215 [ --with-ascend-binary Include support for Ascend binary filter attributes (default=yes)],
223 if test "X$ASCEND_BINARY" = "Xyes"; then
224 AC_DEFINE(ASCEND_BINARY, [], [Include support for Ascend binary filter attributes])
227 dnl extra argument: --with-threads
230 [ --with-threads Use threads, if available. (default=yes) ],
239 dnl extra argument: --with-vmps
242 [ --with-vmps Compile in VMPS support. (default=yes)],
250 if test "x$WITH_VMPS" = "xyes"; then
251 AC_DEFINE(WITH_VMPS, [1], [define if you want VMPS support])
254 dnl extra argument: --with-dhcp
256 [ --with-dhcp Compile in DHCP support. (default=no)],
259 AC_DEFINE(WITH_DHCP, [1], [Include experimental support for DHCP])
268 dnl # Allow the user to specify a list of modules to be linked
269 dnl # statically to the server.
272 AC_ARG_WITH(static_modules,
273 [ --with-static-modules=QUOTED-MODULE-LIST],[
274 for i in $withval; do
275 STATIC_MODULES="$STATIC_MODULES -dlpreopen ../modules/rlm_$i/rlm_$i.la"
281 [ --with-modules=QUOTED-MODULE-LIST],[
282 for i in $withval; do
283 MODULES="$MODULES $i"
288 dnl # Enable developer C compiler warnings
290 AC_ARG_ENABLE(developer,
291 [ --enable-developer Enables features of interest to developers.],
292 [ case "$enableval" in
301 if test "x$developer" != "xno" -a -d $srcdir/CVS; then
302 dnl turn on the developer flag when taken from a CVS checkout (not a release)
306 if test "x$developer" != "xno" -a -d $srcdir/.git; then
307 dnl turn on the developer flag when taken from a git checkout (not a release)
311 dnl extra argument: --with-experimental-modules
313 AC_ARG_WITH(experimental-modules,
314 [ --with-experimental-modules Use experimental and unstable modules. (default=no) ],
323 dnl extra argument: --with-openssl
326 [ --with-openssl Use OpenSSL. (default=yes)],
338 dnl # extra argument: --with-openssl-includes=dir
341 AC_ARG_WITH(openssl-includes,
342 [ --with-openssl-includes=DIR Directory to look for OpenSSL include files],
344 *) OPENSSL_INCLUDE_DIR="$withval"
350 dnl # extra argument: --with-openssl-libraries=dir
353 AC_ARG_WITH(openssl-libraries,
354 [ --with-openssl-libraries=DIR Directory to look for OpenSSL library files],
356 *) OPENSSL_LIB_DIR="$withval"
362 dnl # These next two arguments don't actually do anything. They're
363 dnl # place holders so that the top-level configure script can tell
364 dnl # the user how to configure lower-level modules
368 dnl # extra argument: --with-rlm-FOO-lib-dir
370 AC_ARG_WITH(rlm-FOO-lib-dir,
371 [ --with-rlm-FOO-lib-dir=DIR Directory to look for library files used by module FOO],
379 dnl # extra argument: --with-rlm-FOO-include-dir
381 AC_ARG_WITH(rlm-FOO-include-dir,
382 [ --with-rlm-FOO-include-dir=DIR Directory to look for include files used by module FOO],
389 dnl See what include-style is used by the make program.
390 dnl AC_MSG_CHECKING(include style for make)
391 dnl echo "include /dev/null" > testmake.$$
392 dnl echo "all:" >> testmake.$$
393 dnl make -f testmake.$$ >/dev/null 2>&1
402 dnl rm -f testmake.$$
403 dnl AC_MSG_RESULT(" $INCLUDE")
404 dnl AC_SUBST(INCLUDE)
407 dnl extra argument: --with-udpfromto
409 AC_ARG_WITH(udpfromto,
410 [ --with-udpfromto Compile in UDPFROMTO support. (default=no)],
420 if test "x$WITH_UDPFROMTO" = "xyes"; then
421 AC_DEFINE(WITH_UDPFROMTO, [], [define if you want udpfromto])
424 dnl #############################################################
426 dnl # 1. Checks for programs
428 dnl #############################################################
431 AC_PATH_PROG(PERL, perl, /usr/local/bin/perl)
432 if test "x$ac_cv_path_PERL" = "x"; then
433 AC_MSG_WARN(perl not found - Simultaneous-Use and checkrad.pl may not work)
435 AC_PATH_PROG(SNMPGET, snmpget)
436 if test "x$ac_cv_path_SNMPGET" = "x"; then
437 AC_MSG_WARN(snmpget not found - Simultaneous-Use and checkrad.pl may not work)
440 AC_PATH_PROG(SNMPWALK, snmpwalk)
441 if test "x$ac_cv_path_SNMPWALK" = "x"; then
442 AC_MSG_WARN(snmpwalk not found - Simultaneous-Use and checkrad.pl may not work)
445 AC_PATH_PROG(RUSERS, rusers, /usr/bin/rusers)
447 dnl FIXME This is truly gross.
448 missing_dir=`cd $ac_aux_dir && pwd`
449 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
450 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
451 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
453 AC_PATH_PROG(LOCATE,locate)
454 AC_PATH_PROG(DIRNAME,dirname)
455 AC_PATH_PROG(GREP,grep)
457 dnl #############################################################
459 dnl # 2. Checks for libraries
461 dnl #############################################################
463 dnl If using pthreads, check for -lpthread (posix) or -lc_r (*BSD)
465 if test "x$WITH_THREADS" = "xyes"; then
466 if test $ac_cv_prog_suncc = "yes"; then
470 AC_CHECK_HEADERS(pthread.h, [], [ WITH_THREADS="no" ])
473 dnl # pthread stuff is usually in -lpthread
474 dnl # or in -lc_r, on *BSD
476 dnl # On Some systems, we need extra pre-processor flags, to get them to
477 dnl # to do the threading properly.
479 AC_CHECK_LIB(pthread, pthread_create,
480 [ CFLAGS="$CFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS"
481 LIBS="$LIBS -lpthread" ],
482 AC_CHECK_LIB(c_r, pthread_create,
483 [ CFLAGS="$CFLAGS -pthread -D_THREAD_SAFE" ],
484 [ WITH_THREADS="no" ]
490 dnl # If we have NO pthread libraries, remove any knowledge of threads.
492 if test "x$WITH_THREADS" != "xyes"; then
494 ac_cv_header_pthread_h="no"
498 dnl # We need sem_init() and friends, as they're the friendliest
499 dnl # semaphore functions for threading.
501 dnl # HP/UX requires linking with librt, too, to get the sem_* symbols.
502 dnl # Some systems have them in -lsem
503 dnl # Solaris has them in -lposix4
504 dnl # NetBSD has them in -lsemaphore
506 AC_SEARCH_LIBS(sem_init, pthread sem posix4 rt semaphore,
508 [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)]
512 dnl Check if we need -lsocket
513 AC_CHECK_LIB(socket, getsockname)
515 dnl Check for -lresolv
516 dnl This library may be needed later.
517 AC_CHECK_LIB(resolv, inet_aton)
519 dnl Check if we need -lnsl. Usually if we want to
520 dnl link against -lsocket we need to include -lnsl as well.
521 AC_CHECK_LIB(nsl, inet_ntoa)
523 dnl Check for OpenSSL libraries.
525 if test "x$WITH_OPENSSL" = xyes; then
527 old_LDFLAGS="$LDFLAGS"
528 if test "x$OPENSSL_LIB_DIR" != "x"; then
529 LDFLAGS="$LDFLAGS -L$OPENSSL_LIB_DIR"
531 AC_CHECK_LIB(crypto, DH_new,
533 LIBS="-lcrypto $LIBS"
534 AC_DEFINE(HAVE_LIBCRYPTO, 1,
535 [Define to 1 if you have the `crypto' library (-lcrypto).])
536 AC_CHECK_LIB(ssl, SSL_new,
538 AC_DEFINE(HAVE_LIBSSL, 1,
539 [Define to 1 if you have the `ssl' library (-lssl).])
540 if test "x$OPENSSL_LIB_DIR" != "x"; then
541 OPENSSL_LIBS="-L$OPENSSL_LIB_DIR"
543 OPENSSL_LIBS="$OPENSSL_LIBS -lcrypto -lssl -lcrypto"
547 LDFLAGS="$old_LDFLAGS"
550 AC_CHECK_LIB(ws2_32, htonl)
552 dnl Check the pcap library for the RADIUS sniffer.
554 AC_CHECK_LIB(pcap, pcap_open_live,
556 AC_DEFINE(HAVE_LIBPCAP, 1,
557 [Define to 1 if you have the `pcap' library (-lpcap).])
559 [ AC_MSG_WARN([pcap library not found, silently disabling the RADIUS sniffer.]) ])
563 dnl #############################################################
565 dnl # 3. Checks for header files
567 dnl #############################################################
570 dnl # Interix requires us to set -D_ALL_SOURCE, otherwise
571 dnl # getopt will be #included, but won't link. <sigh>
576 CFLAGS="$CFLAGS -D_ALL_SOURCE"
579 CFLAGS="$CFLAGS -DDARWIN"
580 LIBS="-framework DirectoryService $LIBS"
627 dnl FreeBSD requires sys/socket.h before net/if.h
628 AC_CHECK_HEADERS(net/if.h, [], [],
629 [#ifdef HAVE_SYS_SOCKET_H
630 # include <sys/socket.h>
635 AC_CHECK_HEADER(regex.h, AC_DEFINE(HAVE_REGEX_H, [], [define this if we have the <regex.h> header file]))
636 if test "x$ac_cv_header_regex_h" = "xyes"; then
644 ], [AC_DEFINE(HAVE_REG_EXTENDED, [], [define this if we have REG_EXTENDED (from <regex.h>)]) REGEX_EXTENDED=yes])
647 AC_SUBST(REGEX_EXTENDED)
650 dnl # other checks which require headers
652 if test "x$ac_cv_header_sys_security_h" = "xyes" && test "x$ac_cv_header_prot_h" = "xyes"
654 AC_DEFINE(OSFC2, [], [define if you have OSFC2 authentication])
657 if test "x$ac_cv_header_sia_h" = "xyes" && test "x$ac_cv_header_siad_h" = "xyes"
659 AC_DEFINE(OSFSIA, [], [define if you have OSFSIA authentication])
662 dnl Check for OpenSSL includes.
663 OPENSSL_INCLUDE="-DNO_OPENSSL"
664 if test "x$WITH_OPENSSL" = xyes; then
665 if test "x$OPENSSL_LIBS" = "x"; then
666 AC_MSG_NOTICE([skipping test for openssl/ssl.h])
668 old_CPPFLAGS=$CPPFLAGS
669 if test "x$OPENSSL_INCLUDE_DIR" != "x"; then
670 CPPFLAGS="$CPPFLAGS -I$OPENSSL_INCLUDE_DIR"
672 dnl # stupid RedHat shit
673 CPPFLAGS="$CPPFLAGS -DOPENSSL_NO_KRB5"
683 if test "x$OPENSSL_LIBS" != "x"; then
684 AC_MSG_CHECKING([for OpenSSL version >= 0.9.7])
686 [#include <openssl/crypto.h>
687 #if (OPENSSL_VERSION_NUMBER >= 0x00907000L)
691 if test "x$goodssl" != "xyes"; then
696 if test "x$OPENSSL_INCLUDE_DIR" != "x"; then
697 OPENSSL_INCLUDE="-I$OPENSSL_INCLUDE_DIR -DOPENSSL_NO_KRB5"
699 OPENSSL_INCLUDE="-DOPENSSL_NO_KRB5"
703 CPPFLAGS=$old_CPPFLAGS
706 AC_SUBST(OPENSSL_INCLUDE)
707 AC_SUBST(OPENSSL_LIBS)
710 dnl Check the pcap includes for the RADIUS sniffer.
711 if test "x$PCAP_LIBS" = x; then
712 AC_MSG_NOTICE([skipping test for pcap.h.])
714 AC_CHECK_HEADER(pcap.h,
715 AC_DEFINE(HAVE_PCAP_H, 1,
716 [Define to 1 if you have the <pcap.h> header file.]),
718 AC_MSG_WARN([pcap.h not found, silently disabling the RADIUS sniffer.])
721 AC_CHECK_LIB(pcap, pcap_fopen_offline,
722 [ AC_DEFINE(HAVE_PCAP_FOPEN_OFFLINE, 1,
723 [Define to 1 if you have the function pcap_fopen_offline.])
725 AC_CHECK_LIB(pcap, pcap_dump_fopen,
726 [ AC_DEFINE(HAVE_PCAP_DUMP_FOPEN, 1,
727 [Define to 1 if you have the function pcap_dump_fopen.])
732 dnl #############################################################
734 dnl # 4. Checks for typedefs
736 dnl #############################################################
739 dnl # Ensure that these are defined
746 dnl check for socklen_t
747 FR_CHECK_TYPE_INCLUDE([
748 #ifdef HAVE_SYS_TYPES_H
749 #include <sys/types.h>
751 #ifdef HAVE_SYS_SOCKET_H
752 #include <sys/socket.h>
754 ],socklen_t, int, [socklen_t is generally 'int' on systems which don't use it])
756 dnl check for uint8_t
757 FR_CHECK_TYPE_INCLUDE([
758 #ifdef HAVE_INTTYPES_H
759 #include <inttypes.h>
764 ],uint8_t, unsigned char, [uint8_t should be the canonical 'octet' for network traffic])
766 dnl check for uint16_t
767 FR_CHECK_TYPE_INCLUDE([
768 #ifdef HAVE_INTTYPES_H
769 #include <inttypes.h>
774 ],uint16_t, unsigned short, [uint16_t should be the canonical '2 octets' for network traffic])
776 dnl check for uint32_t
777 FR_CHECK_TYPE_INCLUDE([
778 #ifdef HAVE_INTTYPES_H
779 #include <inttypes.h>
784 ],uint32_t, unsigned int, [uint32_t should be the canonical 'network integer])
786 AC_CHECK_TYPE(struct in6_addr, AC_DEFINE(HAVE_STRUCT_IN6_ADDR, 1, [IPv6 address structure]), [], [
787 #ifdef HAVE_NETINET_IN_H
788 #include <netinet/in.h>
792 AC_CHECK_TYPE(struct sockaddr_storage, AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE, 1, [Generic socket addresses]), [], [
793 #ifdef HAVE_NETINET_IN_H
794 #include <netinet/in.h>
796 #ifdef HAVE_SYS_SOCKET_H
797 #include <sys/socket.h>
801 AC_CHECK_TYPE(struct sockaddr_in6, AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6, 1, [IPv6 socket addresses]), [], [
802 #ifdef HAVE_NETINET_IN_H
803 #include <netinet/in.h>
807 AC_CHECK_TYPE(struct addrinfo, AC_DEFINE(HAVE_STRUCT_ADDRINFO, 1, [Generic DNS lookups]), [], [
808 #ifdef HAVE_SYS_TYPES_H
809 #include <sys/types.h>
811 #ifdef HAVE_SYS_SOCKET_H
812 #include <sys/socket.h>
819 dnl #############################################################
821 dnl # 5. Checks for structures and functions
823 dnl #############################################################
858 RADIUSD_NEED_DECLARATIONS( \
870 dnl # check if we have utmpx.h
871 dnl # if so, check if struct utmpx has entry ut_xtime
872 dnl # if not, set it to define ut_xtime == ut_tv.tv_sec
873 if test "x$ac_cv_header_utmpx_h" = "xyes"
875 FR_CHECK_STRUCT_HAS_MEMBER([#include <utmpx.h>], [struct utmpx], ut_xtime)
876 if test "x$ac_cv_type_struct_utmpx_has_ut_xtime" = "x"
878 AC_DEFINE(ut_xtime,ut_tv.tv_sec, [define to something if you don't have ut_xtime in struct utmpx])
882 dnl # struct ip_pktinfo
883 FR_CHECK_STRUCT_HAS_MEMBER([#include <netinet/in.h>], [struct in_pktinfo], ipi_addr)
884 if test "x$ac_cv_type_struct_in_pktinfo_has_ipi_addr" = "xyes"
886 AC_DEFINE(HAVE_IP_PKTINFO, [], [define if you have IP_PKTINFO (Linux)])
889 dnl # struct in6_pktinfo
890 FR_CHECK_STRUCT_HAS_MEMBER([#include <netinet/in.h>], [struct in6_pktinfo], ipi6_addr)
891 if test "x$ac_cv_type_struct_in6_pktinfo_has_ipi6_addr" = "xyes"
893 AC_DEFINE(HAVE_IN6_PKTINFO, [], [define if you have IN6_PKTINFO (Linux)])
896 dnl #############################################################
898 dnl # 6. Checks for compiler characteristics
900 dnl #############################################################
903 dnl # Ensure that these are defined
908 dnl # See if this is OS/2
910 AC_MSG_CHECKING(type of OS)
913 if test "$OS" = "OS/2"; then
921 dnl # Set Default CFLAGS
923 if test "x$GCC" = "xyes"; then
924 CFLAGS="$CFLAGS -Wall -D_GNU_SOURCE"
927 AC_MSG_CHECKING(for developer gcc flags)
928 if test "x$developer" = "xyes" -a "x$GCC" = "xyes"; then
929 devflags="-g -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -W -Wredundant-decls -Wundef"
930 CFLAGS="$CFLAGS $devflags"
932 AC_MSG_RESULT(yes. Using $devflags)
935 CFLAGS="$CFLAGS -DNDEBUG"
942 dnl #############################################################
944 dnl # 7. Checks for library functions
946 dnl #############################################################
949 LIBS="$LIBS $LIBLTDL"
950 AC_CHECK_FUNC(lt_dladvise_init, AC_DEFINE(HAVE_HAVE_LT_DLADVISE_INIT, [], [Do we have the lt_dladvise_init function]))
953 dnl Check for libcrypt
954 dnl We use crypt(3) which may be in libc, or in libcrypt (eg FreeBSD)
955 AC_CHECK_LIB(crypt, crypt,
958 if test "$CRYPTLIB" != ""; then
959 AC_DEFINE(HAVE_CRYPT, [], [Do we have the crypt function])
961 AC_CHECK_FUNC(crypt, AC_DEFINE(HAVE_CRYPT, [], [Do we have the crypt function]))
964 dnl Check for libcipher
965 AC_CHECK_LIB(cipher, setkey,
966 CRYPTLIB="${CRYPTLIB} -lcipher"
970 dnl Check the style of gethostbyaddr, in order of preference
971 dnl GNU (_r eight args)
972 AC_DEFINE(GNUSTYLE, [1], [GNU-Style get*byaddr_r])
973 dnl SYSV (_r six args)
974 AC_DEFINE(SYSVSTYLE, [2], [SYSV-Style get*byaddr_r])
975 dnl BSD (three args, may not be thread safe)
976 AC_DEFINE(BSDSTYLE, [3], [BSD-Style get*byaddr_r])
977 dnl Tru64 has BSD version, but it is thread safe
978 dnl http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/1739____.HTM
979 dnl We need #stdio.h to define NULL on FreeBSD (at least)
980 gethostbyaddrrstyle=""
981 AC_MSG_CHECKING([gethostbyaddr_r() syntax])
984 dnl With FreeBSD, check if there's a prototype for gethostbyaddr_r.
985 dnl Some versions (FreeBSD 5.1?) have a symbol but no prototype - so we
986 dnl override this test to BSDSTYLE. FreeBSD 6.2 and up have proper GNU
988 AC_CHECK_DECLS([gethostbyaddr_r], [], [
989 AC_DEFINE(GETHOSTBYADDRRSTYLE, BSDSTYLE,
990 [style of gethostbyaddr_r functions ])
991 gethostbyaddrrstyle=BSD
992 AC_MSG_WARN([FreeBSD overridden to BSD-style])
1000 if test "x$gethostbyaddrrstyle" = "x"; then
1004 ], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL, NULL) ], [
1005 AC_DEFINE(GETHOSTBYADDRRSTYLE, GNUSTYLE, [style of gethostbyaddr_r functions ])
1006 gethostbyaddrrstyle=GNU
1009 if test "x$gethostbyaddrrstyle" = "x"; then
1013 ], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL) ] , [
1014 AC_DEFINE(GETHOSTBYADDRRSTYLE, SYSVSTYLE, [style of gethostbyaddr_r functions ])
1015 gethostbyaddrrstyle=SYSV
1018 if test "x$gethostbyaddrrstyle" = "x"; then
1022 ], [ gethostbyaddr(NULL, 0, 0) ], [
1023 AC_DEFINE(GETHOSTBYADDRRSTYLE, BSDSTYLE, [style of gethostbyaddr_r functions ])
1024 gethostbyaddrrstyle=BSD
1028 if test "x$gethostbyaddrrstyle" = "x"; then
1029 AC_MSG_RESULT([none! It must not exist, here.])
1031 AC_MSG_RESULT([${gethostbyaddrrstyle}-style])
1034 if test "x$gethostbyaddrrstyle" = "xBSD"; then
1035 AC_MSG_WARN([ ****** BSD-style gethostbyaddr might NOT be thread-safe! ****** ])
1038 dnl Check the style of gethostbyname, in order of preference
1039 dnl GNU (_r seven args)
1040 dnl SYSV (_r five args)
1041 dnl BSD (two args, may not be thread safe)
1042 dnl Tru64 has BSD version, but it _is_ thread safe
1043 dnl http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/1946____.HTM
1044 dnl We need #stdio.h to define NULL on FreeBSD (at least)
1045 gethostbynamerstyle=""
1046 AC_MSG_CHECKING([gethostbyname_r() syntax])
1050 ], [ gethostbyname_r(NULL, NULL, NULL, 0, NULL, NULL) ], [
1051 AC_DEFINE(GETHOSTBYNAMERSTYLE, GNUSTYLE, [style of gethostbyname_r functions ])
1052 gethostbynamerstyle=GNU
1054 if test "x$gethostbynamerstyle" = "x"; then
1058 ], [ gethostbyname_r(NULL, NULL, NULL, 0, NULL) ] , [
1059 AC_DEFINE(GETHOSTBYNAMERSTYLE, SYSVSTYLE, [style of gethostbyname_r functions ])
1060 gethostbynamerstyle=SYSV
1063 if test "x$gethostbynamerstyle" = "x"; then
1067 ], [ gethostbyname(NULL) ], [
1068 AC_DEFINE(GETHOSTBYNAMERSTYLE, BSDSTYLE, [style of gethostbyname_r functions ])
1069 gethostbynamerstyle=BSD
1073 if test "x$gethostbynamerstyle" = "x"; then
1074 AC_MSG_RESULT([none! It must not exist, here.])
1076 AC_MSG_RESULT([${gethostbynamerstyle}-style])
1079 if test "x$gethostbynamerstyle" = "xBSD"; then
1080 AC_MSG_WARN([ ****** BSD-style gethostbyname might NOT be thread-safe! ****** ])
1083 dnl check for non-posix solaris ctime_r (extra buflen int arg)
1084 AC_DEFINE(POSIXSTYLE, [1], [Posix-Style ctime_r])
1085 AC_DEFINE(SOLARISSTYLE, [2], [Solaris-Style ctime_r])
1087 AC_MSG_CHECKING([ctime_r() syntax])
1090 ], [ ctime_r(NULL, NULL, 0) ], [
1091 AC_DEFINE(CTIMERSTYLE, SOLARISSTYLE, [style of ctime_r function])
1092 ctimerstyle="SOLARIS"
1094 if test "x$ctimerstyle" = "x"; then
1097 ], [ ctime_r(NULL, NULL) ], [
1098 AC_DEFINE(CTIMERSTYLE, POSIXSTYLE, [style of ctime_r function])
1103 if test "x$ctimerstyle" = "x"; then
1104 AC_MSG_RESULT([none! It must not exist, here.])
1106 AC_MSG_RESULT([${ctimerstyle}-style])
1109 AC_SUBST(HOSTINFO, $host)
1111 dnl #############################################################
1113 dnl # 8. Checks for system services
1115 dnl #############################################################
1118 dnl # Figure out where libtool is located,
1122 AC_MSG_RESULT([top_builddir=$top_builddir])
1123 dnl # AC_SUBST(top_builddir)
1127 dnl import libtool stuff
1129 dnl #############################################################
1131 dnl # Configure in any module directories.
1133 dnl #############################################################
1135 mysubdirs="$LIBLTDLPATH"
1136 if test "x$EXPERIMENTAL" = "xyes"; then
1137 bar=`ls -1 "${srcdir}"/src/modules/rlm_*/configure | sed 's%/configure%%'`
1138 dnl # get rid of LF's.
1139 mysubdirs=`echo $mysubdirs $bar`
1142 dnl # Find 'configure' in ONLY the stable modules
1144 for bar in `cat "${srcdir}"/src/modules/stable`; do
1145 if test -f "${srcdir}"/src/modules/$bar/configure; then
1146 mysubdirs="$mysubdirs src/modules/$bar"
1151 dnl ############################################################
1152 dnl # make modules by list
1153 dnl #############################################################
1154 if test "x$EXPERIMENTAL" = "xyes"; then
1155 for foo in `ls -1 "${srcdir}"/src/modules | grep rlm_`; do
1156 MODULES="$MODULES $foo"
1160 dnl # make ONLY the stable modules
1162 for foo in `cat "${srcdir}"/src/modules/stable`; do
1163 MODULES="$MODULES $foo"
1168 dnl # Don't change the variable name here. Autoconf goes bonkers
1171 AC_CONFIG_SUBDIRS($LTDL_SUBDIRS $mysubdirs)
1174 dnl #############################################################
1176 dnl # And finally, output the results.
1178 dnl #############################################################
1180 AC_CONFIG_COMMANDS([stamp-h], [echo timestamp > src/include/stamp-h])
1181 AC_CONFIG_COMMANDS([build-radpaths-h], [(cd ./src/include && /bin/sh ./build-radpaths-h)])
1182 AC_CONFIG_COMMANDS([main-chmod], [(cd ./src/main && chmod +x checkrad.pl radlast radtest)])
1183 AC_CONFIG_COMMANDS([scripts-chmod], [(cd ./scripts && chmod +x rc.radiusd radwatch radiusd.cron.daily radiusd.cron.monthly cryptpasswd)])
1186 dnl # Substitute whatever libraries we found to be necessary
1189 AC_SUBST(INSTALLSTRIP)
1191 USE_SHARED_LIBS=$enable_shared
1192 AC_SUBST(USE_SHARED_LIBS)
1193 USE_STATIC_LIBS=$enable_static
1194 AC_SUBST(USE_STATIC_LIBS)
1195 AC_SUBST(STATIC_MODULES)
1196 AC_SUBST(RADIUSD_MAJOR_VERSION)
1197 AC_SUBST(RADIUSD_MINOR_VERSION)
1198 AC_SUBST(RADIUSD_VERSION)
1202 ./src/include/build-radpaths-h \
1203 ./src/main/Makefile \
1204 ./src/main/checkrad.pl \
1205 ./src/main/radlast \
1206 ./src/main/radtest \
1207 ./scripts/rc.radiusd \
1208 ./scripts/radwatch \
1209 ./scripts/radiusd.cron.daily \
1210 ./scripts/radiusd.cron.monthly \
1211 ./scripts/cryptpasswd \
1212 ./raddb/dictionary \
1213 ./raddb/radrelay.conf \
1214 ./raddb/radiusd.conf