AC_CONFIG_HEADER(src/include/autoconf.h)
AC_REVISION($Revision$)dnl
-dnl # The version of the software, 0.5
+dnl # The version of the software
RADIUSD_MAJOR_VERSION=0
-RADIUSD_MINOR_VERSION=6
+RADIUSD_MINOR_VERSION=9.0-pre3
RADIUSD_VERSION="${RADIUSD_MAJOR_VERSION}.${RADIUSD_MINOR_VERSION}"
dnl #############################################################
AC_PROG_CC_SUNPRO
AC_PROG_RANLIB
+dnl # autoconf 2.50 and later
+dnl # AC_SYS_LARGEFILE
+
PACKAGE=freeradius
+dnl #
+dnl # check for AIX, to allow us to use some BSD functions
+dnl # must be before macros that call the compiler.
+dnl #
+AC_AIX
+
dnl Find GNU Make.
AC_CHECK_PROG(GMAKE, gmake, yes, no)
if test $GMAKE = no; then
dnl libltdl is installable
AC_LIBLTDL_INSTALLABLE
-dnl ensure that we're looking for dlopen
-AC_LIBTOOL_DLOPEN
+dnl use system-wide libtool, if it exists
+AC_ARG_WITH(system-libtool,
+[ --with-system-libtool try to use libtool installed in your system [default=use our own]],
+[ AC_PATH_PROG(LIBTOOL, libtool,,$PATH:/usr/local/bin) ],
+[
+ LIBTOOL="`pwd`/libtool"
+ AC_SUBST(LIBTOOL)
+ dnl ensure that we're looking for dlopen
+ AC_LIBTOOL_DLOPEN
+
+ dnl Figure out how to build shared libraries
+ AC_PROG_LIBTOOL
+])
-dnl Figure out how to build shared libraries
-AC_PROG_LIBTOOL
dnl Put this in later, when all distributed modules use autoconf.
dnl AC_ARG_WITH(disablemodulefoo,
AC_SUBST(raddbdir)
AC_MSG_RESULT($raddbdir)
-dnl extra argument: --with-dict-nocase
-WITH_DICT_NOCASE=yes
-AC_ARG_WITH(dict-nocase,
-[ --with-dict-nocase Make dictionary case-independant (default=yes)],
-[ case "$withval" in
- yes)
- ;;
- *)
- WITH_DICT_NOCASE=""
- esac ]
-)
-if test "X$WITH_DICT_NOCASE" = "Xyes"; then
- AC_DEFINE(WITH_DICT_NOCASE)
-fi
-
dnl extra argument: --with-ascend-binary
ASCEND_BINARY=yes
AC_ARG_WITH(ascend-binary,
dnl extra argument: --with-threads
WITH_THREADS=yes
-WITH_THREAD_POOL=yes
AC_ARG_WITH(threads,
[ --with-threads Use threads, if available. (default=yes) ],
[ case "$withval" in
;;
*)
WITH_THREADS=""
- WITH_THREAD_POOL=""
esac ]
)
esac ]
)
-AC_ARG_ENABLE(ltdl-install,
-[ --disable-ltdl-install do not install libltdl])
-if test x"${enable_ltdl_install+set}" != xset; then
- enable_ltdl_install=yes
- ac_configure_args="$ac_configure_args --enable-ltdl-install"
-fi
-AC_CONFIG_SUBDIRS(libltdl)
+dnl extra argument: --with-large-files
+rad_enable_largefiles=no
+AC_ARG_WITH(large-files,
+[ --with-large-files Compile in large (2G+) file support. (default=no)],
+[ case "$withval" in
+ yes)
+ rad_enable_largefiles=yes
+ ;;
+ *)
+ ;;
+ esac ]
+)
+
+
+dnl AC_ARG_ENABLE(ltdl-install,
+dnl [ --disable-ltdl-install do not install libltdl])
+dnl if test x"${enable_ltdl_install+set}" != xset; then
+dnl enable_ltdl_install=yes
+dnl ac_configure_args="$ac_configure_args --enable-ltdl-install"
+dnl fi
+dnl AC_CONFIG_SUBDIRS(libltdl)
dnl #
dnl # Allow the user to specify a list of modules to be linked
dnl #
AC_ARG_ENABLE(developer,
[ --enable-developer Enables features of interest to developers.],
-[ case "$withval" in
- *)
+[ case "$enableval" in
+ no)
developer=no
;;
- yes)
+ *)
developer=yes
esac ]
)
dnl #
dnl #############################################################
+CHECKRAD=checkrad.pl
AC_PATH_PROG(PERL, perl, /usr/local/bin/perl)
-if test ! -x $ac_cv_path_PERL; then
- AC_MSG_ERROR(perl not found - fatal)
+if test "x$ac_cv_path_PERL" = "x"; then
+ AC_MSG_WARN(perl not found - Simultaneous-Use and checkrad.pl may not work)
+fi
+AC_PATH_PROG(SNMPGET, snmpget)
+if test "x$ac_cv_path_SNMPGET" = "x"; then
+ AC_MSG_WARN(snmpget not found - Simultaneous-Use and checkrad.pl may not work)
fi
-AC_PATH_PROG(SNMPGET, snmpget, /usr/local/bin/snmpget)
-AC_PATH_PROG(SNMPWALK, snmpwalk, /usr/local/bin/snmpwalk)
+
+AC_PATH_PROG(SNMPWALK, snmpwalk)
+if test "x$ac_cv_path_SNMPWALK" = "x"; then
+ AC_MSG_WARN(snmpwalk not found - Simultaneous-Use and checkrad.pl may not work)
+fi
+
AC_PATH_PROG(RUSERS, rusers, /usr/bin/rusers)
dnl FIXME This is truly gross.
AC_PATH_PROG(DIRNAME,dirname)
AC_PATH_PROG(GREP,grep)
-dnl #
-dnl # check for AIX, to allow us to use some BSD functions
-dnl # must be before macros that call the compiler.
-dnl #
-AC_AIX
-
dnl #############################################################
dnl #
dnl # 2. Checks for libraries
dnl #############################################################
dnl If using pthreads, check for -lpthread (posix) or -lc_r (*BSD)
-PTHREADLIB=
-if test "$WITH_THREADS" = "yes"; then
+old_CFLAGS=$CFLAGS
+if test "x$WITH_THREADS" = "xyes"; then
if test $ac_cv_prog_suncc = "yes"; then
CFLAGS="$CFLAGS -mt"
fi
- AC_CHECK_HEADERS(pthread.h)
-
- if test "X$ac_cv_header_pthread_h" = "X"; then
- AC_MSG_ERROR("You are trying to use threads without a POSIX <pthread.h>")
- fi
-
- dnl #
- dnl # If pthread_create is in the standard libs (e.g. libc),
- dnl # then don't do anything magical.
- dnl #
- AC_CHECK_FUNC(pthread_join, PTHREADLIB=" ")
+ AC_CHECK_HEADERS(pthread.h, [], [ WITH_THREADS="no" ])
dnl #
dnl # pthread stuff is usually in -lpthread
+dnl # or in -lc_r, on *BSD
dnl #
- AC_CHECK_LIB(pthread, pthread_join,
- PTHREADLIB="-lpthread"
- )
-
-dnl # HP/UX requires linking with librt, too, to get the sem_* symbols. :\
-
- AC_SEARCH_LIBS(sem_init, pthread rt,
- [
- dnl Er, this usage of $ac_cv_search_sem_init may be unfounded
- dnl chumminess with the autoconf internals. -chad
- dnl PTHREADLIB="$PTHREADLIB $ac_cv_search_sem_init"
- ],
- [],
- "-lpthread"
- )
-
-dnl #
-dnl # Except for *BSD, where it's in -lc_r,
-dnl # and where we've got to add extra CFLAGS.
+dnl # On Some systems, we need extra pre-processor flags, to get them to
+dnl # to do the threading properly.
dnl #
- if test "X$PTHREADLIB" = "X"; then
- SAVED_CFLAGS=$CFLAGS
- CFLAGS="$CFLAGS -pthread -D_THREAD_SAFE"
- AC_CHECK_LIB(c_r, pthread_create,
- PTHREADLIB="-lc_r"
- )
- fi
-
-dnl # Set libs, etc, if we have them.
- if test "x$PTHREADLIB" != "x"; then
- LIBS="$LIBS $PTHREADLIB"
- CFLAGS="$CFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS"
- fi
+ AC_CHECK_LIB(pthread, pthread_create,
+ [ CFLAGS="$CFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS"
+ LIBS="$LIBS -lpthread" ],
+ AC_CHECK_LIB(c_r, pthread_create,
+ [ CFLAGS="$CFLAGS -pthread -D_THREAD_SAFE" ],
+ [ WITH_THREADS="no" ]
+ )
+ )
fi
dnl #
dnl # If we have NO pthread libraries, remove any knowledge of threads.
dnl #
-if test "x$PTHREADLIB" = "x"; then
- CFLAGS=$SAVED_CFLAGS
+if test "x$WITH_THREADS" != "xyes"; then
+ CFLAGS=$old_CFLAGS
ac_cv_header_pthread_h="no"
WITH_THREADS=no
- WITH_THREAD_POOL=no
+else
+ dnl #
+ dnl # We need sem_init() and friends, as they're the friendliest
+ dnl # semaphore functions for threading.
+ dnl #
+ dnl # HP/UX requires linking with librt, too, to get the sem_* symbols.
+ dnl # Some systems have them in -lsem
+ dnl # Solaris has them in -lposix4
+
+ AC_SEARCH_LIBS(sem_init, pthread sem posix4 rt,
+ [],
+ [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)]
+ )
fi
dnl Check if we need -lsocket
sys/time.h \
sys/wait.h \
sys/security.h \
+ fcntl.h \
+ sys/fcntl.h \
prot.h \
sia.h \
siad.h
gethostname \
setlinebuf \
setvbuf \
- sem_init \
getusershell
)
RADIUSD_NEED_DECLARATIONS( \
SNMP_CHECKS
fi
-dnl #
-dnl # Check for sem_init all by itself
-dnl #
-if test "X$ac_cv_func_sem_init" = "Xno"; then
-
-dnl #
-dnl # If not found, sem_init is in -lposix4 on Solaris
-dnl #
- AC_CHECK_LIB(posix4, sem_init)
-
- if test "X$ac_cv_lib_posix4_sem_init" = "X"; then
- if test "$WITH_THREAD_POOL" = "yes"; then
- AC_MSG_WARN(You do not have posix semaphores. Disabling thread pools)
- fi
- WITH_THREAD_POOL=no
- fi
-fi
-
-
gethostbyaddrrstyle=""
AC_MSG_CHECKING([gethostbyaddr_r() syntax])
-AC_TRY_COMPILE([#include <netdb.h>], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL) ] , [
- AC_DEFINE(GETHOSTBYADDRRSTYLE, SYSVSTYLE)
- gethostbyaddrrstyle=SYSV
-])
AC_TRY_COMPILE([#include <netdb.h>], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL, NULL) ], [
AC_DEFINE(GETHOSTBYADDRRSTYLE, GNUSTYLE)
gethostbyaddrrstyle=GNU
])
-
-AC_TRY_COMPILE([#include <netdb.h>], [ gethostbyaddr(NULL, 0, 0) ], [
- AC_DEFINE(GETHOSTBYADDRRSTYLE, BSDSTYLE)
- gethostbyaddrrstyle=BSD
-])
+if test "x$gethostbyaddrrstyle" = "x"; then
+ AC_TRY_COMPILE([#include <netdb.h>], [ gethostbyaddr_r(NULL, 0, 0, NULL, NULL, 0, NULL) ] , [
+ AC_DEFINE(GETHOSTBYADDRRSTYLE, SYSVSTYLE)
+ gethostbyaddrrstyle=SYSV
+ ])
+fi
+if test "x$gethostbyaddrrstyle" = "x"; then
+ AC_TRY_COMPILE([#include <netdb.h>], [ gethostbyaddr(NULL, 0, 0) ], [
+ AC_DEFINE(GETHOSTBYADDRRSTYLE, BSDSTYLE)
+ gethostbyaddrrstyle=BSD
+ AC_MSG_WARN([ ****** BSD Style gethostbyaddr might NOT be thread-safe! ****** ])
+ ])
+fi
if test "x$gethostbyaddrrstyle" = "x"; then
AC_MSG_RESULT([none! It must not exist, here.])
AC_MSG_RESULT([${gethostbyaddrrstyle}-style])
fi
+gethostbynamerstyle=""
+AC_MSG_CHECKING([gethostbyname_r() syntax])
+AC_TRY_COMPILE([#include <netdb.h>], [ gethostbyname_r(NULL, NULL, NULL, 0, NULL, NULL) ], [
+ AC_DEFINE(GETHOSTBYNAMERSTYLE, GNUSTYLE)
+ gethostbynamerstyle=GNU
+])
+if test "x$gethostbynamerstyle" = "x"; then
+ AC_TRY_COMPILE([#include <netdb.h>], [ gethostbyname_r(NULL, NULL, NULL, 0, NULL) ] , [
+ AC_DEFINE(GETHOSTBYNAMERSTYLE, SYSVSTYLE)
+ gethostbynamerstyle=SYSV
+ ])
+fi
+if test "x$gethostbynamerstyle" = "x"; then
+ AC_TRY_COMPILE([#include <netdb.h>], [ gethostbyname(NULL) ], [
+ AC_DEFINE(GETHOSTBYNAMERSTYLE, BSDSTYLE)
+ gethostbynamerstyle=BSD
+ AC_MSG_WARN([ ****** BSD Style gethostbyname might NOT be thread-safe! ****** ])
+ ])
+fi
+
+if test "x$gethostbynamerstyle" = "x"; then
+ AC_MSG_RESULT([none! It must not exist, here.])
+else
+ AC_MSG_RESULT([${gethostbynamerstyle}-style])
+fi
+
+dnl If configuring with large file support, determine the right flags to
+dnl use based on the platform. This is the wrong approach; autoconf 2.50
+dnl comes with a macro that takes the right approach. But this works well
+dnl enough until we switch to autoconf 2.50 or later.
+if test x"$rad_enable_largefiles" = xyes ; then
+ AC_MSG_CHECKING(for largefile linkage)
+ case "$host" in
+ *-aix4.[01]*)
+ AC_MSG_RESULT(no)
+ AC_MSG_ERROR([AIX before 4.2 does not support large files])
+ ;;
+ *-aix4*)
+ AC_MSG_RESULT(ok)
+ LFS_CFLAGS="-D_LARGE_FILES"
+ LFS_LDFLAGS=""
+ LFS_LIBS=""
+ ;;
+ *-hpux*)
+ AC_MSG_RESULT(ok)
+ LFS_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
+ LFS_LDFLAGS=""
+ LFS_LIBS=""
+ ;;
+ *-irix*)
+ AC_MSG_RESULT(no)
+ AC_MSG_ERROR([Large files not supported on this platform])
+ ;;
+ *-linux*)
+ AC_MSG_RESULT(maybe)
+ LFS_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
+ LFS_LDFLAGS=""
+ LFS_LIBS=""
+ AC_DEFINE([_GNU_SOURCE], 1,
+ [Some versions of glibc need this defined for pread/pwrite.])
+ ;;
+ *-solaris*)
+ AC_MSG_RESULT(ok)
+ AC_PATH_PROG(GETCONF, getconf)
+ if test -z "$GETCONF" ; then
+ AC_MSG_ERROR([getconf required to configure large file support])
+ fi
+ LFS_CFLAGS=`$GETCONF LFS_CFLAGS`
+ LFS_LDFLAGS=`$GETCONF LFS_LDFLAGS`
+ LFS_LIBS=`$GETCONF LFS_LIBS`
+ ;;
+ *)
+ AC_MSG_RESULT(maybe)
+ LFS_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64"
+ LFS_LDFLAGS=""
+ LFS_LIBS=""
+ ;;
+ esac
+ AC_SUBST(LFS_CFLAGS)
+ AC_SUBST(LFS_LDFLAGS)
+ AC_SUBST(LFS_LIBS)
+fi
dnl #############################################################
dnl #
dnl #
dnl # Figure out where libtool is located,
dnl #
-LIBTOOL="`pwd`/libtool"
-AC_SUBST(LIBTOOL)
-AC_SUBST(LIBLTDL)
-AC_SUBST(INCLTDL)
top_builddir=`pwd`
+export top_builddir
+AC_MSG_RESULT([top_builddir=$top_builddir])
AC_SUBST(top_builddir)
-
-dnl import libtool stuff
+AC_SUBST(LIBLTDL)
+AC_SUBST(INCLTDL)
dnl #
-dnl # Checks to ensure that the thread pool code can build.
+dnl # Work around stupid autoconf crap
dnl #
-if test "$WITH_THREAD_POOL" = "yes"; then
- dnl #
- dnl # If using thread pools, check that threading is enabled
- dnl #
- if test "$WITH_THREADS" != "yes"; then
- AC_MSG_ERROR(You must have threads enabled for thread pools to work.)
- fi
-
- dnl #
- dnl # If using thread pools, check that we have thread libraries
- dnl #
- if test "X$PTHREADLIB" = "X"; then
- AC_MSG_ERROR(You must have threading libraries for thread pools to work.)
- fi
-
+if test "x$INCLTDL" != "x";then
+ INCLTDL='-I${top_builddir}/''libltdl'
fi
+dnl import libtool stuff
+
dnl #############################################################
dnl #
dnl # Configure in any module directories.
mysubdirs=
if test "x$EXPERIMENTAL" = "xyes"; then
- for foo in `find src/modules -name configure -print`; do
- bar=`echo $foo | sed 's%/configure$%%g'`
- mysubdirs="$mysubdirs $bar"
- done
+ bar=`ls -1 src/modules/rlm_*/configure | sed 's%/configure%%'`
+ dnl # get rid of LF's.
+ mysubdirs=`echo $bar`
else
- dnl #
- dnl # Find 'configure' in ONLY the stable modules
- dnl #
- for foo in `find \`cat src/modules/stable | sed 's%rlm%src/modules/rlm%g'\` -name configure -print`; do
- bar=`echo $foo | sed 's%/configure$%%g'`
- mysubdirs="$mysubdirs $bar"
+ dnl #
+ dnl # Find 'configure' in ONLY the stable modules
+ dnl #
+ for bar in `cat src/modules/stable`; do
+ if test -f src/modules/$bar/configure; then
+ mysubdirs="$mysubdirs src/modules/$bar"
+ fi
done
fi
dnl #############################################################
MODULES=
if test "x$EXPERIMENTAL" = "xyes"; then
- for foo in `ls src/modules | grep rlm_`; do
+ for foo in `ls -1d src/modules | grep rlm_`; do
MODULES="$MODULES $foo"
done
else
AC_OUTPUT(\
./Make.inc \
./src/include/build-radpaths-h \
+ ./src/main/Makefile \
./src/main/checkrad.pl \
./src/main/radlast \
./src/main/radtest \
./scripts/radiusd.cron.daily \
./scripts/radiusd.cron.monthly \
./scripts/cryptpasswd \
+ ./raddb/dictionary \
./raddb/radiusd.conf
)