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/^3\.//'`
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 dlopen)],
86 INCLTDL=-DWITH_SYSTEM_LTDL
89 dnl use system-wide libtool, if it exists
90 AC_ARG_WITH(system-libtool,
91 [ --with-system-libtool Use the libtool installed in your system (default=use our own)],
92 [ AC_PATH_PROG(LIBTOOL, libtool,,$PATH:/usr/local/bin) AC_LIBTOOL_DLOPEN
95 LIBTOOL="`pwd`/libtool"
97 dnl ensure that we're looking for dlopen
100 dnl Figure out how to build shared libraries
105 dnl Put this in later, when all distributed modules use autoconf.
106 dnl AC_ARG_WITH(disablemodulefoo,
107 dnl [ --without-rlm_foo Disables module compilation. Module list:]
108 dnl esyscmd([find src/modules -type d -name rlm_\* -print |\
109 dnl sed -e 's%src/modules/.*/% (sub)- %; s%.*/%- %' |\
110 dnl awk '{print " "$0}']))
112 AC_ARG_ENABLE(strict-dependencies,
113 [ --enable-strict-dependencies Fail configure on lack of module dependancy.])
115 dnl extra argument: --with-docdir
116 docdir='${datadir}/doc/freeradius'
117 AC_MSG_CHECKING(docdir)
119 [ --with-docdir=DIR Directory for documentation [DATADIR/doc/freeradius] ],
126 [[\\/$]]* | ?:[[\\/]]* )
130 AC_MSG_ERROR([expected an absolute directory name for --with-docdir: $withval])
135 AC_MSG_RESULT($docdir)
136 if test "x$docdir" = xno; then
137 AC_MSG_WARN(Documentation files will NOT be installed.)
140 dnl extra argument: --with-logdir
141 logdir='${localstatedir}/log/radius'
142 AC_MSG_CHECKING(logdir)
144 [ --with-logdir=DIR Directory for logfiles [LOCALSTATEDIR/log/radius] ],
147 AC_MSG_ERROR(Need logdir)
151 [[\\/$]]* | ?:[[\\/]]* )
155 AC_MSG_ERROR([expected an absolute directory name for --with-logdir: $withval])
160 AC_MSG_RESULT($logdir)
162 dnl extra argument: --with-radacctdir
163 radacctdir='${logdir}/radacct'
164 AC_MSG_CHECKING(radacctdir)
165 AC_ARG_WITH(radacctdir,
166 [ --with-radacctdir=DIR Directory for detail files [LOGDIR/radacct] ],
169 AC_MSG_ERROR(Need radacctdir)
173 [[\\/$]]* | ?:[[\\/]]* )
174 radacctdir="$withval"
177 AC_MSG_ERROR([expected an absolute directory name for --with-radacctdir: $withval])
182 AC_MSG_RESULT($radacctdir)
184 dnl extra argument: --with-raddbdir
185 raddbdir='${sysconfdir}/raddb'
186 AC_MSG_CHECKING(raddbdir)
187 AC_ARG_WITH(raddbdir,
188 [ --with-raddbdir=DIR Directory for config files [SYSCONFDIR/raddb] ],
191 AC_MSG_ERROR(Need raddbdir)
195 [[\\/$]]* | ?:[[\\/]]* )
199 AC_MSG_ERROR([expected an absolute directory name for --with-raddbdir: $withval])
204 AC_MSG_RESULT($raddbdir)
206 dnl extra argument: --with-ascend-binary
208 AC_ARG_WITH(ascend-binary,
209 [ --with-ascend-binary Include support for Ascend binary filter attributes (default=yes)],
217 if test "X$ASCEND_BINARY" = "Xyes"; then
218 AC_DEFINE(ASCEND_BINARY, [], [Include support for Ascend binary filter attributes])
221 dnl extra argument: --with-threads
224 [ --with-threads Use threads, if available. (default=yes) ],
233 dnl extra argument: --with-vmps
236 [ --with-vmps Compile in VMPS support. (default=yes)],
244 if test "x$WITH_VMPS" = "xyes"; then
245 AC_DEFINE(WITH_VMPS, [1], [define if you want VMPS support])
248 dnl extra argument: --with-dhcp
251 [ --with-dhcp Compile in DHCP support. (default=yes)],
259 if test "x$WITH_DHCP" = "xyes"; then
260 AC_DEFINE(WITH_DHCP, [1], [define if you want DHCP support])
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="-lpthread $LIBS" ],
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"
626 dnl FreeBSD requires sys/socket.h before net/if.h
627 AC_CHECK_HEADERS(net/if.h, [], [],
628 [#ifdef HAVE_SYS_SOCKET_H
629 # include <sys/socket.h>
634 AC_CHECK_HEADER(pcreposix.h, AC_DEFINE(HAVE_PCREPOSIX_H, [], [define this if we have the <pcreposix.h> header file]))
635 if test "x$ac_cv_header_pcreposix_h" = "xyes"; then
636 AC_DEFINE(HAVE_REGEX_H, [], [define if we have any regex])
640 LIBS="$LIBS -lpcreposix"
643 AC_CHECK_HEADER(regex.h, AC_DEFINE(HAVE_REGEX_H, [], [define this if we have the <regex.h> header file]))
644 if test "x$ac_cv_header_regex_h" = "xyes"; then
653 ], [AC_DEFINE(HAVE_REG_EXTENDED, [], [define this if we have REG_EXTENDED (from <regex.h>)]) REGEX_EXTENDED=yes])
659 AC_SUBST(REGEX_EXTENDED)
662 dnl # other checks which require headers
664 if test "x$ac_cv_header_sys_security_h" = "xyes" && test "x$ac_cv_header_prot_h" = "xyes"
666 AC_DEFINE(OSFC2, [], [define if you have OSFC2 authentication])
669 if test "x$ac_cv_header_sia_h" = "xyes" && test "x$ac_cv_header_siad_h" = "xyes"
671 AC_DEFINE(OSFSIA, [], [define if you have OSFSIA authentication])
674 dnl Check for OpenSSL includes.
675 OPENSSL_INCLUDE="-DNO_OPENSSL"
676 if test "x$WITH_OPENSSL" = xyes; then
677 if test "x$OPENSSL_LIBS" = "x"; then
678 AC_MSG_NOTICE([skipping test for openssl/ssl.h])
680 old_CPPFLAGS=$CPPFLAGS
681 if test "x$OPENSSL_INCLUDE_DIR" != "x"; then
682 CPPFLAGS="$CPPFLAGS -I$OPENSSL_INCLUDE_DIR"
684 dnl # stupid RedHat shit
685 CPPFLAGS="$CPPFLAGS -DOPENSSL_NO_KRB5"
699 if test "x$OPENSSL_LIBS" != "x"; then
700 AC_MSG_CHECKING([for OpenSSL version >= 0.9.7])
702 [#include <openssl/crypto.h>
703 #if (OPENSSL_VERSION_NUMBER >= 0x00907000L)
707 if test "x$goodssl" != "xyes"; then
712 if test "x$OPENSSL_INCLUDE_DIR" != "x"; then
713 OPENSSL_INCLUDE="-I$OPENSSL_INCLUDE_DIR -DOPENSSL_NO_KRB5"
715 OPENSSL_INCLUDE="-DOPENSSL_NO_KRB5"
719 CPPFLAGS=$old_CPPFLAGS
722 AC_SUBST(OPENSSL_INCLUDE)
723 AC_SUBST(OPENSSL_LIBS)
726 dnl Check the pcap includes for the RADIUS sniffer.
727 if test "x$PCAP_LIBS" = x; then
728 AC_MSG_NOTICE([skipping test for pcap.h.])
730 AC_CHECK_HEADER(pcap.h,
731 AC_DEFINE(HAVE_PCAP_H, 1,
732 [Define to 1 if you have the <pcap.h> header file.]),
734 AC_MSG_WARN([pcap.h not found, silently disabling the RADIUS sniffer.])
737 AC_CHECK_LIB(pcap, pcap_fopen_offline,
738 [ AC_DEFINE(HAVE_PCAP_FOPEN_OFFLINE, 1,
739 [Define to 1 if you have the function pcap_fopen_offline.])
741 AC_CHECK_LIB(pcap, pcap_dump_fopen,
742 [ AC_DEFINE(HAVE_PCAP_DUMP_FOPEN, 1,
743 [Define to 1 if you have the function pcap_dump_fopen.])
748 dnl #############################################################
750 dnl # 4. Checks for typedefs
752 dnl #############################################################
755 dnl # Ensure that these are defined
762 dnl check for socklen_t
763 FR_CHECK_TYPE_INCLUDE([
764 #ifdef HAVE_SYS_TYPES_H
765 #include <sys/types.h>
767 #ifdef HAVE_SYS_SOCKET_H
768 #include <sys/socket.h>
770 ],socklen_t, int, [socklen_t is generally 'int' on systems which don't use it])
772 dnl check for uint8_t
773 FR_CHECK_TYPE_INCLUDE([
774 #ifdef HAVE_INTTYPES_H
775 #include <inttypes.h>
780 ],uint8_t, unsigned char, [uint8_t should be the canonical 'octet' for network traffic])
782 dnl check for uint16_t
783 FR_CHECK_TYPE_INCLUDE([
784 #ifdef HAVE_INTTYPES_H
785 #include <inttypes.h>
790 ],uint16_t, unsigned short, [uint16_t should be the canonical '2 octets' for network traffic])
792 dnl check for uint32_t
793 FR_CHECK_TYPE_INCLUDE([
794 #ifdef HAVE_INTTYPES_H
795 #include <inttypes.h>
800 ],uint32_t, unsigned int, [uint32_t should be the canonical 'network integer])
802 AC_CHECK_TYPE(struct in6_addr, AC_DEFINE(HAVE_STRUCT_IN6_ADDR, 1, [IPv6 address structure]), [], [
803 #ifdef HAVE_NETINET_IN_H
804 #include <netinet/in.h>
808 AC_CHECK_TYPE(struct sockaddr_storage, AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE, 1, [Generic socket addresses]), [], [
809 #ifdef HAVE_NETINET_IN_H
810 #include <netinet/in.h>
812 #ifdef HAVE_SYS_SOCKET_H
813 #include <sys/socket.h>
817 AC_CHECK_TYPE(struct sockaddr_in6, AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6, 1, [IPv6 socket addresses]), [], [
818 #ifdef HAVE_NETINET_IN_H
819 #include <netinet/in.h>
823 AC_CHECK_TYPE(struct addrinfo, AC_DEFINE(HAVE_STRUCT_ADDRINFO, 1, [Generic DNS lookups]), [], [
824 #ifdef HAVE_SYS_TYPES_H
825 #include <sys/types.h>
827 #ifdef HAVE_SYS_SOCKET_H
828 #include <sys/socket.h>
835 dnl #############################################################
837 dnl # 5. Checks for structures and functions
839 dnl #############################################################
874 RADIUSD_NEED_DECLARATIONS( \
886 dnl # check if we have utmpx.h
887 dnl # if so, check if struct utmpx has entry ut_xtime
888 dnl # if not, set it to define ut_xtime == ut_tv.tv_sec
889 if test "x$ac_cv_header_utmpx_h" = "xyes"
891 FR_CHECK_STRUCT_HAS_MEMBER([#include <utmpx.h>], [struct utmpx], ut_xtime)
892 if test "x$ac_cv_type_struct_utmpx_has_ut_xtime" = "x"
894 AC_DEFINE(ut_xtime,ut_tv.tv_sec, [define to something if you don't have ut_xtime in struct utmpx])
898 dnl # struct ip_pktinfo
899 FR_CHECK_STRUCT_HAS_MEMBER([#include <netinet/in.h>], [struct in_pktinfo], ipi_addr)
900 if test "x$ac_cv_type_struct_in_pktinfo_has_ipi_addr" = "xyes"
902 AC_DEFINE(HAVE_IP_PKTINFO, [], [define if you have IP_PKTINFO (Linux)])
905 dnl # struct in6_pktinfo
906 FR_CHECK_STRUCT_HAS_MEMBER([#include <netinet/in.h>], [struct in6_pktinfo], ipi6_addr)
907 if test "x$ac_cv_type_struct_in6_pktinfo_has_ipi6_addr" = "xyes"
909 AC_DEFINE(HAVE_IN6_PKTINFO, [], [define if you have IN6_PKTINFO (Linux)])
912 dnl #############################################################
914 dnl # 6. Checks for compiler characteristics
916 dnl #############################################################
919 dnl # Ensure that these are defined
924 dnl # See if this is OS/2
926 AC_MSG_CHECKING(type of OS)
929 if test "$OS" = "OS/2"; then
936 AC_MSG_CHECKING(for developer gcc flags)
937 if test "x$developer" = "xyes" -a "x$GCC" = "xyes"; then
938 devflags="-g -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -W -Wredundant-decls -Wundef -Wformat-y2k -Wno-format-extra-args -Wno-format-zero-length -Wformat-nonliteral -Wformat-security -Wformat=2"
939 CFLAGS="$CFLAGS $devflags"
941 AC_MSG_RESULT(yes. Using $devflags)
944 CFLAGS="$CFLAGS -DNDEBUG"
951 dnl #############################################################
953 dnl # 7. Checks for library functions
955 dnl #############################################################
958 LIBS="$LIBS $LIBLTDL"
959 AC_CHECK_FUNC(lt_dladvise_init, AC_DEFINE(HAVE_LT_DLADVISE_INIT, [], [Do we have the lt_dladvise_init function]))
962 dnl Check for libcrypt
963 dnl We use crypt(3) which may be in libc, or in libcrypt (eg FreeBSD)
964 AC_CHECK_LIB(crypt, crypt,
967 if test "$CRYPTLIB" != ""; then
968 AC_DEFINE(HAVE_CRYPT, [], [Do we have the crypt function])
970 AC_CHECK_FUNC(crypt, AC_DEFINE(HAVE_CRYPT, [], [Do we have the crypt function]))
973 dnl Check for libcipher
974 AC_CHECK_LIB(cipher, setkey,
975 CRYPTLIB="${CRYPTLIB} -lcipher"
979 dnl Check the style of gethostbyaddr, in order of preference
980 dnl GNU (_r eight args)
981 AC_DEFINE(GNUSTYLE, [1], [GNU-Style get*byaddr_r])
982 dnl SYSV (_r six args)
983 AC_DEFINE(SYSVSTYLE, [2], [SYSV-Style get*byaddr_r])
984 dnl BSD (three args, may not be thread safe)
985 AC_DEFINE(BSDSTYLE, [3], [BSD-Style get*byaddr_r])
986 dnl Tru64 has BSD version, but it is thread safe
987 dnl http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/1739____.HTM
988 dnl We need #stdio.h to define NULL on FreeBSD (at least)
989 gethostbyaddrrstyle=""
990 AC_MSG_CHECKING([gethostbyaddr_r() syntax])
993 dnl With FreeBSD, check if there's a prototype for gethostbyaddr_r.
994 dnl Some versions (FreeBSD 5.1?) have a symbol but no prototype - so we
995 dnl override this test to BSDSTYLE. FreeBSD 6.2 and up have proper GNU
997 AC_CHECK_DECLS([gethostbyaddr_r], [], [
998 AC_DEFINE(GETHOSTBYADDRRSTYLE, BSDSTYLE,
999 [style of gethostbyaddr_r functions ])
1000 gethostbyaddrrstyle=BSD
1001 AC_MSG_WARN([FreeBSD overridden to BSD-style])
1009 if test "x$gethostbyaddrrstyle" = "x"; then
1013 ], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL, NULL) ], [
1014 AC_DEFINE(GETHOSTBYADDRRSTYLE, GNUSTYLE, [style of gethostbyaddr_r functions ])
1015 gethostbyaddrrstyle=GNU
1018 if test "x$gethostbyaddrrstyle" = "x"; then
1022 ], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL) ] , [
1023 AC_DEFINE(GETHOSTBYADDRRSTYLE, SYSVSTYLE, [style of gethostbyaddr_r functions ])
1024 gethostbyaddrrstyle=SYSV
1027 if test "x$gethostbyaddrrstyle" = "x"; then
1031 ], [ gethostbyaddr(NULL, 0, 0) ], [
1032 AC_DEFINE(GETHOSTBYADDRRSTYLE, BSDSTYLE, [style of gethostbyaddr_r functions ])
1033 gethostbyaddrrstyle=BSD
1037 if test "x$gethostbyaddrrstyle" = "x"; then
1038 AC_MSG_RESULT([none! It must not exist, here.])
1040 AC_MSG_RESULT([${gethostbyaddrrstyle}-style])
1043 if test "x$gethostbyaddrrstyle" = "xBSD"; then
1044 AC_MSG_WARN([ ****** BSD-style gethostbyaddr might NOT be thread-safe! ****** ])
1047 dnl Check the style of gethostbyname, in order of preference
1048 dnl GNU (_r seven args)
1049 dnl SYSV (_r five args)
1050 dnl BSD (two args, may not be thread safe)
1051 dnl Tru64 has BSD version, but it _is_ thread safe
1052 dnl http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/1946____.HTM
1053 dnl We need #stdio.h to define NULL on FreeBSD (at least)
1054 gethostbynamerstyle=""
1055 AC_MSG_CHECKING([gethostbyname_r() syntax])
1059 ], [ gethostbyname_r(NULL, NULL, NULL, 0, NULL, NULL) ], [
1060 AC_DEFINE(GETHOSTBYNAMERSTYLE, GNUSTYLE, [style of gethostbyname_r functions ])
1061 gethostbynamerstyle=GNU
1063 if test "x$gethostbynamerstyle" = "x"; then
1067 ], [ gethostbyname_r(NULL, NULL, NULL, 0, NULL) ] , [
1068 AC_DEFINE(GETHOSTBYNAMERSTYLE, SYSVSTYLE, [style of gethostbyname_r functions ])
1069 gethostbynamerstyle=SYSV
1072 if test "x$gethostbynamerstyle" = "x"; then
1076 ], [ gethostbyname(NULL) ], [
1077 AC_DEFINE(GETHOSTBYNAMERSTYLE, BSDSTYLE, [style of gethostbyname_r functions ])
1078 gethostbynamerstyle=BSD
1082 if test "x$gethostbynamerstyle" = "x"; then
1083 AC_MSG_RESULT([none! It must not exist, here.])
1085 AC_MSG_RESULT([${gethostbynamerstyle}-style])
1088 if test "x$gethostbynamerstyle" = "xBSD"; then
1089 AC_MSG_WARN([ ****** BSD-style gethostbyname might NOT be thread-safe! ****** ])
1092 dnl check for non-posix solaris ctime_r (extra buflen int arg)
1093 AC_DEFINE(POSIXSTYLE, [1], [Posix-Style ctime_r])
1094 AC_DEFINE(SOLARISSTYLE, [2], [Solaris-Style ctime_r])
1096 AC_MSG_CHECKING([ctime_r() syntax])
1099 ], [ ctime_r(NULL, NULL, 0) ], [
1100 AC_DEFINE(CTIMERSTYLE, SOLARISSTYLE, [style of ctime_r function])
1101 ctimerstyle="SOLARIS"
1103 if test "x$ctimerstyle" = "x"; then
1106 ], [ ctime_r(NULL, NULL) ], [
1107 AC_DEFINE(CTIMERSTYLE, POSIXSTYLE, [style of ctime_r function])
1112 if test "x$ctimerstyle" = "x"; then
1113 AC_MSG_RESULT([none! It must not exist, here.])
1115 AC_MSG_RESULT([${ctimerstyle}-style])
1118 AC_SUBST(HOSTINFO, $host)
1120 dnl #############################################################
1122 dnl # 8. Checks for system services
1124 dnl #############################################################
1127 dnl # Figure out where libtool is located,
1131 AC_MSG_RESULT([top_builddir=$top_builddir])
1132 dnl # AC_SUBST(top_builddir)
1136 dnl import libtool stuff
1138 dnl #############################################################
1140 dnl # Configure in any module directories.
1142 dnl #############################################################
1145 if test "x$EXPERIMENTAL" = "xyes"; then
1146 bar=`ls -1 "${srcdir}"/src/modules/rlm_*/configure | sed 's%/configure%%'`
1147 dnl # get rid of LF's.
1148 mysubdirs=`echo $mysubdirs $bar`
1151 dnl # Find 'configure' in ONLY the stable modules
1153 for bar in `cat "${srcdir}"/src/modules/stable`; do
1154 if test -f "${srcdir}"/src/modules/$bar/configure; then
1155 mysubdirs="$mysubdirs src/modules/$bar"
1160 dnl ############################################################
1161 dnl # make modules by list
1162 dnl #############################################################
1163 if test "x$EXPERIMENTAL" = "xyes"; then
1164 for foo in `ls -1 "${srcdir}"/src/modules | grep rlm_`; do
1165 MODULES="$MODULES $foo"
1169 dnl # make ONLY the stable modules
1171 for foo in `cat "${srcdir}"/src/modules/stable`; do
1172 MODULES="$MODULES $foo"
1177 dnl # Don't change the variable name here. Autoconf goes bonkers
1180 AC_CONFIG_SUBDIRS($mysubdirs)
1183 dnl #############################################################
1185 dnl # And finally, output the results.
1187 dnl #############################################################
1189 AC_CONFIG_COMMANDS([stamp-h], [echo timestamp > src/include/stamp-h])
1190 AC_CONFIG_COMMANDS([build-radpaths-h], [(cd ./src/include && /bin/sh ./build-radpaths-h)])
1191 AC_CONFIG_COMMANDS([main-chmod], [(cd ./src/main && chmod +x checkrad.pl radlast radtest)])
1192 AC_CONFIG_COMMANDS([scripts-chmod], [(cd ./scripts && chmod +x rc.radiusd radwatch radiusd.cron.daily radiusd.cron.monthly cryptpasswd)])
1195 dnl # Substitute whatever libraries we found to be necessary
1198 AC_SUBST(INSTALLSTRIP)
1200 USE_SHARED_LIBS=$enable_shared
1201 AC_SUBST(USE_SHARED_LIBS)
1202 USE_STATIC_LIBS=$enable_static
1203 AC_SUBST(USE_STATIC_LIBS)
1204 AC_SUBST(STATIC_MODULES)
1205 AC_SUBST(RADIUSD_MAJOR_VERSION)
1206 AC_SUBST(RADIUSD_MINOR_VERSION)
1207 AC_SUBST(RADIUSD_VERSION)
1211 ./src/include/build-radpaths-h \
1212 ./src/main/Makefile \
1213 ./src/main/radsniff.mk \
1214 ./src/main/checkrad.pl \
1215 ./src/main/radlast \
1216 ./src/main/radtest \
1217 ./scripts/rc.radiusd \
1218 ./scripts/radwatch \
1219 ./scripts/radiusd.cron.daily \
1220 ./scripts/radiusd.cron.monthly \
1221 ./scripts/cryptpasswd \
1222 ./raddb/dictionary \
1223 ./raddb/radrelay.conf \
1224 ./raddb/radiusd.conf