X-Git-Url: http://www.project-moonshot.org/gitweb/?p=freeradius.git;a=blobdiff_plain;f=acinclude.m4;h=1dd8ad14c8ec7c775aaf6bbf6fbfdb70be49a1cf;hp=2a57dc275da36c66a09f91db5bcfb0a1e8896487;hb=HEAD;hpb=55011e127d0c32675b3e2128eb0ec88368590326 diff --git a/acinclude.m4 b/acinclude.m4 index 2a57dc2..1dd8ad1 100644 --- a/acinclude.m4 +++ b/acinclude.m4 @@ -1,6 +1,6 @@ dnl See whether we need a declaration for a function. dnl RADIUSD_NEED_DECLARATION(FUNCTION [, EXTRA-HEADER-FILES]) -AC_DEFUN(RADIUSD_NEED_DECLARATION, +AC_DEFUN([RADIUSD_NEED_DECLARATION], [AC_MSG_CHECKING([whether $1 must be declared]) AC_CACHE_VAL(radius_cv_decl_needed_$1, [AC_TRY_COMPILE([ @@ -65,7 +65,7 @@ fi dnl Check multiple functions to see whether each needs a declaration. dnl RADIUSD_NEED_DECLARATIONS(FUNCTION... [, EXTRA-HEADER-FILES]) -AC_DEFUN(RADIUSD_NEED_DECLARATIONS, +AC_DEFUN([RADIUSD_NEED_DECLARATIONS], [for ac_func in $1 do RADIUSD_NEED_DECLARATION($ac_func, $2) @@ -75,7 +75,7 @@ done dnl Checks to see if this is SUNPro we're building with dnl Usage: dnl AC_PROG_CC_SUNPRO -AC_DEFUN(AC_PROG_CC_SUNPRO, +AC_DEFUN([AC_PROG_CC_SUNPRO], [AC_CACHE_CHECK(whether we are using SUNPro C, ac_cv_prog_suncc, [dnl The semicolon is to pacify NeXT's syntax-checking cpp. cat > conftest.c < -#endif -#ifdef HAVE_STDINT_H -#include -#endif -#ifdef HAVE_STDIO_H -#include -#endif -#ifdef HAVE_NETDB_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -#include -#include -#include -#include ], - [ int a = 1;], - SNMP_INCLUDE="";ucdsnmp=yes, - ucdsnmp=) - -dnl # -dnl # If not, look for it in a number of directories and in ucd-snmp. -dnl # -if test "x$ucdsnmp" = "x"; then - old_CFLAGS="$CFLAGS" - for try in /usr/include /usr/local/include $snmp_include_dir; do - CFLAGS="$old_CFLAGS -I$try" - AC_TRY_COMPILE([ -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_STDINT_H -#include -#endif -#ifdef HAVE_STDIO_H -#include -#endif -#ifdef HAVE_NETDB_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -#include -#include -#include -#include ], - [ int a = 1;], - SNMP_INCLUDE="-I$try";ucdsnmp=yes, - ucdsnmp=) - if test "x$ucdsnmp" != "x"; then - break; - fi - done - CFLAGS="$old_CFLAGS" -fi - -if test "x$ucdsnmp" = "x"; then - old_CFLAGS="$CFLAGS" - for try in /usr/include/ucd-snmp /usr/local/include/ucd-snmp $snmp_include_dir; do - CFLAGS="$old_CFLAGS -I$try" -dnl # -dnl # First, see if we can build it WITHOUT using any special includes and without ucd-snmp -dnl # -AC_TRY_COMPILE([ -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_STDINT_H -#include -#endif -#ifdef HAVE_STDIO_H -#include -#endif -#ifdef HAVE_NETDB_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -#include -#include -#include ], - [ int a = 1;], - SNMP_INCLUDE="";ucdsnmp=no, - ucdsnmp=) - if test "x$ucdsnmp" != "x"; then - break; - fi - done - CFLAGS="$old_CFLAGS" -fi - -dnl # -dnl # If not, look for it in a number of directories and without ucd-snmp -dnl # -if test "x$ucdsnmp" = "x"; then - old_CFLAGS="$CFLAGS" - for try in /usr/include/ucd-snmp /usr/local/include/ucd-snmp $snmp_include_dir; do - CFLAGS="$old_CFLAGS -I$try" - AC_TRY_COMPILE([ -#ifdef HAVE_SYS_TYPES_H -#include -#endif -#ifdef HAVE_STDINT_H -#include -#endif -#ifdef HAVE_STDIO_H -#include -#endif -#ifdef HAVE_NETDB_H -#include -#endif -#ifdef HAVE_UNISTD_H -#include -#endif -#include -#include -#include ], - [ int a = 1;], - SNMP_INCLUDE="-I$try";ucdsnmp=no, - ucdsnmp=) - if test "x$ucdsnmp" != "x"; then - break; - fi - done - CFLAGS="$old_CFLAGS" -fi - -if test "x$ucdsnmp" = "x"; then - AC_MSG_RESULT(no) -else - if test "x$ucdsnmp" = "xyes"; then - AC_MSG_RESULT((ucd-snmp)yes) - AC_DEFINE(HAVE_UCD_SNMP_ASN1_SNMP_SNMPIMPL_H, [], [Define if you have the , and header file.]) - else - AC_MSG_RESULT(yes) - AC_DEFINE(HAVE_ASN1_SNMP_SNMPIMPL_H, [], [Define if you have the , and header file.]) - fi -dnl # -dnl # Now do the same thing, looking for the SNMP library directory -dnl # - AC_MSG_CHECKING([for snmp_build_var_op in -lsnmp]) - -dnl # -dnl # First, see if we can build it WITHOUT using any special includes -dnl # - old_LIBS="$LIBS" - LIBS="$old_LIBS -lsnmp" - AC_TRY_LINK([extern char snmp_build_var_op();], - [ snmp_build_var_op()], - SNMP_LIBS="-lsnmp", - SNMP_LIBS=) - - if test "x$SNMP_LIBS" = "x"; then - for try in /usr/lib /usr/local/lib /usr/local/snmp/lib $snmp_lib_dir; do - LIBS="$old_LIBS -L$try -lsnmp" - AC_TRY_LINK([extern char snmp_build_var_op();], - [ snmp_build_var_op()], - SNMP_LIBS="-L$try -lsnmp", - SNMP_LIBS=) - if test "x$SNMP_LIBS" != "x"; then - break; - fi -dnl # -dnl # That didn't work. Try adding the '-lcrypto' line. -dnl # Some SNMP libraries are linked against SSL... -dnl # - LIBS="$old_LIBS -L$try -lsnmp -lcrypto" - AC_TRY_LINK([extern char snmp_build_var_op();], - [ snmp_build_var_op()], - SNMP_LIBS="-L$try -lsnmp -lcrypto", - SNMP_LIBS=) - if test "x$SNMP_LIBS" != "x"; then - break; - fi - done - fi - LIBS="$old_LIBS" - - dnl # - dnl # If one or the other isn't found, disable them both.. - dnl # If both are found, enable them both. - dnl # - CFLAGS="$old_CFLAGS" - if test "x$SNMP_LIBS" = "x"; then - AC_MSG_RESULT(no) - SNMP_INCLUDE= - else - AC_MSG_RESULT(yes) - AC_DEFINE(WITH_SNMP, [], [Include SNMP subagent]) - AC_DEFINE(HAVE_LIBSNMP, [], [Define if you have the snmp library (-lsnmp).]) - fi -fi -]) - - dnl # dnl # Locate the directory in which a particular file is found. dnl # @@ -334,7 +120,7 @@ dnl # Defines the variable MYSQLLIB_DIR to be the directory(s) in dnl # which the file libmysqlclient.a is to be found. dnl # dnl # -AC_DEFUN(FR_LOCATE_DIR, +AC_DEFUN([FR_LOCATE_DIR], [ dnl # If we have the program 'locate', then the problem of finding a dnl # particular file becomes MUCH easier. @@ -396,51 +182,75 @@ dnl ####################################################################### dnl # dnl # Look for a library in a number of places. dnl # -AC_DEFUN(FR_SMART_CHECK_LIB, [ +dnl # FR_SMART_CHECK_LIB(library, function) +dnl # +AC_DEFUN([FR_SMART_CHECK_LIB], [ sm_lib_safe=`echo "$1" | sed 'y%./+-%__p_%'` sm_func_safe=`echo "$2" | sed 'y%./+-%__p_%'` AC_MSG_CHECKING([for $2 in -l$1]) +old_LIBS="$LIBS" smart_lib= smart_lib_dir= dnl # -dnl # Try to link it first, using the default libs && library paths +dnl # Try first any user-specified directory, otherwise we may pick up +dnl # the wrong version. dnl # - old_LIBS="$LIBS" - LIBS="$LIBS -l$1" +if test "x$smart_try_dir" != "x"; then + for try in $smart_try_dir; do + LIBS="-L$try -l$1 $old_LIBS" + AC_TRY_LINK([extern char $2();], + [ $2()], + smart_lib="-L$try -l$1") + if test "x$smart_lib" != "x"; then + break; + fi + done + LIBS="$old_LIBS" +fi + +dnl # +dnl # Try using the default library path +dnl # +if test "x$smart_lib" = "x"; then + LIBS="-l$1 $old_LIBS" AC_TRY_LINK([extern char $2();], - [ $2()], + [ $2()], smart_lib="-l$1") + LIBS="$old_LIBS" +fi - if test "x$smart_lib" = "x"; then - FR_LOCATE_DIR(smart_lib_dir,[lib$1${libltdl_cv_shlibext}]) - FR_LOCATE_DIR(smart_lib_dir,[lib$1.a]) - - for try in $smart_try_dir $smart_lib_dir /usr/local/lib/ /opt/lib; do - LIBS="$old_LIBS -L$try -l$1" +dnl # +dnl # Try to guess possible locations. +dnl # +if test "x$smart_lib" = "x"; then + FR_LOCATE_DIR(smart_lib_dir,[lib$1${libltdl_cv_shlibext}]) + FR_LOCATE_DIR(smart_lib_dir,[lib$1.a]) - AC_TRY_LINK([extern char $2();], - [ $2()], - smart_lib="-L$try -l$1") - if test "x$smart_lib" != "x"; then - break; - fi - done - LIBS="$old_LIBS" - fi + for try in $smart_lib_dir /usr/local/lib /opt/lib; do + LIBS="-L$try -l$1 $old_LIBS" + AC_TRY_LINK([extern char $2();], + [ $2()], + smart_lib="-L$try -l$1") + if test "x$smart_lib" != "x"; then + break; + fi + done + LIBS="$old_LIBS" +fi - dnl # - dnl # Found it, set the appropriate variable. - dnl # - if test "x$smart_lib" != "x"; then - AC_MSG_RESULT(yes) - eval "ac_cv_lib_${sm_lib_safe}_${sm_func_safe}=yes" - LIBS="$old_LIBS $smart_lib" - SMART_LIBS="$SMART_LIBS $smart_lib" - else - AC_MSG_RESULT(no) +dnl # +dnl # Found it, set the appropriate variable. +dnl # +if test "x$smart_lib" != "x"; then + AC_MSG_RESULT(yes) + eval "ac_cv_lib_${sm_lib_safe}_${sm_func_safe}=yes" + LIBS="$smart_lib $old_LIBS" + SMART_LIBS="$smart_lib $SMART_LIBS" +else + AC_MSG_RESULT(no) fi ]) @@ -450,53 +260,75 @@ dnl # Look for a header file in a number of places. dnl # dnl # FR_SMART_CHECK_INCLUDE(foo.h, [ #include ]) dnl # -AC_DEFUN(FR_SMART_CHECK_INCLUDE, [ +AC_DEFUN([FR_SMART_CHECK_INCLUDE], [ ac_safe=`echo "$1" | sed 'y%./+-%__pm%'` AC_MSG_CHECKING([for $1]) +old_CFLAGS="$CFLAGS" smart_include= smart_include_dir= dnl # -dnl # Try to link it first, using the default includes +dnl # Try first any user-specified directory, otherwise we may pick up +dnl # the wrong version. +dnl # +if test "x$smart_try_dir" != "x"; then + for try in $smart_try_dir; do + CFLAGS="$old_CFLAGS -I$try" + AC_TRY_COMPILE([$2 + #include <$1>], + [ int a = 1;], + smart_include="-I$try", + smart_include=) + if test "x$smart_include" != "x"; then + break; + fi + done + CFLAGS="$old_CFLAGS" +fi + +dnl # +dnl # Try using the default includes. dnl # - old_CFLAGS="$CFLAGS" +if test "x$smart_include" = "x"; then AC_TRY_COMPILE([$2 #include <$1>], - [ int a = 1;], - smart_include=" ", - smart_include=) - - if test "x$smart_include" = "x"; then - FR_LOCATE_DIR(smart_include_dir,$1) - - for try in $smart_try_dir $smart_include_dir /usr/local/include/ /opt/include; do - CFLAGS="$old_CFLAGS -I$try" + [ int a = 1;], + smart_include=" ", + smart_include=) +fi - AC_TRY_COMPILE([$2 - #include <$1>], - [ int a = 1;], - smart_include="-I$try", - smart_include=) +dnl # +dnl # Try to guess possible locations. +dnl # +if test "x$smart_include" = "x"; then + FR_LOCATE_DIR(smart_include_dir,$1) - if test "x$smart_include" != "x"; then - break; - fi - done - CFLAGS="$old_CFLAGS" - fi + for try in $smart_include_dir /usr/local/include /opt/include; do + CFLAGS="$old_CFLAGS -I$try" + AC_TRY_COMPILE([$2 + #include <$1>], + [ int a = 1;], + smart_include="-I$try", + smart_include=) + if test "x$smart_include" != "x"; then + break; + fi + done + CFLAGS="$old_CFLAGS" +fi - dnl # - dnl # Found it, set the appropriate variable. - dnl # - if test "x$smart_include" != "x"; then - AC_MSG_RESULT(yes) - eval "ac_cv_header_$ac_safe=yes" - CFLAGS="$old_CFLAGS $smart_include" - SMART_CFLAGS="$SMART_CFLAGS $smart_include" - else - AC_MSG_RESULT(no) +dnl # +dnl # Found it, set the appropriate variable. +dnl # +if test "x$smart_include" != "x"; then + AC_MSG_RESULT(yes) + eval "ac_cv_header_$ac_safe=yes" + CFLAGS="$old_CFLAGS $smart_include" + SMART_CFLAGS="$SMART_CFLAGS $smart_include" +else + AC_MSG_RESULT(no) fi ]) @@ -508,7 +340,7 @@ dnl # Usage: FR_CHECK_STRUCT_HAS_MEMBER([#include ], [struct foo], memb dnl # If the member is defined, then the variable dnl # ac_cv_type_struct_foo_has_member is set to 'yes' dnl # -AC_DEFUN(FR_CHECK_STRUCT_HAS_MEMBER, [ +AC_DEFUN([FR_CHECK_STRUCT_HAS_MEMBER], [ AC_MSG_CHECKING([for $3 in $2]) dnl BASED on 'offsetof': @@ -535,12 +367,74 @@ $1 fi ]) -AC_DEFUN(FR_LIBLTDL_PATH, +dnl Autoconf 2.61 breaks the support for chained configure scripts +dnl in combination with config.cache +m4_pushdef([AC_OUTPUT], +[ + unset ac_cv_env_LIBS_set + unset ac_cv_env_LIBS_value + m4_popdef([AC_OUTPUT]) + AC_OUTPUT([$1],[$2],[$3]) +]) + + +# See if the compilation works with __thread, for thread-local storage +# +AC_DEFUN([FR_TLS], [ - LIBLTDLPATH= - if test x"$enable_ltdl_install" = x"yes"; then - AC_CONFIG_SUBDIRS('libltdl') - LIBLTDLPATH=libltdl + AC_MSG_CHECKING(for TLS) + AC_RUN_IFELSE([AC_LANG_SOURCE([[ static __thread int val; int main(int argc, char *argv[]) { return val = argc; } ]])],[have_tls=yes],[have_tls=no],[have_tls=no ]) + AC_MSG_RESULT($have_tls) + if test "$have_tls" = "yes"; then + AC_DEFINE([HAVE_THREAD_TLS],[1],[Define if the compiler supports __thread]) fi - AC_SUBST(LIBLTDLPATH) ]) + + +AC_DEFUN([AC_LIB_READLINE], [ + AC_CACHE_CHECK([for a readline compatible library], + ac_cv_lib_readline, [ + ORIG_LIBS=$LIBS + for readline_lib in readline edit editline; do + for termcap_lib in "" termcap curses ncurses; do + if test -z "$termcap_lib"; then + TRY_LIB="-l$readline_lib" + else + TRY_LIB="-l$readline_lib -l$termcap_lib" + fi + LIBS="$ORIG_LIBS $TRY_LIB" + AC_TRY_LINK_FUNC(readline, ac_cv_lib_readline="$TRY_LIB") + if test -n "$ac_cv_lib_readline"; then + LIBREADLINE="$TRY_LIB" + AC_SUBST(LIBREADLINE) + break + fi + done + if test -n "$ac_cv_lib_readline"; then + break + fi + done + if test -z "$ac_cv_lib_readline"; then + ac_cv_lib_readline="no" + fi + LIBS=$ORIG_LIBS + ]) + + if test "$ac_cv_lib_readline" != "no"; then + AC_DEFINE(HAVE_LIBREADLINE, 1, + [Define if you have a readline compatible library]) + AC_CHECK_HEADERS(readline.h readline/readline.h) + AC_CACHE_CHECK([whether readline supports history], + ac_cv_lib_readline_history, [ + ac_cv_lib_readline_history="no" + AC_TRY_LINK_FUNC(add_history, ac_cv_lib_readline_history="yes") + ]) + if test "$ac_cv_lib_readline_history" = "yes"; then + AC_DEFINE(HAVE_READLINE_HISTORY, 1, + [Define if your readline library has \`add_history']) + AC_CHECK_HEADERS(history.h readline/history.h) + fi + fi +]) + +AC_INCLUDE(aclocal.m4)