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_MAJOR_VERSION=2
31 RADIUSD_MINOR_VERSION=0.0-pre0
32 RADIUSD_VERSION="${RADIUSD_MAJOR_VERSION}.${RADIUSD_MINOR_VERSION}"
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 dnl libltdl is installable
76 AC_LIBLTDL_INSTALLABLE
78 dnl use system-wide libtool, if it exists
79 AC_ARG_WITH(system-libtool,
80 [ --with-system-libtool try to use libtool installed in your system [default=use our own]],
81 [ AC_PATH_PROG(LIBTOOL, libtool,,$PATH:/usr/local/bin) ],
83 LIBTOOL="`pwd`/libtool"
85 dnl ensure that we're looking for dlopen
88 dnl Figure out how to build shared libraries
93 dnl Put this in later, when all distributed modules use autoconf.
94 dnl AC_ARG_WITH(disablemodulefoo,
95 dnl [ --without-rlm_foo Disables module compilation. Module list:]
96 dnl esyscmd([find src/modules -type d -name rlm_\* -print |\
97 dnl sed -e 's%src/modules/.*/% (sub)- %; s%.*/%- %' |\
98 dnl awk '{print " "$0}']))
100 AC_ARG_ENABLE(strict-dependencies,
101 [ --enable-strict-dependencies Fail configure on lack of module dependancy.])
103 dnl extra argument: --with-logdir
104 logdir='${localstatedir}/log/radius'
105 AC_MSG_CHECKING(logdir)
107 [ --with-logdir=DIR Directory for logfiles [LOCALSTATEDIR/log/radius] ],
110 AC_MSG_ERROR(Need logdir)
120 AC_MSG_RESULT($logdir)
122 dnl extra argument: --with-radacctdir
123 radacctdir='${logdir}/radacct'
124 AC_MSG_CHECKING(radacctdir)
125 AC_ARG_WITH(radacctdir,
126 [ --with-radacctdir=PATH Directory for detail files [LOGDIR/radacct] ],
129 AC_MSG_ERROR(Need radacctdir)
134 radacctdir="$withval"
139 AC_MSG_RESULT($radacctdir)
141 dnl extra argument: --with-raddbdir
142 raddbdir='${sysconfdir}/raddb'
143 AC_MSG_CHECKING(raddbdir)
144 AC_ARG_WITH(raddbdir,
145 [ --with-raddbdir=DIR Directory for config files [SYSCONFDIR/raddb] ],
148 AC_MSG_ERROR(Need raddbdir)
158 AC_MSG_RESULT($raddbdir)
160 dnl extra argument: --with-ascend-binary
162 AC_ARG_WITH(ascend-binary,
163 [ --with-ascend-binary Include support for Ascend binary filter attributes (default=yes)],
171 if test "X$ASCEND_BINARY" = "Xyes"; then
172 AC_DEFINE(ASCEND_BINARY, [], [Include support for Ascend binary filter attributes])
175 dnl extra argument: --with-threads
178 [ --with-threads Use threads, if available. (default=yes) ],
187 dnl extra argument: --with-snmp
190 [ --with-snmp Compile in SNMP support. (default=yes)],
199 dnl AC_ARG_ENABLE(ltdl-install,
200 dnl [ --disable-ltdl-install do not install libltdl])
201 dnl if test x"${enable_ltdl_install+set}" != xset; then
202 dnl enable_ltdl_install=yes
203 dnl ac_configure_args="$ac_configure_args --enable-ltdl-install"
205 dnl AC_CONFIG_SUBDIRS(libltdl)
208 dnl # Allow the user to specify a list of modules to be linked
209 dnl # statically to the server.
212 AC_ARG_WITH(static_modules,
213 [ --with-static-modules=QUOTED-MODULE-LIST],[
214 for i in $withval; do
215 STATIC_MODULES="$STATIC_MODULES -dlpreopen ../modules/rlm_$i/rlm_$i.la"
220 dnl # Enable developer C compiler warnings
222 AC_ARG_ENABLE(developer,
223 [ --enable-developer Enables features of interest to developers.],
224 [ case "$enableval" in
233 if test "x$developer" != "xno" -a -d $srcdir/CVS; then
234 dnl turn on the developer flag when taken from a CVS checkout (not a release)
238 dnl extra argument: --with-experimental-modules
240 AC_ARG_WITH(experimental-modules,
241 [ --with-experimental-modules Use experimental and unstable modules. (default=no) ],
251 dnl # extra argument: --with-openssl-includes=dir
254 AC_ARG_WITH(openssl-includes,
255 [ --with-openssl-includes=DIR Directory to look for OpenSSL include files],
257 *) OPENSSL_INCLUDE_DIR="$withval"
263 dnl # extra argument: --with-openssl-libraries=dir
266 AC_ARG_WITH(openssl-libraries,
267 [ --with-openssl-libraries=DIR Directory to look for OpenSSL library files],
269 *) OPENSSL_LIB_DIR="$withval"
275 dnl # These next two arguments don't actually do anything. They're
276 dnl # place holders so that the top-level configure script can tell
277 dnl # the user how to configure lower-level modules
281 dnl # extra argument: --with-rlm-FOO-lib-dir
283 AC_ARG_WITH(rlm-FOO-lib-dir,
284 [ --with-rlm-FOO-lib-dir=DIR Directory to look for library files used by module FOO],
292 dnl # extra argument: --with-rlm-FOO-include-dir
294 AC_ARG_WITH(rlm-FOO-include-dir,
295 [ --with-rlm-FOO-include-dir=DIR Directory to look for include files used by module FOO],
302 dnl See what include-style is used by the make program.
303 dnl AC_MSG_CHECKING(include style for make)
304 dnl echo "include /dev/null" > testmake.$$
305 dnl echo "all:" >> testmake.$$
306 dnl make -f testmake.$$ >/dev/null 2>&1
315 dnl rm -f testmake.$$
316 dnl AC_MSG_RESULT(" $INCLUDE")
317 dnl AC_SUBST(INCLUDE)
320 dnl extra argument: --with-udpfromto
322 AC_ARG_WITH(udpfromto,
323 [ --with-udpfromto Compile in UDPFROMTO support. (default=no)],
333 if test "x$WITH_UDPFROMTO" = "xyes"; then
334 AC_DEFINE(WITH_UDPFROMTO, [], [define if you want udpfromto])
337 dnl #############################################################
339 dnl # 1. Checks for programs
341 dnl #############################################################
344 AC_PATH_PROG(PERL, perl, /usr/local/bin/perl)
345 if test "x$ac_cv_path_PERL" = "x"; then
346 AC_MSG_WARN(perl not found - Simultaneous-Use and checkrad.pl may not work)
348 AC_PATH_PROG(SNMPGET, snmpget)
349 if test "x$ac_cv_path_SNMPGET" = "x"; then
350 AC_MSG_WARN(snmpget not found - Simultaneous-Use and checkrad.pl may not work)
353 AC_PATH_PROG(SNMPWALK, snmpwalk)
354 if test "x$ac_cv_path_SNMPWALK" = "x"; then
355 AC_MSG_WARN(snmpwalk not found - Simultaneous-Use and checkrad.pl may not work)
358 AC_PATH_PROG(RUSERS, rusers, /usr/bin/rusers)
360 dnl FIXME This is truly gross.
361 missing_dir=`cd $ac_aux_dir && pwd`
362 AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
363 AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
364 AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
366 AC_PATH_PROG(LOCATE,locate)
367 AC_PATH_PROG(DIRNAME,dirname)
368 AC_PATH_PROG(GREP,grep)
370 dnl #############################################################
372 dnl # 2. Checks for libraries
374 dnl #############################################################
376 dnl If using pthreads, check for -lpthread (posix) or -lc_r (*BSD)
378 if test "x$WITH_THREADS" = "xyes"; then
379 if test $ac_cv_prog_suncc = "yes"; then
383 AC_CHECK_HEADERS(pthread.h, [], [ WITH_THREADS="no" ])
386 dnl # pthread stuff is usually in -lpthread
387 dnl # or in -lc_r, on *BSD
389 dnl # On Some systems, we need extra pre-processor flags, to get them to
390 dnl # to do the threading properly.
392 AC_CHECK_LIB(pthread, pthread_create,
393 [ CFLAGS="$CFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS"
394 LIBS="$LIBS -lpthread" ],
395 AC_CHECK_LIB(c_r, pthread_create,
396 [ CFLAGS="$CFLAGS -pthread -D_THREAD_SAFE" ],
397 [ WITH_THREADS="no" ]
403 dnl # If we have NO pthread libraries, remove any knowledge of threads.
405 if test "x$WITH_THREADS" != "xyes"; then
407 ac_cv_header_pthread_h="no"
411 dnl # We need sem_init() and friends, as they're the friendliest
412 dnl # semaphore functions for threading.
414 dnl # HP/UX requires linking with librt, too, to get the sem_* symbols.
415 dnl # Some systems have them in -lsem
416 dnl # Solaris has them in -lposix4
417 dnl # NetBSD has them in -lsemaphore
419 AC_SEARCH_LIBS(sem_init, pthread sem posix4 rt semaphore,
421 [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)]
425 dnl Check if we need -lsocket
426 AC_CHECK_LIB(socket, getsockname)
428 dnl Check for -lresolv
429 dnl This library may be needed later.
430 AC_CHECK_LIB(resolv, inet_aton)
432 dnl Check if we need -lnsl. Usually if we want to
433 dnl link against -lsocket we need to include -lnsl as well.
434 AC_CHECK_LIB(nsl, inet_ntoa)
436 dnl Check for OpenSSL libraries.
439 if test "x$OPENSSL_LIB_DIR" != "x"; then
440 LIBS="-L$OPENSSL_LIB_DIR $LIBS"
442 AC_CHECK_LIB(crypto, DH_new,
444 AC_DEFINE(HAVE_LIBCRYPTO, 1,
445 [Define to 1 if you have the `crypto' library (-lcrypto).])
446 AC_CHECK_LIB(ssl, SSL_new,
448 AC_DEFINE(HAVE_LIBSSL, 1,
449 [Define to 1 if you have the `ssl' library (-lssl).])
450 if test "x$OPENSSL_LIB_DIR" != "x"; then
451 OPENSSL_LIBS="-L$OPENSSL_LIB_DIR"
453 OPENSSL_LIBS="$OPENSSL_LIBS -lcrypto -lssl -lcrypto"
458 dnl Check the pcap library for the RADIUS sniffer.
460 AC_CHECK_LIB(pcap, pcap_open_live,
462 AC_DEFINE(HAVE_LIBPCAP, 1,
463 [Define to 1 if you have the `pcap' library (-lpcap).])
465 [ AC_MSG_WARN([pcap library not found, silently disabling the RADIUS sniffer.]) ])
467 dnl #############################################################
469 dnl # 3. Checks for header files
471 dnl #############################################################
474 dnl # Interix requires us to set -D_ALL_SOURCE, otherwise
475 dnl # getopt will be #included, but won't link. <sigh>
480 CFLAGS="$CFLAGS -D_ALL_SOURCE"
483 CFLAGS="$CFLAGS -DDARWIN"
525 AC_CHECK_HEADER(regex.h, AC_DEFINE(HAVE_REGEX_H, [], [define this if we have the <regex.h> header file]))
526 if test "x$ac_cv_header_regex_h" = "xyes"; then
534 ], [AC_DEFINE(HAVE_REG_EXTENDED, [], [define this if we have REG_EXTENDED (from <regex.h>)]) REGEX_EXTENDED=yes])
537 AC_SUBST(REGEX_EXTENDED)
540 dnl # other checks which require headers
542 if test "x$ac_cv_header_sys_security_h" = "xyes" && test "x$ac_cv_header_prot_h" = "xyes"
544 AC_DEFINE(OSFC2, [], [define if you have OSFC2 authentication])
547 if test "x$ac_cv_header_sia_h" = "xyes" && test "x$ac_cv_header_siad_h" = "xyes"
549 AC_DEFINE(OSFSIA, [], [define if you have OSFSIA authentication])
552 dnl Check for OpenSSL includes.
553 OPENSSL_INCLUDE="-DNO_OPENSSL"
554 if test "x$OPENSSL_LIBS" = "x"; then
555 AC_MSG_NOTICE([skipping test for openssl/ssl.h])
557 old_CPPFLAGS=$CPPFLAGS
558 if test "x$OPENSSL_INCLUDE_DIR" != "x"; then
559 CPPFLAGS="$CPPFLAGS -I$OPENSSL_INCLUDE_DIR"
561 dnl # stupid RedHat shit
562 CPPFLAGS="$CPPFLAGS -DOPENSSL_NO_KRB5"
571 if test "x$OPENSSL_LIBS" != "x"; then
572 AC_MSG_CHECKING([for OpenSSL version >= 0.9.7])
574 [#include <openssl/crypto.h>
575 #if (OPENSSL_VERSION_NUMBER >= 0x00907000L)
579 if test "x$goodssl" != "xyes"; then
584 if test "x$OPENSSL_INCLUDE_DIR" != "x"; then
585 OPENSSL_INCLUDE="-I$OPENSSL_INCLUDE_DIR -DOPENSSL_NO_KRB5"
587 OPENSSL_INCLUDE="-DOPENSSL_NO_KRB5"
591 CPPFLAGS=$old_CPPFLAGS
593 AC_SUBST(OPENSSL_INCLUDE)
594 AC_SUBST(OPENSSL_LIBS)
597 dnl Check the pcap includes for the RADIUS sniffer.
598 if test "x$PCAP_LIBS" = x; then
599 AC_MSG_NOTICE([skipping test for pcap.h.])
601 AC_CHECK_HEADER(pcap.h,
602 AC_DEFINE(HAVE_PCAP_H, 1,
603 [Define to 1 if you have the <pcap.h> header file.]),
605 AC_MSG_WARN([pcap.h not found, silently disabling the RADIUS sniffer.])
610 dnl #############################################################
612 dnl # 4. Checks for typedefs
614 dnl #############################################################
617 dnl # Ensure that these are defined
624 dnl check for socklen_t
625 FR_CHECK_TYPE_INCLUDE([
626 #ifdef HAVE_SYS_TYPES_H
627 #include <sys/types.h>
629 #ifdef HAVE_SYS_SOCKET_H
630 #include <sys/socket.h>
632 ],socklen_t, int, [socklen_t is generally 'int' on systems which don't use it])
634 dnl check for uint8_t
635 FR_CHECK_TYPE_INCLUDE([
636 #ifdef HAVE_INTTYPES_H
637 #include <inttypes.h>
642 ],uint8_t, unsigned char, [uint8_t should be the canonical 'octet' for network traffic])
644 dnl check for uint16_t
645 FR_CHECK_TYPE_INCLUDE([
646 #ifdef HAVE_INTTYPES_H
647 #include <inttypes.h>
652 ],uint16_t, unsigned short, [uint16_t should be the canonical '2 octets' for network traffic])
654 dnl check for uint32_t
655 FR_CHECK_TYPE_INCLUDE([
656 #ifdef HAVE_INTTYPES_H
657 #include <inttypes.h>
662 ],uint32_t, unsigned int, [uint32_t should be the canonical 'network integer])
664 AC_CHECK_TYPE(struct in6_addr, AC_DEFINE(HAVE_STRUCT_IN6_ADDR, 1, [IPv6 address structure]), [], [
665 #ifdef HAVE_NETINET_IN_H
666 #include <netinet/in.h>
670 AC_CHECK_TYPE(struct sockaddr_storage, AC_DEFINE(HAVE_STRUCT_SOCKADDR_STORAGE, 1, [Generic socket addresses]), [], [
671 #ifdef HAVE_NETINET_IN_H
672 #include <netinet/in.h>
674 #ifdef HAVE_SYS_SOCKET_H
675 #include <sys/socket.h>
679 AC_CHECK_TYPE(struct sockaddr_in6, AC_DEFINE(HAVE_STRUCT_SOCKADDR_IN6, 1, [IPv6 socket addresses]), [], [
680 #ifdef HAVE_NETINET_IN_H
681 #include <netinet/in.h>
685 AC_CHECK_TYPE(struct addrinfo, AC_DEFINE(HAVE_STRUCT_ADDRINFO, 1, [Generic DNS lookups]), [], [
686 #ifdef HAVE_SYS_TYPES_H
687 #include <sys/types.h>
689 #ifdef HAVE_SYS_SOCKET_H
690 #include <sys/socket.h>
697 dnl #############################################################
699 dnl # 5. Checks for structures and functions
701 dnl #############################################################
732 RADIUSD_NEED_DECLARATIONS( \
745 dnl # check if we have utmpx.h
746 dnl # if so, check if struct utmpx has entry ut_xtime
747 dnl # if not, set it to define ut_xtime == ut_tv.tv_sec
748 if test "x$ac_cv_header_utmpx_h" = "xyes"
750 FR_CHECK_STRUCT_HAS_MEMBER([#include <utmpx.h>], [struct utmpx], ut_xtime)
751 if test "x$ac_cv_type_struct_utmpx_has_ut_xtime" = "x"
753 AC_DEFINE(ut_xtime,ut_tv.tv_sec, [define to something if you don't have ut_xtime in struct utmpx])
757 dnl # struct ip_pktinfo
758 FR_CHECK_STRUCT_HAS_MEMBER([#include <netinet/in.h>], [struct in_pktinfo], ipi_addr)
759 if test "x$ac_cv_type_struct_in_pktinfo_has_ipi_addr" = "xyes"
761 AC_DEFINE(HAVE_IP_PKTINFO, [], [define if you have IP_PKTINFO (Linux)])
764 dnl # struct in6_pktinfo
765 FR_CHECK_STRUCT_HAS_MEMBER([#include <netinet/in.h>], [struct in6_pktinfo], ipi6_addr)
766 if test "x$ac_cv_type_struct_in6_pktinfo_has_ipi6_addr" = "xyes"
768 AC_DEFINE(HAVE_IN6_PKTINFO, [], [define if you have IN6_PKTINFO (Linux)])
771 dnl #############################################################
773 dnl # 6. Checks for compiler characteristics
775 dnl #############################################################
778 dnl # Ensure that these are defined
783 dnl # See if this is OS/2
785 AC_MSG_CHECKING(type of OS)
788 if test "$OS" = "OS/2"; then
796 dnl # Set Default CFLAGS
798 if test "x$GCC" = "xyes"; then
799 CFLAGS="$CFLAGS -Wall -D_GNU_SOURCE"
802 AC_MSG_CHECKING(for developer gcc flags)
803 if test "x$developer" = "xyes" -a "x$GCC" = "xyes"; then
804 devflags="-g -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -W -Wredundant-decls -Wundef"
805 CFLAGS="$CFLAGS $devflags"
807 AC_MSG_RESULT(yes. Using $devflags)
810 CFLAGS="$CFLAGS -DNDEBUG"
815 dnl #############################################################
817 dnl # 7. Checks for library functions
819 dnl #############################################################
821 dnl Check for libcrypt
822 dnl We use crypt(3) which may be in libc, or in libcrypt (eg FreeBSD)
823 AC_CHECK_LIB(crypt, crypt,
826 if test "$CRYPTLIB" != ""; then
827 AC_DEFINE(HAVE_CRYPT, [], [Do we have the crypt function])
829 AC_CHECK_FUNC(crypt, AC_DEFINE(HAVE_CRYPT, [], [Do we have the crypt function]))
832 dnl Check for libcipher
833 AC_CHECK_LIB(cipher, setkey,
834 CRYPTLIB="${CRYPTLIB} -lcipher"
838 if test "x$WITH_SNMP" = "xyes"; then
842 dnl Check the style of gethostbyaddr, in order of preference
843 dnl GNU (_r eight args)
844 AC_DEFINE(GNUSTYLE, [1], [GNU-Style get*byaddr_r])
845 dnl SYSV (_r six args)
846 AC_DEFINE(SYSVSTYLE, [2], [SYSV-Style get*byaddr_r])
847 dnl BSD (three args, may not be thread safe)
848 AC_DEFINE(BSDSTYLE, [3], [BSD-Style get*byaddr_r])
849 dnl Tru64 has BSD version, but it is thread safe
850 dnl http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/1739____.HTM
851 dnl We need #stdio.h to define NULL on FreeBSD (at least)
852 gethostbyaddrrstyle=""
853 AC_MSG_CHECKING([gethostbyaddr_r() syntax])
856 AC_DEFINE(GETHOSTBYADDRRSTYLE, BSDSTYLE, [style of gethostbyaddr_r functions ])
857 gethostbyaddrrstyle=BSD
858 AC_MSG_WARN([FreeBSD overridden to BSD-style])
861 if test "x$gethostbyaddrrstyle" = "x"; then
865 ], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL, NULL) ], [
866 AC_DEFINE(GETHOSTBYADDRRSTYLE, GNUSTYLE, [style of gethostbyaddr_r functions ])
867 gethostbyaddrrstyle=GNU
870 if test "x$gethostbyaddrrstyle" = "x"; then
874 ], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL) ] , [
875 AC_DEFINE(GETHOSTBYADDRRSTYLE, SYSVSTYLE, [style of gethostbyaddr_r functions ])
876 gethostbyaddrrstyle=SYSV
879 if test "x$gethostbyaddrrstyle" = "x"; then
883 ], [ gethostbyaddr(NULL, 0, 0) ], [
884 AC_DEFINE(GETHOSTBYADDRRSTYLE, BSDSTYLE, [style of gethostbyaddr_r functions ])
885 gethostbyaddrrstyle=BSD
889 if test "x$gethostbyaddrrstyle" = "x"; then
890 AC_MSG_RESULT([none! It must not exist, here.])
892 AC_MSG_RESULT([${gethostbyaddrrstyle}-style])
895 if test "x$gethostbyaddrrstyle" = "xBSD"; then
896 AC_MSG_WARN([ ****** BSD-style gethostbyaddr might NOT be thread-safe! ****** ])
899 dnl Check the style of gethostbyname, in order of preference
900 dnl GNU (_r seven args)
901 dnl SYSV (_r five args)
902 dnl BSD (two args, may not be thread safe)
903 dnl Tru64 has BSD version, but it _is_ thread safe
904 dnl http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/MAN/MAN3/1946____.HTM
905 dnl We need #stdio.h to define NULL on FreeBSD (at least)
906 gethostbynamerstyle=""
907 AC_MSG_CHECKING([gethostbyname_r() syntax])
911 ], [ gethostbyname_r(NULL, NULL, NULL, 0, NULL, NULL) ], [
912 AC_DEFINE(GETHOSTBYNAMERSTYLE, GNUSTYLE, [style of gethostbyname_r functions ])
913 gethostbynamerstyle=GNU
915 if test "x$gethostbynamerstyle" = "x"; then
919 ], [ gethostbyname_r(NULL, NULL, NULL, 0, NULL) ] , [
920 AC_DEFINE(GETHOSTBYNAMERSTYLE, SYSVSTYLE, [style of gethostbyname_r functions ])
921 gethostbynamerstyle=SYSV
924 if test "x$gethostbynamerstyle" = "x"; then
928 ], [ gethostbyname(NULL) ], [
929 AC_DEFINE(GETHOSTBYNAMERSTYLE, BSDSTYLE, [style of gethostbyname_r functions ])
930 gethostbynamerstyle=BSD
934 if test "x$gethostbynamerstyle" = "x"; then
935 AC_MSG_RESULT([none! It must not exist, here.])
937 AC_MSG_RESULT([${gethostbynamerstyle}-style])
940 if test "x$gethostbynamerstyle" = "xBSD"; then
941 AC_MSG_WARN([ ****** BSD-style gethostbyname might NOT be thread-safe! ****** ])
944 dnl check for non-posix solaris ctime_r (extra buflen int arg)
945 AC_DEFINE(POSIXSTYLE, [1], [Posix-Style ctime_r])
946 AC_DEFINE(SOLARISSTYLE, [2], [Solaris-Style ctime_r])
948 AC_MSG_CHECKING([ctime_r() syntax])
951 ], [ ctime_r(NULL, NULL, 0) ], [
952 AC_DEFINE(CTIMERSTYLE, SOLARISSTYLE, [style of ctime_r function])
953 ctimerstyle="SOLARIS"
955 if test "x$ctimerstyle" = "x"; then
958 ], [ ctime_r(NULL, NULL) ], [
959 AC_DEFINE(CTIMERSTYLE, POSIXSTYLE, [style of ctime_r function])
964 if test "x$ctimerstyle" = "x"; then
965 AC_MSG_RESULT([none! It must not exist, here.])
967 AC_MSG_RESULT([${ctimerstyle}-style])
970 AC_SUBST(HOSTINFO, $host)
972 dnl #############################################################
974 dnl # 8. Checks for system services
976 dnl #############################################################
979 dnl # Figure out where libtool is located,
983 AC_MSG_RESULT([top_builddir=$top_builddir])
984 dnl # AC_SUBST(top_builddir)
989 dnl # Work around stupid autoconf crap
991 if test "x$INCLTDL" != "x";then
992 INCLTDL='-I${top_builddir}/''libltdl'
995 dnl import libtool stuff
997 dnl #############################################################
999 dnl # Configure in any module directories.
1001 dnl #############################################################
1003 mysubdirs="$LIBLTDLPATH"
1004 if test "x$EXPERIMENTAL" = "xyes"; then
1005 bar=`ls -1 "${srcdir}"/src/modules/rlm_*/configure | sed 's%/configure%%'`
1006 dnl # get rid of LF's.
1007 mysubdirs=`echo $mysubdirs $bar`
1010 dnl # Find 'configure' in ONLY the stable modules
1012 for bar in `cat "${srcdir}"/src/modules/stable`; do
1013 if test -f "${srcdir}"/src/modules/$bar/configure; then
1014 mysubdirs="$mysubdirs src/modules/$bar"
1019 dnl ############################################################
1020 dnl # make modules by list
1021 dnl #############################################################
1023 if test "x$EXPERIMENTAL" = "xyes"; then
1024 for foo in `ls -1 "${srcdir}"/src/modules | grep rlm_`; do
1025 MODULES="$MODULES $foo"
1029 dnl # make ONLY the stable modules
1031 for foo in `cat "${srcdir}"/src/modules/stable`; do
1032 MODULES="$MODULES $foo"
1037 dnl # Don't change the variable name here. Autoconf goes bonkers
1040 AC_CONFIG_SUBDIRS($mysubdirs)
1043 dnl #############################################################
1045 dnl # And finally, output the results.
1047 dnl #############################################################
1049 AC_CONFIG_COMMANDS([stamp-h], [echo timestamp > src/include/stamp-h])
1050 AC_CONFIG_COMMANDS([build-radpaths-h], [(cd ./src/include && /bin/sh ./build-radpaths-h)])
1051 AC_CONFIG_COMMANDS([main-chmod], [(cd ./src/main && chmod +x checkrad.pl radlast radtest)])
1052 AC_CONFIG_COMMANDS([scripts-chmod], [(cd ./scripts && chmod +x rc.radiusd radwatch check-radiusd-config radiusd.cron.daily radiusd.cron.monthly cryptpasswd)])
1055 dnl # Substitute whatever libraries we found to be necessary
1058 AC_SUBST(INSTALLSTRIP)
1060 USE_SHARED_LIBS=$enable_shared
1061 AC_SUBST(USE_SHARED_LIBS)
1062 USE_STATIC_LIBS=$enable_static
1063 AC_SUBST(USE_STATIC_LIBS)
1064 AC_SUBST(STATIC_MODULES)
1065 AC_SUBST(RADIUSD_MAJOR_VERSION)
1066 AC_SUBST(RADIUSD_MINOR_VERSION)
1067 AC_SUBST(RADIUSD_VERSION)
1071 ./src/include/build-radpaths-h \
1072 ./src/main/Makefile \
1073 ./src/main/checkrad.pl \
1074 ./src/main/radlast \
1075 ./src/main/radtest \
1076 ./scripts/rc.radiusd \
1077 ./scripts/radwatch \
1078 ./scripts/check-radiusd-config \
1079 ./scripts/radiusd.cron.daily \
1080 ./scripts/radiusd.cron.monthly \
1081 ./scripts/cryptpasswd \
1082 ./raddb/dictionary \
1083 ./raddb/radiusd.conf \
1084 ./raddb/radrelay.conf