AC_PREREQ(2.52)
-AC_COPYRIGHT([Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+AC_COPYRIGHT([Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009
Massachusetts Institute of Technology.
])
dnl
-dnl Figure out the top of the source and build trees. We depend on localdir
-dnl being a relative pathname; we could make it general later, but for now
-dnl this is good enough.
+define([K5_TOPDIR],[.])dnl
dnl
AC_DEFUN(V5_SET_TOPDIR,[dnl
-ifdef([AC_LOCALDIR], [dnl AC_LOCALDIR exists in 2.13, but not newer autoconfs.
-ac_reltopdir=AC_LOCALDIR
-case "$ac_reltopdir" in
-/*)
- echo "Configure script built with absolute localdir pathname"
- exit 1
- ;;
-"")
- ac_reltopdir=.
- ;;
-esac
-],[
-ac_reltopdir=
-for x in . .. ../.. ../../.. ../../../..; do
- if test "x$ac_reltopdir" = "x" -a -r "$srcdir/$x/aclocal.m4" ; then
- ac_reltopdir=$x
- fi
-done
-if test "x$ac_reltopdir" = "x"; then
- echo "Configure could not determine the relative topdir"
- exit 1
+ac_reltopdir="K5_TOPDIR"
+if test ! -r "$srcdir/K5_TOPDIR/aclocal.m4"; then
+ AC_MSG_ERROR([Configure could not determine the relative topdir])
fi
-])
ac_topdir=$srcdir/$ac_reltopdir
ac_config_fragdir=$ac_reltopdir/config
-krb5_pre_in=$ac_config_fragdir/pre.in
-krb5_post_in=$ac_config_fragdir/post.in
# echo "Looking for $srcdir/$ac_config_fragdir"
if test -d "$srcdir/$ac_config_fragdir"; then
- AC_CONFIG_AUX_DIR($ac_config_fragdir)
+ AC_CONFIG_AUX_DIR(K5_TOPDIR/config)
else
AC_MSG_ERROR([can not find config/ directory in $ac_reltopdir])
fi
])dnl
dnl
+dnl Version info.
+dnl
+pushdef([x],esyscmd([sed -n 's/#define \([A-Z0-9_]*\)[ \t]*\(.*\)/\1=\2/p' < ]K5_TOPDIR/patchlevel.h))
+define([PL_KRB5_MAJOR_RELEASE],regexp(x,[KRB5_MAJOR_RELEASE=\(.*\)],[\1]))
+ifelse(PL_KRB5_MAJOR_RELEASE,,[errprint([Can't determine KRB5_MAJOR_RELEASE value from patchlevel.h.
+]) m4exit(1) dnl sometimes that does not work?
+builtin(m4exit,1)])
+define([PL_KRB5_MINOR_RELEASE],regexp(x,[KRB5_MINOR_RELEASE=\(.*\)],[\1]))
+ifelse(PL_KRB5_MINOR_RELEASE,,[errprint([Can't determine KRB5_MINOR_RELEASE value from patchlevel.h.
+]) m4exit(1) dnl sometimes that does not work?
+builtin(m4exit,1)])
+define([PL_KRB5_PATCHLEVEL],regexp(x,[KRB5_PATCHLEVEL=\(.*\)],[\1]))
+ifelse(PL_KRB5_PATCHLEVEL,,[errprint([Can't determine KRB5_PATCHLEVEL value from patchlevel.h.
+]) m4exit(1) dnl sometimes that does not work?
+builtin(m4exit,1)])
+define([PL_KRB5_RELTAIL],regexp(x,[KRB5_RELTAIL="\(.*\)"],[\1]))
+dnl RELTAIL is allowed to not be defined.
+popdef([x])
+define([K5_VERSION],PL_KRB5_MAJOR_RELEASE.PL_KRB5_MINOR_RELEASE[]ifelse(PL_KRB5_PATCHLEVEL,0,,.PL_KRB5_PATCHLEVEL)ifelse(PL_KRB5_RELTAIL,,,-PL_KRB5_RELTAIL))
+define([K5_BUGADDR],krb5-bugs@mit.edu)
+define([K5_AC_INIT],[AC_INIT(Kerberos 5, K5_VERSION, K5_BUGADDR, krb5)
+AC_CONFIG_SRCDIR($1)
+build_dynobj=no])
+dnl
dnl drop in standard rules for all configure files -- CONFIG_RULES
dnl
AC_DEFUN(CONFIG_RULES,[dnl
if test -z "$LD" ; then LD=$CC; fi
AC_ARG_VAR(LD,[linker command [CC]])
AC_SUBST(LDFLAGS) dnl
-WITH_KRB4 dnl
KRB5_AC_CHOOSE_ET dnl
KRB5_AC_CHOOSE_SS dnl
KRB5_AC_CHOOSE_DB dnl
-dnl allow stuff in tree to access deprecated/private stuff for now
-AC_DEFINE([KRB5_PRIVATE], 1, [Define only if building in-tree])
-AC_DEFINE([KRB5_DEPRECATED], 1, [Define only if building in-tree])
+dnl allow stuff in tree to access deprecated stuff for now
+dnl AC_DEFINE([KRB5_DEPRECATED], 1, [Define only if building in-tree])
AC_C_CONST dnl
WITH_NETLIB dnl
WITH_HESIOD dnl
dnl
CONFIG_RELTOPDIR=$ac_reltopdir
AC_SUBST(CONFIG_RELTOPDIR)
-AC_SUBST(subdirs)
lib_frag=$srcdir/$ac_config_fragdir/lib.in
AC_SUBST_FILE(lib_frag)
libobj_frag=$srcdir/$ac_config_fragdir/libobj.in
AC_SUBST_FILE(libobj_frag)
+libnover_frag=$srcdir/$ac_config_fragdir/libnover.in
+AC_SUBST_FILE(libnover_frag)
+libpriv_frag=$srcdir/$ac_config_fragdir/libpriv.in
+AC_SUBST_FILE(libpriv_frag)
+libnodeps_frag=$srcdir/$ac_config_fragdir/libnodeps.in
+AC_SUBST_FILE(libnodeps_frag)
dnl
KRB5_AC_PRAGMA_WEAK_REF
+WITH_LDAP
KRB5_LIB_PARAMS
KRB5_AC_INITFINI
KRB5_AC_ENABLE_THREADS
+KRB5_AC_FIND_DLOPEN
+KRB5_AC_KEYRING_CCACHE
])dnl
dnl Maintainer mode, akin to what automake provides, 'cept we don't
fi
])
+dnl find dlopen
+AC_DEFUN([KRB5_AC_FIND_DLOPEN],[
+old_LIBS="$LIBS"
+DL_LIB=
+AC_SEARCH_LIBS(dlopen, dl, [
+if test "$ac_cv_search_dlopen" != "none required"; then
+ DL_LIB=$ac_cv_search_dlopen
+fi
+LIBS="$old_LIBS"
+AC_DEFINE(USE_DLOPEN,1,[Define if dlopen should be used])])
+AC_SUBST(DL_LIB)
+])
+
+
dnl Hack for now.
AC_DEFUN([KRB5_AC_ENABLE_THREADS],[
AC_ARG_ENABLE([thread-support],
fi
dnl Maybe this should be inside the conditional above? Doesn't cache....
if test "$enable_thread_support" = yes; then
- ACX_PTHREAD(,[AC_MSG_ERROR([cannot determine options for enabling thread support])])
+ ACX_PTHREAD(,[AC_MSG_ERROR([cannot determine options for enabling thread support; try --disable-thread-support])])
AC_MSG_NOTICE(PTHREAD_CC = $PTHREAD_CC)
AC_MSG_NOTICE(PTHREAD_CFLAGS = $PTHREAD_CFLAGS)
AC_MSG_NOTICE(PTHREAD_LIBS = $PTHREAD_LIBS)
PTHREAD_LIBS=
PTHREAD_CFLAGS=
;;
+ hpux*)
+ # These are the flags that "gcc -pthread" adds. But we don't
+ # want "-pthread" because that has link-time effects, and we
+ # don't exclude CFLAGS when linking. *sigh*
+ PTHREAD_CFLAGS="-D_REENTRANT -D_THREAD_SAFE -D_POSIX_C_SOURCE=199506L"
+ ;;
+ solaris2.[[1-9]])
+ # On Solaris 10 with gcc 3.4.3, the autoconf archive macro doesn't
+ # get the right result. XXX What about Solaris 9 and earlier?
+ if test "$GCC" = yes ; then
+ PTHREAD_CFLAGS="-D_REENTRANT -pthreads"
+ fi
+ ;;
+ solaris*)
+ # On Solaris 10 with gcc 3.4.3, the autoconf archive macro doesn't
+ # get the right result.
+ if test "$GCC" = yes ; then
+ PTHREAD_CFLAGS="-D_REENTRANT -pthreads"
+ fi
+ # On Solaris 10, the thread support is always available in libc.
+ AC_DEFINE(NO_WEAK_PTHREADS,1,[Define if references to pthread routines should be non-weak.])
+ ;;
esac
+ THREAD_SUPPORT=1
+else
+ PTHREAD_CC="$CC"
+ PTHREAD_CFLAGS=""
+ PTHREAD_LIBS=""
+ THREAD_SUPPORT=0
fi
+AC_SUBST(THREAD_SUPPORT)
dnl We want to know where these routines live, so on systems with weak
dnl reference support we can figure out whether or not the pthread library
dnl has been linked in.
dnl If we don't add any libraries for thread support, don't bother.
-AC_CHECK_FUNCS(pthread_once pthread_mutexattr_setrobust_np pthread_rwlock_init)
+AC_CHECK_FUNCS(pthread_once pthread_rwlock_init)
old_CC="$CC"
test "$PTHREAD_CC" != "" && test "$ac_cv_c_compiler_gnu" = no && CC=$PTHREAD_CC
old_CFLAGS="$CFLAGS"
old_LIBS="$LIBS"
LIBS="$PTHREAD_LIBS $LIBS"
AC_MSG_NOTICE(rechecking with PTHREAD_... options)
-AC_CHECK_LIB(c, pthread_mutexattr_setrobust_np,
- [AC_DEFINE(HAVE_PTHREAD_MUTEXATTR_SETROBUST_NP_IN_THREAD_LIB,1,[Define if pthread_mutexattr_setrobust_np is provided in the thread library.])])
AC_CHECK_LIB(c, pthread_rwlock_init,
[AC_DEFINE(HAVE_PTHREAD_RWLOCK_INIT_IN_THREAD_LIB,1,[Define if pthread_rwlock_init is provided in the thread library.])])
LIBS="$old_LIBS"
krb5_cv_func_sigprocmask_use=no, krb5_cv_func_sigprocmask_use=yes))])
AC_MSG_RESULT($krb5_cv_func_sigprocmask_use)
if test $krb5_cv_func_sigprocmask_use = yes; then
- AC_DEFINE(USE_SIGPROCMASK)
+ AC_DEFINE(USE_SIGPROCMASK,1,[Define if sigprocmask should be used])
fi
])dnl
dnl
krb5_cv_struct_sigjmp_buf=yes,krb5_cv_struct_sigjmp_buf=no)])
AC_MSG_RESULT($krb5_cv_struct_sigjmp_buf)
if test $krb5_cv_struct_sigjmp_buf = yes; then
- AC_DEFINE(POSIX_SETJMP)
+ AC_DEFINE(POSIX_SETJMP,1,[Define if setjmp indicates POSIX interface])
fi
)])dnl
dnl
fi
dnl
AC_REQUIRE([KRB5_SOCKADDR_SA_LEN])dnl
-AC_ARG_ENABLE([ipv6],
-AC_HELP_STRING([--enable-ipv6],[turn on IPv6 support])
-AC_HELP_STRING([--disable-ipv6],[turn off IPv6 support @<:@enabled if available@:>@]), ,enableval=try)dnl
-case "$enableval" in
- yes | try)
- KRB5_AC_CHECK_INET6
- if test "$enableval/$krb5_cv_inet6" = yes/no ; then
- AC_MSG_ERROR(IPv6 support does not appear to be available)
- fi ;;
- no) ;;
- *) AC_MSG_ERROR(bad value "$enableval" for enable-ipv6 option) ;;
-esac
-])dnl
-dnl
-AC_DEFUN(KRB5_AC_CHECK_TYPE_WITH_HEADERS,[
-AC_MSG_CHECKING(for type $1)
-changequote(<<,>>)dnl
-varname=`echo $1 | sed 's,[ -],_,g'`
-changequote([,])dnl
-AC_CACHE_VAL(krb5_cv_$varname,[
-AC_TRY_COMPILE([$2],[ $1 foo; ], eval krb5_cv_$varname=yes, eval krb5_cv_$varname=no)])
-eval x="\$krb5_cv_$varname"
-AC_MSG_RESULT($x)
-if eval test "$x" = yes ; then
- AC_DEFINE_UNQUOTED(HAVE_`echo $varname | tr [[[a-z]]] [[[A-Z]]]`)
-fi])
-dnl
-dnl
-AC_DEFUN(KRB5_AC_CHECK_SOCKADDR_STORAGE,[
-KRB5_AC_CHECK_TYPE_WITH_HEADERS(struct sockaddr_storage, [
-#ifdef HAVE_SYS_TYPES_H
-#include <sys/types.h>
-#endif
-#include <sys/socket.h>
-#include <netinet/in.h>
-])])dnl
-dnl
-dnl
-AC_DEFUN(KRB5_AC_CHECK_INET6,[
-AC_REQUIRE([KRB5_AC_CHECK_SOCKADDR_STORAGE])dnl
-AC_MSG_CHECKING(for IPv6 compile-time support)
+AC_MSG_CHECKING(for IPv6 compile-time support without -DINET6)
AC_CACHE_VAL(krb5_cv_inet6,[
if test "$ac_cv_func_inet_ntop" != "yes" ; then
krb5_cv_inet6=no
if test "$krb5_cv_inet6_with_dinet6" = yes; then
AC_DEFINE(INET6,1,[May need to be defined to enable IPv6 support, for example on IRIX])
fi
- AC_DEFINE(KRB5_USE_INET6,1,[Define if we should compile in IPv6 support (even if we can't use it at run time)])
fi
])dnl
dnl
-dnl Generic File existence tests
-dnl
-dnl K5_AC_CHECK_FILE(FILE, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
-dnl
-AC_DEFUN(K5_AC_CHECK_FILE,
-[AC_REQUIRE([AC_PROG_CC])dnl
-dnl Do the transliteration at runtime so arg 1 can be a shell variable.
-ac_safe=`echo "$1" | sed 'y%./+-%__p_%'`
-AC_MSG_CHECKING([for $1])
-AC_CACHE_VAL(ac_cv_file_$ac_safe,
-[if test "$cross_compiling" = yes; then
- errprint(__file__:__line__: warning: Cannot check for file existence when cross compiling
-)dnl
- AC_MSG_ERROR(Cannot check for file existence when cross compiling)
-else
- if test -r $1; then
- eval "ac_cv_file_$ac_safe=yes"
- else
- eval "ac_cv_file_$ac_safe=no"
- fi
-fi])dnl
-if eval "test \"`echo '$ac_cv_file_'$ac_safe`\" = yes"; then
- AC_MSG_RESULT(yes)
- ifelse([$2], , :, [$2])
-else
- AC_MSG_RESULT(no)
-ifelse([$3], , , [$3
-np])dnl
-fi
-])
-dnl
-dnl K5_AC_CHECK_FILES(FILE... [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
-dnl
-AC_DEFUN(K5_AC_CHECK_FILES,
-[AC_REQUIRE([AC_PROG_CC])dnl
-for ac_file in $1
-do
-K5_AC_CHECK_FILE($ac_file,
-[changequote(, )dnl
- ac_tr_file=HAVE`echo $ac_file | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-changequote([, ])dnl
- AC_DEFINE_UNQUOTED($ac_tr_file) $2], $3)dnl
-done
-])
-dnl
-dnl set $(KRB4) from --with-krb4=value -- WITH_KRB4
-dnl
-AC_DEFUN(WITH_KRB4,[
-AC_ARG_WITH([krb4],
-[ --without-krb4 don't include Kerberos V4 backwards compatibility
- --with-krb4 use V4 libraries included with V5 (default)
- --with-krb4=KRB4DIR use preinstalled V4 libraries],
-,
-withval=yes
-)dnl
-if test $withval = no; then
- AC_MSG_NOTICE(no krb4 support)
- KRB4_LIB=
- KRB4_DEPLIB=
- KRB4_INCLUDES=
- KRB4_LIBPATH=
- KRB_ERR_H_DEP=
- krb5_cv_build_krb4_libs=no
- krb5_cv_krb4_libdir=
-else
- AC_DEFINE([KRB5_KRB4_COMPAT], 1, [Define this if building with krb4 compat])
- if test $withval = yes; then
- AC_MSG_NOTICE(enabling built in krb4 support)
- KRB4_DEPLIB='$(TOPLIBD)/libkrb4$(DEPLIBEXT)'
- KRB4_LIB=-lkrb4
- KRB4_INCLUDES='-I$(SRCTOP)/include/kerberosIV -I$(BUILDTOP)/include/kerberosIV'
- KRB4_LIBPATH=
- KRB_ERR_H_DEP='$(BUILDTOP)/include/kerberosIV/krb_err.h'
- krb5_cv_build_krb4_libs=yes
- krb5_cv_krb4_libdir=
- else
- AC_MSG_NOTICE(using preinstalled krb4 in $withval)
- KRB4_LIB="-lkrb"
-dnl DEPKRB4_LIB="$withval/lib/libkrb.a"
- KRB4_INCLUDES="-I$withval/include"
- KRB4_LIBPATH="-L$withval/lib"
- KRB_ERR_H_DEP=
- krb5_cv_build_krb4_libs=no
- krb5_cv_krb4_libdir="$withval/lib"
- fi
-fi
-AC_SUBST(KRB4_INCLUDES)
-AC_SUBST(KRB4_LIBPATH)
-AC_SUBST(KRB4_LIB)
-AC_SUBST(KRB4_DEPLIB)
-AC_SUBST(KRB_ERR_H_DEP)
-dnl We always compile the des425 library
-DES425_DEPLIB='$(TOPLIBD)/libdes425$(DEPLIBEXT)'
-DES425_LIB=-ldes425
-AC_SUBST(DES425_DEPLIB)
-AC_SUBST(DES425_LIB)
-])dnl
-dnl
-dnl
AC_DEFUN(KRB5_AC_CHECK_FOR_CFLAGS,[
AC_BEFORE([$0],[AC_PROG_CC])
+AC_BEFORE([$0],[AC_PROG_CXX])
krb5_ac_cflags_set=${CFLAGS+set}
+krb5_ac_cxxflags_set=${CXXFLAGS+set}
+krb5_ac_warn_cflags_set=${WARN_CFLAGS+set}
+krb5_ac_warn_cxxflags_set=${WARN_CXXFLAGS+set}
])
dnl
+AC_DEFUN(TRY_WARN_CC_FLAG,[dnl
+ cachevar=`echo "krb5_cv_cc_flag_$1" | sed -e s/=/_eq_/g -e s/-/_dash_/g -e s/[[^a-zA-Z0-9_]]/_/g`
+ AC_CACHE_CHECK([if C compiler supports $1], [$cachevar],
+ [# first try without, then with
+ AC_TRY_COMPILE([], 1;,
+ [old_cflags="$CFLAGS"
+ CFLAGS="$CFLAGS $1"
+ AC_TRY_COMPILE([], 1;, eval $cachevar=yes, eval $cachevar=no)
+ CFLAGS="$old_cflags"],
+ [AC_MSG_ERROR(compiling simple test program with $CFLAGS failed)])])
+ if eval test '"${'$cachevar'}"' = yes; then
+ WARN_CFLAGS="$WARN_CFLAGS $1"
+ fi
+ eval flag_supported='${'$cachevar'}'
+])dnl
+dnl
AC_DEFUN(WITH_CC,[dnl
AC_REQUIRE([KRB5_AC_CHECK_FOR_CFLAGS])dnl
AC_REQUIRE([AC_PROG_CC])dnl
-krb5_cv_prog_gcc=$ac_cv_c_compiler_gnu
+AC_REQUIRE([AC_PROG_CXX])dnl
if test $ac_cv_c_compiler_gnu = yes ; then
HAVE_GCC=yes
else HAVE_GCC=
fi
AC_SUBST(HAVE_GCC)
-# maybe add -Waggregate-return, or can we assume that actually works by now?
-# -Wno-comment used to be used for SunOS system header <sys/stream.h>
+AC_CACHE_CHECK([for GNU linker], krb5_cv_prog_gnu_ld,
+[krb5_cv_prog_gnu_ld=no
+if test "$GCC" = yes; then
+ if AC_TRY_COMMAND([$CC -Wl,-v 2>&1 dnl
+ | grep "GNU ld" > /dev/null]); then
+ krb5_cv_prog_gnu_ld=yes
+ fi
+fi])
+AC_ARG_WITH([size-optimizations],
+[ --with-size-optimizations enable a few optimizations to reduce code size
+ possibly at some run-time cost],
+,
+withval=no)
+if test "$withval" = yes; then
+ AC_DEFINE(CONFIG_SMALL,1,[Define to reduce code size even if it means more cpu usage])
+fi
# -Wno-long-long, if needed, for k5-platform.h without inttypes.h etc.
-extra_gcc_warn_opts="-Wall -Wmissing-prototypes -Wcast-qual \
- -Wcast-align -Wconversion -Wshadow"
+extra_gcc_warn_opts="-Wall -Wcast-align -Wshadow"
+# -Wmissing-prototypes
if test "$GCC" = yes ; then
- if test "x$krb5_ac_cflags_set" = xset ; then
- AC_MSG_NOTICE(not adding extra gcc warning flags because CFLAGS was set)
+ # Putting this here means we get -Os after -O2, which works.
+ if test "$with_size_optimizations" = yes && test "x$krb5_ac_cflags_set" != xset; then
+ AC_MSG_NOTICE(adding -Os optimization option)
+ case "$CFLAGS" in
+ "-g -O2") CFLAGS="-g -Os" ;;
+ "-O2") CFLAGS="-Os" ;;
+ *) CFLAGS="$CFLAGS -Os" ;;
+ esac
+ fi
+ if test "x$krb5_ac_warn_cflags_set" = xset ; then
+ AC_MSG_NOTICE(not adding extra gcc warning flags because WARN_CFLAGS was set)
else
AC_MSG_NOTICE(adding extra warning flags for gcc)
- CFLAGS="$CFLAGS $extra_gcc_warn_opts"
+ WARN_CFLAGS="$WARN_CFLAGS $extra_gcc_warn_opts -Wmissing-prototypes"
if test "`uname -s`" = Darwin ; then
AC_MSG_NOTICE(skipping pedantic warnings on Darwin)
+ elif test "`uname -s`" = Linux ; then
+ AC_MSG_NOTICE(skipping pedantic warnings on Linux)
else
- CFLAGS="$CFLAGS -pedantic"
+ WARN_CFLAGS="$WARN_CFLAGS -pedantic"
+ fi
+ if test "$ac_cv_cxx_compiler_gnu" = yes; then
+ if test "x$krb5_ac_warn_cxxflags_set" = xset ; then
+ AC_MSG_NOTICE(not adding extra g++ warnings because WARN_CXXFLAGS was set)
+ else
+ AC_MSG_NOTICE(adding extra warning flags for g++)
+ WARN_CXXFLAGS="$WARN_CXXFLAGS $extra_gcc_warn_opts"
+ fi
fi
+ # Currently, G++ does not support -Wno-format-zero-length.
+ TRY_WARN_CC_FLAG(-Wno-format-zero-length)
+ # Other flags here may not be supported on some versions of
+ # gcc that people want to use.
+ for flag in overflow strict-overflow missing-format-attribute missing-prototypes return-type missing-braces parentheses switch unused-function unused-label unused-variable unused-value unknown-pragmas sign-compare newline-eof error=uninitialized ; do
+ TRY_WARN_CC_FLAG(-W$flag)
+ done
+ # old-style-definition? generates many, many warnings
+ #
+ # Warnings that we'd like to turn into errors on versions of gcc
+ # that support promoting only specific warnings to errors, but
+ # we'll take as warnings on older compilers. (If such a warning
+ # is added after the -Werror=foo feature, you can just put
+ # error=foo in the above list, and skip the test for the
+ # warning-only form.) At least in some versions, -Werror= doesn't
+ # seem to make the conditions actual errors, but still issues
+ # warnings; I guess we'll take what we can get.
+ #
+ # We're currently targeting C89+, not C99, so disallow some
+ # constructs.
+ for flag in declaration-after-statement variadic-macros ; do
+ TRY_WARN_CC_FLAG(-Werror=$flag)
+ if test "$flag_supported" = no; then
+ TRY_WARN_CC_FLAG(-W$flag)
+ fi
+ done
+ # We require function declarations now.
+ #
+ # In some compiler versions -- e.g., "gcc version 4.2.1 (Apple
+ # Inc. build 5664)" -- the -Werror- option works, but the -Werror=
+ # version doesn't cause implicitly declared functions to be
+ # flagged as errors. If neither works, -Wall implies
+ # -Wimplicit-function-declaration so don't bother.
+ TRY_WARN_CC_FLAG(-Werror-implicit-function-declaration)
+ if test "implicit-function-declaration_supported" = no; then
+ TRY_WARN_CC_FLAG(-Werror=implicit-function-declaration)
+ fi
+ #
fi
if test "`uname -s`" = Darwin ; then
# Someday this should be a feature test.
;;
esac
fi
+ if test "`uname -s`" = SunOS ; then
+ # Using Solaris but not GCC, assume Sunsoft compiler.
+ # We have some error-out-on-warning options available.
+ # Sunsoft 12 compiler defaults to -xc99=all, it appears, so "inline"
+ # works, but it also means that declaration-in-code warnings won't
+ # be issued.
+ # -v -fd -errwarn=E_DECLARATION_IN_CODE ...
+ WARN_CFLAGS="-errtags=yes -errwarn=E_BAD_PTR_INT_COMBINATION,E_BAD_PTR_INT_COMB_ARG,E_PTR_TO_VOID_IN_ARITHMETIC,E_NO_IMPLICIT_DECL_ALLOWED,E_ATTRIBUTE_PARAM_UNDEFINED"
+ WARN_CXXFLAGS="-errtags=yes +w +w2 -xport64"
+ fi
fi
+AC_SUBST(WARN_CFLAGS)
+AC_SUBST(WARN_CXXFLAGS)
])dnl
dnl
dnl
dnl The ac_foreach generates the list of fragments to include
dnl or "" if $2 is empty
AC_DEFUN(_K5_GEN_MAKEFILE,[dnl
-AC_CONFIG_FILES([$1/Makefile:$krb5_pre_in:$1/Makefile.in:$krb5_post_in])
+AC_CONFIG_FILES([$1/Makefile:$srcdir/]K5_TOPDIR[/config/pre.in:$1/Makefile.in:$1/deps:$srcdir/]K5_TOPDIR[/config/post.in])
])
dnl
dnl K5_GEN_FILE( <ac_output arguments> )
dnl
dnl K5_AC_OUTPUT
dnl Note: Adds the variables to config.status for individual
-dnl Makefile generation from config.statsu
-AC_DEFUN(K5_AC_OUTPUT,[dnl
-AC_CONFIG_COMMANDS([krb5_config_prefix], [], dnl
- [krb5_pre_in=$krb5_pre_in
- ac_config_fragdir=$ac_config_fragdir
- krb5_post_in=$krb5_post_in])
-AC_OUTPUT])dnl
+dnl Makefile generation from config.status
+AC_DEFUN(K5_AC_OUTPUT,[AC_OUTPUT])dnl
dnl
dnl V5_AC_OUTPUT_MAKEFILE
dnl
define(_V5_AC_OUTPUT_MAKEFILE,
[ifelse($2, , ,AC_CONFIG_FILES($2))
AC_FOREACH([DIR], [$1],dnl
- [AC_CONFIG_FILES(DIR[/Makefile:$krb5_pre_in:]DIR[/Makefile.in:$krb5_post_in])])
+ [AC_CONFIG_FILES(DIR[/Makefile:$srcdir/]K5_TOPDIR[/config/pre.in:]DIR[/Makefile.in:]DIR[/deps:$srcdir/]K5_TOPDIR[/config/post.in])])
K5_AC_OUTPUT])dnl
dnl
dnl
dnl component
dnl
AC_DEFUN([KRB5_SOCKADDR_SA_LEN],[ dnl
-AC_MSG_CHECKING(whether struct sockaddr contains sa_len)
-AC_CACHE_VAL(krb5_cv_sockaddr_sa_len,
-[AC_TRY_COMPILE([#include <sys/types.h>
-#include <sys/socket.h>
-],
-[struct sockaddr sa;
-sa.sa_len;],
-krb5_cv_sockaddr_sa_len=yes,krb5_cv_sockaddr_sa_len=no)])
-AC_MSG_RESULT([$]krb5_cv_sockaddr_sa_len)
-if test $krb5_cv_sockaddr_sa_len = yes; then
- AC_DEFINE_UNQUOTED(HAVE_SA_LEN,1,[Define if struct sockaddr contains sa_len])
- fi
-])
-dnl
-dnl
-dnl CHECK_UTMP: check utmp structure and functions
-dnl
-AC_DEFUN(CHECK_UTMP,[
-AC_MSG_CHECKING([ut_pid in struct utmp])
-AC_CACHE_VAL(krb5_cv_struct_ut_pid,
-[AC_TRY_COMPILE(
-[#include <sys/types.h>
-#include <utmp.h>],
-[struct utmp ut; ut.ut_pid;],
-krb5_cv_struct_ut_pid=yes, krb5_cv_struct_ut_pid=no)])
-AC_MSG_RESULT($krb5_cv_struct_ut_pid)
-if test $krb5_cv_struct_ut_pid = no; then
- AC_DEFINE(NO_UT_PID)
-fi
-AC_MSG_CHECKING([ut_type in struct utmp])
-AC_CACHE_VAL(krb5_cv_struct_ut_type,
-[AC_TRY_COMPILE(
-[#include <sys/types.h>
-#include <utmp.h>],
-[struct utmp ut; ut.ut_type;],
-krb5_cv_struct_ut_type=yes, krb5_cv_struct_ut_type=no)])
-AC_MSG_RESULT($krb5_cv_struct_ut_type)
-if test $krb5_cv_struct_ut_type = no; then
- AC_DEFINE(NO_UT_TYPE)
-fi
-AC_MSG_CHECKING([ut_host in struct utmp])
-AC_CACHE_VAL(krb5_cv_struct_ut_host,
-[AC_TRY_COMPILE(
-[#include <sys/types.h>
-#include <utmp.h>],
-[struct utmp ut; ut.ut_host;],
-krb5_cv_struct_ut_host=yes, krb5_cv_struct_ut_host=no)])
-AC_MSG_RESULT($krb5_cv_struct_ut_host)
-if test $krb5_cv_struct_ut_host = no; then
- AC_DEFINE(NO_UT_HOST)
-fi
-AC_MSG_CHECKING([ut_exit in struct utmp])
-AC_CACHE_VAL(krb5_cv_struct_ut_exit,
-[AC_TRY_COMPILE(
-[#include <sys/types.h>
-#include <utmp.h>],
-[struct utmp ut; ut.ut_exit;],
-krb5_cv_struct_ut_exit=yes, krb5_cv_struct_ut_exit=no)])
-AC_MSG_RESULT($krb5_cv_struct_ut_exit)
-if test $krb5_cv_struct_ut_exit = no; then
- AC_DEFINE(NO_UT_EXIT)
-fi
-AC_CHECK_FUNC(setutent,AC_DEFINE(HAVE_SETUTENT))
-AC_CHECK_FUNC(setutxent,AC_DEFINE(HAVE_SETUTXENT))
-AC_CHECK_FUNC(updwtmp,AC_DEFINE(HAVE_UPDWTMP))
-AC_CHECK_FUNC(updwtmpx,AC_DEFINE(HAVE_UPDWTMPX))
-])dnl
+AC_CHECK_MEMBER(struct sockaddr.sa_len,
+ AC_DEFINE(HAVE_SA_LEN,1,[Define if struct sockaddr contains sa_len])
+,,[#include <sys/types.h>
+#include <sys/socket.h>])])
dnl
dnl WITH_NETLIB
dnl
KRB5_NEED_PROTO([#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif],daemon,1)])dnl
-dnl
-dnl Check if stdarg or varargs is available *and compiles*; prefer stdarg.
-dnl (This was sent to djm for incorporation into autoconf 3/12/1996. KR)
-dnl
-AC_DEFUN(AC_HEADER_STDARG, [
-
-AC_MSG_CHECKING([for stdarg.h])
-AC_CACHE_VAL(ac_cv_header_stdarg_h,
-[AC_TRY_COMPILE([#include <stdarg.h>], [
- } /* ac_try_compile will have started a function body */
- int aoeu (char *format, ...) {
- va_list v;
- int i;
- va_start (v, format);
- i = va_arg (v, int);
- va_end (v);
-],ac_cv_header_stdarg_h=yes,ac_cv_header_stdarg_h=no)])dnl
-AC_MSG_RESULT($ac_cv_header_stdarg_h)
-if test $ac_cv_header_stdarg_h = yes; then
- AC_DEFINE(HAVE_STDARG_H, 1, [Define if stdarg available and compiles])
-else
-
-AC_MSG_CHECKING([for varargs.h])
-AC_CACHE_VAL(ac_cv_header_varargs_h,
-[AC_TRY_COMPILE([#include <varargs.h>],[
- } /* ac_try_compile will have started a function body */
- int aoeu (va_alist) va_dcl {
- va_list v;
- int i;
- va_start (v);
- i = va_arg (v, int);
- va_end (v);
-],ac_cv_header_varargs_h=yes,ac_cv_header_varargs_h=no)])dnl
-AC_MSG_RESULT($ac_cv_header_varargs_h)
-if test $ac_cv_header_varargs_h = yes; then
- AC_DEFINE(HAVE_VARARGS_H, 1, [Define if varargs available and compiles])
-else
- AC_MSG_ERROR(Neither stdarg nor varargs compile?)
-fi
-
-fi dnl stdarg test failure
-
-])dnl
dnl
dnl KRB5_AC_NEED_LIBGEN --- check if libgen needs to be linked in for
AC_DEFUN(AC_KRB5_TCL_FIND_CONFIG,[
AC_REQUIRE([KRB5_LIB_AUX])dnl
AC_MSG_CHECKING(for tclConfig.sh)
+dnl On Debian, we might be given --with-tcl=/usr, or tclsh might
+dnl point us to /usr/lib/tcl8.4; either way, we need to find
+dnl /usr/lib/tcl8.4/tclConfig.sh.
+dnl On NetBSD, we might be given --with-tcl=/usr/pkg, or tclsh
+dnl might point us to /usr/pkg/lib/tcl8.4; we need to find
+dnl /usr/pkg/lib/tclConfig.sh.
if test -r "$tcl_dir/lib/tclConfig.sh" ; then
tcl_conf="$tcl_dir/lib/tclConfig.sh"
elif test -r "$tcl_dir/tclConfig.sh" ; then
tcl_conf="$tcl_dir/tclConfig.sh"
+elif test -r "$tcl_dir/../tclConfig.sh" ; then
+ tcl_conf="$tcl_dir/../tclConfig.sh"
else
tcl_conf=
lib="$tcl_dir/lib"
TCL_MAYBE_RPATH=
fi
CPPFLAGS="$old_CPPFLAGS $TCL_INCLUDES"
- AC_CHECK_HEADER(tcl.h,AC_DEFINE(HAVE_TCL_H) tcl_header=yes)
+ AC_CHECK_HEADER(tcl.h,AC_DEFINE(HAVE_TCL_H,1,[Define if tcl.h is available]) tcl_header=yes)
if test $tcl_header=no; then
- AC_CHECK_HEADER(tcl/tcl.h,AC_DEFINE(HAVE_TCL_TCL_H) tcl_header=yes)
+ AC_CHECK_HEADER(tcl/tcl.h,AC_DEFINE(HAVE_TCL_TCL_H,1,[Define if tcl/tcl.h is available]) tcl_header=yes)
fi
CPPFLAGS="$old_CPPFLAGS"
tcl_lib=yes
+else
+ # If we read a tclConfig.sh file, it probably set this.
+ TCL_LIBS=
fi
AC_SUBST(TCL_INCLUDES)
AC_SUBST(TCL_LIBS)
dnl attempt to use old search algorithm for locating tcl
dnl
AC_DEFUN(AC_KRB5_TCL_TRYOLD, [
+AC_REQUIRE([KRB5_AC_FIND_DLOPEN])
AC_MSG_WARN([trying old tcl search code])
if test "$with_tcl" != yes -a "$with_tcl" != no; then
TCL_INCLUDES=-I$with_tcl/include
TCL_RPATH=:$with_tcl/lib
fi
if test "$with_tcl" != no ; then
- AC_CHECK_LIB(dl, dlopen, DL_LIB=-ldl)
- AC_CHECK_LIB(ld, main, DL_LIB=-lld)
krb5_save_CPPFLAGS="$CPPFLAGS"
krb5_save_LDFLAGS="$LDFLAGS"
CPPFLAGS="$CPPFLAGS $TCL_INCLUDES"
LDFLAGS="$LDFLAGS $TCL_LIBPATH"
tcl_header=no
- AC_CHECK_HEADER(tcl.h,AC_DEFINE(HAVE_TCL_H) tcl_header=yes)
+ AC_CHECK_HEADER(tcl.h,AC_DEFINE(HAVE_TCL_H,1,[Define if tcl.h found]) tcl_header=yes)
if test $tcl_header=no; then
- AC_CHECK_HEADER(tcl/tcl.h,AC_DEFINE(HAVE_TCL_TCL_H) tcl_header=yes)
+ AC_CHECK_HEADER(tcl/tcl.h,AC_DEFINE(HAVE_TCL_TCL_H,1,[Define if tcl/tcl.h found]) tcl_header=yes)
fi
if test $tcl_header = yes ; then
if test $tcl_lib = no; then
AC_CHECK_LIB(tcl8.0, Tcl_CreateCommand,
- TCL_LIBS="$TCL_LIBS -ltcl8.0 -lm $DL_LIB"
+ TCL_LIBS="$TCL_LIBS -ltcl8.0 -lm $DL_LIB $LIBS"
tcl_lib=yes,,-lm $DL_LIB)
fi
if test $tcl_lib = no; then
AC_CHECK_LIB(tcl7.6, Tcl_CreateCommand,
- TCL_LIBS="$TCL_LIBS -ltcl7.6 -lm $DL_LIB"
+ TCL_LIBS="$TCL_LIBS -ltcl7.6 -lm $DL_LIB $LIBS"
tcl_lib=yes,,-lm $DL_LIB)
fi
if test $tcl_lib = no; then
AC_CHECK_LIB(tcl7.5, Tcl_CreateCommand,
- TCL_LIBS="$TCL_LIBS -ltcl7.5 -lm $DL_LIB"
+ TCL_LIBS="$TCL_LIBS -ltcl7.5 -lm $DL_LIB $LIBS"
tcl_lib=yes,,-lm $DL_LIB)
fi
if test $tcl_lib = no ; then
AC_CHECK_LIB(tcl, Tcl_CreateCommand,
- TCL_LIBS="$TCL_LIBS -ltcl -lm $DL_LIB"
+ TCL_LIBS="$TCL_LIBS -ltcl -lm $DL_LIB $LIBS"
tcl_lib=yes,,-lm $DL_LIB)
fi
dnl Pull in the necessary stuff to create the libraries.
AC_DEFUN(KRB5_BUILD_LIBRARY,
-[KRB5_BUILD_LIBRARY_WITH_DEPS
-# null out SHLIB_EXPFLAGS because we lack any dependencies
-SHLIB_EXPFLAGS=])
-
-dnl
-dnl KRB5_BUILD_LIBRARY_STATIC
-dnl
-dnl Force static library build.
-
-AC_DEFUN(KRB5_AC_FORCE_STATIC,[dnl
-AC_BEFORE([$0],[KRB5_LIB_AUX])dnl
-krb5_force_static=yes])
-AC_DEFUN(KRB5_BUILD_LIBRARY_STATIC,
-dnl Use define rather than AC_DEFUN to avoid ordering problems.
-[AC_REQUIRE([KRB5_AC_FORCE_STATIC])dnl
-KRB5_BUILD_LIBRARY
-# If we're only building static libraries, they're for build-time use only,
-# so don't install.
-LIBINSTLIST=])
-
-dnl
-dnl KRB5_BUILD_LIBRARY_WITH_DEPS
-dnl
-dnl Like KRB5_BUILD_LIBRARY, but adds in explicit dependencies in the
-dnl generated shared library.
-
-AC_DEFUN(KRB5_BUILD_LIBRARY_WITH_DEPS,
[AC_REQUIRE([KRB5_LIB_AUX])dnl
AC_REQUIRE([AC_PROG_LN_S])dnl
AC_REQUIRE([AC_PROG_RANLIB])dnl
AC_REQUIRE([AC_PROG_ARCHIVE_ADD])dnl
AC_REQUIRE([AC_PROG_INSTALL])dnl
AC_CHECK_PROG(AR, ar, ar, false)
+if test "$AR" = "false"; then
+ AC_MSG_ERROR([ar not found in PATH])
+fi
AC_CHECK_PROG(PERL, perl, perl, false)
if test "$ac_cv_prog_PERL" = "false"; then
AC_MSG_ERROR(Perl is now required for Kerberos builds.)
fi
AC_SUBST(LIBLIST)
AC_SUBST(LIBLINKS)
+AC_SUBST(PLUGIN)
+AC_SUBST(PLUGINLINK)
+AC_SUBST(PLUGININST)
+AC_SUBST(KDB5_PLUGIN_DEPLIBS)
+AC_SUBST(KDB5_PLUGIN_LIBS)
AC_SUBST(MAKE_SHLIB_COMMAND)
+AC_SUBST(SHLIB_RPATH_FLAGS)
AC_SUBST(SHLIB_EXPFLAGS)
+AC_SUBST(SHLIB_EXPORT_FILE_DEP)
+AC_SUBST(DYNOBJ_EXPDEPS)
+AC_SUBST(DYNOBJ_EXPFLAGS)
AC_SUBST(INSTALL_SHLIB)
AC_SUBST(STLIBEXT)
AC_SUBST(SHLIBEXT)
AC_SUBST(SHLIBSEXT)
AC_SUBST(DEPLIBEXT)
AC_SUBST(PFLIBEXT)
-AC_SUBST(LIBINSTLIST)])
+AC_SUBST(LIBINSTLIST)
+AC_SUBST(DYNOBJEXT)
+AC_SUBST(MAKE_DYNOBJ_COMMAND)
+])
dnl
dnl KRB5_BUILD_LIBOBJS
[AC_REQUIRE([KRB5_LIB_AUX])dnl
AC_REQUIRE([KRB5_AC_NEED_LIBGEN])dnl
AC_SUBST(CC_LINK)
+AC_SUBST(CXX_LINK)
AC_SUBST(RPATH_FLAG)
+AC_SUBST(PROG_RPATH_FLAGS)
AC_SUBST(DEPLIBEXT)])
dnl
AC_DEFUN(KRB5_RUN_FLAGS,
[AC_REQUIRE([KRB5_LIB_AUX])dnl
KRB5_RUN_ENV="$RUN_ENV"
-AC_SUBST(KRB5_RUN_ENV)])
+KRB5_RUN_VARS="$RUN_VARS"
+AC_SUBST(KRB5_RUN_ENV)
+AC_SUBST(KRB5_RUN_VARS)])
dnl
dnl KRB5_LIB_AUX
AC_DEFUN(KRB5_LIB_AUX,
[AC_REQUIRE([KRB5_LIB_PARAMS])dnl
-# Check whether to build static libraries.
-AC_ARG_ENABLE([static],
-AC_HELP_STRING([--enable-static],[build static libraries @<:@disabled for most platforms@:>@])
-AC_HELP_STRING([--disable-static],[don't build static libraries]), ,
-[enable_static=$default_static])
+AC_ARG_ENABLE([static],,, [enable_static=no])
+AC_ARG_ENABLE([shared],,, [enable_shared=yes])
-if test "$enable_static" = no && test "$krb5_force_static" != yes; then
- AC_MSG_NOTICE([disabling static libraries])
- LIBLINKS=
- LIBLIST=
- OBJLISTS=
-else
+if test "x$enable_static" = "x$enable_shared"; then
+ AC_MSG_ERROR([--enable-static must be specified with --disable-shared])
+fi
+
+AC_ARG_ENABLE([rpath],
+AC_HELP_STRING([--disable-rpath],[suppress run path flags in link lines]),,
+[enable_rpath=yes])
+
+if test "x$enable_rpath" != xyes ; then
+ # Unset the rpath flag values set by shlib.conf
+ SHLIB_RPATH_FLAGS=
+ RPATH_FLAG=
+ PROG_RPATH_FLAGS=
+fi
+
+if test "$SHLIBEXT" = ".so-nobuild"; then
+ AC_MSG_ERROR([Shared libraries are not yet supported on this platform.])
+fi
+
+DEPLIBEXT=$SHLIBEXT
+
+if test "x$enable_static" = xyes; then
+ AC_MSG_NOTICE([using static libraries])
LIBLIST='lib$(LIBBASE)$(STLIBEXT)'
LIBLINKS='$(TOPLIBD)/lib$(LIBBASE)$(STLIBEXT)'
+ PLUGIN='libkrb5_$(LIBBASE)$(STLIBEXT)'
+ PLUGINLINK='$(TOPLIBD)/libkrb5_$(LIBBASE)$(STLIBEXT)'
+ PLUGININST=install-static
OBJLISTS=OBJS.ST
LIBINSTLIST=install-static
DEPLIBEXT=$STLIBEXT
-fi
+ AC_DEFINE([STATIC_PLUGINS], 1, [Define for static plugin linkage])
-# Check whether to build shared libraries.
-AC_ARG_ENABLE([shared],
-AC_HELP_STRING([--enable-shared],[build shared libraries @<:@enabled for most platforms@:>@])
-AC_HELP_STRING([--disable-shared],[don't build shared libraries]), ,
-[enable_shared=$default_shared])
+ KDB5_PLUGIN_DEPLIBS='$(TOPLIBD)/libkrb5_db2$(DEPLIBEXT)'
+ KDB5_PLUGIN_LIBS='-lkrb5_db2'
+ if test "x$OPENLDAP_PLUGIN" = xyes; then
+ KDB5_PLUGIN_DEBLIBS=$KDB5_PLUGIN_DEPLIBS' $(TOPLIBD)/libkrb5_ldap$(DEPLIBEXT) $(TOPLIBD)/libkdb_ldap$(DEPLIBEXT)'
+ KDB5_PLUGIN_LIBS=$KDB5_PLUGIN_LIBS' -lkrb5_kldap -lkdb_ldap $(LDAP_LIBS)'
+ fi
+ # kadm5srv_mit normally comes before kdb on the link line. Add it
+ # again after the KDB plugins, since they depend on it for XDR stuff.
+ KDB5_PLUGIN_DEPLIBS=$KDB5_PLUGIN_DEPLIBS' $(TOPLIBD)/libkadm5srv_mit$(DEPLIBEXT)'
+ KDB5_PLUGIN_LIBS=$KDB5_PLUGIN_LIBS' -lkadm5srv_mit'
-if test "$enable_shared" = yes; then
- case "$SHLIBEXT" in
- .so-nobuild)
- AC_MSG_WARN([shared libraries not supported on this architecture])
- RUN_ENV=
- CC_LINK="$CC_LINK_STATIC"
+ # avoid duplicate rules generation for AIX and such
+ SHLIBEXT=.so-nobuild
+ SHLIBVEXT=.so.v-nobuild
+ SHLIBSEXT=.so.s-nobuild
+else
+ AC_MSG_NOTICE([using shared libraries])
+
+ # Clear some stuff in case of AIX, etc.
+ if test "$STLIBEXT" = "$SHLIBEXT" ; then
+ STLIBEXT=.a-nobuild
+ fi
+ case "$SHLIBSEXT" in
+ .so.s-nobuild)
+ LIBLIST='lib$(LIBBASE)$(SHLIBEXT)'
+ LIBLINKS='$(TOPLIBD)/lib$(LIBBASE)$(SHLIBEXT) $(TOPLIBD)/lib$(LIBBASE)$(SHLIBVEXT)'
+ LIBINSTLIST="install-shared"
;;
*)
- # set this now because some logic below may reset SHLIBEXT
- DEPLIBEXT=$SHLIBEXT
- if test "$krb5_force_static" = "yes"; then
- AC_MSG_RESULT([Forcing static libraries.])
- # avoid duplicate rules generation for AIX and such
- SHLIBEXT=.so-nobuild
- SHLIBVEXT=.so.v-nobuild
- SHLIBSEXT=.so.s-nobuild
- else
- AC_MSG_NOTICE([enabling shared libraries])
- # Clear some stuff in case of AIX, etc.
- if test "$STLIBEXT" = "$SHLIBEXT" ; then
- STLIBEXT=.a-nobuild
- LIBLIST=
- LIBLINKS=
- OBJLISTS=
- LIBINSTLIST=
- fi
- LIBLIST="$LIBLIST "'lib$(LIBBASE)$(SHLIBEXT)'
- LIBLINKS="$LIBLINKS "'$(TOPLIBD)/lib$(LIBBASE)$(SHLIBEXT) $(TOPLIBD)/lib$(LIBBASE)$(SHLIBVEXT)'
- case "$SHLIBSEXT" in
- .so.s-nobuild)
- LIBINSTLIST="$LIBINSTLIST install-shared"
- ;;
- *)
- LIBLIST="$LIBLIST "'lib$(LIBBASE)$(SHLIBSEXT)'
- LIBLINKS="$LIBLINKS "'$(TOPLIBD)/lib$(LIBBASE)$(SHLIBSEXT)'
- LIBINSTLIST="$LIBINSTLIST install-shlib-soname"
- ;;
- esac
- OBJLISTS="$OBJLISTS OBJS.SH"
- fi
- CC_LINK="$CC_LINK_SHARED"
+ LIBLIST='lib$(LIBBASE)$(SHLIBEXT) lib$(LIBBASE)$(SHLIBSEXT)'
+ LIBLINKS='$(TOPLIBD)/lib$(LIBBASE)$(SHLIBEXT) $(TOPLIBD)/lib$(LIBBASE)$(SHLIBVEXT) $(TOPLIBD)/lib$(LIBBASE)$(SHLIBSEXT)'
+ LIBINSTLIST="install-shlib-soname"
;;
esac
-else
- RUN_ENV=
- CC_LINK="$CC_LINK_STATIC"
- SHLIBEXT=.so-nobuild
- SHLIBVEXT=.so.v-nobuild
- SHLIBSEXT=.so.s-nobuild
+ OBJLISTS="OBJS.SH"
+ PLUGIN='$(LIBBASE)$(DYNOBJEXT)'
+ PLUGINLINK='../$(PLUGIN)'
+ PLUGININST=install-plugin
+ KDB5_PLUGIN_DEPLIBS=
+ KDB5_PLUGIN_LIBS=
fi
+CC_LINK="$CC_LINK_SHARED"
+CXX_LINK="$CXX_LINK_SHARED"
if test -z "$LIBLIST"; then
AC_MSG_ERROR([must enable one of shared or static libraries])
# Check whether to build profiled libraries.
AC_ARG_ENABLE([profiled],
-[ --enable-profiled build profiled libraries @<:@disabled@:>@],
+dnl [ --enable-profiled build profiled libraries @<:@disabled@:>@]
+,
[if test "$enableval" = yes; then
- case $PFLIBEXT in
- .po-nobuild)
- AC_MSG_WARN([Profiled libraries not supported on this architecture.])
- ;;
- *)
- AC_MSG_NOTICE([enabling profiled libraries])
- LIBLIST="$LIBLIST "'lib$(LIBBASE)$(PFLIBEXT)'
- LIBLINKS="$LIBLINKS "'$(TOPLIBD)/lib$(LIBBASE)$(PFLIBEXT)'
- OBJLISTS="$OBJLISTS OBJS.PF"
- LIBINSTLIST="$LIBINSTLIST install-profiled"
- ;;
- esac
+ AC_MSG_ERROR([Sorry, profiled libraries do not work in this release.])
fi])])
dnl
dnl and happen to have a libresolv.a lying around (and no libnsl.a).
dnl
AC_DEFUN(AC_LIBRARY_NET, [
-AC_REQUIRE([KRB5_AC_NEED_BIND_8_COMPAT])
# Most operating systems have gethostbyname() in the default searched
# libraries (i.e. libc):
AC_CHECK_FUNC(gethostbyname, , [
AC_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", , -lnsl)))
KRB5_AC_ENABLE_DNS
if test "$enable_dns" = yes ; then
- dnl We assume that if libresolv exists we can link against it
- dnl This may get us a gethostby* that doesn't respect nsswitch
+ # We assume that if libresolv exists we can link against it.
+ # This may get us a gethostby* that doesn't respect nsswitch.
AC_CHECK_LIB(resolv, main)
- AC_CHECK_DECL(res_nsearch,
- AC_DEFINE(HAVE_RES_NSEARCH,,[Have the RES_NSEARCH function]),
- [AC_CHECK_FUNC(res_search,
- AC_DEFINE(HAVE_RES_SEARCH,,[Have the res_search function]),
- AC_MSG_ERROR(Failed to find resolver search routine),
- [#include <sys/types.h>
-#include <netinet/in.h>
-#include <arpa/nameser.h>
-#include <resolv.h>
-])], [#include <sys/types.h>
+
+_KRB5_AC_CHECK_RES_FUNCS(res_ninit res_nclose res_ndestroy res_nsearch dnl
+ns_initparse ns_name_uncompress dn_skipname res_search)
+ if test $krb5_cv_func_res_nsearch = no \
+ && test $krb5_cv_func_res_search = no; then
+ # Attempt to link with res_search(), in case it's not prototyped.
+ AC_CHECK_FUNC(res_search,
+ [AC_DEFINE(HAVE_RES_SEARCH, 1,
+ [Define to 1 if you have the `res_search' function])],
+ [AC_ERROR([cannot find res_nsearch or res_search])])
+ fi
+ fi
+])
+AC_DEFUN([_KRB5_AC_CHECK_RES_FUNCS],
+[AC_FOREACH([AC_Func], [$1],
+ [AH_TEMPLATE(AS_TR_CPP(HAVE_[]AC_Func),
+ [Define to 1 if you have the `]AC_Func[' function.])])dnl
+for krb5_func in $1; do
+_KRB5_AC_CHECK_RES_FUNC($krb5_func)
+done
+])
+AC_DEFUN([_KRB5_AC_CHECK_RES_FUNC], [
+# Solaris 9 prototypes ns_name_uncompress() in arpa/nameser.h, but
+# doesn't export it from libresolv.so, so we use extreme paranoia here
+# and check both for the declaration and that we can link against the
+# function.
+AC_CACHE_CHECK([for $1], [krb5_cv_func_$1], [AC_TRY_LINK(
+[#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/nameser.h>
-#include <resolv.h>
+@%:@include <resolv.h>],
+[/*
+ * Use volatile, or else optimization can cause false positives.
+ */
+void (* volatile p)() = (void (*)())$1;],
+ [AS_VAR_SET(krb5_cv_func_$1, yes)],
+ [AS_VAR_SET(krb5_cv_func_$1, no)])])
+AS_IF([test AS_VAR_GET(krb5_cv_func_$1) = yes],
+ [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1]), 1,
+ [Define to 1 if you have the `$1' function])])[]dnl
])
- fi
- ])
dnl
dnl
dnl KRB5_AC_ENABLE_DNS
ifelse([$3], ,[if test "x$ac_cv_func_$2" = xyes; then])
AC_CACHE_CHECK([if $2 needs a prototype provided], krb5_cv_func_$2_noproto,
AC_TRY_COMPILE([$1],
-[struct k5foo {int foo; } xx;
+[#undef $2
+struct k5foo {int foo; } xx;
extern int $2 (struct k5foo*);
$2(&xx);
],
dnl Internal function for testing for getpeername prototype
dnl
AC_DEFUN([KRB5_GETPEERNAME_ARGS],[
-AC_DEFINE([GETPEERNAME_ARG2_TYPE],GETSOCKNAME_ARG2_TYPE)
-AC_DEFINE([GETPEERNAME_ARG3_TYPE],GETSOCKNAME_ARG3_TYPE)
+AC_DEFINE([GETPEERNAME_ARG2_TYPE],GETSOCKNAME_ARG2_TYPE,[Type of getpeername second argument.])
+AC_DEFINE([GETPEERNAME_ARG3_TYPE],GETSOCKNAME_ARG3_TYPE,[Type of getpeername second argument.])
])
dnl
dnl =============================================================
eval "krb5_cv_getsockname_proto_$krb5_lib_var=no")])
if eval "test \"`echo '$krb5_cv_getsockname_proto_'$krb5_lib_var`\" = yes"; then
AC_MSG_RESULT(yes)
- sock_set=yes
- res1=`echo "$1" | tr -d '*' | sed -e 's/ *$//'`
- res2=`echo "$2" | tr -d '*' | sed -e 's/ *$//'`
- AC_DEFINE_UNQUOTED([GETSOCKNAME_ARG2_TYPE],$res1)
- AC_DEFINE_UNQUOTED([GETSOCKNAME_ARG3_TYPE],$res2)
+ sock_set=yes; res1="$1"; res2="$2"
else
AC_MSG_RESULT(no)
fi
done
if test "$sock_set" = no; then
AC_MSG_NOTICE(assuming struct sockaddr and socklen_t for getsockname args)
- res1=`echo "struct sockaddr *" | tr -d '*' | sed -e 's/ *$//'`
- AC_DEFINE_UNQUOTED([GETSOCKNAME_ARG2_TYPE],$res1)
- res2=`echo "socklen_t *" | tr -d '*' | sed -e 's/ *$//'`
- AC_DEFINE_UNQUOTED([GETSOCKNAME_ARG3_TYPE],$res2)
+ res1="struct sockaddr *"
+ res2="socklen_t *"
fi
+res1=`echo "$res1" | tr -d '*' | sed -e 's/ *$//'`
+res2=`echo "$res2" | tr -d '*' | sed -e 's/ *$//'`
+AC_DEFINE_UNQUOTED([GETSOCKNAME_ARG2_TYPE],$res1,[Type of pointer target for argument 2 to getsockname])
+AC_DEFINE_UNQUOTED([GETSOCKNAME_ARG3_TYPE],$res2,[Type of pointer target for argument 3 to getsockname])
])
dnl
dnl
AC_HELP_STRING(--with-system-et,use system compile_et and -lcom_err @<:@default: build and install a local version@:>@))
AC_MSG_CHECKING(which version of com_err to use)
if test "x$with_system_et" = xyes ; then
+ # This will be changed to "intlsys" if textdomain support is present.
COM_ERR_VERSION=sys
AC_MSG_RESULT(system)
else
AC_MSG_ERROR(execution failed)
fi
AC_TRY_COMPILE([#include "conf$$e.h"
- ],[ et_foo_error_table; ],:,
+ ],[ &et_foo_error_table; ],:,
[AC_MSG_ERROR(cannot use et_foo_error_table)])
# Anything else we need to test for?
- rm -f conf$$e.et conf$$e.c conf$$e.h
+ rm -f conf$$e.c conf$$e.h
krb5_cv_compile_et_useful=yes
])
+ AC_CACHE_CHECK(whether compile_et supports --textdomain,
+ krb5_cv_compile_et_textdomain,[
+ krb5_cv_compile_et_textdomain=no
+ if compile_et --textdomain=xyzw conf$$e.et >/dev/null 2>&1 ; then
+ if grep -q xyzw conf$$e.c; then
+ krb5_cv_compile_et_textdomain=yes
+ fi
+ fi
+ rm -f conf$$e.c conf$$e.h
+ ])
+ if test "$krb5_cv_compile_et_textdomain" = yes; then
+ COM_ERR_VERSION=intlsys
+ fi
+ rm -f conf$$e.et
fi
AC_SUBST(COM_ERR_VERSION)
+if test "$COM_ERR_VERSION" = k5 -o "$COM_ERR_VERSION" = intlsys; then
+ AC_DEFINE(HAVE_COM_ERR_INTL,1,
+ [Define if com_err has compatible gettext support])
+fi
])
AC_DEFUN([KRB5_AC_CHOOSE_SS],[
AC_ARG_WITH(system-ss,
AC_SUBST(KDB5_DB_LIB)
])
dnl
-dnl
-dnl KRB5_AC_NEED_BIND_8_COMPAT --- check to see if we are on a bind 9 system
-dnl
-dnl
-AC_DEFUN(KRB5_AC_NEED_BIND_8_COMPAT,[
-AC_REQUIRE([AC_PROG_CC])dnl
-dnl
-dnl On a bind 9 system, we need to define BIND_8_COMPAT
-dnl
-AC_MSG_CHECKING(for bind 9 or higher)
-AC_CACHE_VAL(krb5_cv_need_bind_8_compat,[
-AC_TRY_COMPILE([#include <arpa/nameser.h>], [HEADER hdr;],
-krb5_cv_need_bind_8_compat=no,
-[AC_TRY_COMPILE([#define BIND_8_COMPAT
-#include <arpa/nameser.h>], [HEADER hdr;],
-krb5_cv_need_bind_8_compat=yes, krb5_cv_need_bind_8_compat=no)])])
-AC_MSG_RESULT($krb5_cv_need_bind_8_compat)
-test $krb5_cv_need_bind_8_compat = yes && AC_DEFINE(BIND_8_COMPAT,1,[Define if OS has bind 9])
-])
-dnl
dnl KRB5_AC_PRIOCNTL_HACK
dnl
dnl
AC_DEFUN([KRB5_AC_PRIOCNTL_HACK],
+[AC_REQUIRE([AC_PROG_AWK])dnl
+AC_REQUIRE([AC_LANG_COMPILER_REQUIRE])dnl
+AC_CACHE_CHECK([whether to use priocntl hack], [krb5_cv_priocntl_hack],
[case $krb5_cv_host in
*-*-solaris2.9*)
- PRIOCNTL_HACK=1
+ if test "$cross_compiling" = yes; then
+ krb5_cv_priocntl_hack=yes
+ else
+ # Solaris patch 117171-11 (sparc) or 117172-11 (x86)
+ # fixes the Solaris 9 bug where final pty output
+ # gets lost on close.
+ if showrev -p | $AWK 'BEGIN { e = 1 }
+/Patch: 11717[[12]]/ { x = index[]([$]2, "-");
+if (substr[]([$]2, x + 1, length([$]2) - x) >= 11)
+{ e = 0 } else { e = 1 } }
+END { exit e; }'; then
+ krb5_cv_priocntl_hack=no
+ else
+ krb5_cv_priocntl_hack=yes
+ fi
+ fi
;;
*)
- PRIOCNTL_HACK=0
+ krb5_cv_priocntl_hack=no
;;
-esac
+esac])
+if test "$krb5_cv_priocntl_hack" = yes; then
+ PRIOCNTL_HACK=1
+else
+ PRIOCNTL_HACK=0
+fi
AC_SUBST(PRIOCNTL_HACK)])
dnl
dnl
dnl
dnl
m4_include(config/ac-archive/acx_pthread.m4)
+dnl
+dnl
+dnl
+dnl --with-ldap=value
+dnl
+AC_DEFUN(WITH_LDAP,[
+AC_ARG_WITH([ldap],
+[ --with-ldap compile OpenLDAP database backend module],
+[case "$withval" in
+ OPENLDAP) with_ldap=yes ;;
+ yes | no) ;;
+ EDIRECTORY) AC_MSG_ERROR(Option --with-ldap=EDIRECTORY is deprecated; use --with-edirectory instead.) ;;
+ *) AC_MSG_ERROR(Invalid option value --with-ldap="$withval") ;;
+esac], with_ldap=no)dnl
+AC_ARG_WITH([edirectory],
+[ --with-edirectory compile eDirectory database backend module],
+[case "$withval" in
+ yes | no) ;;
+ *) AC_MSG_ERROR(Invalid option value --with-edirectory="$withval") ;;
+esac], with_edirectory=no)dnl
+
+if test $with_ldap = yes; then
+ if test $with_edirectory = yes; then
+ AC_MSG_ERROR(Cannot enable both OpenLDAP and eDirectory backends; choose one.)
+ fi
+ AC_MSG_NOTICE(enabling OpenLDAP database backend module support)
+ OPENLDAP_PLUGIN=yes
+elif test $with_edirectory = yes; then
+ AC_MSG_NOTICE(enabling eDirectory database backend module support)
+ OPENLDAP_PLUGIN=yes
+ AC_DEFINE(HAVE_EDIRECTORY,1,[Define if LDAP KDB interface should assume eDirectory.])
+else
+ : # neither enabled
+dnl AC_MSG_NOTICE(disabling ldap backend module support)
+fi
+])dnl
+dnl
+dnl If libkeyutils exists (on Linux) include it and use keyring ccache
+AC_DEFUN(KRB5_AC_KEYRING_CCACHE,[
+ AC_CHECK_HEADERS([keyutils.h],
+ AC_CHECK_LIB(keyutils, add_key,
+ [dnl Pre-reqs were found
+ AC_DEFINE(USE_KEYRING_CCACHE, 1, [Define if the keyring ccache should be enabled])
+ LIBS="-lkeyutils $LIBS"
+ ]))
+])dnl
+dnl