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
90 dnl use system-wide libtool, if it exists
91 AC_ARG_WITH(system-libtool,
92 [ --with-system-libtool Use the libtool installed in your system (default=use our own)],
93 [ AC_PATH_PROG(LIBTOOL, libtool,,$PATH:/usr/local/bin) AC_LIBTOOL_DLOPEN
96 LIBTOOL="`pwd`/libtool"
98 dnl ensure that we're looking for dlopen
101 dnl Figure out how to build shared libraries
106 dnl Put this in later, when all distributed modules use autoconf.
107 dnl AC_ARG_WITH(disablemodulefoo,
108 dnl [ --without-rlm_foo Disables module compilation. Module list:]
109 dnl esyscmd([find src/modules -type d -name rlm_\* -print |\
110 dnl sed -e 's%src/modules/.*/% (sub)- %; s%.*/%- %' |\
111 dnl awk '{print " "$0}']))
113 AC_ARG_ENABLE(strict-dependencies,
114 [ --enable-strict-dependencies Fail configure on lack of module dependancy.])
116 dnl extra argument: --with-docdir
117 docdir='${datadir}/doc/freeradius'
118 AC_MSG_CHECKING(docdir)
120 [ --with-docdir=DIR Directory for documentation [DATADIR/doc/freeradius] ],
127 [[\\/$]]* | ?:[[\\/]]* )
131 AC_MSG_ERROR([expected an absolute directory name for --with-docdir: $withval])
136 AC_MSG_RESULT($docdir)
137 if test "x$docdir" = xno; then
138 AC_MSG_WARN(Documentation files will NOT be installed.)
141 dnl extra argument: --with-logdir
142 logdir='${localstatedir}/log/radius'
143 AC_MSG_CHECKING(logdir)
145 [ --with-logdir=DIR Directory for logfiles [LOCALSTATEDIR/log/radius] ],
148 AC_MSG_ERROR(Need logdir)
152 [[\\/$]]* | ?:[[\\/]]* )
156 AC_MSG_ERROR([expected an absolute directory name for --with-logdir: $withval])
161 AC_MSG_RESULT($logdir)
163 dnl extra argument: --with-radacctdir
164 radacctdir='${logdir}/radacct'
165 AC_MSG_CHECKING(radacctdir)
166 AC_ARG_WITH(radacctdir,
167 [ --with-radacctdir=DIR Directory for detail files [LOGDIR/radacct] ],
170 AC_MSG_ERROR(Need radacctdir)
174 [[\\/$]]* | ?:[[\\/]]* )
175 radacctdir="$withval"
178 AC_MSG_ERROR([expected an absolute directory name for --with-radacctdir: $withval])
183 AC_MSG_RESULT($radacctdir)
185 dnl extra argument: --with-raddbdir
186 raddbdir='${sysconfdir}/raddb'
187 AC_MSG_CHECKING(raddbdir)
188 AC_ARG_WITH(raddbdir,
189 [ --with-raddbdir=DIR Directory for config files [SYSCONFDIR/raddb] ],
192 AC_MSG_ERROR(Need raddbdir)
196 [[\\/$]]* | ?:[[\\/]]* )
200 AC_MSG_ERROR([expected an absolute directory name for --with-raddbdir: $withval])
205 AC_MSG_RESULT($raddbdir)
207 dnl extra argument: --with-ascend-binary
209 AC_ARG_WITH(ascend-binary,
210 [ --with-ascend-binary Include support for Ascend binary filter attributes (default=yes)],
218 if test "X$ASCEND_BINARY" = "Xyes"; then
219 AC_DEFINE(ASCEND_BINARY, [], [Include support for Ascend binary filter attributes])
222 dnl extra argument: --with-threads
225 [ --with-threads Use threads, if available. (default=yes) ],
234 dnl extra argument: --with-vmps
237 [ --with-vmps Compile in VMPS support. (default=yes)],
245 if test "x$WITH_VMPS" = "xyes"; then
246 AC_DEFINE(WITH_VMPS, [1], [define if you want VMPS support])
249 dnl extra argument: --with-dhcp
252 [ --with-dhcp Compile in DHCP support. (default=yes)],
260 if test "x$WITH_DHCP" = "xyes"; then
261 AC_DEFINE(WITH_DHCP, [1], [define if you want DHCP support])
266 dnl # Allow the user to specify a list of modules to be linked
267 dnl # statically to the server.
270 AC_ARG_WITH(static_modules,
271 [ --with-static-modules=QUOTED-MODULE-LIST],[
272 for i in $withval; do
273 STATIC_MODULES="$STATIC_MODULES -dlpreopen ../modules/rlm_$i/rlm_$i.la"
279 [ --with-modules=QUOTED-MODULE-LIST],[
280 for i in $withval; do
281 MODULES="$MODULES $i"
286 dnl # Enable developer C compiler warnings
288 AC_ARG_ENABLE(developer,
289 [ --enable-developer Enables features of interest to developers.],
290 [ case "$enableval" in
299 if test "x$developer" != "xno" -a -d $srcdir/CVS; then
300 dnl turn on the developer flag when taken from a CVS checkout (not a release)
304 if test "x$developer" != "xno" -a -d $srcdir/.git; then
305 dnl turn on the developer flag when taken from a git checkout (not a release)
309 dnl extra argument: --with-experimental-modules
311 AC_ARG_WITH(experimental-modules,
312 [ --with-experimental-modules Use experimental and unstable modules. (default=no) ],
321 dnl extra argument: --with-openssl
324 [ --with-openssl Use OpenSSL. (default=yes)],
336 dnl # extra argument: --with-openssl-includes=dir
339 AC_ARG_WITH(openssl-includes,
340 [ --with-openssl-includes=DIR Directory to look for OpenSSL include files],
342 *) OPENSSL_INCLUDE_DIR="$withval"
348 dnl # extra argument: --with-openssl-libraries=dir
351 AC_ARG_WITH(openssl-libraries,
352 [ --with-openssl-libraries=DIR Directory to look for OpenSSL library files],
354 *) OPENSSL_LIB_DIR="$withval"
360 dnl # These next two arguments don't actually do anything. They're
361 dnl # place holders so that the top-level configure script can tell
362 dnl # the user how to configure lower-level modules
366 dnl # extra argument: --with-rlm-FOO-lib-dir
368 AC_ARG_WITH(rlm-FOO-lib-dir,
369 [ --with-rlm-FOO-lib-dir=DIR Directory to look for library files used by module FOO],
377 dnl # extra argument: --with-rlm-FOO-include-dir
379 AC_ARG_WITH(rlm-FOO-include-dir,
380 [ --with-rlm-FOO-include-dir=DIR Directory to look for include files used by module FOO],
387 dnl See what include-style is used by the make program.
388 dnl AC_MSG_CHECKING(include style for make)
389 dnl echo "include /dev/null" > testmake.$$
390 dnl echo "all:" >> testmake.$$
391 dnl make -f testmake.$$ >/dev/null 2>&1
400 dnl rm -f testmake.$$
401 dnl AC_MSG_RESULT(" $INCLUDE")
402 dnl AC_SUBST(INCLUDE)
405 dnl extra argument: --with-udpfromto
407 AC_ARG_WITH(udpfromto,
408 [ --with-udpfromto Compile in UDPFROMTO support. (default=no)],
418 if test "x$WITH_UDPFROMTO" = "xyes"; then
419 AC_DEFINE(WITH_UDPFROMTO, [], [define if you want udpfromto])
422 dnl #############################################################
424 dnl # 1. Checks for programs
426 dnl #############################################################
429 AC_PATH_PROG(PERL, perl, /usr/local/bin/perl)
430 if test "x$ac_cv_path_PERL" = "x"; then
431 AC_MSG_WARN(perl not found - Simultaneous-Use and checkrad.pl may not work)
433 AC_PATH_PROG(SNMPGET, snmpget)
434 if test "x$ac_cv_path_SNMPGET" = "x"; then
435 AC_MSG_WARN(snmpget not found - Simultaneous-Use and checkrad.pl may not work)
438 AC_PATH_PROG(SNMPWALK, snmpwalk)
439 if test "x$ac_cv_path_SNMPWALK" = "x"; then
440 AC_MSG_WARN(snmpwalk not found - Simultaneous-Use and checkrad.pl may not work)
443 AC_PATH_PROG(RUSERS, rusers, /usr/bin/rusers)
445 dnl FIXME This is truly gross.
446 missing_dir=`cd $ac_aux_dir && pwd`
447 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
448 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
449 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
451 AC_PATH_PROG(LOCATE,locate)
452 AC_PATH_PROG(DIRNAME,dirname)
453 AC_PATH_PROG(GREP,grep)
455 dnl #############################################################
457 dnl # 2. Checks for libraries
459 dnl #############################################################
461 dnl If using pthreads, check for -lpthread (posix) or -lc_r (*BSD)
463 if test "x$WITH_THREADS" = "xyes"; then
464 if test $ac_cv_prog_suncc = "yes"; then
468 AC_CHECK_HEADERS(pthread.h, [], [ WITH_THREADS="no" ])
471 dnl # pthread stuff is usually in -lpthread
472 dnl # or in -lc_r, on *BSD
474 dnl # On Some systems, we need extra pre-processor flags, to get them to
475 dnl # to do the threading properly.
477 AC_CHECK_LIB(pthread, pthread_create,
478 [ CFLAGS="$CFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS"
479 LIBS="-lpthread $LIBS" ],
480 AC_CHECK_LIB(c_r, pthread_create,
481 [ CFLAGS="$CFLAGS -pthread -D_THREAD_SAFE" ],
482 [ WITH_THREADS="no" ]
488 dnl # If we have NO pthread libraries, remove any knowledge of threads.
490 if test "x$WITH_THREADS" != "xyes"; then
492 ac_cv_header_pthread_h="no"
496 dnl # We need sem_init() and friends, as they're the friendliest
497 dnl # semaphore functions for threading.
499 dnl # HP/UX requires linking with librt, too, to get the sem_* symbols.
500 dnl # Some systems have them in -lsem
501 dnl # Solaris has them in -lposix4
502 dnl # NetBSD has them in -lsemaphore
504 AC_SEARCH_LIBS(sem_init, pthread sem posix4 rt semaphore,
506 [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)]
510 dnl Check if we need -lsocket
511 AC_CHECK_LIB(socket, getsockname)
513 dnl Check for -lresolv
514 dnl This library may be needed later.
515 AC_CHECK_LIB(resolv, inet_aton)
517 dnl Check if we need -lnsl. Usually if we want to
518 dnl link against -lsocket we need to include -lnsl as well.
519 AC_CHECK_LIB(nsl, inet_ntoa)
521 dnl Check for OpenSSL libraries.
523 if test "x$WITH_OPENSSL" = xyes; then
525 old_LDFLAGS="$LDFLAGS"
526 if test "x$OPENSSL_LIB_DIR" != "x"; then
527 LDFLAGS="$LDFLAGS -L$OPENSSL_LIB_DIR"
529 AC_CHECK_LIB(crypto, DH_new,
531 LIBS="-lcrypto $LIBS"
532 AC_DEFINE(HAVE_LIBCRYPTO, 1,
533 [Define to 1 if you have the `crypto' library (-lcrypto).])
534 AC_CHECK_LIB(ssl, SSL_new,
536 AC_DEFINE(HAVE_LIBSSL, 1,
537 [Define to 1 if you have the `ssl' library (-lssl).])
538 if test "x$OPENSSL_LIB_DIR" != "x"; then
539 OPENSSL_LIBS="-L$OPENSSL_LIB_DIR"
541 OPENSSL_LIBS="$OPENSSL_LIBS -lcrypto -lssl -lcrypto"
545 LDFLAGS="$old_LDFLAGS"
548 AC_CHECK_LIB(ws2_32, htonl)
550 dnl Check the pcap library for the RADIUS sniffer.
552 AC_CHECK_LIB(pcap, pcap_open_live,
554 AC_DEFINE(HAVE_LIBPCAP, 1,
555 [Define to 1 if you have the `pcap' library (-lpcap).])
557 [ AC_MSG_WARN([pcap library not found, silently disabling the RADIUS sniffer.]) ])
561 dnl #############################################################
563 dnl # 3. Checks for header files
565 dnl #############################################################
568 dnl # Interix requires us to set -D_ALL_SOURCE, otherwise
569 dnl # getopt will be #included, but won't link. <sigh>
574 CFLAGS="$CFLAGS -D_ALL_SOURCE"
577 CFLAGS="$CFLAGS -DDARWIN"
578 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(pcreposix.h, AC_DEFINE(HAVE_PCREPOSIX_H, [], [define this if we have the <pcreposix.h> header file]))
636 if test "x$ac_cv_header_pcreposix_h" = "xyes"; then
637 AC_DEFINE(HAVE_REGEX_H, [], [define if we have any regex])
641 LIBS="$LIBS -lpcreposix"
644 AC_CHECK_HEADER(regex.h, AC_DEFINE(HAVE_REGEX_H, [], [define this if we have the <regex.h> header file]))
645 if test "x$ac_cv_header_regex_h" = "xyes"; then
654 ], [AC_DEFINE(HAVE_REG_EXTENDED, [], [define this if we have REG_EXTENDED (from <regex.h>)]) REGEX_EXTENDED=yes])
660 AC_SUBST(REGEX_EXTENDED)
663 dnl # other checks which require headers
665 if test "x$ac_cv_header_sys_security_h" = "xyes" && test "x$ac_cv_header_prot_h" = "xyes"
667 AC_DEFINE(OSFC2, [], [define if you have OSFC2 authentication])
670 if test "x$ac_cv_header_sia_h" = "xyes" && test "x$ac_cv_header_siad_h" = "xyes"
672 AC_DEFINE(OSFSIA, [], [define if you have OSFSIA authentication])
675 dnl Check for OpenSSL includes.
676 OPENSSL_INCLUDE="-DNO_OPENSSL"
677 if test "x$WITH_OPENSSL" = xyes; then
678 if test "x$OPENSSL_LIBS" = "x"; then
679 AC_MSG_NOTICE([skipping test for openssl/ssl.h])
681 old_CPPFLAGS=$CPPFLAGS
682 if test "x$OPENSSL_INCLUDE_DIR" != "x"; then
683 CPPFLAGS="$CPPFLAGS -I$OPENSSL_INCLUDE_DIR"
685 dnl # stupid RedHat shit
686 CPPFLAGS="$CPPFLAGS -DOPENSSL_NO_KRB5"
700 if test "x$OPENSSL_LIBS" != "x"; then
701 AC_MSG_CHECKING([for OpenSSL version >= 0.9.7])
703 [#include <openssl/crypto.h>
704 #if (OPENSSL_VERSION_NUMBER >= 0x00907000L)
708 if test "x$goodssl" != "xyes"; then
713 if test "x$OPENSSL_INCLUDE_DIR" != "x"; then
714 OPENSSL_INCLUDE="-I$OPENSSL_INCLUDE_DIR -DOPENSSL_NO_KRB5"
716 OPENSSL_INCLUDE="-DOPENSSL_NO_KRB5"
720 CPPFLAGS=$old_CPPFLAGS
723 AC_SUBST(OPENSSL_INCLUDE)
724 AC_SUBST(OPENSSL_LIBS)
727 dnl Check the pcap includes for the RADIUS sniffer.
728 if test "x$PCAP_LIBS" = x; then
729 AC_MSG_NOTICE([skipping test for pcap.h.])
731 AC_CHECK_HEADER(pcap.h,
732 AC_DEFINE(HAVE_PCAP_H, 1,
733 [Define to 1 if you have the <pcap.h> header file.]),
735 AC_MSG_WARN([pcap.h not found, silently disabling the RADIUS sniffer.])
738 AC_CHECK_LIB(pcap, pcap_fopen_offline,
739 [ AC_DEFINE(HAVE_PCAP_FOPEN_OFFLINE, 1,
740 [Define to 1 if you have the function pcap_fopen_offline.])
742 AC_CHECK_LIB(pcap, pcap_dump_fopen,
743 [ AC_DEFINE(HAVE_PCAP_DUMP_FOPEN, 1,
744 [Define to 1 if you have the function pcap_dump_fopen.])
749 dnl #############################################################
751 dnl # 4. Checks for typedefs
753 dnl #############################################################
756 dnl # Ensure that these are defined
763 dnl check for socklen_t
764 FR_CHECK_TYPE_INCLUDE([
765 #ifdef HAVE_SYS_TYPES_H
766 #include <sys/types.h>
768 #ifdef HAVE_SYS_SOCKET_H
769 #include <sys/socket.h>
771 ],socklen_t, int, [socklen_t is generally 'int' on systems which don't use it])
773 dnl check for uint8_t
774 FR_CHECK_TYPE_INCLUDE([
775 #ifdef HAVE_INTTYPES_H
776 #include <inttypes.h>
781 ],uint8_t, unsigned char, [uint8_t should be the canonical 'octet' for network traffic])
783 dnl check for uint16_t
784 FR_CHECK_TYPE_INCLUDE([
785 #ifdef HAVE_INTTYPES_H
786 #include <inttypes.h>
791 ],uint16_t, unsigned short, [uint16_t should be the canonical '2 octets' for network traffic])
793 dnl check for uint32_t
794 FR_CHECK_TYPE_INCLUDE([
795 #ifdef HAVE_INTTYPES_H
796 #include <inttypes.h>
801 ],uint32_t, unsigned int, [uint32_t should be the canonical 'network integer])
803 AC_CHECK_TYPE(struct in6_addr, AC_DEFINE(HAVE_STRUCT_IN6_ADDR, 1, [IPv6 address structure]), [], [
804 #ifdef HAVE_NETINET_IN_H
805 #include <netinet/in.h>
809 AC_CHECK_TYPE(struct sockaddr_storage, AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE, 1, [Generic socket addresses]), [], [
810 #ifdef HAVE_NETINET_IN_H
811 #include <netinet/in.h>
813 #ifdef HAVE_SYS_SOCKET_H
814 #include <sys/socket.h>
818 AC_CHECK_TYPE(struct sockaddr_in6, AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6, 1, [IPv6 socket addresses]), [], [
819 #ifdef HAVE_NETINET_IN_H
820 #include <netinet/in.h>
824 AC_CHECK_TYPE(struct addrinfo, AC_DEFINE(HAVE_STRUCT_ADDRINFO, 1, [Generic DNS lookups]), [], [
825 #ifdef HAVE_SYS_TYPES_H
826 #include <sys/types.h>
828 #ifdef HAVE_SYS_SOCKET_H
829 #include <sys/socket.h>
836 dnl #############################################################
838 dnl # 5. Checks for structures and functions
840 dnl #############################################################
875 RADIUSD_NEED_DECLARATIONS( \
887 dnl # check if we have utmpx.h
888 dnl # if so, check if struct utmpx has entry ut_xtime
889 dnl # if not, set it to define ut_xtime == ut_tv.tv_sec
890 if test "x$ac_cv_header_utmpx_h" = "xyes"
892 FR_CHECK_STRUCT_HAS_MEMBER([#include <utmpx.h>], [struct utmpx], ut_xtime)
893 if test "x$ac_cv_type_struct_utmpx_has_ut_xtime" = "x"
895 AC_DEFINE(ut_xtime,ut_tv.tv_sec, [define to something if you don't have ut_xtime in struct utmpx])
899 dnl # struct ip_pktinfo
900 FR_CHECK_STRUCT_HAS_MEMBER([#include <netinet/in.h>], [struct in_pktinfo], ipi_addr)
901 if test "x$ac_cv_type_struct_in_pktinfo_has_ipi_addr" = "xyes"
903 AC_DEFINE(HAVE_IP_PKTINFO, [], [define if you have IP_PKTINFO (Linux)])
906 dnl # struct in6_pktinfo
907 FR_CHECK_STRUCT_HAS_MEMBER([#include <netinet/in.h>], [struct in6_pktinfo], ipi6_addr)
908 if test "x$ac_cv_type_struct_in6_pktinfo_has_ipi6_addr" = "xyes"
910 AC_DEFINE(HAVE_IN6_PKTINFO, [], [define if you have IN6_PKTINFO (Linux)])
913 dnl #############################################################
915 dnl # 6. Checks for compiler characteristics
917 dnl #############################################################
920 dnl # Ensure that these are defined
925 dnl # See if this is OS/2
927 AC_MSG_CHECKING(type of OS)
930 if test "$OS" = "OS/2"; then
937 AC_MSG_CHECKING(for developer gcc flags)
938 if test "x$developer" = "xyes" -a "x$GCC" = "xyes"; then
939 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"
940 CFLAGS="$CFLAGS $devflags"
942 AC_MSG_RESULT(yes. Using $devflags)
945 CFLAGS="$CFLAGS -DNDEBUG"
952 dnl #############################################################
954 dnl # 7. Checks for library functions
956 dnl #############################################################
959 LIBS="$LIBS $LIBLTDL"
960 AC_CHECK_FUNC(lt_dladvise_init, AC_DEFINE(HAVE_LT_DLADVISE_INIT, [], [Do we have the lt_dladvise_init function]))
963 dnl Check for libcrypt
964 dnl We use crypt(3) which may be in libc, or in libcrypt (eg FreeBSD)
965 AC_CHECK_LIB(crypt, crypt,
968 if test "$CRYPTLIB" != ""; then
969 AC_DEFINE(HAVE_CRYPT, [], [Do we have the crypt function])
971 AC_CHECK_FUNC(crypt, AC_DEFINE(HAVE_CRYPT, [], [Do we have the crypt function]))
974 dnl Check for libcipher
975 AC_CHECK_LIB(cipher, setkey,
976 CRYPTLIB="${CRYPTLIB} -lcipher"
980 dnl Check the style of gethostbyaddr, in order of preference
981 dnl GNU (_r eight args)
982 AC_DEFINE(GNUSTYLE, [1], [GNU-Style get*byaddr_r])
983 dnl SYSV (_r six args)
984 AC_DEFINE(SYSVSTYLE, [2], [SYSV-Style get*byaddr_r])
985 dnl BSD (three args, may not be thread safe)
986 AC_DEFINE(BSDSTYLE, [3], [BSD-Style get*byaddr_r])
987 dnl Tru64 has BSD version, but it is thread safe
988 dnl http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/1739____.HTM
989 dnl We need #stdio.h to define NULL on FreeBSD (at least)
990 gethostbyaddrrstyle=""
991 AC_MSG_CHECKING([gethostbyaddr_r() syntax])
994 dnl With FreeBSD, check if there's a prototype for gethostbyaddr_r.
995 dnl Some versions (FreeBSD 5.1?) have a symbol but no prototype - so we
996 dnl override this test to BSDSTYLE. FreeBSD 6.2 and up have proper GNU
998 AC_CHECK_DECLS([gethostbyaddr_r], [], [
999 AC_DEFINE(GETHOSTBYADDRRSTYLE, BSDSTYLE,
1000 [style of gethostbyaddr_r functions ])
1001 gethostbyaddrrstyle=BSD
1002 AC_MSG_WARN([FreeBSD overridden to BSD-style])
1010 if test "x$gethostbyaddrrstyle" = "x"; then
1014 ], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL, NULL) ], [
1015 AC_DEFINE(GETHOSTBYADDRRSTYLE, GNUSTYLE, [style of gethostbyaddr_r functions ])
1016 gethostbyaddrrstyle=GNU
1019 if test "x$gethostbyaddrrstyle" = "x"; then
1023 ], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL) ] , [
1024 AC_DEFINE(GETHOSTBYADDRRSTYLE, SYSVSTYLE, [style of gethostbyaddr_r functions ])
1025 gethostbyaddrrstyle=SYSV
1028 if test "x$gethostbyaddrrstyle" = "x"; then
1032 ], [ gethostbyaddr(NULL, 0, 0) ], [
1033 AC_DEFINE(GETHOSTBYADDRRSTYLE, BSDSTYLE, [style of gethostbyaddr_r functions ])
1034 gethostbyaddrrstyle=BSD
1038 if test "x$gethostbyaddrrstyle" = "x"; then
1039 AC_MSG_RESULT([none! It must not exist, here.])
1041 AC_MSG_RESULT([${gethostbyaddrrstyle}-style])
1044 if test "x$gethostbyaddrrstyle" = "xBSD"; then
1045 AC_MSG_WARN([ ****** BSD-style gethostbyaddr might NOT be thread-safe! ****** ])
1048 dnl Check the style of gethostbyname, in order of preference
1049 dnl GNU (_r seven args)
1050 dnl SYSV (_r five args)
1051 dnl BSD (two args, may not be thread safe)
1052 dnl Tru64 has BSD version, but it _is_ thread safe
1053 dnl http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/1946____.HTM
1054 dnl We need #stdio.h to define NULL on FreeBSD (at least)
1055 gethostbynamerstyle=""
1056 AC_MSG_CHECKING([gethostbyname_r() syntax])
1060 ], [ gethostbyname_r(NULL, NULL, NULL, 0, NULL, NULL) ], [
1061 AC_DEFINE(GETHOSTBYNAMERSTYLE, GNUSTYLE, [style of gethostbyname_r functions ])
1062 gethostbynamerstyle=GNU
1064 if test "x$gethostbynamerstyle" = "x"; then
1068 ], [ gethostbyname_r(NULL, NULL, NULL, 0, NULL) ] , [
1069 AC_DEFINE(GETHOSTBYNAMERSTYLE, SYSVSTYLE, [style of gethostbyname_r functions ])
1070 gethostbynamerstyle=SYSV
1073 if test "x$gethostbynamerstyle" = "x"; then
1077 ], [ gethostbyname(NULL) ], [
1078 AC_DEFINE(GETHOSTBYNAMERSTYLE, BSDSTYLE, [style of gethostbyname_r functions ])
1079 gethostbynamerstyle=BSD
1083 if test "x$gethostbynamerstyle" = "x"; then
1084 AC_MSG_RESULT([none! It must not exist, here.])
1086 AC_MSG_RESULT([${gethostbynamerstyle}-style])
1089 if test "x$gethostbynamerstyle" = "xBSD"; then
1090 AC_MSG_WARN([ ****** BSD-style gethostbyname might NOT be thread-safe! ****** ])
1093 dnl check for non-posix solaris ctime_r (extra buflen int arg)
1094 AC_DEFINE(POSIXSTYLE, [1], [Posix-Style ctime_r])
1095 AC_DEFINE(SOLARISSTYLE, [2], [Solaris-Style ctime_r])
1097 AC_MSG_CHECKING([ctime_r() syntax])
1100 ], [ ctime_r(NULL, NULL, 0) ], [
1101 AC_DEFINE(CTIMERSTYLE, SOLARISSTYLE, [style of ctime_r function])
1102 ctimerstyle="SOLARIS"
1104 if test "x$ctimerstyle" = "x"; then
1107 ], [ ctime_r(NULL, NULL) ], [
1108 AC_DEFINE(CTIMERSTYLE, POSIXSTYLE, [style of ctime_r function])
1113 if test "x$ctimerstyle" = "x"; then
1114 AC_MSG_RESULT([none! It must not exist, here.])
1116 AC_MSG_RESULT([${ctimerstyle}-style])
1119 AC_SUBST(HOSTINFO, $host)
1121 dnl #############################################################
1123 dnl # 8. Checks for system services
1125 dnl #############################################################
1128 dnl # Figure out where libtool is located,
1132 AC_MSG_RESULT([top_builddir=$top_builddir])
1133 dnl # AC_SUBST(top_builddir)
1137 dnl import libtool stuff
1139 dnl #############################################################
1141 dnl # Configure in any module directories.
1143 dnl #############################################################
1146 if test "x$EXPERIMENTAL" = "xyes"; then
1147 bar=`ls -1 "${srcdir}"/src/modules/rlm_*/configure | sed 's%/configure%%'`
1148 dnl # get rid of LF's.
1149 mysubdirs=`echo $mysubdirs $bar`
1152 dnl # Find 'configure' in ONLY the stable modules
1154 for bar in `cat "${srcdir}"/src/modules/stable`; do
1155 if test -f "${srcdir}"/src/modules/$bar/configure; then
1156 mysubdirs="$mysubdirs src/modules/$bar"
1161 dnl ############################################################
1162 dnl # make modules by list
1163 dnl #############################################################
1164 if test "x$EXPERIMENTAL" = "xyes"; then
1165 for foo in `ls -1 "${srcdir}"/src/modules | grep rlm_`; do
1166 MODULES="$MODULES $foo"
1170 dnl # make ONLY the stable modules
1172 for foo in `cat "${srcdir}"/src/modules/stable`; do
1173 MODULES="$MODULES $foo"
1178 dnl # Don't change the variable name here. Autoconf goes bonkers
1181 AC_CONFIG_SUBDIRS($mysubdirs)
1184 dnl #############################################################
1186 dnl # And finally, output the results.
1188 dnl #############################################################
1190 AC_CONFIG_COMMANDS([stamp-h], [echo timestamp > src/include/stamp-h])
1191 AC_CONFIG_COMMANDS([build-radpaths-h], [(cd ./src/include && /bin/sh ./build-radpaths-h)])
1192 AC_CONFIG_COMMANDS([main-chmod], [(cd ./src/main && chmod +x checkrad.pl radlast radtest)])
1193 AC_CONFIG_COMMANDS([scripts-chmod], [(cd ./scripts && chmod +x rc.radiusd radiusd.cron.daily radiusd.cron.monthly cryptpasswd)])
1196 dnl # Substitute whatever libraries we found to be necessary
1199 AC_SUBST(INSTALLSTRIP)
1201 USE_SHARED_LIBS=$enable_shared
1202 AC_SUBST(USE_SHARED_LIBS)
1203 USE_STATIC_LIBS=$enable_static
1204 AC_SUBST(USE_STATIC_LIBS)
1205 AC_SUBST(STATIC_MODULES)
1206 AC_SUBST(RADIUSD_MAJOR_VERSION)
1207 AC_SUBST(RADIUSD_MINOR_VERSION)
1208 AC_SUBST(RADIUSD_VERSION)
1212 ./src/include/build-radpaths-h \
1213 ./src/main/Makefile \
1214 ./src/main/radsniff.mk \
1215 ./src/main/checkrad.pl \
1216 ./src/main/radlast \
1217 ./src/main/radtest \
1218 ./scripts/rc.radiusd \
1219 ./scripts/radiusd.cron.daily \
1220 ./scripts/radiusd.cron.monthly \
1221 ./scripts/cryptpasswd \
1222 ./raddb/dictionary \
1223 ./raddb/radrelay.conf \
1224 ./raddb/radiusd.conf