Blame src/aclocal.m4

Packit fd8b60
AC_PREREQ(2.63)
Packit fd8b60
AC_COPYRIGHT([Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009
Packit fd8b60
Massachusetts Institute of Technology.
Packit fd8b60
])
Packit fd8b60
dnl
Packit fd8b60
define([K5_TOPDIR],[.])dnl
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN(V5_SET_TOPDIR,[dnl
Packit fd8b60
ac_reltopdir="K5_TOPDIR"
Packit fd8b60
if test ! -r "$srcdir/K5_TOPDIR/aclocal.m4"; then
Packit fd8b60
  AC_MSG_ERROR([Configure could not determine the relative topdir])
Packit fd8b60
fi
Packit fd8b60
ac_topdir=$srcdir/$ac_reltopdir
Packit fd8b60
ac_config_fragdir=$ac_reltopdir/config
Packit fd8b60
# echo "Looking for $srcdir/$ac_config_fragdir"
Packit fd8b60
if test -d "$srcdir/$ac_config_fragdir"; then
Packit fd8b60
  AC_CONFIG_AUX_DIR(K5_TOPDIR/config)
Packit fd8b60
else
Packit fd8b60
  AC_MSG_ERROR([can not find config/ directory in $ac_reltopdir])
Packit fd8b60
fi
Packit fd8b60
])dnl
Packit fd8b60
dnl
Packit fd8b60
dnl Version info.
Packit fd8b60
dnl
Packit fd8b60
pushdef([x],esyscmd([sed -n 's/#define \([A-Z0-9_]*\)[ \t]*\(.*\)/\1=\2/p' < ]K5_TOPDIR/patchlevel.h))
Packit fd8b60
define([PL_KRB5_MAJOR_RELEASE],regexp(x,[KRB5_MAJOR_RELEASE=\(.*\)],[\1]))
Packit fd8b60
ifelse(PL_KRB5_MAJOR_RELEASE,,[errprint([Can't determine KRB5_MAJOR_RELEASE value from patchlevel.h.
Packit fd8b60
]) m4exit(1) dnl sometimes that does not work?
Packit fd8b60
builtin(m4exit,1)])
Packit fd8b60
define([PL_KRB5_MINOR_RELEASE],regexp(x,[KRB5_MINOR_RELEASE=\(.*\)],[\1]))
Packit fd8b60
ifelse(PL_KRB5_MINOR_RELEASE,,[errprint([Can't determine KRB5_MINOR_RELEASE value from patchlevel.h.
Packit fd8b60
]) m4exit(1) dnl sometimes that does not work?
Packit fd8b60
builtin(m4exit,1)])
Packit fd8b60
define([PL_KRB5_PATCHLEVEL],regexp(x,[KRB5_PATCHLEVEL=\(.*\)],[\1]))
Packit fd8b60
ifelse(PL_KRB5_PATCHLEVEL,,[errprint([Can't determine KRB5_PATCHLEVEL value from patchlevel.h.
Packit fd8b60
]) m4exit(1) dnl sometimes that does not work?
Packit fd8b60
builtin(m4exit,1)])
Packit fd8b60
define([PL_KRB5_RELTAIL],regexp(x,[KRB5_RELTAIL="\(.*\)"],[\1]))
Packit fd8b60
dnl RELTAIL is allowed to not be defined.
Packit fd8b60
popdef([x])
Packit fd8b60
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))
Packit fd8b60
define([K5_BUGADDR],krb5-bugs@mit.edu)
Packit fd8b60
define([K5_AC_INIT],[AC_INIT(Kerberos 5, K5_VERSION, K5_BUGADDR, krb5)
Packit fd8b60
AC_CONFIG_SRCDIR($1)
Packit fd8b60
build_dynobj=no])
Packit fd8b60
dnl
Packit fd8b60
dnl drop in standard rules for all configure files -- CONFIG_RULES
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN(CONFIG_RULES,[dnl
Packit fd8b60
AC_REQUIRE([V5_SET_TOPDIR]) dnl
Packit fd8b60
EXTRA_FILES=""
Packit fd8b60
AC_SUBST(EXTRA_FILES)
Packit fd8b60
dnl Consider using AC_USE_SYSTEM_EXTENSIONS when we require autoconf
Packit fd8b60
dnl 2.59c or later, but be sure to test on Solaris first.
Packit fd8b60
AC_DEFINE([_GNU_SOURCE], 1, [Define to enable extensions in glibc])
Packit fd8b60
AC_DEFINE([__STDC_WANT_LIB_EXT1__], 1, [Define to enable C11 extensions])
Packit fd8b60
Packit fd8b60
WITH_CC dnl
Packit fd8b60
AC_REQUIRE_CPP
Packit fd8b60
if test -z "$LD" ; then LD=$CC; fi
Packit fd8b60
AC_ARG_VAR(LD,[linker command [CC]])
Packit fd8b60
AC_SUBST(LDFLAGS) dnl
Packit fd8b60
KRB5_AC_CHOOSE_ET dnl
Packit fd8b60
KRB5_AC_CHOOSE_SS dnl
Packit fd8b60
KRB5_AC_CHOOSE_DB dnl
Packit fd8b60
dnl allow stuff in tree to access deprecated stuff for now
Packit fd8b60
dnl AC_DEFINE([KRB5_DEPRECATED], 1, [Define only if building in-tree])
Packit fd8b60
AC_C_CONST dnl
Packit fd8b60
WITH_NETLIB dnl
Packit fd8b60
WITH_HESIOD dnl
Packit fd8b60
KRB5_AC_MAINTAINER_MODE dnl
Packit fd8b60
AC_ARG_PROGRAM dnl
Packit fd8b60
dnl
Packit fd8b60
dnl This identifies the top of the source tree relative to the directory 
Packit fd8b60
dnl in which the configure file lives.
Packit fd8b60
dnl
Packit fd8b60
CONFIG_RELTOPDIR=$ac_reltopdir
Packit fd8b60
AC_SUBST(CONFIG_RELTOPDIR)
Packit fd8b60
lib_frag=$srcdir/$ac_config_fragdir/lib.in
Packit fd8b60
AC_SUBST_FILE(lib_frag)
Packit fd8b60
libobj_frag=$srcdir/$ac_config_fragdir/libobj.in
Packit fd8b60
AC_SUBST_FILE(libobj_frag)
Packit fd8b60
libnover_frag=$srcdir/$ac_config_fragdir/libnover.in
Packit fd8b60
AC_SUBST_FILE(libnover_frag)
Packit fd8b60
libpriv_frag=$srcdir/$ac_config_fragdir/libpriv.in
Packit fd8b60
AC_SUBST_FILE(libpriv_frag)
Packit fd8b60
libnodeps_frag=$srcdir/$ac_config_fragdir/libnodeps.in
Packit fd8b60
AC_SUBST_FILE(libnodeps_frag)
Packit fd8b60
dnl
Packit fd8b60
KRB5_AC_PRAGMA_WEAK_REF
Packit fd8b60
WITH_LDAP
Packit fd8b60
KRB5_LIB_PARAMS
Packit fd8b60
KRB5_AC_INITFINI
Packit fd8b60
KRB5_AC_ENABLE_THREADS
Packit fd8b60
KRB5_AC_FIND_DLOPEN
Packit fd8b60
])dnl
Packit fd8b60
Packit fd8b60
dnl Maintainer mode, akin to what automake provides, 'cept we don't
Packit fd8b60
dnl want to use automake right now.
Packit fd8b60
AC_DEFUN([KRB5_AC_MAINTAINER_MODE],
Packit fd8b60
[AC_ARG_ENABLE([maintainer-mode],
Packit fd8b60
AC_HELP_STRING([--enable-maintainer-mode],[enable rebuilding of source files, Makefiles, etc]),
Packit fd8b60
USE_MAINTAINER_MODE=$enableval,
Packit fd8b60
USE_MAINTAINER_MODE=no)
Packit fd8b60
if test "$USE_MAINTAINER_MODE" = yes; then
Packit fd8b60
  MAINTAINER_MODE_TRUE=
Packit fd8b60
  MAINTAINER_MODE_FALSE='#'
Packit fd8b60
  AC_MSG_NOTICE(enabling maintainer mode)
Packit fd8b60
else
Packit fd8b60
  MAINTAINER_MODE_TRUE='#'
Packit fd8b60
  MAINTAINER_MODE_FALSE=
Packit fd8b60
fi
Packit fd8b60
MAINT=$MAINTAINER_MODE_TRUE
Packit fd8b60
AC_SUBST(MAINTAINER_MODE_TRUE)
Packit fd8b60
AC_SUBST(MAINTAINER_MODE_FALSE)
Packit fd8b60
AC_SUBST(MAINT)
Packit fd8b60
])
Packit fd8b60
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN([KRB5_AC_INITFINI],[
Packit fd8b60
dnl Do we want initialization at load time?
Packit fd8b60
AC_ARG_ENABLE([delayed-initialization],
Packit fd8b60
AC_HELP_STRING([--disable-delayed-initialization],initialize library code when loaded @<:@delay until first use@:>@), , enable_delayed_initialization=yes)
Packit fd8b60
case "$enable_delayed_initialization" in
Packit fd8b60
  yes)
Packit fd8b60
    AC_DEFINE(DELAY_INITIALIZER,1,[Define if library initialization should be delayed until first use]) ;;
Packit fd8b60
  no) ;;
Packit fd8b60
  *)  AC_MSG_ERROR(invalid option $enable_delayed_initialization for delayed-initialization) ;;
Packit fd8b60
esac
Packit fd8b60
dnl We always want finalization at unload time.
Packit fd8b60
dnl
Packit fd8b60
dnl Can we do things through gcc?
Packit fd8b60
KRB5_AC_GCC_ATTRS
Packit fd8b60
dnl How about with the linker?
Packit fd8b60
if test -z "$use_linker_init_option" ; then
Packit fd8b60
  AC_MSG_ERROR(ran INITFINI before checking shlib.conf?)
Packit fd8b60
fi
Packit fd8b60
if test "$use_linker_init_option" = yes; then
Packit fd8b60
  AC_DEFINE(USE_LINKER_INIT_OPTION,1,[Define if link-time options for library initialization will be used])
Packit fd8b60
fi
Packit fd8b60
if test "$use_linker_fini_option" = yes; then
Packit fd8b60
  AC_DEFINE(USE_LINKER_FINI_OPTION,1,[Define if link-time options for library finalization will be used])
Packit fd8b60
fi
Packit fd8b60
])
Packit fd8b60
Packit fd8b60
dnl find dlopen
Packit fd8b60
AC_DEFUN([KRB5_AC_FIND_DLOPEN],[
Packit fd8b60
old_LIBS="$LIBS"
Packit fd8b60
DL_LIB=
Packit fd8b60
AC_SEARCH_LIBS(dlopen, dl, [
Packit fd8b60
if test "$ac_cv_search_dlopen" != "none required"; then
Packit fd8b60
  DL_LIB=$ac_cv_search_dlopen
Packit fd8b60
fi
Packit fd8b60
LIBS="$old_LIBS"
Packit fd8b60
AC_DEFINE(USE_DLOPEN,1,[Define if dlopen should be used])])
Packit fd8b60
AC_SUBST(DL_LIB)
Packit fd8b60
])
Packit fd8b60
Packit fd8b60
Packit fd8b60
dnl Hack for now.
Packit fd8b60
AC_DEFUN([KRB5_AC_ENABLE_THREADS],[
Packit fd8b60
AC_ARG_ENABLE([thread-support],
Packit fd8b60
AC_HELP_STRING([--disable-thread-support],don't enable thread support @<:@enabled@:>@), , enable_thread_support=yes)
Packit fd8b60
if test "$enable_thread_support" = yes ; then
Packit fd8b60
  AC_MSG_NOTICE(enabling thread support)
Packit fd8b60
  AC_DEFINE(ENABLE_THREADS,1,[Define if thread support enabled])
Packit fd8b60
fi
Packit fd8b60
dnl Maybe this should be inside the conditional above?  Doesn't cache....
Packit fd8b60
if test "$enable_thread_support" = yes; then
Packit fd8b60
  AX_PTHREAD(,[AC_MSG_ERROR([cannot determine options for enabling thread support; try --disable-thread-support])])
Packit fd8b60
  AC_MSG_NOTICE(PTHREAD_CC = $PTHREAD_CC)
Packit fd8b60
  AC_MSG_NOTICE(PTHREAD_CFLAGS = $PTHREAD_CFLAGS)
Packit fd8b60
  AC_MSG_NOTICE(PTHREAD_LIBS = $PTHREAD_LIBS)
Packit fd8b60
  dnl Not really needed -- if pthread.h isn't found, ACX_PTHREAD will fail.
Packit fd8b60
  dnl AC_CHECK_HEADERS(pthread.h)
Packit fd8b60
  # AIX and Tru64 don't support weak references, and don't have
Packit fd8b60
  # stub versions of the pthread code in libc.
Packit fd8b60
  case "${host_os}" in
Packit fd8b60
    aix* | osf*)
Packit fd8b60
      # On these platforms, we'll always pull in the thread support.
Packit fd8b60
      LIBS="$LIBS $PTHREAD_LIBS"
Packit fd8b60
      CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
Packit fd8b60
      # We don't need to sometimes add the flags we've just folded in...
Packit fd8b60
      PTHREAD_LIBS=
Packit fd8b60
      PTHREAD_CFLAGS=
Packit fd8b60
      ;;
Packit fd8b60
    hpux*)
Packit fd8b60
      # These are the flags that "gcc -pthread" adds.  But we don't
Packit fd8b60
      # want "-pthread" because that has link-time effects, and we
Packit fd8b60
      # don't exclude CFLAGS when linking.  *sigh*
Packit fd8b60
      PTHREAD_CFLAGS="-D_REENTRANT -D_THREAD_SAFE -D_POSIX_C_SOURCE=199506L"
Packit fd8b60
      ;;
Packit fd8b60
    solaris2.[[1-9]])
Packit fd8b60
      # On Solaris 10 with gcc 3.4.3, the autoconf archive macro doesn't
Packit fd8b60
      # get the right result.   XXX What about Solaris 9 and earlier?
Packit fd8b60
      if test "$GCC" = yes ; then
Packit fd8b60
        PTHREAD_CFLAGS="-D_REENTRANT -pthreads"
Packit fd8b60
      fi
Packit fd8b60
      ;;
Packit fd8b60
    solaris*)
Packit fd8b60
      # On Solaris 10 with gcc 3.4.3, the autoconf archive macro doesn't
Packit fd8b60
      # get the right result.
Packit fd8b60
      if test "$GCC" = yes ; then
Packit fd8b60
        PTHREAD_CFLAGS="-D_REENTRANT -pthreads"
Packit fd8b60
      fi
Packit fd8b60
      # On Solaris 10, the thread support is always available in libc.
Packit fd8b60
      AC_DEFINE(NO_WEAK_PTHREADS,1,[Define if references to pthread routines should be non-weak.])
Packit fd8b60
      ;;
Packit fd8b60
  esac
Packit fd8b60
  THREAD_SUPPORT=1
Packit fd8b60
else
Packit fd8b60
  PTHREAD_CC="$CC"
Packit fd8b60
  PTHREAD_CFLAGS=""
Packit fd8b60
  PTHREAD_LIBS=""
Packit fd8b60
  THREAD_SUPPORT=0
Packit fd8b60
fi
Packit fd8b60
AC_SUBST(THREAD_SUPPORT)
Packit fd8b60
dnl We want to know where these routines live, so on systems with weak
Packit fd8b60
dnl reference support we can figure out whether or not the pthread library
Packit fd8b60
dnl has been linked in.
Packit fd8b60
dnl If we don't add any libraries for thread support, don't bother.
Packit fd8b60
AC_CHECK_FUNCS(pthread_once pthread_rwlock_init)
Packit fd8b60
old_CC="$CC"
Packit fd8b60
test "$PTHREAD_CC" != "" && test "$ac_cv_c_compiler_gnu" = no && CC=$PTHREAD_CC
Packit fd8b60
old_CFLAGS="$CFLAGS"
Packit fd8b60
# On Solaris, -pthreads is added to CFLAGS, no extra explicit libraries.
Packit fd8b60
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
Packit fd8b60
AC_SUBST(PTHREAD_CFLAGS)
Packit fd8b60
old_LIBS="$LIBS"
Packit fd8b60
LIBS="$PTHREAD_LIBS $LIBS"
Packit fd8b60
AC_MSG_NOTICE(rechecking with PTHREAD_... options)
Packit fd8b60
AC_CHECK_LIB(c, pthread_rwlock_init,
Packit fd8b60
  [AC_DEFINE(HAVE_PTHREAD_RWLOCK_INIT_IN_THREAD_LIB,1,[Define if pthread_rwlock_init is provided in the thread library.])])
Packit fd8b60
LIBS="$old_LIBS"
Packit fd8b60
CC="$old_CC"
Packit fd8b60
CFLAGS="$old_CFLAGS"
Packit fd8b60
])
Packit fd8b60
Packit fd8b60
dnl This is somewhat gross and should go away when the build system
Packit fd8b60
dnl is revamped. -- tlyu
Packit fd8b60
dnl DECLARE_SYS_ERRLIST - check for sys_errlist in libc
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN([DECLARE_SYS_ERRLIST],
Packit fd8b60
[AC_CACHE_CHECK([for sys_errlist declaration], krb5_cv_decl_sys_errlist,
Packit fd8b60
[AC_TRY_COMPILE([#include <stdio.h>
Packit fd8b60
#include <errno.h>], [1+sys_nerr;],
Packit fd8b60
krb5_cv_decl_sys_errlist=yes, krb5_cv_decl_sys_errlist=no)])
Packit fd8b60
# assume sys_nerr won't be declared w/o being in libc
Packit fd8b60
if test $krb5_cv_decl_sys_errlist = yes; then
Packit fd8b60
  AC_DEFINE(SYS_ERRLIST_DECLARED,1,[Define if sys_errlist is defined in errno.h])
Packit fd8b60
  AC_DEFINE(HAVE_SYS_ERRLIST,1,[Define if sys_errlist in libc])
Packit fd8b60
else
Packit fd8b60
  # This means that sys_errlist is not declared in errno.h, but may still
Packit fd8b60
  # be in libc.
Packit fd8b60
  AC_CACHE_CHECK([for sys_errlist in libc], krb5_cv_var_sys_errlist,
Packit fd8b60
  [AC_TRY_LINK([extern int sys_nerr;], [if (1+sys_nerr < 0) return 1;],
Packit fd8b60
  krb5_cv_var_sys_errlist=yes, krb5_cv_var_sys_errlist=no;)])
Packit fd8b60
  if test $krb5_cv_var_sys_errlist = yes; then
Packit fd8b60
    AC_DEFINE(HAVE_SYS_ERRLIST,1,[Define if sys_errlist in libc])
Packit fd8b60
    # Do this cruft for backwards compatibility for now.
Packit fd8b60
    AC_DEFINE(NEED_SYS_ERRLIST,1,[Define if need to declare sys_errlist])
Packit fd8b60
  else
Packit fd8b60
    AC_MSG_WARN([sys_errlist is neither in errno.h nor in libc])
Packit fd8b60
  fi
Packit fd8b60
fi])
Packit fd8b60
Packit fd8b60
dnl
Packit fd8b60
dnl check for sigmask/sigprocmask -- CHECK_SIGPROCMASK
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN(CHECK_SIGPROCMASK,[
Packit fd8b60
AC_MSG_CHECKING([for use of sigprocmask])
Packit fd8b60
AC_CACHE_VAL(krb5_cv_func_sigprocmask_use,
Packit fd8b60
[AC_TRY_LINK([#include <signal.h>], [sigprocmask(SIG_SETMASK,0,0);],
Packit fd8b60
 krb5_cv_func_sigprocmask_use=yes,
Packit fd8b60
AC_TRY_LINK([#include <signal.h>], [sigmask(1);], 
Packit fd8b60
 krb5_cv_func_sigprocmask_use=no, krb5_cv_func_sigprocmask_use=yes))])
Packit fd8b60
AC_MSG_RESULT($krb5_cv_func_sigprocmask_use)
Packit fd8b60
if test $krb5_cv_func_sigprocmask_use = yes; then
Packit fd8b60
 AC_DEFINE(USE_SIGPROCMASK,1,[Define if sigprocmask should be used])
Packit fd8b60
fi
Packit fd8b60
])dnl
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN(AC_PROG_ARCHIVE, [AC_CHECK_PROG(ARCHIVE, ar, ar cqv, false)])dnl
Packit fd8b60
AC_DEFUN(AC_PROG_ARCHIVE_ADD, [AC_CHECK_PROG(ARADD, ar, ar cruv, false)])dnl
Packit fd8b60
dnl
Packit fd8b60
dnl check for <dirent.h> -- CHECK_DIRENT
Packit fd8b60
dnl (may need to be more complex later)
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN(CHECK_DIRENT,[
Packit fd8b60
AC_CHECK_HEADER(dirent.h,AC_DEFINE(USE_DIRENT_H,1,[Define if you have dirent.h functionality]))])dnl
Packit fd8b60
dnl
Packit fd8b60
dnl check if union wait is defined, or if WAIT_USES_INT -- CHECK_WAIT_TYPE
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN(CHECK_WAIT_TYPE,[
Packit fd8b60
AC_MSG_CHECKING([if argument to wait is int *])
Packit fd8b60
AC_CACHE_VAL(krb5_cv_struct_wait,
Packit fd8b60
dnl Test for prototype clash - if there is none - then assume int * works
Packit fd8b60
[AC_TRY_COMPILE([#include <sys/types.h>
Packit fd8b60
#include <sys/wait.h>
Packit fd8b60
extern pid_t wait(int *);],[], krb5_cv_struct_wait=no,dnl
Packit fd8b60
dnl Else fallback on old stuff
Packit fd8b60
[AC_TRY_COMPILE(
Packit fd8b60
[#include <sys/wait.h>], [union wait i;
Packit fd8b60
#ifdef WEXITSTATUS
Packit fd8b60
  WEXITSTATUS (i);
Packit fd8b60
#endif
Packit fd8b60
], 
Packit fd8b60
	krb5_cv_struct_wait=yes, krb5_cv_struct_wait=no)])])
Packit fd8b60
AC_MSG_RESULT($krb5_cv_struct_wait)
Packit fd8b60
if test $krb5_cv_struct_wait = no; then
Packit fd8b60
	AC_DEFINE(WAIT_USES_INT,1,[Define if wait takes int as a argument])
Packit fd8b60
fi
Packit fd8b60
])dnl
Packit fd8b60
dnl
Packit fd8b60
dnl check for POSIX signal handling -- CHECK_SIGNALS
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN(CHECK_SIGNALS,[
Packit fd8b60
AC_CHECK_FUNC(sigprocmask,
Packit fd8b60
AC_MSG_CHECKING(for sigset_t and POSIX_SIGNALS)
Packit fd8b60
AC_CACHE_VAL(krb5_cv_type_sigset_t,
Packit fd8b60
[AC_TRY_COMPILE(
Packit fd8b60
[#include <signal.h>],
Packit fd8b60
[sigset_t x],
Packit fd8b60
krb5_cv_type_sigset_t=yes, krb5_cv_type_sigset_t=no)])
Packit fd8b60
AC_MSG_RESULT($krb5_cv_type_sigset_t)
Packit fd8b60
if test $krb5_cv_type_sigset_t = yes; then
Packit fd8b60
  AC_DEFINE(POSIX_SIGNALS,1,[Define if POSIX signal handling is used])
Packit fd8b60
fi
Packit fd8b60
)])dnl
Packit fd8b60
dnl
Packit fd8b60
dnl check for signal type
Packit fd8b60
dnl
Packit fd8b60
dnl AC_RETSIGTYPE isn't quite right, but almost.
Packit fd8b60
AC_DEFUN(KRB5_SIGTYPE,[
Packit fd8b60
AC_MSG_CHECKING([POSIX signal handlers])
Packit fd8b60
AC_CACHE_VAL(krb5_cv_has_posix_signals,
Packit fd8b60
[AC_TRY_COMPILE(
Packit fd8b60
[#include <sys/types.h>
Packit fd8b60
#include <signal.h>
Packit fd8b60
#ifdef signal
Packit fd8b60
#undef signal
Packit fd8b60
#endif
Packit fd8b60
extern void (*signal ()) ();], [],
Packit fd8b60
krb5_cv_has_posix_signals=yes, krb5_cv_has_posix_signals=no)])
Packit fd8b60
AC_MSG_RESULT($krb5_cv_has_posix_signals)
Packit fd8b60
if test $krb5_cv_has_posix_signals = yes; then
Packit fd8b60
   stype=void
Packit fd8b60
   AC_DEFINE(POSIX_SIGTYPE, 1, [Define if POSIX signal handlers are used])
Packit fd8b60
else
Packit fd8b60
  if test $ac_cv_type_signal = void; then
Packit fd8b60
     stype=void
Packit fd8b60
  else
Packit fd8b60
     stype=int
Packit fd8b60
  fi
Packit fd8b60
fi
Packit fd8b60
AC_DEFINE_UNQUOTED(krb5_sigtype, $stype, [Define krb5_sigtype to type of signal handler])dnl
Packit fd8b60
])dnl
Packit fd8b60
dnl
Packit fd8b60
dnl check for POSIX setjmp/longjmp -- CHECK_SETJMP
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN(CHECK_SETJMP,[
Packit fd8b60
AC_CHECK_FUNC(sigsetjmp,
Packit fd8b60
AC_MSG_CHECKING(for sigjmp_buf)
Packit fd8b60
AC_CACHE_VAL(krb5_cv_struct_sigjmp_buf,
Packit fd8b60
[AC_TRY_COMPILE(
Packit fd8b60
[#include <setjmp.h>],[sigjmp_buf x],
Packit fd8b60
krb5_cv_struct_sigjmp_buf=yes,krb5_cv_struct_sigjmp_buf=no)])
Packit fd8b60
AC_MSG_RESULT($krb5_cv_struct_sigjmp_buf)
Packit fd8b60
if test $krb5_cv_struct_sigjmp_buf = yes; then
Packit fd8b60
  AC_DEFINE(POSIX_SETJMP,1,[Define if setjmp indicates POSIX interface])
Packit fd8b60
fi
Packit fd8b60
)])dnl
Packit fd8b60
dnl
Packit fd8b60
dnl Check for IPv6 compile-time support.
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN(KRB5_AC_INET6,[
Packit fd8b60
AC_CHECK_HEADERS(sys/types.h sys/socket.h netinet/in.h netdb.h)
Packit fd8b60
AC_CHECK_FUNCS(inet_ntop inet_pton getnameinfo)
Packit fd8b60
dnl getaddrinfo test needs netdb.h, for proper compilation on alpha
Packit fd8b60
dnl under OSF/1^H^H^H^H^HDigital^H^H^H^H^H^H^HTru64 UNIX, where it's
Packit fd8b60
dnl a macro
Packit fd8b60
AC_MSG_CHECKING(for getaddrinfo)
Packit fd8b60
AC_CACHE_VAL(ac_cv_func_getaddrinfo,
Packit fd8b60
[AC_TRY_LINK([#ifdef HAVE_NETDB_H
Packit fd8b60
#include <netdb.h>
Packit fd8b60
#endif],[
Packit fd8b60
struct addrinfo *ai;
Packit fd8b60
getaddrinfo("kerberos.mit.edu", "echo", 0, &ai;;
Packit fd8b60
], ac_cv_func_getaddrinfo=yes, ac_cv_func_getaddrinfo=no)])
Packit fd8b60
AC_MSG_RESULT($ac_cv_func_getaddrinfo)
Packit fd8b60
if test $ac_cv_func_getaddrinfo = yes; then
Packit fd8b60
  AC_DEFINE(HAVE_GETADDRINFO,1,[Define if you have the getaddrinfo function])
Packit fd8b60
fi
Packit fd8b60
dnl
Packit fd8b60
AC_REQUIRE([KRB5_SOCKADDR_SA_LEN])dnl
Packit fd8b60
AC_MSG_CHECKING(for IPv6 compile-time support without -DINET6)
Packit fd8b60
AC_CACHE_VAL(krb5_cv_inet6,[
Packit fd8b60
if test "$ac_cv_func_inet_ntop" != "yes" ; then
Packit fd8b60
  krb5_cv_inet6=no
Packit fd8b60
else
Packit fd8b60
AC_TRY_COMPILE([
Packit fd8b60
#ifdef HAVE_SYS_TYPES_H
Packit fd8b60
#include <sys/types.h>
Packit fd8b60
#endif
Packit fd8b60
#include <sys/socket.h>
Packit fd8b60
#include <netinet/in.h>
Packit fd8b60
#include <netdb.h>
Packit fd8b60
],[
Packit fd8b60
  struct sockaddr_in6 in;
Packit fd8b60
  AF_INET6;
Packit fd8b60
  IN6_IS_ADDR_LINKLOCAL (&in.sin6_addr);
Packit fd8b60
],krb5_cv_inet6=yes,krb5_cv_inet6=no)])
Packit fd8b60
fi
Packit fd8b60
AC_MSG_RESULT($krb5_cv_inet6)
Packit fd8b60
if test "$krb5_cv_inet6" = no && test "$ac_cv_func_inet_ntop" = yes; then
Packit fd8b60
AC_MSG_CHECKING(for IPv6 compile-time support with -DINET6)
Packit fd8b60
AC_CACHE_VAL(krb5_cv_inet6_with_dinet6,[
Packit fd8b60
old_CC="$CC"
Packit fd8b60
CC="$CC -DINET6"
Packit fd8b60
AC_TRY_COMPILE([
Packit fd8b60
#ifdef HAVE_SYS_TYPES_H
Packit fd8b60
#include <sys/types.h>
Packit fd8b60
#endif
Packit fd8b60
#include <sys/socket.h>
Packit fd8b60
#include <netinet/in.h>
Packit fd8b60
#include <netdb.h>
Packit fd8b60
],[
Packit fd8b60
  struct sockaddr_in6 in;
Packit fd8b60
  AF_INET6;
Packit fd8b60
  IN6_IS_ADDR_LINKLOCAL (&in.sin6_addr);
Packit fd8b60
],krb5_cv_inet6_with_dinet6=yes,krb5_cv_inet6_with_dinet6=no)
Packit fd8b60
CC="$old_CC"])
Packit fd8b60
AC_MSG_RESULT($krb5_cv_inet6_with_dinet6)
Packit fd8b60
fi
Packit fd8b60
if test $krb5_cv_inet6 = yes || test "$krb5_cv_inet6_with_dinet6" = yes; then
Packit fd8b60
  if test "$krb5_cv_inet6_with_dinet6" = yes; then
Packit fd8b60
    AC_DEFINE(INET6,1,[May need to be defined to enable IPv6 support, for example on IRIX])
Packit fd8b60
  fi
Packit fd8b60
fi
Packit fd8b60
])dnl
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN(KRB5_AC_CHECK_FOR_CFLAGS,[
Packit fd8b60
AC_BEFORE([$0],[AC_PROG_CC])
Packit fd8b60
AC_BEFORE([$0],[AC_PROG_CXX])
Packit fd8b60
krb5_ac_cflags_set=${CFLAGS+set}
Packit fd8b60
krb5_ac_cxxflags_set=${CXXFLAGS+set}
Packit fd8b60
krb5_ac_warn_cflags_set=${WARN_CFLAGS+set}
Packit fd8b60
krb5_ac_warn_cxxflags_set=${WARN_CXXFLAGS+set}
Packit fd8b60
])
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN(TRY_WARN_CC_FLAG_1,[dnl
Packit fd8b60
  cachevar=`echo "krb5_cv_cc_flag_$1" | sed -e s/=/_eq_/g -e s/-/_dash_/g -e s/[[^a-zA-Z0-9_]]/_/g`
Packit fd8b60
  AC_CACHE_CHECK([if C compiler supports $1], [$cachevar],
Packit fd8b60
  [# first try without, then with
Packit fd8b60
  AC_TRY_COMPILE([], 1;,
Packit fd8b60
    [old_cflags="$CFLAGS"
Packit fd8b60
     CFLAGS="$CFLAGS $cflags_warning_test_flags $1"
Packit fd8b60
     AC_TRY_COMPILE([], 1;, eval $cachevar=yes, eval $cachevar=no)
Packit fd8b60
     CFLAGS="$old_cflags"],
Packit fd8b60
    [AC_MSG_ERROR(compiling simple test program with $CFLAGS failed)])])
Packit fd8b60
  if eval test '"${'$cachevar'}"' = yes; then
Packit fd8b60
    WARN_CFLAGS="$WARN_CFLAGS $1"
Packit fd8b60
  fi
Packit fd8b60
  eval flag_supported='${'$cachevar'}'
Packit fd8b60
])dnl
Packit fd8b60
dnl
Packit fd8b60
dnl Are additional flags needed to make unsupported warning options
Packit fd8b60
dnl get reported as errors?
Packit fd8b60
AC_DEFUN(CHECK_CC_WARNING_TEST_FLAGS,[dnl
Packit fd8b60
  cflags_warning_test_flags=
Packit fd8b60
  TRY_WARN_CC_FLAG_1(-Werror=unknown-warning-option)
Packit fd8b60
  if test $flag_supported = yes; then
Packit fd8b60
    cflags_warning_test_flags=-Werror=unknown-warning-option
Packit fd8b60
  fi
Packit fd8b60
])dnl
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN(TRY_WARN_CC_FLAG,[dnl
Packit fd8b60
AC_REQUIRE([CHECK_CC_WARNING_TEST_FLAGS])dnl
Packit fd8b60
TRY_WARN_CC_FLAG_1($1)dnl
Packit fd8b60
])dnl
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN(WITH_CC,[dnl
Packit fd8b60
AC_REQUIRE([KRB5_AC_CHECK_FOR_CFLAGS])dnl
Packit fd8b60
AC_REQUIRE([AC_PROG_CC])dnl
Packit fd8b60
AC_REQUIRE([AC_PROG_CXX])dnl
Packit fd8b60
if test $ac_cv_c_compiler_gnu = yes ; then
Packit fd8b60
     HAVE_GCC=yes
Packit fd8b60
     else HAVE_GCC=
Packit fd8b60
fi
Packit fd8b60
AC_SUBST(HAVE_GCC)
Packit fd8b60
AC_CACHE_CHECK([for GNU linker], krb5_cv_prog_gnu_ld,
Packit fd8b60
[krb5_cv_prog_gnu_ld=no
Packit fd8b60
if test "$GCC" = yes; then
Packit fd8b60
  if AC_TRY_COMMAND([$CC -Wl,-v 2>&1 dnl
Packit fd8b60
			| grep "GNU ld" > /dev/null]); then
Packit fd8b60
    krb5_cv_prog_gnu_ld=yes
Packit fd8b60
  fi
Packit fd8b60
fi])
Packit fd8b60
AC_ARG_WITH([size-optimizations],
Packit fd8b60
[  --with-size-optimizations enable a few optimizations to reduce code size
Packit fd8b60
                          possibly at some run-time cost],
Packit fd8b60
,
Packit fd8b60
withval=no)
Packit fd8b60
if test "$withval" = yes; then
Packit fd8b60
  AC_DEFINE(CONFIG_SMALL,1,[Define to reduce code size even if it means more cpu usage])
Packit fd8b60
fi
Packit fd8b60
# -Wno-long-long, if needed, for k5-platform.h without inttypes.h etc.
Packit fd8b60
extra_gcc_warn_opts="-Wall -Wcast-align -Wshadow"
Packit fd8b60
# -Wmissing-prototypes
Packit fd8b60
if test "$GCC" = yes ; then
Packit fd8b60
  # Putting this here means we get -Os after -O2, which works.
Packit fd8b60
  if test "$with_size_optimizations" = yes && test "x$krb5_ac_cflags_set" != xset; then
Packit fd8b60
    AC_MSG_NOTICE(adding -Os optimization option)
Packit fd8b60
    case "$CFLAGS" in
Packit fd8b60
      "-g -O2") CFLAGS="-g -Os" ;;
Packit fd8b60
      "-O2")    CFLAGS="-Os" ;;
Packit fd8b60
      *)        CFLAGS="$CFLAGS -Os" ;;
Packit fd8b60
    esac
Packit fd8b60
  fi
Packit fd8b60
  if test "x$krb5_ac_warn_cflags_set" = xset ; then
Packit fd8b60
    AC_MSG_NOTICE(not adding extra gcc warning flags because WARN_CFLAGS was set)
Packit fd8b60
  else
Packit fd8b60
    AC_MSG_NOTICE(adding extra warning flags for gcc)
Packit fd8b60
    WARN_CFLAGS="$WARN_CFLAGS $extra_gcc_warn_opts -Wmissing-prototypes"
Packit fd8b60
    if test "`uname -s`" = Darwin ; then
Packit fd8b60
      AC_MSG_NOTICE(skipping pedantic warnings on Darwin)
Packit fd8b60
    elif test "`uname -s`" = Linux ; then
Packit fd8b60
      AC_MSG_NOTICE(skipping pedantic warnings on Linux)
Packit fd8b60
    else
Packit fd8b60
      WARN_CFLAGS="$WARN_CFLAGS -pedantic"
Packit fd8b60
    fi
Packit fd8b60
    if test "$ac_cv_cxx_compiler_gnu" = yes; then
Packit fd8b60
      if test "x$krb5_ac_warn_cxxflags_set" = xset ; then
Packit fd8b60
        AC_MSG_NOTICE(not adding extra g++ warnings because WARN_CXXFLAGS was set)
Packit fd8b60
      else
Packit fd8b60
        AC_MSG_NOTICE(adding extra warning flags for g++)
Packit fd8b60
        WARN_CXXFLAGS="$WARN_CXXFLAGS $extra_gcc_warn_opts"
Packit fd8b60
      fi
Packit fd8b60
    fi
Packit fd8b60
    # Currently, G++ does not support -Wno-format-zero-length.
Packit fd8b60
    TRY_WARN_CC_FLAG(-Wno-format-zero-length)
Packit fd8b60
    # Other flags here may not be supported on some versions of
Packit fd8b60
    # gcc that people want to use.
Packit fd8b60
    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 no-maybe-uninitialized error=pointer-arith error=int-conversion error=incompatible-pointer-types error=discarded-qualifiers error=implicit-int ; do
Packit fd8b60
      TRY_WARN_CC_FLAG(-W$flag)
Packit fd8b60
    done
Packit fd8b60
    #  old-style-definition? generates many, many warnings
Packit fd8b60
    #
Packit fd8b60
    # Warnings that we'd like to turn into errors on versions of gcc
Packit fd8b60
    # that support promoting only specific warnings to errors, but
Packit fd8b60
    # we'll take as warnings on older compilers.  (If such a warning
Packit fd8b60
    # is added after the -Werror=foo feature, you can just put
Packit fd8b60
    # error=foo in the above list, and skip the test for the
Packit fd8b60
    # warning-only form.)  At least in some versions, -Werror= doesn't
Packit fd8b60
    # seem to make the conditions actual errors, but still issues
Packit fd8b60
    # warnings; I guess we'll take what we can get.
Packit fd8b60
    #
Packit fd8b60
    # We're currently targeting C89+, not C99, so disallow some
Packit fd8b60
    # constructs.
Packit fd8b60
    for flag in declaration-after-statement ; do
Packit fd8b60
      TRY_WARN_CC_FLAG(-Werror=$flag)
Packit fd8b60
      if test "$flag_supported" = no; then
Packit fd8b60
        TRY_WARN_CC_FLAG(-W$flag)
Packit fd8b60
      fi
Packit fd8b60
    done
Packit fd8b60
    # We require function declarations now.
Packit fd8b60
    #
Packit fd8b60
    # In some compiler versions -- e.g., "gcc version 4.2.1 (Apple
Packit fd8b60
    # Inc. build 5664)" -- the -Werror- option works, but the -Werror=
Packit fd8b60
    # version doesn't cause implicitly declared functions to be
Packit fd8b60
    # flagged as errors.  If neither works, -Wall implies
Packit fd8b60
    # -Wimplicit-function-declaration so don't bother.
Packit fd8b60
    TRY_WARN_CC_FLAG(-Werror-implicit-function-declaration)
Packit fd8b60
    if test "implicit-function-declaration_supported" = no; then
Packit fd8b60
      TRY_WARN_CC_FLAG(-Werror=implicit-function-declaration)
Packit fd8b60
    fi
Packit fd8b60
    #
Packit fd8b60
  fi
Packit fd8b60
  if test "`uname -s`" = Darwin ; then
Packit fd8b60
    # Someday this should be a feature test.
Packit fd8b60
    # One current (Jaguar = OS 10.2) problem:
Packit fd8b60
    # Archive library with foo.o undef sym X and bar.o common sym X,
Packit fd8b60
    # if foo.o is pulled in at link time, bar.o may not be, causing
Packit fd8b60
    # the linker to complain.
Packit fd8b60
    # Dynamic library problems too?
Packit fd8b60
    case "$CC $CFLAGS" in
Packit fd8b60
    *-fcommon*) ;; # why someone would do this, I don't know
Packit fd8b60
    *-fno-common*) ;; # okay, they're already doing the right thing
Packit fd8b60
    *)
Packit fd8b60
      AC_MSG_NOTICE(disabling the use of common storage on Darwin)
Packit fd8b60
      CFLAGS="$CFLAGS -fno-common"
Packit fd8b60
      ;;
Packit fd8b60
    esac
Packit fd8b60
    case "$LD $LDFLAGS" in
Packit fd8b60
    *-Wl,-search_paths_first*) ;;
Packit fd8b60
    *) LDFLAGS="${LDFLAGS} -Wl,-search_paths_first" ;;
Packit fd8b60
    esac
Packit fd8b60
  fi
Packit fd8b60
else
Packit fd8b60
  if test "`uname -s`" = AIX ; then
Packit fd8b60
    # Using AIX but not GCC, assume native compiler.
Packit fd8b60
    # The native compiler appears not to give a nonzero exit
Packit fd8b60
    # status for certain classes of errors, like missing arguments
Packit fd8b60
    # in function calls.  Let's try to fix that with -qhalt=e.
Packit fd8b60
    case "$CC $CFLAGS" in
Packit fd8b60
      *-qhalt=*) ;;
Packit fd8b60
      *)
Packit fd8b60
	CFLAGS="$CFLAGS -qhalt=e"
Packit fd8b60
	AC_MSG_NOTICE(adding -qhalt=e for better error reporting)
Packit fd8b60
	;;
Packit fd8b60
    esac
Packit fd8b60
    # Also, the optimizer isn't turned on by default, which means
Packit fd8b60
    # the static inline functions get left in random object files,
Packit fd8b60
    # leading to references to pthread_mutex_lock from anything that
Packit fd8b60
    # includes k5-int.h whether it uses threads or not.
Packit fd8b60
    case "$CC $CFLAGS" in
Packit fd8b60
      *-O*) ;;
Packit fd8b60
      *)
Packit fd8b60
	CFLAGS="$CFLAGS -O"
Packit fd8b60
	AC_MSG_NOTICE(adding -O for inline thread-support function elimination)
Packit fd8b60
	;;
Packit fd8b60
    esac
Packit fd8b60
  fi
Packit fd8b60
  if test "`uname -s`" = SunOS ; then
Packit fd8b60
    # Using Solaris but not GCC, assume Sunsoft compiler.
Packit fd8b60
    # We have some error-out-on-warning options available.
Packit fd8b60
    # Sunsoft 12 compiler defaults to -xc99=all, it appears, so "inline"
Packit fd8b60
    # works, but it also means that declaration-in-code warnings won't
Packit fd8b60
    # be issued.
Packit fd8b60
    # -v -fd -errwarn=E_DECLARATION_IN_CODE ...
Packit fd8b60
    if test "x$krb5_ac_warn_cflags_set" = xset ; then
Packit fd8b60
      AC_MSG_NOTICE(not adding extra warning flags because WARN_CFLAGS was set)
Packit fd8b60
    else
Packit fd8b60
      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"
Packit fd8b60
    fi
Packit fd8b60
    if test "x$krb5_ac_warn_cxxflags_set" = xset ; then
Packit fd8b60
      AC_MSG_NOTICE(not adding extra warning flags because WARN_CXXFLAGS was set)
Packit fd8b60
    else
Packit fd8b60
      WARN_CXXFLAGS="-errtags=yes +w +w2 -xport64"
Packit fd8b60
    fi
Packit fd8b60
  fi
Packit fd8b60
fi
Packit fd8b60
AC_SUBST(WARN_CFLAGS)
Packit fd8b60
AC_SUBST(WARN_CXXFLAGS)
Packit fd8b60
])dnl
Packit fd8b60
dnl
Packit fd8b60
dnl
Packit fd8b60
dnl check for yylineno -- HAVE_YYLINENO
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN(HAVE_YYLINENO,[dnl
Packit fd8b60
AC_REQUIRE_CPP()AC_REQUIRE([AC_PROG_LEX])dnl
Packit fd8b60
AC_MSG_CHECKING([for yylineno declaration])
Packit fd8b60
AC_CACHE_VAL(krb5_cv_type_yylineno,
Packit fd8b60
# some systems have yylineno, others don't...
Packit fd8b60
  echo '%%
Packit fd8b60
%%' | ${LEX} -t > conftest.out
Packit fd8b60
  if egrep yylineno conftest.out >/dev/null 2>&1; then
Packit fd8b60
	krb5_cv_type_yylineno=yes
Packit fd8b60
  else
Packit fd8b60
	krb5_cv_type_yylineno=no
Packit fd8b60
  fi
Packit fd8b60
  rm -f conftest.out)
Packit fd8b60
  AC_MSG_RESULT($krb5_cv_type_yylineno)
Packit fd8b60
  if test $krb5_cv_type_yylineno = no; then
Packit fd8b60
	AC_DEFINE(NO_YYLINENO, 1, [Define if lex produes code with yylineno])
Packit fd8b60
  fi
Packit fd8b60
])dnl
Packit fd8b60
dnl
Packit fd8b60
dnl K5_GEN_MAKEFILE([dir, [frags]])
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN(K5_GEN_MAKEFILE,[dnl
Packit fd8b60
ifelse($1, ,[_K5_GEN_MAKEFILE(.,$2)],[_K5_GEN_MAKEFILE($1,$2)])
Packit fd8b60
])
Packit fd8b60
dnl
Packit fd8b60
dnl _K5_GEN_MAKEFILE(dir, [frags])
Packit fd8b60
dnl  dir must be present in this case
Packit fd8b60
dnl  Note: Be careful in quoting. 
Packit fd8b60
dnl        The ac_foreach generates the list of fragments to include
Packit fd8b60
dnl        or "" if $2 is empty
Packit fd8b60
AC_DEFUN(_K5_GEN_MAKEFILE,[dnl
Packit fd8b60
AC_CONFIG_FILES([$1/Makefile:$srcdir/]K5_TOPDIR[/config/pre.in:$1/Makefile.in:$1/deps:$srcdir/]K5_TOPDIR[/config/post.in])
Packit fd8b60
])
Packit fd8b60
dnl
Packit fd8b60
dnl K5_GEN_FILE( <ac_output arguments> )
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN(K5_GEN_FILE,[AC_CONFIG_FILES($1)])dnl
Packit fd8b60
dnl
Packit fd8b60
dnl K5_AC_OUTPUT
Packit fd8b60
dnl    Note: Adds the variables to config.status for individual 
Packit fd8b60
dnl          Makefile generation from config.status
Packit fd8b60
AC_DEFUN(K5_AC_OUTPUT,[AC_OUTPUT])dnl
Packit fd8b60
dnl
Packit fd8b60
dnl V5_AC_OUTPUT_MAKEFILE
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN(V5_AC_OUTPUT_MAKEFILE,
Packit fd8b60
[ifelse($1, , [_V5_AC_OUTPUT_MAKEFILE(.,$2)],[_V5_AC_OUTPUT_MAKEFILE($1,$2)])])
Packit fd8b60
dnl
Packit fd8b60
define(_V5_AC_OUTPUT_MAKEFILE,
Packit fd8b60
[ifelse($2, , ,AC_CONFIG_FILES($2))
Packit fd8b60
AC_FOREACH([DIR], [$1],dnl
Packit fd8b60
 [AC_CONFIG_FILES(DIR[/Makefile:$srcdir/]K5_TOPDIR[/config/pre.in:]DIR[/Makefile.in:]DIR[/deps:$srcdir/]K5_TOPDIR[/config/post.in])])
Packit fd8b60
K5_AC_OUTPUT])dnl
Packit fd8b60
dnl
Packit fd8b60
dnl
Packit fd8b60
dnl KRB5_SOCKADDR_SA_LEN: define HAVE_SA_LEN if sockaddr contains the sa_len
Packit fd8b60
dnl component
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN([KRB5_SOCKADDR_SA_LEN],[ dnl
Packit fd8b60
AC_CHECK_MEMBER(struct sockaddr.sa_len,
Packit fd8b60
  AC_DEFINE(HAVE_SA_LEN,1,[Define if struct sockaddr contains sa_len])
Packit fd8b60
,,[#include <sys/types.h>
Packit fd8b60
#include <sys/socket.h>])])
Packit fd8b60
dnl
Packit fd8b60
dnl WITH_NETLIB
Packit fd8b60
dnl 
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN(WITH_NETLIB,[
Packit fd8b60
AC_ARG_WITH([netlib],
Packit fd8b60
AC_HELP_STRING([--with-netlib=LIBS], use user defined resolver library),
Packit fd8b60
[  if test "$withval" = yes -o "$withval" = no ; then
Packit fd8b60
	AC_MSG_RESULT("netlib will link with C library resolver only")
Packit fd8b60
  else
Packit fd8b60
	LIBS="$LIBS $withval"
Packit fd8b60
	AC_MSG_RESULT("netlib will use \'$withval\'")
Packit fd8b60
  fi
Packit fd8b60
],dnl
Packit fd8b60
[AC_LIBRARY_NET]
Packit fd8b60
)])dnl
Packit fd8b60
dnl
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN(KRB5_AC_NEED_DAEMON, [
Packit fd8b60
KRB5_NEED_PROTO([#ifdef HAVE_UNISTD_H
Packit fd8b60
#include <unistd.h>
Packit fd8b60
#endif],daemon,1)])dnl
Packit fd8b60
Packit fd8b60
dnl
Packit fd8b60
dnl KRB5_AC_NEED_LIBGEN --- check if libgen needs to be linked in for
Packit fd8b60
dnl 				compile/step	
Packit fd8b60
dnl
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN(KRB5_AC_NEED_LIBGEN,[
Packit fd8b60
AC_REQUIRE([AC_PROG_CC])dnl
Packit fd8b60
dnl
Packit fd8b60
dnl regcomp is present but non-functional on Solaris 2.4
Packit fd8b60
dnl
Packit fd8b60
AC_MSG_CHECKING(for working regcomp)
Packit fd8b60
AC_CACHE_VAL(ac_cv_func_regcomp,[
Packit fd8b60
AC_TRY_RUN([
Packit fd8b60
#include <sys/types.h>
Packit fd8b60
#include <regex.h>
Packit fd8b60
regex_t x; regmatch_t m;
Packit fd8b60
int main() { return regcomp(&x,"pat.*",0) || regexec(&x,"pattern",1,&m,0); }
Packit fd8b60
], ac_cv_func_regcomp=yes, ac_cv_func_regcomp=no, AC_MSG_ERROR([Cannot test regcomp when cross compiling]))])
Packit fd8b60
AC_MSG_RESULT($ac_cv_func_regcomp)
Packit fd8b60
test $ac_cv_func_regcomp = yes && AC_DEFINE(HAVE_REGCOMP,1,[Define if regcomp exists and functions])
Packit fd8b60
dnl
Packit fd8b60
dnl Check for the compile and step functions - only if regcomp is not available
Packit fd8b60
dnl
Packit fd8b60
if test $ac_cv_func_regcomp = no; then
Packit fd8b60
 save_LIBS="$LIBS"
Packit fd8b60
 LIBS=-lgen
Packit fd8b60
dnl this will fail if there's no compile/step in -lgen, or if there's
Packit fd8b60
dnl no -lgen.  This is fine.
Packit fd8b60
 AC_CHECK_FUNCS(compile step)
Packit fd8b60
 LIBS="$save_LIBS"
Packit fd8b60
dnl
Packit fd8b60
dnl Set GEN_LIB if necessary 
Packit fd8b60
dnl
Packit fd8b60
 AC_CHECK_LIB(gen, compile, GEN_LIB=-lgen, GEN_LIB=)
Packit fd8b60
 AC_SUBST(GEN_LIB)
Packit fd8b60
fi
Packit fd8b60
])
Packit fd8b60
dnl
Packit fd8b60
dnl KRB5_AC_REGEX_FUNCS --- check for different regular expression 
Packit fd8b60
dnl				support functions
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN(KRB5_AC_REGEX_FUNCS,[
Packit fd8b60
AC_CHECK_FUNCS(re_comp re_exec regexec)
Packit fd8b60
AC_REQUIRE([KRB5_AC_NEED_LIBGEN])dnl
Packit fd8b60
])dnl
Packit fd8b60
dnl
Packit fd8b60
dnl AC_KRB5_TCL_FIND_CONFIG (uses tcl_dir)
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN(AC_KRB5_TCL_FIND_CONFIG,[
Packit fd8b60
AC_REQUIRE([KRB5_LIB_AUX])dnl
Packit fd8b60
AC_MSG_CHECKING(for tclConfig.sh)
Packit fd8b60
dnl On Debian, we might be given --with-tcl=/usr, or tclsh might
Packit fd8b60
dnl point us to /usr/lib/tcl8.4; either way, we need to find
Packit fd8b60
dnl /usr/lib/tcl8.4/tclConfig.sh.
Packit fd8b60
dnl On NetBSD, we might be given --with-tcl=/usr/pkg, or tclsh
Packit fd8b60
dnl might point us to /usr/pkg/lib/tcl8.4; we need to find
Packit fd8b60
dnl /usr/pkg/lib/tclConfig.sh.
Packit fd8b60
if test -r "$tcl_dir/lib/tclConfig.sh" ; then
Packit fd8b60
  tcl_conf="$tcl_dir/lib/tclConfig.sh"
Packit fd8b60
elif test -r "$tcl_dir/tclConfig.sh" ; then
Packit fd8b60
  tcl_conf="$tcl_dir/tclConfig.sh"
Packit fd8b60
elif test -r "$tcl_dir/../tclConfig.sh" ; then
Packit fd8b60
  tcl_conf="$tcl_dir/../tclConfig.sh"
Packit fd8b60
else
Packit fd8b60
  tcl_conf=
Packit fd8b60
  lib="$tcl_dir/lib"
Packit fd8b60
  changequote(<<,>>)dnl
Packit fd8b60
  for d in "$lib" "$lib"/tcl7.[0-9] "$lib"/tcl8.[0-9] ; do
Packit fd8b60
    if test -r "$d/tclConfig.sh" ; then
Packit fd8b60
      tcl_conf="$tcl_conf $d/tclConfig.sh"
Packit fd8b60
    fi
Packit fd8b60
  done
Packit fd8b60
  changequote([,])dnl
Packit fd8b60
fi
Packit fd8b60
if test -n "$tcl_conf" ; then
Packit fd8b60
  AC_MSG_RESULT($tcl_conf)
Packit fd8b60
else
Packit fd8b60
  AC_MSG_RESULT(not found)
Packit fd8b60
fi
Packit fd8b60
tcl_ok_conf=
Packit fd8b60
tcl_vers_maj=
Packit fd8b60
tcl_vers_min=
Packit fd8b60
old_CPPFLAGS=$CPPFLAGS
Packit fd8b60
old_LIBS=$LIBS
Packit fd8b60
old_LDFLAGS=$LDFLAGS
Packit fd8b60
if test -n "$tcl_conf" ; then
Packit fd8b60
  for file in $tcl_conf ; do
Packit fd8b60
    TCL_MAJOR_VERSION=x ; TCL_MINOR_VERSION=x
Packit fd8b60
    AC_MSG_CHECKING(Tcl info in $file)
Packit fd8b60
    . $file
Packit fd8b60
    v=$TCL_MAJOR_VERSION.$TCL_MINOR_VERSION
Packit fd8b60
    if test -z "$tcl_vers_maj" \
Packit fd8b60
	|| test "$tcl_vers_maj" -lt "$TCL_MAJOR_VERSION" \
Packit fd8b60
	|| test "$tcl_vers_maj" = "$TCL_MAJOR_VERSION" -a "$tcl_vers_min" -lt "$TCL_MINOR_VERSION" ; then
Packit fd8b60
      for incdir in "$TCL_PREFIX/include/tcl$v" "$TCL_PREFIX/include" ; do
Packit fd8b60
	if test -r "$incdir/tcl.h" -o -r "$incdir/tcl/tcl.h" ; then
Packit fd8b60
	  CPPFLAGS="$old_CPPFLAGS -I$incdir"
Packit fd8b60
	  break
Packit fd8b60
	fi
Packit fd8b60
      done
Packit fd8b60
      LIBS="$old_LIBS `eval echo x $TCL_LIB_SPEC $TCL_LIBS | sed 's/^x//'`"
Packit fd8b60
      LDFLAGS="$old_LDFLAGS $TCL_LD_FLAGS"
Packit fd8b60
      AC_TRY_LINK( , [Tcl_CreateInterp ();],
Packit fd8b60
	tcl_ok_conf=$file
Packit fd8b60
	tcl_vers_maj=$TCL_MAJOR_VERSION
Packit fd8b60
	tcl_vers_min=$TCL_MINOR_VERSION
Packit fd8b60
	AC_MSG_RESULT($v - working),
Packit fd8b60
	AC_MSG_RESULT($v - compilation failed)
Packit fd8b60
      )
Packit fd8b60
    else
Packit fd8b60
      AC_MSG_RESULT(older version $v)
Packit fd8b60
    fi
Packit fd8b60
  done
Packit fd8b60
fi
Packit fd8b60
CPPFLAGS=$old_CPPFLAGS
Packit fd8b60
LIBS=$old_LIBS
Packit fd8b60
LDFLAGS=$old_LDFLAGS
Packit fd8b60
tcl_header=no
Packit fd8b60
tcl_lib=no
Packit fd8b60
if test -n "$tcl_ok_conf" ; then
Packit fd8b60
  . $tcl_ok_conf
Packit fd8b60
  TCL_INCLUDES=
Packit fd8b60
  for incdir in "$TCL_PREFIX/include/tcl$v" "$TCL_PREFIX/include" ; do
Packit fd8b60
    if test -r "$incdir/tcl.h" -o -r "$incdir/tcl/tcl.h" ; then
Packit fd8b60
      if test "$incdir" != "/usr/include" ; then
Packit fd8b60
        TCL_INCLUDES=-I$incdir
Packit fd8b60
      fi
Packit fd8b60
      break
Packit fd8b60
    fi
Packit fd8b60
  done
Packit fd8b60
  # Need eval because the first-level expansion could reference
Packit fd8b60
  # variables like ${TCL_DBGX}.
Packit fd8b60
  eval TCL_LIBS='"'$TCL_LIB_SPEC $TCL_LIBS $TCL_DL_LIBS'"'
Packit fd8b60
  TCL_LIBPATH="-L$TCL_EXEC_PREFIX/lib"
Packit fd8b60
  TCL_RPATH=":$TCL_EXEC_PREFIX/lib"
Packit fd8b60
  if test "$DEPLIBEXT" != "$SHLIBEXT" && test -n "$RPATH_FLAG"; then
Packit fd8b60
    TCL_MAYBE_RPATH='$(RPATH_FLAG)'"$TCL_EXEC_PREFIX/lib$RPATH_TAIL"
Packit fd8b60
  else
Packit fd8b60
    TCL_MAYBE_RPATH=
Packit fd8b60
  fi
Packit fd8b60
  CPPFLAGS="$old_CPPFLAGS $TCL_INCLUDES"
Packit fd8b60
  AC_CHECK_HEADER(tcl.h,AC_DEFINE(HAVE_TCL_H,1,[Define if tcl.h is available]) tcl_header=yes)
Packit fd8b60
  if test $tcl_header=no; then
Packit fd8b60
     AC_CHECK_HEADER(tcl/tcl.h,AC_DEFINE(HAVE_TCL_TCL_H,1,[Define if tcl/tcl.h is available]) tcl_header=yes)
Packit fd8b60
  fi
Packit fd8b60
  CPPFLAGS="$old_CPPFLAGS"
Packit fd8b60
  tcl_lib=yes
Packit fd8b60
else
Packit fd8b60
  # If we read a tclConfig.sh file, it probably set this.
Packit fd8b60
  TCL_LIBS=
Packit fd8b60
fi  
Packit fd8b60
AC_SUBST(TCL_INCLUDES)
Packit fd8b60
AC_SUBST(TCL_LIBS)
Packit fd8b60
AC_SUBST(TCL_LIBPATH)
Packit fd8b60
AC_SUBST(TCL_RPATH)
Packit fd8b60
AC_SUBST(TCL_MAYBE_RPATH)
Packit fd8b60
])dnl
Packit fd8b60
dnl
Packit fd8b60
dnl AC_KRB5_TCL_TRYOLD
Packit fd8b60
dnl attempt to use old search algorithm for locating tcl
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN(AC_KRB5_TCL_TRYOLD, [
Packit fd8b60
AC_REQUIRE([KRB5_AC_FIND_DLOPEN])
Packit fd8b60
AC_MSG_WARN([trying old tcl search code])
Packit fd8b60
if test "$with_tcl" != yes -a "$with_tcl" != no; then
Packit fd8b60
	TCL_INCLUDES=-I$with_tcl/include
Packit fd8b60
	TCL_LIBPATH=-L$with_tcl/lib
Packit fd8b60
	TCL_RPATH=:$with_tcl/lib
Packit fd8b60
fi
Packit fd8b60
if test "$with_tcl" != no ; then
Packit fd8b60
	krb5_save_CPPFLAGS="$CPPFLAGS"
Packit fd8b60
	krb5_save_LDFLAGS="$LDFLAGS"
Packit fd8b60
	CPPFLAGS="$CPPFLAGS $TCL_INCLUDES"
Packit fd8b60
	LDFLAGS="$LDFLAGS $TCL_LIBPATH"
Packit fd8b60
	tcl_header=no
Packit fd8b60
	AC_CHECK_HEADER(tcl.h,AC_DEFINE(HAVE_TCL_H,1,[Define if tcl.h found]) tcl_header=yes)
Packit fd8b60
	if test $tcl_header=no; then
Packit fd8b60
	   AC_CHECK_HEADER(tcl/tcl.h,AC_DEFINE(HAVE_TCL_TCL_H,1,[Define if tcl/tcl.h found]) tcl_header=yes)
Packit fd8b60
	fi
Packit fd8b60
Packit fd8b60
	if test $tcl_header = yes ; then
Packit fd8b60
		tcl_lib=no
Packit fd8b60
Packit fd8b60
		if test $tcl_lib = no; then
Packit fd8b60
			AC_CHECK_LIB(tcl8.0, Tcl_CreateCommand, 
Packit fd8b60
				TCL_LIBS="$TCL_LIBS -ltcl8.0 -lm $DL_LIB $LIBS"
Packit fd8b60
				tcl_lib=yes,,-lm $DL_LIB)
Packit fd8b60
		fi
Packit fd8b60
		if test $tcl_lib = no; then
Packit fd8b60
			AC_CHECK_LIB(tcl7.6, Tcl_CreateCommand, 
Packit fd8b60
				TCL_LIBS="$TCL_LIBS -ltcl7.6 -lm $DL_LIB $LIBS"
Packit fd8b60
				tcl_lib=yes,,-lm $DL_LIB)
Packit fd8b60
		fi
Packit fd8b60
		if test $tcl_lib = no; then
Packit fd8b60
			AC_CHECK_LIB(tcl7.5, Tcl_CreateCommand, 
Packit fd8b60
				TCL_LIBS="$TCL_LIBS -ltcl7.5 -lm $DL_LIB $LIBS"
Packit fd8b60
				tcl_lib=yes,,-lm $DL_LIB)
Packit fd8b60
Packit fd8b60
		fi
Packit fd8b60
		if test $tcl_lib = no ; then
Packit fd8b60
			AC_CHECK_LIB(tcl, Tcl_CreateCommand, 
Packit fd8b60
				TCL_LIBS="$TCL_LIBS -ltcl -lm $DL_LIB $LIBS"
Packit fd8b60
				tcl_lib=yes,,-lm $DL_LIB)
Packit fd8b60
Packit fd8b60
		fi
Packit fd8b60
		if test $tcl_lib = no ; then		
Packit fd8b60
			AC_MSG_WARN("tcl.h found but not library")
Packit fd8b60
		fi
Packit fd8b60
	else
Packit fd8b60
		AC_MSG_WARN(Could not find Tcl which is needed for the kadm5 tests)
Packit fd8b60
		TCL_LIBS=
Packit fd8b60
	fi
Packit fd8b60
	CPPFLAGS="$krb5_save_CPPFLAGS"
Packit fd8b60
	LDFLAGS="$krb5_save_LDFLAGS"
Packit fd8b60
	AC_SUBST(TCL_INCLUDES)
Packit fd8b60
	AC_SUBST(TCL_LIBS)
Packit fd8b60
	AC_SUBST(TCL_LIBPATH)
Packit fd8b60
	AC_SUBST(TCL_RPATH)
Packit fd8b60
else
Packit fd8b60
	AC_MSG_RESULT("Not looking for Tcl library")
Packit fd8b60
fi
Packit fd8b60
])dnl
Packit fd8b60
dnl
Packit fd8b60
dnl AC_KRB5_TCL - determine if the TCL library is present on system
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN(AC_KRB5_TCL,[
Packit fd8b60
TCL_INCLUDES=
Packit fd8b60
TCL_LIBPATH=
Packit fd8b60
TCL_RPATH=
Packit fd8b60
TCL_LIBS=
Packit fd8b60
TCL_WITH=
Packit fd8b60
tcl_dir=
Packit fd8b60
AC_ARG_WITH(tcl,
Packit fd8b60
[  --with-tcl=path         where Tcl resides], , with_tcl=try)
Packit fd8b60
if test "$with_tcl" = no ; then
Packit fd8b60
  true
Packit fd8b60
elif test "$with_tcl" = yes -o "$with_tcl" = try ; then
Packit fd8b60
  tcl_dir=/usr
Packit fd8b60
  if test ! -r /usr/lib/tclConfig.sh; then
Packit fd8b60
    cat >> conftest <<\EOF
Packit fd8b60
puts "tcl_dir=$tcl_library"
Packit fd8b60
EOF
Packit fd8b60
    if tclsh conftest >conftest.out 2>/dev/null; then
Packit fd8b60
      if grep tcl_dir= conftest.out >/dev/null 2>&1; then
Packit fd8b60
        t=`sed s/tcl_dir=// conftest.out`
Packit fd8b60
        tcl_dir=$t
Packit fd8b60
      fi
Packit fd8b60
    fi # tclsh ran script okay
Packit fd8b60
  rm -f conftest conftest.out
Packit fd8b60
  fi # no /usr/lib/tclConfig.sh
Packit fd8b60
else
Packit fd8b60
  tcl_dir=$with_tcl
Packit fd8b60
fi
Packit fd8b60
if test "$with_tcl" != no ; then
Packit fd8b60
  AC_KRB5_TCL_FIND_CONFIG
Packit fd8b60
  if test $tcl_lib = no ; then
Packit fd8b60
    if test "$with_tcl" != try ; then
Packit fd8b60
      AC_KRB5_TCL_TRYOLD
Packit fd8b60
    else
Packit fd8b60
      AC_MSG_WARN(Could not find Tcl which is needed for some tests)
Packit fd8b60
    fi
Packit fd8b60
  fi
Packit fd8b60
fi
Packit fd8b60
# If "yes" or pathname, error out if not found.
Packit fd8b60
if test "$with_tcl" != no -a "$with_tcl" != try ; then
Packit fd8b60
  if test "$tcl_header $tcl_lib" != "yes yes" ; then
Packit fd8b60
    AC_MSG_ERROR(Could not find Tcl)
Packit fd8b60
  fi
Packit fd8b60
fi
Packit fd8b60
])dnl
Packit fd8b60
Packit fd8b60
dnl
Packit fd8b60
dnl WITH_HESIOD
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN(WITH_HESIOD,
Packit fd8b60
[AC_ARG_WITH(hesiod, AC_HELP_STRING(--with-hesiod[=path], compile with hesiod support @<:@omitted@:>@),
Packit fd8b60
	hesiod=$with_hesiod, with_hesiod=no)
Packit fd8b60
if test "$with_hesiod" != "no"; then
Packit fd8b60
	HESIOD_DEFS=-DHESIOD
Packit fd8b60
	AC_CHECK_LIB(resolv, res_send, res_lib=-lresolv)
Packit fd8b60
	if test "$hesiod" != "yes"; then
Packit fd8b60
		HESIOD_LIBS="-L${hesiod}/lib -lhesiod $res_lib"
Packit fd8b60
	else
Packit fd8b60
		HESIOD_LIBS="-lhesiod $res_lib"
Packit fd8b60
	fi
Packit fd8b60
else
Packit fd8b60
	HESIOD_DEFS=
Packit fd8b60
	HESIOD_LIBS=
Packit fd8b60
fi
Packit fd8b60
AC_SUBST(HESIOD_DEFS)
Packit fd8b60
AC_SUBST(HESIOD_LIBS)])
Packit fd8b60
Packit fd8b60
Packit fd8b60
dnl
Packit fd8b60
dnl KRB5_BUILD_LIBRARY
Packit fd8b60
dnl
Packit fd8b60
dnl Pull in the necessary stuff to create the libraries.
Packit fd8b60
Packit fd8b60
AC_DEFUN(KRB5_BUILD_LIBRARY,
Packit fd8b60
[AC_REQUIRE([KRB5_LIB_AUX])dnl
Packit fd8b60
AC_REQUIRE([AC_PROG_LN_S])dnl
Packit fd8b60
AC_REQUIRE([AC_PROG_RANLIB])dnl
Packit fd8b60
AC_REQUIRE([AC_PROG_ARCHIVE])dnl
Packit fd8b60
AC_REQUIRE([AC_PROG_ARCHIVE_ADD])dnl
Packit fd8b60
AC_REQUIRE([AC_PROG_INSTALL])dnl
Packit fd8b60
AC_CHECK_PROG(AR, ar, ar, false)
Packit fd8b60
if test "$AR" = "false"; then
Packit fd8b60
  AC_MSG_ERROR([ar not found in PATH])
Packit fd8b60
fi
Packit fd8b60
AC_CHECK_PROG(PERL, perl, perl, false)
Packit fd8b60
if test "$ac_cv_prog_PERL" = "false"; then
Packit fd8b60
  AC_MSG_ERROR(Perl is now required for Kerberos builds.)
Packit fd8b60
fi
Packit fd8b60
AC_SUBST(LIBLIST)
Packit fd8b60
AC_SUBST(LIBLINKS)
Packit fd8b60
AC_SUBST(PLUGIN)
Packit fd8b60
AC_SUBST(PLUGINLINK)
Packit fd8b60
AC_SUBST(PLUGININST)
Packit fd8b60
AC_SUBST(KDB5_PLUGIN_DEPLIBS)
Packit fd8b60
AC_SUBST(KDB5_PLUGIN_LIBS)
Packit fd8b60
AC_SUBST(MAKE_SHLIB_COMMAND)
Packit fd8b60
AC_SUBST(SHLIB_RPATH_FLAGS)
Packit fd8b60
AC_SUBST(SHLIB_EXPFLAGS)
Packit fd8b60
AC_SUBST(SHLIB_EXPORT_FILE_DEP)
Packit fd8b60
AC_SUBST(DYNOBJ_EXPDEPS)
Packit fd8b60
AC_SUBST(DYNOBJ_EXPFLAGS)
Packit fd8b60
AC_SUBST(INSTALL_SHLIB)
Packit fd8b60
AC_SUBST(STLIBEXT)
Packit fd8b60
AC_SUBST(SHLIBEXT)
Packit fd8b60
AC_SUBST(SHLIBVEXT)
Packit fd8b60
AC_SUBST(SHLIBSEXT)
Packit fd8b60
AC_SUBST(DEPLIBEXT)
Packit fd8b60
AC_SUBST(PFLIBEXT)
Packit fd8b60
AC_SUBST(LIBINSTLIST)
Packit fd8b60
AC_SUBST(DYNOBJEXT)
Packit fd8b60
AC_SUBST(MAKE_DYNOBJ_COMMAND)
Packit fd8b60
AC_SUBST(UNDEF_CHECK)
Packit fd8b60
])
Packit fd8b60
Packit fd8b60
dnl
Packit fd8b60
dnl KRB5_BUILD_LIBOBJS
Packit fd8b60
dnl
Packit fd8b60
dnl Pull in the necessary stuff to build library objects.
Packit fd8b60
Packit fd8b60
AC_DEFUN(KRB5_BUILD_LIBOBJS,
Packit fd8b60
[AC_REQUIRE([KRB5_LIB_AUX])dnl
Packit fd8b60
AC_SUBST(OBJLISTS)
Packit fd8b60
AC_SUBST(STOBJEXT)
Packit fd8b60
AC_SUBST(SHOBJEXT)
Packit fd8b60
AC_SUBST(PFOBJEXT)
Packit fd8b60
AC_SUBST(PICFLAGS)
Packit fd8b60
AC_SUBST(PROFFLAGS)])
Packit fd8b60
Packit fd8b60
dnl
Packit fd8b60
dnl KRB5_BUILD_PROGRAM
Packit fd8b60
dnl
Packit fd8b60
dnl Set variables to build a program.
Packit fd8b60
Packit fd8b60
AC_DEFUN(KRB5_BUILD_PROGRAM,
Packit fd8b60
[AC_REQUIRE([KRB5_LIB_AUX])dnl
Packit fd8b60
AC_REQUIRE([KRB5_AC_NEED_LIBGEN])dnl
Packit fd8b60
AC_SUBST(CC_LINK)
Packit fd8b60
AC_SUBST(CXX_LINK)
Packit fd8b60
AC_SUBST(RPATH_FLAG)
Packit fd8b60
AC_SUBST(PROG_RPATH_FLAGS)
Packit fd8b60
AC_SUBST(DEPLIBEXT)])
Packit fd8b60
Packit fd8b60
dnl
Packit fd8b60
dnl KRB5_RUN_FLAGS
Packit fd8b60
dnl
Packit fd8b60
dnl Set up environment for running dynamic executables out of build tree
Packit fd8b60
Packit fd8b60
AC_DEFUN(KRB5_RUN_FLAGS,
Packit fd8b60
[AC_REQUIRE([KRB5_LIB_AUX])dnl
Packit fd8b60
KRB5_RUN_ENV="$RUN_ENV"
Packit fd8b60
KRB5_RUN_VARS="$RUN_VARS"
Packit fd8b60
AC_SUBST(KRB5_RUN_ENV)
Packit fd8b60
AC_SUBST(KRB5_RUN_VARS)])
Packit fd8b60
Packit fd8b60
dnl
Packit fd8b60
dnl KRB5_LIB_AUX
Packit fd8b60
dnl
Packit fd8b60
dnl Parse configure options related to library building.
Packit fd8b60
Packit fd8b60
AC_DEFUN(KRB5_LIB_AUX,
Packit fd8b60
[AC_REQUIRE([KRB5_LIB_PARAMS])dnl
Packit fd8b60
Packit fd8b60
AC_ARG_ENABLE([static],,, [enable_static=no])
Packit fd8b60
AC_ARG_ENABLE([shared],,, [enable_shared=yes])
Packit fd8b60
Packit fd8b60
if test "x$enable_static" = "x$enable_shared"; then
Packit fd8b60
  AC_MSG_ERROR([--enable-static must be specified with --disable-shared])
Packit fd8b60
fi
Packit fd8b60
Packit fd8b60
AC_ARG_ENABLE([rpath],
Packit fd8b60
AC_HELP_STRING([--disable-rpath],[suppress run path flags in link lines]),,
Packit fd8b60
[enable_rpath=yes])
Packit fd8b60
Packit fd8b60
if test "x$enable_rpath" != xyes ; then
Packit fd8b60
	# Unset the rpath flag values set by shlib.conf
Packit fd8b60
	SHLIB_RPATH_FLAGS=
Packit fd8b60
	RPATH_FLAG=
Packit fd8b60
	PROG_RPATH_FLAGS=
Packit fd8b60
fi
Packit fd8b60
Packit fd8b60
if test "$SHLIBEXT" = ".so-nobuild"; then
Packit fd8b60
   AC_MSG_ERROR([Shared libraries are not yet supported on this platform.])
Packit fd8b60
fi
Packit fd8b60
Packit fd8b60
DEPLIBEXT=$SHLIBEXT
Packit fd8b60
Packit fd8b60
if test "x$enable_static" = xyes; then
Packit fd8b60
	AC_MSG_NOTICE([using static libraries])
Packit fd8b60
	LIBLIST='lib$(LIBBASE)$(STLIBEXT)'
Packit fd8b60
	LIBLINKS='$(TOPLIBD)/lib$(LIBBASE)$(STLIBEXT)'
Packit fd8b60
	PLUGIN='libkrb5_$(LIBBASE)$(STLIBEXT)'
Packit fd8b60
	PLUGINLINK='$(TOPLIBD)/libkrb5_$(LIBBASE)$(STLIBEXT)'
Packit fd8b60
	PLUGININST=install-static
Packit fd8b60
	OBJLISTS=OBJS.ST
Packit fd8b60
	LIBINSTLIST=install-static
Packit fd8b60
	DEPLIBEXT=$STLIBEXT
Packit fd8b60
	AC_DEFINE([STATIC_PLUGINS], 1, [Define for static plugin linkage])
Packit fd8b60
Packit fd8b60
	KDB5_PLUGIN_DEPLIBS='$(TOPLIBD)/libkrb5_db2$(DEPLIBEXT)'
Packit fd8b60
	KDB5_PLUGIN_LIBS='-lkrb5_db2'
Packit fd8b60
	if test "x$OPENLDAP_PLUGIN" = xyes; then
Packit fd8b60
		KDB5_PLUGIN_DEBLIBS=$KDB5_PLUGIN_DEPLIBS' $(TOPLIBD)/libkrb5_ldap$(DEPLIBEXT) $(TOPLIBD)/libkdb_ldap$(DEPLIBEXT)'
Packit fd8b60
		KDB5_PLUGIN_LIBS=$KDB5_PLUGIN_LIBS' -lkrb5_kldap -lkdb_ldap $(LDAP_LIBS)'
Packit fd8b60
	fi
Packit fd8b60
	# kadm5srv_mit normally comes before kdb on the link line.  Add it
Packit fd8b60
	# again after the KDB plugins, since they depend on it for XDR stuff.
Packit fd8b60
	KDB5_PLUGIN_DEPLIBS=$KDB5_PLUGIN_DEPLIBS' $(TOPLIBD)/libkadm5srv_mit$(DEPLIBEXT)'
Packit fd8b60
	KDB5_PLUGIN_LIBS=$KDB5_PLUGIN_LIBS' -lkadm5srv_mit'
Packit fd8b60
Packit fd8b60
	# avoid duplicate rules generation for AIX and such
Packit fd8b60
	SHLIBEXT=.so-nobuild
Packit fd8b60
	SHLIBVEXT=.so.v-nobuild
Packit fd8b60
	SHLIBSEXT=.so.s-nobuild
Packit fd8b60
else
Packit fd8b60
	AC_MSG_NOTICE([using shared libraries])
Packit fd8b60
Packit fd8b60
	# Clear some stuff in case of AIX, etc.
Packit fd8b60
	if test "$STLIBEXT" = "$SHLIBEXT" ; then
Packit fd8b60
		STLIBEXT=.a-nobuild
Packit fd8b60
	fi
Packit fd8b60
	case "$SHLIBSEXT" in
Packit fd8b60
	.so.s-nobuild)
Packit fd8b60
		LIBLIST='lib$(LIBBASE)$(SHLIBEXT)'
Packit fd8b60
		LIBLINKS='$(TOPLIBD)/lib$(LIBBASE)$(SHLIBEXT) $(TOPLIBD)/lib$(LIBBASE)$(SHLIBVEXT)'
Packit fd8b60
		LIBINSTLIST="install-shared"
Packit fd8b60
		;;
Packit fd8b60
	*)
Packit fd8b60
		LIBLIST='lib$(LIBBASE)$(SHLIBEXT) lib$(LIBBASE)$(SHLIBSEXT)'
Packit fd8b60
		LIBLINKS='$(TOPLIBD)/lib$(LIBBASE)$(SHLIBEXT) $(TOPLIBD)/lib$(LIBBASE)$(SHLIBVEXT) $(TOPLIBD)/lib$(LIBBASE)$(SHLIBSEXT)'
Packit fd8b60
		LIBINSTLIST="install-shlib-soname"
Packit fd8b60
		;;
Packit fd8b60
	esac
Packit fd8b60
	OBJLISTS="OBJS.SH"
Packit fd8b60
	PLUGIN='$(LIBBASE)$(DYNOBJEXT)'
Packit fd8b60
	PLUGINLINK='../$(PLUGIN)'
Packit fd8b60
	PLUGININST=install-plugin
Packit fd8b60
	KDB5_PLUGIN_DEPLIBS=
Packit fd8b60
	KDB5_PLUGIN_LIBS=
Packit fd8b60
fi
Packit fd8b60
CC_LINK="$CC_LINK_SHARED"
Packit fd8b60
CXX_LINK="$CXX_LINK_SHARED"
Packit fd8b60
Packit fd8b60
if test -z "$LIBLIST"; then
Packit fd8b60
	AC_MSG_ERROR([must enable one of shared or static libraries])
Packit fd8b60
fi
Packit fd8b60
Packit fd8b60
# Check whether to build profiled libraries.
Packit fd8b60
AC_ARG_ENABLE([profiled],
Packit fd8b60
dnl [  --enable-profiled       build profiled libraries @<:@disabled@:>@]
Packit fd8b60
,
Packit fd8b60
[if test "$enableval" = yes; then
Packit fd8b60
  AC_MSG_ERROR([Sorry, profiled libraries do not work in this release.])
Packit fd8b60
fi])])
Packit fd8b60
Packit fd8b60
dnl
Packit fd8b60
dnl KRB5_LIB_PARAMS
Packit fd8b60
dnl
Packit fd8b60
dnl Determine parameters related to libraries, e.g. various extensions.
Packit fd8b60
Packit fd8b60
AC_DEFUN(KRB5_LIB_PARAMS,
Packit fd8b60
[AC_REQUIRE([AC_CANONICAL_HOST])dnl
Packit fd8b60
krb5_cv_host=$host
Packit fd8b60
AC_SUBST(krb5_cv_host)
Packit fd8b60
AC_REQUIRE([AC_PROG_CC])dnl
Packit fd8b60
AC_REQUIRE([V5_SET_TOPDIR])dnl
Packit fd8b60
. $ac_topdir/config/shlib.conf])
Packit fd8b60
dnl
Packit fd8b60
dnl The following was written by jhawk@mit.edu
Packit fd8b60
dnl
Packit fd8b60
dnl AC_LIBRARY_NET: Id: net.m4,v 1.4 1997/10/25 20:49:53 jhawk Exp 
Packit fd8b60
dnl
Packit fd8b60
dnl This test is for network applications that need socket() and
Packit fd8b60
dnl gethostbyname() -ish functions.  Under Solaris, those applications need to
Packit fd8b60
dnl link with "-lsocket -lnsl".  Under IRIX, they should *not* link with
Packit fd8b60
dnl "-lsocket" because libsocket.a breaks a number of things (for instance:
Packit fd8b60
dnl gethostbyname() under IRIX 5.2, and snoop sockets under most versions of
Packit fd8b60
dnl IRIX).
Packit fd8b60
dnl 
Packit fd8b60
dnl Unfortunately, many application developers are not aware of this, and
Packit fd8b60
dnl mistakenly write tests that cause -lsocket to be used under IRIX.  It is
Packit fd8b60
dnl also easy to write tests that cause -lnsl to be used under operating
Packit fd8b60
dnl systems where neither are necessary (or useful), such as SunOS 4.1.4, which
Packit fd8b60
dnl uses -lnsl for TLI.
Packit fd8b60
dnl 
Packit fd8b60
dnl This test exists so that every application developer does not test this in
Packit fd8b60
dnl a different, and subtly broken fashion.
Packit fd8b60
dnl 
Packit fd8b60
dnl It has been argued that this test should be broken up into two separate
Packit fd8b60
dnl tests, one for the resolver libraries, and one for the libraries necessary
Packit fd8b60
dnl for using Sockets API. Unfortunately, the two are carefully intertwined and
Packit fd8b60
dnl allowing the autoconf user to use them independantly potentially results in
Packit fd8b60
dnl unfortunate ordering dependencies -- as such, such component macros would
Packit fd8b60
dnl have to carefully use indirection and be aware if the other components were
Packit fd8b60
dnl executed. Since other autoconf macros do not go to this trouble, and almost
Packit fd8b60
dnl no applications use sockets without the resolver, this complexity has not
Packit fd8b60
dnl been implemented.
Packit fd8b60
dnl
Packit fd8b60
dnl The check for libresolv is in case you are attempting to link statically
Packit fd8b60
dnl and happen to have a libresolv.a lying around (and no libnsl.a).
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN(AC_LIBRARY_NET, [
Packit fd8b60
   # Most operating systems have gethostbyname() in the default searched
Packit fd8b60
   # libraries (i.e. libc):
Packit fd8b60
   AC_CHECK_FUNC(gethostbyname, , [
Packit fd8b60
     # Some OSes (eg. Solaris) place it in libnsl:
Packit fd8b60
     AC_CHECK_LIB(nsl, gethostbyname, , [
Packit fd8b60
       # Some strange OSes (SINIX) have it in libsocket:
Packit fd8b60
       AC_CHECK_LIB(socket, gethostbyname, , [
Packit fd8b60
          # Unfortunately libsocket sometimes depends on libnsl.
Packit fd8b60
          # AC_CHECK_LIB's API is essentially broken so the following
Packit fd8b60
          # ugliness is necessary:
Packit fd8b60
          AC_CHECK_LIB(socket, gethostbyname,
Packit fd8b60
             LIBS="-lsocket -lnsl $LIBS",
Packit fd8b60
               [AC_CHECK_LIB(resolv, gethostbyname,
Packit fd8b60
			     LIBS="-lresolv $LIBS" )],
Packit fd8b60
             -lnsl)
Packit fd8b60
       ])
Packit fd8b60
     ])
Packit fd8b60
   ])
Packit fd8b60
  AC_CHECK_FUNC(socket, , AC_CHECK_LIB(socket, socket, ,
Packit fd8b60
    AC_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", , -lnsl)))
Packit fd8b60
  KRB5_AC_ENABLE_DNS
Packit fd8b60
  if test "$enable_dns" = yes ; then
Packit fd8b60
    # We assume that if libresolv exists we can link against it.
Packit fd8b60
    # This may get us a gethostby* that doesn't respect nsswitch.
Packit fd8b60
    AC_CHECK_LIB(resolv, main)
Packit fd8b60
Packit fd8b60
_KRB5_AC_CHECK_RES_FUNCS(res_ninit res_nclose res_ndestroy res_nsearch dnl
Packit fd8b60
ns_initparse ns_name_uncompress dn_skipname res_search)
Packit fd8b60
    if test $krb5_cv_func_res_nsearch = no \
Packit fd8b60
      && test $krb5_cv_func_res_search = no; then
Packit fd8b60
	# Attempt to link with res_search(), in case it's not prototyped.
Packit fd8b60
	AC_CHECK_FUNC(res_search,
Packit fd8b60
	  [AC_DEFINE(HAVE_RES_SEARCH, 1,
Packit fd8b60
	    [Define to 1 if you have the `res_search' function])],
Packit fd8b60
	  [AC_ERROR([cannot find res_nsearch or res_search])])
Packit fd8b60
    fi
Packit fd8b60
  fi
Packit fd8b60
])
Packit fd8b60
AC_DEFUN([_KRB5_AC_CHECK_RES_FUNCS],
Packit fd8b60
[AC_FOREACH([AC_Func], [$1],
Packit fd8b60
  [AH_TEMPLATE(AS_TR_CPP(HAVE_[]AC_Func),
Packit fd8b60
               [Define to 1 if you have the `]AC_Func[' function.])])dnl
Packit fd8b60
for krb5_func in $1; do
Packit fd8b60
_KRB5_AC_CHECK_RES_FUNC($krb5_func)
Packit fd8b60
done
Packit fd8b60
])
Packit fd8b60
AC_DEFUN([_KRB5_AC_CHECK_RES_FUNC], [
Packit fd8b60
# Solaris 9 prototypes ns_name_uncompress() in arpa/nameser.h, but
Packit fd8b60
# doesn't export it from libresolv.so, so we use extreme paranoia here
Packit fd8b60
# and check both for the declaration and that we can link against the
Packit fd8b60
# function.
Packit fd8b60
AC_CACHE_CHECK([for $1], [krb5_cv_func_$1], [AC_TRY_LINK(
Packit fd8b60
[#include <sys/types.h>
Packit fd8b60
#include <netinet/in.h>
Packit fd8b60
#include <arpa/nameser.h>
Packit fd8b60
@%:@include <resolv.h>],
Packit fd8b60
[/*
Packit fd8b60
 * Use volatile, or else optimization can cause false positives.
Packit fd8b60
 */
Packit fd8b60
void (* volatile p)() = (void (*)())$1;],
Packit fd8b60
			     [AS_VAR_SET(krb5_cv_func_$1, yes)],
Packit fd8b60
			     [AS_VAR_SET(krb5_cv_func_$1, no)])])
Packit fd8b60
AS_IF([test AS_VAR_GET(krb5_cv_func_$1) = yes],
Packit fd8b60
      [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1]), 1,
Packit fd8b60
			  [Define to 1 if you have the `$1' function])])[]dnl
Packit fd8b60
])
Packit fd8b60
dnl
Packit fd8b60
dnl
Packit fd8b60
dnl KRB5_AC_ENABLE_DNS
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN(KRB5_AC_ENABLE_DNS, [
Packit fd8b60
enable_dns=yes
Packit fd8b60
  AC_ARG_ENABLE([dns-for-realm],
Packit fd8b60
[  --enable-dns-for-realm  enable DNS lookups of Kerberos realm names], ,
Packit fd8b60
[enable_dns_for_realm=no])
Packit fd8b60
  if test "$enable_dns_for_realm" = yes; then
Packit fd8b60
    AC_DEFINE(KRB5_DNS_LOOKUP_REALM,1,[Define to enable DNS lookups of Kerberos realm names])
Packit fd8b60
  fi
Packit fd8b60
Packit fd8b60
AC_DEFINE(KRB5_DNS_LOOKUP, 1,[Define for DNS support of locating realms and KDCs])
Packit fd8b60
Packit fd8b60
])
Packit fd8b60
dnl
Packit fd8b60
dnl
Packit fd8b60
dnl Check if we need the prototype for a function - we give it a bogus 
Packit fd8b60
dnl prototype and if it complains - then a valid prototype exists on the 
Packit fd8b60
dnl system.
Packit fd8b60
dnl
Packit fd8b60
dnl KRB5_NEED_PROTO(includes, function, [bypass])
Packit fd8b60
dnl if $3 set, don't see if library defined. 
Packit fd8b60
dnl Useful for case where we will define in libkrb5 the function if need be
Packit fd8b60
dnl but want to know if a prototype exists in either case on system.
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN([KRB5_NEED_PROTO], [
Packit fd8b60
ifelse([$3], ,[if test "x$ac_cv_func_$2" = xyes; then])
Packit fd8b60
AC_CACHE_CHECK([if $2 needs a prototype provided], krb5_cv_func_$2_noproto,
Packit fd8b60
AC_TRY_COMPILE([$1],
Packit fd8b60
[#undef $2
Packit fd8b60
struct k5foo {int foo; } xx;
Packit fd8b60
extern int $2 (struct k5foo*);
Packit fd8b60
$2(&xx;;
Packit fd8b60
],
Packit fd8b60
krb5_cv_func_$2_noproto=yes,krb5_cv_func_$2_noproto=no))
Packit fd8b60
if test $krb5_cv_func_$2_noproto = yes; then
Packit fd8b60
	AC_DEFINE([NEED_]translit($2, [a-z], [A-Z])[_PROTO], 1, dnl
Packit fd8b60
[define if the system header files are missing prototype for $2()])
Packit fd8b60
fi
Packit fd8b60
ifelse([$3], ,[fi])
Packit fd8b60
])
Packit fd8b60
dnl
Packit fd8b60
dnl =============================================================
Packit fd8b60
dnl Internal function for testing for getpeername prototype
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN([KRB5_GETPEERNAME_ARGS],[
Packit fd8b60
AC_DEFINE([GETPEERNAME_ARG3_TYPE],GETSOCKNAME_ARG3_TYPE,[Type of getpeername second argument.])
Packit fd8b60
])
Packit fd8b60
dnl
Packit fd8b60
dnl =============================================================
Packit fd8b60
dnl Internal function for testing for getsockname arguments
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN([TRY_GETSOCK_INT],[
Packit fd8b60
krb5_lib_var=`echo "$1 $2" | sed 'y% ./+-*%___p_p%'`
Packit fd8b60
AC_MSG_CHECKING([if getsockname() takes arguments $1 and $2])
Packit fd8b60
AC_CACHE_VAL(krb5_cv_getsockname_proto_$krb5_lib_var,
Packit fd8b60
[
Packit fd8b60
AC_TRY_COMPILE([#include <sys/types.h>
Packit fd8b60
#include <sys/socket.h>
Packit fd8b60
extern int getsockname(int, $1, $2);
Packit fd8b60
],,eval "krb5_cv_getsockname_proto_$krb5_lib_var=yes",
Packit fd8b60
    eval "krb5_cv_getsockname_proto_$krb5_lib_var=no")])
Packit fd8b60
if eval "test \"`echo '$krb5_cv_getsockname_proto_'$krb5_lib_var`\" = yes"; then
Packit fd8b60
	AC_MSG_RESULT(yes)
Packit fd8b60
	sock_set=yes; res1="$1"; res2="$2"
Packit fd8b60
else
Packit fd8b60
	AC_MSG_RESULT(no)
Packit fd8b60
fi
Packit fd8b60
])
Packit fd8b60
dnl
Packit fd8b60
dnl Determines the types of the second and third arguments to getsockname().
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN([KRB5_GETSOCKNAME_ARGS],[
Packit fd8b60
sock_set=no
Packit fd8b60
for sock_arg1 in "struct sockaddr *" "void *"
Packit fd8b60
do
Packit fd8b60
  for sock_arg2 in "size_t *" "int *" "socklen_t *"
Packit fd8b60
  do
Packit fd8b60
	if test $sock_set = no; then
Packit fd8b60
	  TRY_GETSOCK_INT($sock_arg1, $sock_arg2)
Packit fd8b60
	fi
Packit fd8b60
  done 
Packit fd8b60
done
Packit fd8b60
if test "$sock_set" = no; then
Packit fd8b60
  AC_MSG_NOTICE(assuming struct sockaddr and socklen_t for getsockname args)
Packit fd8b60
  res1="struct sockaddr *"
Packit fd8b60
  res2="socklen_t *"
Packit fd8b60
fi
Packit fd8b60
res1=`echo "$res1" | tr -d '*' | sed -e 's/ *$//'`
Packit fd8b60
res2=`echo "$res2" | tr -d '*' | sed -e 's/ *$//'`
Packit fd8b60
AC_DEFINE_UNQUOTED([GETSOCKNAME_ARG3_TYPE],$res2,[Type of pointer target for argument 3 to getsockname])
Packit fd8b60
])
Packit fd8b60
dnl
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN([KRB5_AC_CHOOSE_ET],[
Packit fd8b60
AC_ARG_WITH([system-et],
Packit fd8b60
AC_HELP_STRING(--with-system-et,use system compile_et and -lcom_err @<:@default: build and install a local version@:>@))
Packit fd8b60
AC_MSG_CHECKING(which version of com_err to use)
Packit fd8b60
if test "x$with_system_et" = xyes ; then
Packit fd8b60
  # This will be changed to "intlsys" if textdomain support is present.
Packit fd8b60
  COM_ERR_VERSION=sys
Packit fd8b60
  AC_MSG_RESULT(system)
Packit fd8b60
else
Packit fd8b60
  COM_ERR_VERSION=k5
Packit fd8b60
  AC_MSG_RESULT(krb5)
Packit fd8b60
fi
Packit fd8b60
if test $COM_ERR_VERSION = sys; then
Packit fd8b60
  # check for various functions we need
Packit fd8b60
  AC_CHECK_LIB(com_err, add_error_table, :, AC_MSG_ERROR(cannot find add_error_table in com_err library))
Packit fd8b60
  AC_CHECK_LIB(com_err, remove_error_table, :, AC_MSG_ERROR(cannot find remove_error_table in com_err library))
Packit fd8b60
  # make sure compile_et provides "et_foo" name
Packit fd8b60
  cat >> conf$$e.et <
Packit fd8b60
error_table foo
Packit fd8b60
error_code ERR_FOO, "foo"
Packit fd8b60
end
Packit fd8b60
EOF
Packit fd8b60
  AC_CHECK_PROGS(compile_et,compile_et,false)
Packit fd8b60
  if test "$compile_et" = false; then
Packit fd8b60
    AC_MSG_ERROR(cannot find compile_et)
Packit fd8b60
  fi
Packit fd8b60
  AC_CACHE_CHECK(whether compile_et is useful,krb5_cv_compile_et_useful,[
Packit fd8b60
  if compile_et conf$$e.et >/dev/null 2>&1 ; then true ; else
Packit fd8b60
    AC_MSG_ERROR(execution failed)
Packit fd8b60
  fi
Packit fd8b60
  AC_TRY_COMPILE([#include "conf$$e.h"
Packit fd8b60
      		 ],[ &et_foo_error_table; ],:,
Packit fd8b60
		 [AC_MSG_ERROR(cannot use et_foo_error_table)])
Packit fd8b60
  # Anything else we need to test for?
Packit fd8b60
  rm -f conf$$e.c conf$$e.h
Packit fd8b60
  krb5_cv_compile_et_useful=yes
Packit fd8b60
  ])
Packit fd8b60
  AC_CACHE_CHECK(whether compile_et supports --textdomain,
Packit fd8b60
                 krb5_cv_compile_et_textdomain,[
Packit fd8b60
  krb5_cv_compile_et_textdomain=no
Packit fd8b60
  if compile_et --textdomain=xyzw conf$$e.et >/dev/null 2>&1 ; then
Packit fd8b60
    if grep -q xyzw conf$$e.c; then
Packit fd8b60
      krb5_cv_compile_et_textdomain=yes
Packit fd8b60
    fi
Packit fd8b60
  fi
Packit fd8b60
  rm -f conf$$e.c conf$$e.h
Packit fd8b60
  ])
Packit fd8b60
  if test "$krb5_cv_compile_et_textdomain" = yes; then
Packit fd8b60
    COM_ERR_VERSION=intlsys
Packit fd8b60
  fi
Packit fd8b60
  rm -f conf$$e.et
Packit fd8b60
fi
Packit fd8b60
AC_SUBST(COM_ERR_VERSION)
Packit fd8b60
if test "$COM_ERR_VERSION" = k5 -o "$COM_ERR_VERSION" = intlsys; then
Packit fd8b60
  AC_DEFINE(HAVE_COM_ERR_INTL,1,
Packit fd8b60
            [Define if com_err has compatible gettext support])
Packit fd8b60
fi
Packit fd8b60
])
Packit fd8b60
AC_DEFUN([KRB5_AC_CHOOSE_SS],[
Packit fd8b60
AC_ARG_WITH(system-ss,
Packit fd8b60
	    AC_HELP_STRING(--with-system-ss,use system -lss and mk_cmds @<:@private version@:>@))
Packit fd8b60
AC_ARG_VAR(SS_LIB,[system libraries for 'ss' package [-lss]])
Packit fd8b60
AC_MSG_CHECKING(which version of subsystem package to use)
Packit fd8b60
if test "x$with_system_ss" = xyes ; then
Packit fd8b60
  SS_VERSION=sys
Packit fd8b60
  AC_MSG_RESULT(system)
Packit fd8b60
  # todo: check for various libraries we might need
Packit fd8b60
  # in the meantime...
Packit fd8b60
  test "x${SS_LIB+set}" = xset || SS_LIB=-lss
Packit fd8b60
  old_LIBS="$LIBS"
Packit fd8b60
  LIBS="$LIBS $SS_LIB"
Packit fd8b60
  AC_CACHE_CHECK(whether system ss package works, krb5_cv_system_ss_okay,[
Packit fd8b60
  AC_TRY_RUN([
Packit fd8b60
#include <ss/ss.h>
Packit fd8b60
int main(int argc, char *argv[]) {
Packit fd8b60
  if (argc == 42) {
Packit fd8b60
    int i, err;
Packit fd8b60
    i = ss_create_invocation("foo","foo","",0,&err;;
Packit fd8b60
    ss_listen(i);
Packit fd8b60
  }
Packit fd8b60
  return 0;
Packit fd8b60
}], krb5_cv_system_ss_okay=yes, AC_MSG_ERROR(cannot run test program),
Packit fd8b60
  krb5_cv_system_ss_okay="assumed")])
Packit fd8b60
  LIBS="$old_LIBS"
Packit fd8b60
  KRB5_NEED_PROTO([#include <ss/ss.h>],ss_execute_command,1)
Packit fd8b60
else
Packit fd8b60
  SS_VERSION=k5
Packit fd8b60
  AC_MSG_RESULT(krb5)
Packit fd8b60
fi
Packit fd8b60
AC_SUBST(SS_LIB)
Packit fd8b60
AC_SUBST(SS_VERSION)
Packit fd8b60
])
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN([KRB5_AC_CHOOSE_DB],[
Packit fd8b60
AC_ARG_WITH(system-db,
Packit fd8b60
	    AC_HELP_STRING(--with-system-db,use system Berkeley db @<:@private version@:>@))
Packit fd8b60
AC_ARG_VAR(DB_HEADER,[header file for system Berkeley db package [db.h]])
Packit fd8b60
AC_ARG_VAR(DB_LIB,[library for system Berkeley db package [-ldb]])
Packit fd8b60
if test "x$with_system_db" = xyes ; then
Packit fd8b60
  DB_VERSION=sys
Packit fd8b60
  # TODO: Do we have specific routines we should check for?
Packit fd8b60
  # How about known, easily recognizable bugs?
Packit fd8b60
  # We want to use bt_rseq in some cases, but no other version but
Packit fd8b60
  # ours has it right now.
Packit fd8b60
  #
Packit fd8b60
  # Okay, check the variables.
Packit fd8b60
  test "x${DB_HEADER+set}" = xset || DB_HEADER=db.h
Packit fd8b60
  test "x${DB_LIB+set}" = xset || DB_LIB=-ldb
Packit fd8b60
  #
Packit fd8b60
  if test "x${DB_HEADER}" = xdb.h ; then
Packit fd8b60
    DB_HEADER_VERSION=sys
Packit fd8b60
  else
Packit fd8b60
    DB_HEADER_VERSION=redirect
Packit fd8b60
  fi
Packit fd8b60
  KDB5_DB_LIB="$DB_LIB"
Packit fd8b60
else
Packit fd8b60
  DB_VERSION=k5
Packit fd8b60
  AC_DEFINE(HAVE_BT_RSEQ,1,[Define if bt_rseq is available, for recursive btree traversal.])
Packit fd8b60
  DB_HEADER=db.h
Packit fd8b60
  DB_HEADER_VERSION=k5
Packit fd8b60
  # libdb gets sucked into libkdb
Packit fd8b60
  KDB5_DB_LIB=
Packit fd8b60
  # needed for a couple of things that need libdb for its own sake
Packit fd8b60
  DB_LIB=-ldb
Packit fd8b60
fi
Packit fd8b60
AC_SUBST(DB_VERSION)
Packit fd8b60
AC_SUBST(DB_HEADER)
Packit fd8b60
AC_SUBST(DB_HEADER_VERSION)
Packit fd8b60
AC_SUBST(DB_LIB)
Packit fd8b60
AC_SUBST(KDB5_DB_LIB)
Packit fd8b60
])
Packit fd8b60
dnl
Packit fd8b60
dnl KRB5_AC_PRIOCNTL_HACK
Packit fd8b60
dnl
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN([KRB5_AC_PRIOCNTL_HACK],
Packit fd8b60
[AC_REQUIRE([AC_PROG_AWK])dnl
Packit fd8b60
AC_REQUIRE([AC_LANG_COMPILER_REQUIRE])dnl
Packit fd8b60
AC_CACHE_CHECK([whether to use priocntl hack], [krb5_cv_priocntl_hack],
Packit fd8b60
[case $krb5_cv_host in
Packit fd8b60
*-*-solaris2.9*)
Packit fd8b60
	if test "$cross_compiling" = yes; then
Packit fd8b60
		krb5_cv_priocntl_hack=yes
Packit fd8b60
	else
Packit fd8b60
		# Solaris patch 117171-11 (sparc) or 117172-11 (x86)
Packit fd8b60
		# fixes the Solaris 9 bug where final pty output
Packit fd8b60
		# gets lost on close.
Packit fd8b60
		if showrev -p | $AWK 'BEGIN { e = 1 }
Packit fd8b60
/Patch: 11717[[12]]/ { x = index[]([$]2, "-");
Packit fd8b60
if (substr[]([$]2, x + 1, length([$]2) - x) >= 11)
Packit fd8b60
{ e = 0 } else { e = 1 } }
Packit fd8b60
END { exit e; }'; then
Packit fd8b60
			krb5_cv_priocntl_hack=no
Packit fd8b60
		else
Packit fd8b60
			krb5_cv_priocntl_hack=yes
Packit fd8b60
		fi
Packit fd8b60
	fi
Packit fd8b60
	;;
Packit fd8b60
*)
Packit fd8b60
	krb5_cv_priocntl_hack=no
Packit fd8b60
	;;
Packit fd8b60
esac])
Packit fd8b60
if test "$krb5_cv_priocntl_hack" = yes; then
Packit fd8b60
	PRIOCNTL_HACK=1
Packit fd8b60
else
Packit fd8b60
	PRIOCNTL_HACK=0
Packit fd8b60
fi
Packit fd8b60
AC_SUBST(PRIOCNTL_HACK)])
Packit fd8b60
dnl
Packit fd8b60
dnl
Packit fd8b60
dnl KRB5_AC_GCC_ATTRS
Packit fd8b60
AC_DEFUN([KRB5_AC_GCC_ATTRS],
Packit fd8b60
[AC_CACHE_CHECK([for constructor/destructor attribute support],krb5_cv_attr_constructor_destructor,
Packit fd8b60
[rm -f conftest.1 conftest.2
Packit fd8b60
if test -r conftest.1 || test -r conftest.2 ; then
Packit fd8b60
  AC_MSG_ERROR(write error in local file system?)
Packit fd8b60
fi
Packit fd8b60
true > conftest.1
Packit fd8b60
true > conftest.2
Packit fd8b60
if test -r conftest.1 && test -r conftest.2 ; then true ; else
Packit fd8b60
  AC_MSG_ERROR(write error in local file system?)
Packit fd8b60
fi
Packit fd8b60
a=no
Packit fd8b60
b=no
Packit fd8b60
# blindly assume we have 'unlink'...
Packit fd8b60
AC_TRY_RUN([void foo1() __attribute__((constructor));
Packit fd8b60
void foo1() { unlink("conftest.1"); }
Packit fd8b60
void foo2() __attribute__((destructor));
Packit fd8b60
void foo2() { unlink("conftest.2"); }
Packit fd8b60
int main () { return 0; }],
Packit fd8b60
[test -r conftest.1 || a=yes
Packit fd8b60
test -r conftest.2 || b=yes], , AC_MSG_ERROR(Cannot test for constructor/destructor support when cross compiling))
Packit fd8b60
case $krb5_cv_host in
Packit fd8b60
*-*-aix4.*)
Packit fd8b60
	# Under AIX 4.3.3, at least, shared library destructor functions
Packit fd8b60
	# appear to get executed in reverse link order (right to left),
Packit fd8b60
	# so that a library's destructor function may run after that of
Packit fd8b60
	# libraries it depends on, and may still have to access in the
Packit fd8b60
	# destructor.
Packit fd8b60
	#
Packit fd8b60
	# That counts as "not working", for me, but it's a much more
Packit fd8b60
	# complicated test case to set up.
Packit fd8b60
	b=no
Packit fd8b60
	;;
Packit fd8b60
esac
Packit fd8b60
krb5_cv_attr_constructor_destructor="$a,$b"
Packit fd8b60
])
Packit fd8b60
# Okay, krb5_cv_... should be set now.
Packit fd8b60
case $krb5_cv_attr_constructor_destructor in
Packit fd8b60
  yes,*)
Packit fd8b60
    AC_DEFINE(CONSTRUCTOR_ATTR_WORKS,1,[Define if __attribute__((constructor)) works]) ;;
Packit fd8b60
esac
Packit fd8b60
case $krb5_cv_attr_constructor_destructor in
Packit fd8b60
  *,yes)
Packit fd8b60
    AC_DEFINE(DESTRUCTOR_ATTR_WORKS,1,[Define if __attribute__((destructor)) works]) ;;
Packit fd8b60
esac
Packit fd8b60
dnl End of attributes we care about right now.
Packit fd8b60
])
Packit fd8b60
dnl
Packit fd8b60
dnl
Packit fd8b60
dnl KRB5_AC_PRAGMA_WEAK_REF
Packit fd8b60
AC_DEFUN([KRB5_AC_PRAGMA_WEAK_REF],
Packit fd8b60
[AC_CACHE_CHECK([whether pragma weak references are supported],
Packit fd8b60
krb5_cv_pragma_weak_ref,
Packit fd8b60
[AC_TRY_LINK([#pragma weak flurbl
Packit fd8b60
extern int flurbl(void);],[if (&flurbl != 0) return flurbl();],
Packit fd8b60
krb5_cv_pragma_weak_ref=yes,krb5_cv_pragma_weak_ref=no)])
Packit fd8b60
if test $krb5_cv_pragma_weak_ref = yes ; then
Packit fd8b60
  AC_DEFINE(HAVE_PRAGMA_WEAK_REF,1,[Define if #pragma weak references work])
Packit fd8b60
fi])
Packit fd8b60
dnl
Packit fd8b60
dnl
Packit fd8b60
m4_include(config/ac-archive/ax_pthread.m4)
Packit fd8b60
m4_include(config/ac-archive/ax_recursive_eval.m4)
Packit fd8b60
m4_include(config/pkg.m4)
Packit fd8b60
dnl
Packit fd8b60
dnl
Packit fd8b60
dnl
Packit fd8b60
dnl --with-ldap=value
Packit fd8b60
dnl
Packit fd8b60
AC_DEFUN(WITH_LDAP,[
Packit fd8b60
AC_ARG_WITH([ldap],
Packit fd8b60
[  --with-ldap             compile OpenLDAP database backend module],
Packit fd8b60
[case "$withval" in
Packit fd8b60
    OPENLDAP) with_ldap=yes ;;
Packit fd8b60
    yes | no) ;;
Packit fd8b60
    *)  AC_MSG_ERROR(Invalid option value --with-ldap="$withval") ;;
Packit fd8b60
esac], with_ldap=no)dnl
Packit fd8b60
Packit fd8b60
if test "$with_ldap" = yes; then
Packit fd8b60
  AC_MSG_NOTICE(enabling OpenLDAP database backend module support)
Packit fd8b60
  OPENLDAP_PLUGIN=yes
Packit fd8b60
fi
Packit fd8b60
])dnl