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)],
83 dnl If libltdl isn't installable, set it to be installable.
84 [test x"$enable_ltdl_install" = x && enable_ltdl_install=yes]
85 AC_LIBLTDL_INSTALLABLE
87 dnl tell Makefile to build ltdl if needed
88 if test x"$enable_ltdl_install" = x"yes"; then
92 AC_SUBST(LTDL_SUBDIRS)
94 dnl use system-wide libtool, if it exists
95 AC_ARG_WITH(system-libtool,
96 [ --with-system-libtool Use the libtool installed in your system (default=use our own)],
97 [ AC_PATH_PROG(LIBTOOL, libtool,,$PATH:/usr/local/bin) ],
99 LIBTOOL="`pwd`/libtool"
101 dnl ensure that we're looking for dlopen
104 dnl Figure out how to build shared libraries
109 dnl Put this in later, when all distributed modules use autoconf.
110 dnl AC_ARG_WITH(disablemodulefoo,
111 dnl [ --without-rlm_foo Disables module compilation. Module list:]
112 dnl esyscmd([find src/modules -type d -name rlm_\* -print |\
113 dnl sed -e 's%src/modules/.*/% (sub)- %; s%.*/%- %' |\
114 dnl awk '{print " "$0}']))
116 AC_ARG_ENABLE(strict-dependencies,
117 [ --enable-strict-dependencies Fail configure on lack of module dependancy.])
119 dnl extra argument: --with-docdir
120 docdir='${datadir}/doc/freeradius'
121 AC_MSG_CHECKING(docdir)
123 [ --with-docdir=DIR Directory for documentation [DATADIR/doc/freeradius] ],
130 [[\\/$]]* | ?:[[\\/]]* )
134 AC_MSG_ERROR([expected an absolute directory name for --with-docdir: $withval])
139 AC_MSG_RESULT($docdir)
140 if test "x$docdir" = xno; then
141 AC_MSG_WARN(Documentation files will NOT be installed.)
144 dnl extra argument: --with-logdir
145 logdir='${localstatedir}/log/radius'
146 AC_MSG_CHECKING(logdir)
148 [ --with-logdir=DIR Directory for logfiles [LOCALSTATEDIR/log/radius] ],
151 AC_MSG_ERROR(Need logdir)
155 [[\\/$]]* | ?:[[\\/]]* )
159 AC_MSG_ERROR([expected an absolute directory name for --with-logdir: $withval])
164 AC_MSG_RESULT($logdir)
166 dnl extra argument: --with-radacctdir
167 radacctdir='${logdir}/radacct'
168 AC_MSG_CHECKING(radacctdir)
169 AC_ARG_WITH(radacctdir,
170 [ --with-radacctdir=DIR Directory for detail files [LOGDIR/radacct] ],
173 AC_MSG_ERROR(Need radacctdir)
177 [[\\/$]]* | ?:[[\\/]]* )
178 radacctdir="$withval"
181 AC_MSG_ERROR([expected an absolute directory name for --with-radacctdir: $withval])
186 AC_MSG_RESULT($radacctdir)
188 dnl extra argument: --with-raddbdir
189 raddbdir='${sysconfdir}/raddb'
190 AC_MSG_CHECKING(raddbdir)
191 AC_ARG_WITH(raddbdir,
192 [ --with-raddbdir=DIR Directory for config files [SYSCONFDIR/raddb] ],
195 AC_MSG_ERROR(Need raddbdir)
199 [[\\/$]]* | ?:[[\\/]]* )
203 AC_MSG_ERROR([expected an absolute directory name for --with-raddbdir: $withval])
208 AC_MSG_RESULT($raddbdir)
210 dnl extra argument: --with-ascend-binary
212 AC_ARG_WITH(ascend-binary,
213 [ --with-ascend-binary Include support for Ascend binary filter attributes (default=yes)],
221 if test "X$ASCEND_BINARY" = "Xyes"; then
222 AC_DEFINE(ASCEND_BINARY, [], [Include support for Ascend binary filter attributes])
225 dnl extra argument: --with-threads
228 [ --with-threads Use threads, if available. (default=yes) ],
237 dnl extra argument: --with-vmps
240 [ --with-vmps Compile in VMPS support. (default=yes)],
248 if test "x$WITH_VMPS" = "xyes"; then
249 AC_DEFINE(WITH_VMPS, [1], [define if you want VMPS support])
252 dnl extra argument: --with-dhcp
254 [ --with-dhcp Compile in DHCP support. (default=no)],
257 AC_DEFINE(WITH_DHCP, [1], [Include experimental support for DHCP])
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="$LIBS -lpthread" ],
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"
625 dnl FreeBSD requires sys/socket.h before net/if.h
626 AC_CHECK_HEADERS(net/if.h, [], [],
627 [#ifdef HAVE_SYS_SOCKET_H
628 # include <sys/socket.h>
633 AC_CHECK_HEADER(regex.h, AC_DEFINE(HAVE_REGEX_H, [], [define this if we have the <regex.h> header file]))
634 if test "x$ac_cv_header_regex_h" = "xyes"; then
642 ], [AC_DEFINE(HAVE_REG_EXTENDED, [], [define this if we have REG_EXTENDED (from <regex.h>)]) REGEX_EXTENDED=yes])
645 AC_SUBST(REGEX_EXTENDED)
648 dnl # other checks which require headers
650 if test "x$ac_cv_header_sys_security_h" = "xyes" && test "x$ac_cv_header_prot_h" = "xyes"
652 AC_DEFINE(OSFC2, [], [define if you have OSFC2 authentication])
655 if test "x$ac_cv_header_sia_h" = "xyes" && test "x$ac_cv_header_siad_h" = "xyes"
657 AC_DEFINE(OSFSIA, [], [define if you have OSFSIA authentication])
660 dnl Check for OpenSSL includes.
661 OPENSSL_INCLUDE="-DNO_OPENSSL"
662 if test "x$WITH_OPENSSL" = xyes; then
663 if test "x$OPENSSL_LIBS" = "x"; then
664 AC_MSG_NOTICE([skipping test for openssl/ssl.h])
666 old_CPPFLAGS=$CPPFLAGS
667 if test "x$OPENSSL_INCLUDE_DIR" != "x"; then
668 CPPFLAGS="$CPPFLAGS -I$OPENSSL_INCLUDE_DIR"
670 dnl # stupid RedHat shit
671 CPPFLAGS="$CPPFLAGS -DOPENSSL_NO_KRB5"
681 if test "x$OPENSSL_LIBS" != "x"; then
682 AC_MSG_CHECKING([for OpenSSL version >= 0.9.7])
684 [#include <openssl/crypto.h>
685 #if (OPENSSL_VERSION_NUMBER >= 0x00907000L)
689 if test "x$goodssl" != "xyes"; then
694 if test "x$OPENSSL_INCLUDE_DIR" != "x"; then
695 OPENSSL_INCLUDE="-I$OPENSSL_INCLUDE_DIR -DOPENSSL_NO_KRB5"
697 OPENSSL_INCLUDE="-DOPENSSL_NO_KRB5"
701 CPPFLAGS=$old_CPPFLAGS
704 AC_SUBST(OPENSSL_INCLUDE)
705 AC_SUBST(OPENSSL_LIBS)
708 dnl Check the pcap includes for the RADIUS sniffer.
709 if test "x$PCAP_LIBS" = x; then
710 AC_MSG_NOTICE([skipping test for pcap.h.])
712 AC_CHECK_HEADER(pcap.h,
713 AC_DEFINE(HAVE_PCAP_H, 1,
714 [Define to 1 if you have the <pcap.h> header file.]),
716 AC_MSG_WARN([pcap.h not found, silently disabling the RADIUS sniffer.])
721 dnl #############################################################
723 dnl # 4. Checks for typedefs
725 dnl #############################################################
728 dnl # Ensure that these are defined
735 dnl check for socklen_t
736 FR_CHECK_TYPE_INCLUDE([
737 #ifdef HAVE_SYS_TYPES_H
738 #include <sys/types.h>
740 #ifdef HAVE_SYS_SOCKET_H
741 #include <sys/socket.h>
743 ],socklen_t, int, [socklen_t is generally 'int' on systems which don't use it])
745 dnl check for uint8_t
746 FR_CHECK_TYPE_INCLUDE([
747 #ifdef HAVE_INTTYPES_H
748 #include <inttypes.h>
753 ],uint8_t, unsigned char, [uint8_t should be the canonical 'octet' for network traffic])
755 dnl check for uint16_t
756 FR_CHECK_TYPE_INCLUDE([
757 #ifdef HAVE_INTTYPES_H
758 #include <inttypes.h>
763 ],uint16_t, unsigned short, [uint16_t should be the canonical '2 octets' for network traffic])
765 dnl check for uint32_t
766 FR_CHECK_TYPE_INCLUDE([
767 #ifdef HAVE_INTTYPES_H
768 #include <inttypes.h>
773 ],uint32_t, unsigned int, [uint32_t should be the canonical 'network integer])
775 AC_CHECK_TYPE(struct in6_addr, AC_DEFINE(HAVE_STRUCT_IN6_ADDR, 1, [IPv6 address structure]), [], [
776 #ifdef HAVE_NETINET_IN_H
777 #include <netinet/in.h>
781 AC_CHECK_TYPE(struct sockaddr_storage, AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE, 1, [Generic socket addresses]), [], [
782 #ifdef HAVE_NETINET_IN_H
783 #include <netinet/in.h>
785 #ifdef HAVE_SYS_SOCKET_H
786 #include <sys/socket.h>
790 AC_CHECK_TYPE(struct sockaddr_in6, AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6, 1, [IPv6 socket addresses]), [], [
791 #ifdef HAVE_NETINET_IN_H
792 #include <netinet/in.h>
796 AC_CHECK_TYPE(struct addrinfo, AC_DEFINE(HAVE_STRUCT_ADDRINFO, 1, [Generic DNS lookups]), [], [
797 #ifdef HAVE_SYS_TYPES_H
798 #include <sys/types.h>
800 #ifdef HAVE_SYS_SOCKET_H
801 #include <sys/socket.h>
808 dnl #############################################################
810 dnl # 5. Checks for structures and functions
812 dnl #############################################################
847 RADIUSD_NEED_DECLARATIONS( \
859 dnl # check if we have utmpx.h
860 dnl # if so, check if struct utmpx has entry ut_xtime
861 dnl # if not, set it to define ut_xtime == ut_tv.tv_sec
862 if test "x$ac_cv_header_utmpx_h" = "xyes"
864 FR_CHECK_STRUCT_HAS_MEMBER([#include <utmpx.h>], [struct utmpx], ut_xtime)
865 if test "x$ac_cv_type_struct_utmpx_has_ut_xtime" = "x"
867 AC_DEFINE(ut_xtime,ut_tv.tv_sec, [define to something if you don't have ut_xtime in struct utmpx])
871 dnl # struct ip_pktinfo
872 FR_CHECK_STRUCT_HAS_MEMBER([#include <netinet/in.h>], [struct in_pktinfo], ipi_addr)
873 if test "x$ac_cv_type_struct_in_pktinfo_has_ipi_addr" = "xyes"
875 AC_DEFINE(HAVE_IP_PKTINFO, [], [define if you have IP_PKTINFO (Linux)])
878 dnl # struct in6_pktinfo
879 FR_CHECK_STRUCT_HAS_MEMBER([#include <netinet/in.h>], [struct in6_pktinfo], ipi6_addr)
880 if test "x$ac_cv_type_struct_in6_pktinfo_has_ipi6_addr" = "xyes"
882 AC_DEFINE(HAVE_IN6_PKTINFO, [], [define if you have IN6_PKTINFO (Linux)])
885 dnl #############################################################
887 dnl # 6. Checks for compiler characteristics
889 dnl #############################################################
892 dnl # Ensure that these are defined
897 dnl # See if this is OS/2
899 AC_MSG_CHECKING(type of OS)
902 if test "$OS" = "OS/2"; then
910 dnl # Set Default CFLAGS
912 if test "x$GCC" = "xyes"; then
913 CFLAGS="$CFLAGS -Wall -D_GNU_SOURCE"
916 AC_MSG_CHECKING(for developer gcc flags)
917 if test "x$developer" = "xyes" -a "x$GCC" = "xyes"; then
918 devflags="-g -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -W -Wredundant-decls -Wundef"
919 CFLAGS="$CFLAGS $devflags"
921 AC_MSG_RESULT(yes. Using $devflags)
924 CFLAGS="$CFLAGS -DNDEBUG"
931 dnl #############################################################
933 dnl # 7. Checks for library functions
935 dnl #############################################################
938 LIBS="$LIBS $LIBLTDL"
939 AC_CHECK_FUNC(lt_dladvise_init, AC_DEFINE(HAVE_HAVE_LT_DLADVISE_INIT, [], [Do we have the lt_dladvise_init function]))
942 dnl Check for libcrypt
943 dnl We use crypt(3) which may be in libc, or in libcrypt (eg FreeBSD)
944 AC_CHECK_LIB(crypt, crypt,
947 if test "$CRYPTLIB" != ""; then
948 AC_DEFINE(HAVE_CRYPT, [], [Do we have the crypt function])
950 AC_CHECK_FUNC(crypt, AC_DEFINE(HAVE_CRYPT, [], [Do we have the crypt function]))
953 dnl Check for libcipher
954 AC_CHECK_LIB(cipher, setkey,
955 CRYPTLIB="${CRYPTLIB} -lcipher"
959 dnl Check the style of gethostbyaddr, in order of preference
960 dnl GNU (_r eight args)
961 AC_DEFINE(GNUSTYLE, [1], [GNU-Style get*byaddr_r])
962 dnl SYSV (_r six args)
963 AC_DEFINE(SYSVSTYLE, [2], [SYSV-Style get*byaddr_r])
964 dnl BSD (three args, may not be thread safe)
965 AC_DEFINE(BSDSTYLE, [3], [BSD-Style get*byaddr_r])
966 dnl Tru64 has BSD version, but it is thread safe
967 dnl http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/1739____.HTM
968 dnl We need #stdio.h to define NULL on FreeBSD (at least)
969 gethostbyaddrrstyle=""
970 AC_MSG_CHECKING([gethostbyaddr_r() syntax])
973 dnl With FreeBSD, check if there's a prototype for gethostbyaddr_r.
974 dnl Some versions (FreeBSD 5.1?) have a symbol but no prototype - so we
975 dnl override this test to BSDSTYLE. FreeBSD 6.2 and up have proper GNU
977 AC_CHECK_DECLS([gethostbyaddr_r], [], [
978 AC_DEFINE(GETHOSTBYADDRRSTYLE, BSDSTYLE,
979 [style of gethostbyaddr_r functions ])
980 gethostbyaddrrstyle=BSD
981 AC_MSG_WARN([FreeBSD overridden to BSD-style])
989 if test "x$gethostbyaddrrstyle" = "x"; then
993 ], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL, NULL) ], [
994 AC_DEFINE(GETHOSTBYADDRRSTYLE, GNUSTYLE, [style of gethostbyaddr_r functions ])
995 gethostbyaddrrstyle=GNU
998 if test "x$gethostbyaddrrstyle" = "x"; then
1002 ], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL) ] , [
1003 AC_DEFINE(GETHOSTBYADDRRSTYLE, SYSVSTYLE, [style of gethostbyaddr_r functions ])
1004 gethostbyaddrrstyle=SYSV
1007 if test "x$gethostbyaddrrstyle" = "x"; then
1011 ], [ gethostbyaddr(NULL, 0, 0) ], [
1012 AC_DEFINE(GETHOSTBYADDRRSTYLE, BSDSTYLE, [style of gethostbyaddr_r functions ])
1013 gethostbyaddrrstyle=BSD
1017 if test "x$gethostbyaddrrstyle" = "x"; then
1018 AC_MSG_RESULT([none! It must not exist, here.])
1020 AC_MSG_RESULT([${gethostbyaddrrstyle}-style])
1023 if test "x$gethostbyaddrrstyle" = "xBSD"; then
1024 AC_MSG_WARN([ ****** BSD-style gethostbyaddr might NOT be thread-safe! ****** ])
1027 dnl Check the style of gethostbyname, in order of preference
1028 dnl GNU (_r seven args)
1029 dnl SYSV (_r five args)
1030 dnl BSD (two args, may not be thread safe)
1031 dnl Tru64 has BSD version, but it _is_ thread safe
1032 dnl http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/1946____.HTM
1033 dnl We need #stdio.h to define NULL on FreeBSD (at least)
1034 gethostbynamerstyle=""
1035 AC_MSG_CHECKING([gethostbyname_r() syntax])
1039 ], [ gethostbyname_r(NULL, NULL, NULL, 0, NULL, NULL) ], [
1040 AC_DEFINE(GETHOSTBYNAMERSTYLE, GNUSTYLE, [style of gethostbyname_r functions ])
1041 gethostbynamerstyle=GNU
1043 if test "x$gethostbynamerstyle" = "x"; then
1047 ], [ gethostbyname_r(NULL, NULL, NULL, 0, NULL) ] , [
1048 AC_DEFINE(GETHOSTBYNAMERSTYLE, SYSVSTYLE, [style of gethostbyname_r functions ])
1049 gethostbynamerstyle=SYSV
1052 if test "x$gethostbynamerstyle" = "x"; then
1056 ], [ gethostbyname(NULL) ], [
1057 AC_DEFINE(GETHOSTBYNAMERSTYLE, BSDSTYLE, [style of gethostbyname_r functions ])
1058 gethostbynamerstyle=BSD
1062 if test "x$gethostbynamerstyle" = "x"; then
1063 AC_MSG_RESULT([none! It must not exist, here.])
1065 AC_MSG_RESULT([${gethostbynamerstyle}-style])
1068 if test "x$gethostbynamerstyle" = "xBSD"; then
1069 AC_MSG_WARN([ ****** BSD-style gethostbyname might NOT be thread-safe! ****** ])
1072 dnl check for non-posix solaris ctime_r (extra buflen int arg)
1073 AC_DEFINE(POSIXSTYLE, [1], [Posix-Style ctime_r])
1074 AC_DEFINE(SOLARISSTYLE, [2], [Solaris-Style ctime_r])
1076 AC_MSG_CHECKING([ctime_r() syntax])
1079 ], [ ctime_r(NULL, NULL, 0) ], [
1080 AC_DEFINE(CTIMERSTYLE, SOLARISSTYLE, [style of ctime_r function])
1081 ctimerstyle="SOLARIS"
1083 if test "x$ctimerstyle" = "x"; then
1086 ], [ ctime_r(NULL, NULL) ], [
1087 AC_DEFINE(CTIMERSTYLE, POSIXSTYLE, [style of ctime_r function])
1092 if test "x$ctimerstyle" = "x"; then
1093 AC_MSG_RESULT([none! It must not exist, here.])
1095 AC_MSG_RESULT([${ctimerstyle}-style])
1098 AC_SUBST(HOSTINFO, $host)
1100 dnl #############################################################
1102 dnl # 8. Checks for system services
1104 dnl #############################################################
1107 dnl # Figure out where libtool is located,
1111 AC_MSG_RESULT([top_builddir=$top_builddir])
1112 dnl # AC_SUBST(top_builddir)
1116 dnl import libtool stuff
1118 dnl #############################################################
1120 dnl # Configure in any module directories.
1122 dnl #############################################################
1124 mysubdirs="$LIBLTDLPATH"
1125 if test "x$EXPERIMENTAL" = "xyes"; then
1126 bar=`ls -1 "${srcdir}"/src/modules/rlm_*/configure | sed 's%/configure%%'`
1127 dnl # get rid of LF's.
1128 mysubdirs=`echo $mysubdirs $bar`
1131 dnl # Find 'configure' in ONLY the stable modules
1133 for bar in `cat "${srcdir}"/src/modules/stable`; do
1134 if test -f "${srcdir}"/src/modules/$bar/configure; then
1135 mysubdirs="$mysubdirs src/modules/$bar"
1140 dnl ############################################################
1141 dnl # make modules by list
1142 dnl #############################################################
1143 if test "x$EXPERIMENTAL" = "xyes"; then
1144 for foo in `ls -1 "${srcdir}"/src/modules | grep rlm_`; do
1145 MODULES="$MODULES $foo"
1149 dnl # make ONLY the stable modules
1151 for foo in `cat "${srcdir}"/src/modules/stable`; do
1152 MODULES="$MODULES $foo"
1157 dnl # Don't change the variable name here. Autoconf goes bonkers
1160 AC_CONFIG_SUBDIRS($LTDL_SUBDIRS $mysubdirs)
1163 dnl #############################################################
1165 dnl # And finally, output the results.
1167 dnl #############################################################
1169 AC_CONFIG_COMMANDS([stamp-h], [echo timestamp > src/include/stamp-h])
1170 AC_CONFIG_COMMANDS([build-radpaths-h], [(cd ./src/include && /bin/sh ./build-radpaths-h)])
1171 AC_CONFIG_COMMANDS([main-chmod], [(cd ./src/main && chmod +x checkrad.pl radlast radtest)])
1172 AC_CONFIG_COMMANDS([scripts-chmod], [(cd ./scripts && chmod +x rc.radiusd radwatch radiusd.cron.daily radiusd.cron.monthly cryptpasswd)])
1175 dnl # Substitute whatever libraries we found to be necessary
1178 AC_SUBST(INSTALLSTRIP)
1180 USE_SHARED_LIBS=$enable_shared
1181 AC_SUBST(USE_SHARED_LIBS)
1182 USE_STATIC_LIBS=$enable_static
1183 AC_SUBST(USE_STATIC_LIBS)
1184 AC_SUBST(STATIC_MODULES)
1185 AC_SUBST(RADIUSD_MAJOR_VERSION)
1186 AC_SUBST(RADIUSD_MINOR_VERSION)
1187 AC_SUBST(RADIUSD_VERSION)
1191 ./src/include/build-radpaths-h \
1192 ./src/main/Makefile \
1193 ./src/main/checkrad.pl \
1194 ./src/main/radlast \
1195 ./src/main/radtest \
1196 ./scripts/rc.radiusd \
1197 ./scripts/radwatch \
1198 ./scripts/radiusd.cron.daily \
1199 ./scripts/radiusd.cron.monthly \
1200 ./scripts/cryptpasswd \
1201 ./raddb/dictionary \
1202 ./raddb/radrelay.conf \
1203 ./raddb/radiusd.conf