K5_AC_INIT([aclocal.m4]) dnl dnl autoconf 2.49 defaults to a /dev/null cache file, which is what we dnl do not want for performance reasons. if test "x$cache_file" = "x/dev/null"; then cache_file=./config.cache AC_CACHE_LOAD fi dnl CONFIG_RULES KRB5_VERSION=K5_VERSION AC_SUBST(KRB5_VERSION) dnl dnl AC_REQUIRE_CPP dnl AC_CACHE_CHECK(if va_copy is available, krb5_cv_va_copy, [AC_LINK_IFELSE([ #include void f(va_list ap) { va_list ap2; va_copy(ap2, ap); va_end(ap2); } va_list x; int main() { f(x); return 0; }], krb5_cv_va_copy=yes, krb5_cv_va_copy=no)]) if test "$krb5_cv_va_copy" = yes; then AC_DEFINE(HAS_VA_COPY,1,[Define if va_copy macro or function is available.]) fi dnl dnl Note that this isn't checking if the copied value *works*, just dnl whether the C language constraints permit the copying. If dnl va_list is defined as an array type, it can't be assigned. AC_CACHE_CHECK(if va_list objects can be copied by assignment, krb5_cv_va_simple_copy, [AC_COMPILE_IFELSE([ #include void f(va_list va2) { va_list va1; va1 = va2; }], krb5_cv_va_simple_copy=yes, krb5_cv_va_simple_copy=no)]) if test "$krb5_cv_va_simple_copy" = yes; then AC_DEFINE(CAN_COPY_VA_LIST,1,[Define if va_list objects can be simply copied by assignment.]) fi dnl dnl The following lines are so that configure --help gives some global dnl configuration options. dnl KRB5_LIB_AUX AC_KRB5_TCL AC_ARG_ENABLE([athena], [ --enable-athena build with MIT Project Athena configuration],,) dnl if test -z "$KRB4_LIB"; then kadminv4="" krb524="" libkrb4="" KRB4="" else kadminv4=kadmin.v4 krb524=krb524 libkrb4=lib/krb4 KRB4=krb4 fi AC_SUBST(KRB4) AC_SUBST(krb524) dnl dnl Begin autoconf tests for the Makefiles generated out of the top-level dnl configure.in... dnl AC_CHECK_FUNCS(memmove) KRB5_BUILD_LIBOBJS KRB5_BUILD_LIBRARY KRB5_BUILD_PROGRAM dnl for slave AC_TYPE_MODE_T AC_PROG_INSTALL KRB5_AC_NEED_DAEMON KRB5_GETSOCKNAME_ARGS KRB5_GETPEERNAME_ARGS LIBUTIL= AC_CHECK_LIB(util,main,[AC_DEFINE(HAVE_LIBUTIL,1,[Define if the util library is available]) LIBUTIL=-lutil ]) AC_SUBST(LIBUTIL) dnl for kdc AC_CHECK_HEADERS(syslog.h stdarg.h sys/select.h sys/sockio.h ifaddrs.h unistd.h) AC_CHECK_FUNCS(openlog syslog closelog strftime vsprintf vasprintf vsnprintf) KRB5_NEED_PROTO([#include #include ],vasprintf) KRB5_NEED_PROTO([#include #ifdef HAVE_UNISTD_H #include #endif /* Solaris 8 declares swab in stdlib.h. */ #include ],swab,1) dnl AC_PROG_AWK KRB5_AC_INET6 KRB5_SOCKADDR_SA_LEN CHECK_SIGNALS dnl dnl --with-vague-errors disables useful error messages. dnl AC_ARG_WITH([vague-errors], AC_HELP_STRING([--with-vague-errors],[Do not @<:@do@:>@ send helpful errors to client]), , withval=no)dnl if test "$withval" = yes; then AC_MSG_RESULT(Supplying vague error messages to KDC clients) AC_DEFINE(KRBCONF_VAGUE_ERRORS,1,[Define if the KDC should return only vague error codes to clients]) fi dnl dnl --with-kdc-kdb-update makes the KDC update the database with last request dnl information and failure information. dnl AC_ARG_WITH([kdc-kdb-update], AC_HELP_STRING([--with-kdc-kdb-update],[Update the database @<:@don't update@:>@]), , withval=no)dnl if test "$withval" = yes; then AC_MSG_RESULT(Updating KDC database with each request) AC_DEFINE(KRBCONF_KDC_MODIFIES_KDB,1,[Define if KDC should update database with each request]) fi dnl dnl Needed for hw-preauth replay detection on KDC. dnl dnl USE_RCACHE enables the replay cache dnl NOCACHE disables the lookaside cache dnl dnl The lookaside cache is checked first; if *exactly* the same message dnl comes in twice, e.g., because the (legitimate) client resent it, dnl the previous response will be resent. Otherwise, the replay cache dnl is used to check for attempts to fake out the KDC. Some hardware dnl preauth methods are weak enough that we *really* want to have this dnl checking turned on. dnl AC_ARG_ENABLE([kdc-replay-cache], AC_HELP_STRING([--enable-kdc-replay-cache],[check for replayed/retransmitted KDC requests (recommended when hardware preauthentication is in use) @<:@disabled@:>@]), , enableval=yes)dnl if test "$enableval" = yes ; then AC_DEFINE(USE_RCACHE,1,[Define if the KDC should use a replay cache]) else AC_DEFINE(NOCACHE,1,[Define if the KDC should use no replay cache]) fi AC_ARG_ENABLE([fakeka], AC_HELP_STRING([--enable-fakeka],[build the Fake KA server (emulates an AFS kaserver) @<:@default: don't build@:>@]), , enableval=no)dnl if test "$enableval" = yes; then FAKEKA=fakeka else FAKEKA= fi AC_SUBST(FAKEKA) KRB5_RUN_FLAGS dnl dnl for krb524 AC_TYPE_SIGNAL dnl dnl from old include/configure.in AH_TEMPLATE([HAVE_STRUCT_SOCKADDR_STORAGE], [Define if "struct sockaddr_storage" is available.]) dnl AC_CONFIG_HEADERS(include/autoconf.h, [echo timestamp > include/autoconf.stamp]) AC_PROG_INSTALL AC_PROG_AWK AC_PROG_LEX AC_C_CONST AC_HEADER_DIRENT AC_CHECK_FUNCS(strdup setvbuf inet_ntoa inet_aton seteuid setresuid setreuid setegid setresgid setregid setsid flock fchmod chmod strftime strptime geteuid setenv unsetenv getenv gethostbyname2 getifaddrs gmtime_r localtime_r pthread_mutex_lock sched_yield bswap16 bswap64 mkstemp getusershell lstat access ftime getcwd srand48 srand srandom stat strchr strerror strerror_r strstr timezone umask waitpid sem_init sem_trywait daemon) dnl EXTRA_SUPPORT_SYMS= AC_CHECK_FUNC(mkstemp, [MKSTEMP_ST_OBJ= MKSTEMP_OBJ=], [MKSTEMP_ST_OBJ='mkstemp.o' MKSTEMP_OBJ='$(OUTPRE)mkstemp.$(OBJEXT)' EXTRA_SUPPORT_SYMS="$EXTRA_SUPPORT_SYMS krb5int_mkstemp"]) AC_SUBST(MKSTEMP_OBJ) AC_SUBST(MKSTEMP_ST_OBJ) AC_SUBST(EXTRA_SUPPORT_SYMS) dnl AC_HEADER_STDARG DECLARE_SYS_ERRLIST AC_CHECK_HEADERS(unistd.h paths.h regex.h regexpr.h fcntl.h memory.h ifaddrs.h sys/filio.h sched.h byteswap.h machine/endian.h machine/byte_order.h sys/bswap.h endian.h pwd.h arpa/inet.h alloca.h dlfcn.h limits.h pthread.h semaphore.h krb_db.h kdc.h) AC_CHECK_HEADER(regexp.h, [], [], [#define INIT char *sp = instring; #define GETC() (*sp++) #define PEEKC() (*sp) #define UNGETC(c) (--sp) #define RETURN(c) return(c) #define ERROR(c) ]) AC_CHECK_MEMBERS([struct sockaddr_in.sin_len, struct sockaddr.sa_len], , , [#include #include ]) AC_CHECK_MEMBERS([struct stat.st_mtimensec,struct stat.st_mtimespec.tv_nsec,struct stat.st_mtim.tv_nsec],,,[#include #include ]) KRB5_AC_REGEX_FUNCS AC_TYPE_OFF_T dnl dnl Fancy caching of perror result... AC_MSG_CHECKING(for perror declaration) AC_CACHE_VAL(krb5_cv_decl_perror, [AC_EGREP_HEADER(perror, errno.h, krb5_cv_decl_perror=yes, krb5_cv_decl_perror=no)])dnl AC_MSG_RESULT($krb5_cv_decl_perror) if test $krb5_cv_decl_perror = yes; then AC_DEFINE(HDR_HAS_PERROR,1,[Define if errno.h declares perror]) fi dnl KRB5_NEED_PROTO([#include ],strptime) CHECK_WAIT_TYPE CHECK_SIGPROCMASK AC_TYPE_GETGROUPS CHECK_SETJMP dnl dnl *rpcent return types needed for lib/rpc dnl AC_MSG_CHECKING([return type of setrpcent]) AC_CACHE_VAL(k5_cv_type_setrpcent, [AC_TRY_COMPILE([#include #ifdef __cplusplus extern "C" #endif extern void setrpcent();], [int i;], k5_cv_type_setrpcent=void, k5_cv_type_setrpcent=int)])dnl AC_MSG_RESULT($k5_cv_type_setrpcent) AC_DEFINE_UNQUOTED(SETRPCENT_TYPE, $k5_cv_type_setrpcent, [Define as return type of setrpcent]) dnl AC_MSG_CHECKING([return type of endrpcent]) AC_CACHE_VAL(k5_cv_type_endrpcent, [AC_TRY_COMPILE([#include #ifdef __cplusplus extern "C" #endif extern void endrpcent();], [int i;], k5_cv_type_endrpcent=void, k5_cv_type_endrpcent=int)])dnl AC_MSG_RESULT($k5_cv_type_endrpcent) AC_DEFINE_UNQUOTED(ENDRPCENT_TYPE, $k5_cv_type_endrpcent, [Define as return type of endrpcent]) dnl dnl dnl bswap_16 is a macro in byteswap.h under GNU libc AC_MSG_CHECKING(for bswap_16) AC_CACHE_VAL(krb5_cv_bswap_16,[ AC_TRY_LINK([#if HAVE_BYTESWAP_H #include #endif],[bswap_16(37);],krb5_cv_bswap_16=yes,krb5_cv_bswap_16=no)]) AC_MSG_RESULT($krb5_cv_bswap_16) if test "$krb5_cv_bswap_16" = yes; then AC_DEFINE(HAVE_BSWAP_16,1,[Define to 1 if bswap_16 is available via byteswap.h]) fi AC_MSG_CHECKING(for bswap_64) AC_CACHE_VAL(krb5_cv_bswap_64,[ AC_TRY_LINK([#if HAVE_BYTESWAP_H #include #endif],[bswap_64(37);],krb5_cv_bswap_64=yes,krb5_cv_bswap_64=no)]) AC_MSG_RESULT($krb5_cv_bswap_64) if test "$krb5_cv_bswap_64" = yes; then AC_DEFINE(HAVE_BSWAP_64,1,[Define to 1 if bswap_64 is available via byteswap.h]) fi dnl dnl Needed for ksu and some appl stuff. dnl case $krb5_cv_host in alpha*-dec-osf*) AC_CHECK_LIB(security,setluid, AC_DEFINE(HAVE_SETLUID,1,[Define if setluid provided in OSF/1 security library]) KSU_LIBS="-lsecurity" ) ;; esac AC_SUBST(KSU_LIBS) dnl if test $ac_cv_func_setenv = no || test $ac_cv_func_unsetenv = no \ || test $ac_cv_func_getenv = no; then SETENVOBJ=setenv.o else SETENVOBJ= fi AC_SUBST(SETENVOBJ) dnl dnl Check what the return types for gethostbyname_r and getservbyname_r are. dnl AC_CHECK_FUNC(gethostbyname_r,[ ac_cv_func_gethostbyname_r=yes if test "$ac_cv_func_gethostbyname_r" = yes; then AC_MSG_CHECKING([if gethostbyname_r returns an int]) AC_CACHE_VAL(krb5_cv_gethostbyname_r_returns_int, [AC_TRY_COMPILE([#include extern int gethostbyname_r ();], [1;], krb5_cv_gethostbyname_r_returns_int=yes, krb5_cv_gethostbyname_r_returns_int=no)]) AC_MSG_RESULT($krb5_cv_gethostbyname_r_returns_int) AC_MSG_CHECKING([if gethostbyname_r returns a pointer]) AC_CACHE_VAL(krb5_cv_gethostbyname_r_returns_ptr, [AC_TRY_COMPILE([#include extern struct hostent *gethostbyname_r ();], [1;], krb5_cv_gethostbyname_r_returns_ptr=yes, krb5_cv_gethostbyname_r_returns_ptr=no)]) AC_MSG_RESULT($krb5_cv_gethostbyname_r_returns_ptr) if test "$krb5_cv_gethostbyname_r_returns_int" = "$krb5_cv_gethostbyname_r_returns_ptr"; then AC_MSG_WARN(cannot determine return type of gethostbyname_r -- disabling) ac_cv_func_gethostbyname_r=no fi if test "$krb5_cv_gethostbyname_r_returns_int" = yes; then AC_DEFINE(GETHOSTBYNAME_R_RETURNS_INT, 1, [Define if gethostbyname_r returns int rather than struct hostent * ]) fi fi if test "$ac_cv_func_gethostbyname_r" = yes; then AC_DEFINE(HAVE_GETHOSTBYNAME_R, 1, [Define if gethostbyname_r exists and its return type is known]) AC_CHECK_FUNC(gethostbyaddr_r) fi ]) dnl AC_CHECK_FUNC(getpwnam_r,ac_cv_func_getpwnam_r=yes,ac_cv_func_getpwnam_r=no) AC_CHECK_FUNC(getpwuid_r,ac_cv_func_getpwuid_r=yes,ac_cv_func_getpwuid_r=no) if test "$ac_cv_func_getpwnam_r" = yes; then AC_MSG_CHECKING([return type of getpwnam_r]) AC_CACHE_VAL(krb5_cv_getpwnam_r_return_type, [AC_TRY_COMPILE([#include extern int getpwnam_r();], [1;], getpwnam_r_returns_int=yes,getpwnam_r_returns_int=no) AC_TRY_COMPILE([#include extern struct passwd *getpwnam_r();], [1;], getpwnam_r_returns_ptr=yes,getpwnam_r_returns_ptr=no) case "$getpwnam_r_returns_int/$getpwnam_r_returns_ptr" in yes/no) krb5_cv_getpwnam_r_return_type=int ;; no/yes) krb5_cv_getpwnam_r_return_type=ptr ;; *) krb5_cv_getpwnam_r_return_type=unknown ;; esac]) AC_MSG_RESULT($krb5_cv_getpwnam_r_return_type) if test $krb5_cv_getpwnam_r_return_type = int; then AC_DEFINE(GETPWNAM_R_RETURNS_INT, 1, [Define if getpwnam_r returns an int]) elif test $krb5_cv_getpwnam_r_return_type = unknown; then AC_MSG_WARN([Cannot determine getpwnam_r return type, disabling getpwnam_r]) ac_cv_func_getpwnam_r=no fi fi if test "$ac_cv_func_getpwnam_r" = yes; then AC_MSG_CHECKING([number of arguments to getpwnam_r]) AC_CACHE_VAL(krb5_cv_getpwnam_r_args, [AC_TRY_COMPILE([#include struct passwd pwx; char buf[1024];], [getpwnam_r("", &pwx, buf, sizeof(buf));], args4=yes, args4=no) AC_TRY_COMPILE([#include struct passwd pwx, *p; char buf[1024];], [getpwnam_r("", &pwx, buf, sizeof(buf), &p);], args5=yes, args5=no) case $args4/$args5 in yes/no) krb5_cv_getpwnam_r_args=4 ;; no/yes) krb5_cv_getpwnam_r_args=5 ;; *) krb5_cv_getpwnam_r_args=unknown ;; esac]) AC_MSG_RESULT($krb5_cv_getpwnam_r_args) if test "$krb5_cv_getpwnam_r_args" = unknown; then AC_MSG_WARN([Cannot determine number of arguments to getpwnam_r, disabling its use.]) ac_cv_func_getpwnam_r=no else AC_DEFINE(HAVE_GETPWNAM_R,1,[Define if getpwnam_r is available and useful.]) if test "$krb5_cv_getpwnam_r_args" = 4; then AC_DEFINE(GETPWNAM_R_4_ARGS,1,[Define if getpwnam_r exists but takes only 4 arguments (e.g., POSIX draft 6 implementations like some Solaris releases).]) fi fi fi if test "$ac_cv_func_getpwnam_r" = no && test "$ac_cv_func_getpwuid_r" = yes; then # Actually, we could do this check, and the corresponding checks # for return type and number of arguments, but I doubt we'll run # into a system where we'd get to use getpwuid_r but not getpwnam_r. AC_MSG_NOTICE([getpwnam_r not useful, so disabling getpwuid_r too]) ac_cv_func_getpwuid_r=no fi if test "$ac_cv_func_getpwuid_r" = yes; then AC_DEFINE(HAVE_GETPWUID_R,1,[Define if getpwuid_r is available and useful.]) # Hack: Assume getpwuid_r is the shorter form if getpwnam_r is. if test "$krb5_cv_getpwnam_r_args" = 4; then AC_DEFINE(GETPWUID_R_4_ARGS,1,[Define if getpwuid_r exists but takes only 4 arguments (e.g., POSIX draft 6 implementations like some Solaris releases).]) fi fi if test "$ac_cv_func_gmtime_r" = yes; then AC_MSG_CHECKING([whether gmtime_r returns int]) AC_CACHE_VAL(krb5_cv_gmtime_r_returns_int, [AC_TRY_COMPILE([#include extern int gmtime_r ();], [1;], return_int=yes, return_int=no) AC_TRY_COMPILE([#include extern struct tm *gmtime_r ();], [1;], return_ptr=yes, return_ptr=no) case $return_int/$return_ptr in yes/no) krb5_cv_gmtime_r_returns_int=yes ;; no/yes) krb5_cv_gmtime_r_returns_int=no ;; *) # Can't figure it out, punt the function. ac_cv_func_gmtime_r=no ;; esac]) if test "$ac_cv_func_gmtime_r" = no; then AC_MSG_RESULT(unknown -- ignoring gmtime_r) else AC_MSG_RESULT($krb5_cv_gmtime_r_returns_int) if test "$krb5_cv_gmtime_r_returns_int" = yes; then AC_DEFINE(GMTIME_R_RETURNS_INT,1,[Define if gmtime_r returns int instead of struct tm pointer, as on old HP-UX systems.]) fi fi fi AC_CHECK_FUNC(getservbyname_r,[ ac_cv_func_getservbyname_r=yes if test "$ac_cv_func_getservbyname_r" = yes; then AC_MSG_CHECKING([if getservbyname_r returns an int]) AC_CACHE_VAL(krb5_cv_getservbyname_r_returns_int, [AC_TRY_COMPILE([#include extern int getservbyname_r ();], [1;], krb5_cv_getservbyname_r_returns_int=yes, krb5_cv_getservbyname_r_returns_int=no)]) AC_MSG_RESULT($krb5_cv_getservbyname_r_returns_int) AC_MSG_CHECKING([if getservbyname_r returns a pointer]) AC_CACHE_VAL(krb5_cv_getservbyname_r_returns_ptr, [AC_TRY_COMPILE([#include extern struct servent *getservbyname_r ();], [1;], krb5_cv_getservbyname_r_returns_ptr=yes, krb5_cv_getservbyname_r_returns_ptr=no)]) AC_MSG_RESULT($krb5_cv_getservbyname_r_returns_ptr) if test "$krb5_cv_getservbyname_r_returns_int" = "$krb5_cv_getservbyname_r_returns_ptr"; then AC_MSG_WARN(cannot determine return type of getservbyname_r -- disabling) ac_cv_func_getservbyname_r=no fi if test "$krb5_cv_getservbyname_r_returns_int" = yes; then AC_DEFINE(GETSERVBYNAME_R_RETURNS_INT, 1, [Define if getservbyname_r returns int rather than struct servent * ]) fi fi if test "$ac_cv_func_getservbyname_r" = yes; then AC_DEFINE(HAVE_GETSERVBYNAME_R, 1, [Define if getservbyname_r exists and its return type is known]) AC_CHECK_FUNC(getservbyport_r) fi ]) dnl HAVE_YYLINENO CHECK_DIRENT AC_TYPE_UID_T AC_TYPE_MODE_T dnl AC_CHECK_HEADER(termios.h,dnl [AC_CHECK_FUNC([tcsetattr],dnl AC_DEFINE(POSIX_TERMIOS,1,[Define if termios.h exists and tcsetattr exists]))]) dnl KRB5_SIGTYPE AC_CHECK_HEADERS(stdlib.h string.h stddef.h sys/types.h sys/file.h sys/param.h sys/stat.h sys/time.h netinet/in.h sys/uio.h sys/filio.h sys/select.h time.h paths.h errno.h) AC_HEADER_STDARG KRB5_AC_INET6 dnl dnl If compiling with IPv6 support, test if in6addr_any functions. dnl Irix 6.5.16 defines it, but lacks support in the C library. if test $krb5_cv_inet6 = yes || test "$krb5_cv_inet6_with_dinet6" = yes ; then AC_CACHE_CHECK([for in6addr_any definition in library], krb5_cv_var_in6addr_any, [AC_TRY_LINK([ #ifdef HAVE_SYS_TYPES_H #include #endif #include #include #include ],[ struct sockaddr_in6 in; in.sin6_addr = in6addr_any; printf("%x", &in); ],krb5_cv_var_in6addr_any=yes, krb5_cv_var_in6addr_any=no)]) if test $krb5_cv_var_in6addr_any = no; then AC_DEFINE(NEED_INSIXADDR_ANY,1,[Define if in6addr_any is not defined in libc]) fi fi dnl dnl dnl check for ANSI stdio, esp "b" option to fopen(). This (unfortunately) dnl requires a run check... dnl AC_MSG_CHECKING([for ANSI stdio]) AC_CACHE_VAL(krb5_cv_has_ansi_stdio, [AC_TRY_RUN( [#include int main() { FILE *conftest; if ((conftest = fopen("conftest.dat", "w")) == NULL) exit(1); if (fclose(conftest)) exit(1); if ((conftest = fopen("conftest.dat", "rb+")) == NULL) exit(1); if (fputs("testing ANSI for stdio\n", conftest) == EOF) exit(1); exit(0); }], krb5_cv_has_ansi_stdio=yes, krb5_cv_has_ansi_stdio=no, krb5_cv_has_ansi_stdio=yes)])dnl assume ANSI in cross environment AC_MSG_RESULT($krb5_cv_has_ansi_stdio) if test $krb5_cv_has_ansi_stdio = yes; then AC_DEFINE(ANSI_STDIO,1,[Define if ANSI stdio is present (in particular "b" option to fopen)]) fi dnl dnl then from osconf.h, we have dnl AC_HEADER_TIME AC_CHECK_TYPE(time_t, long) dnl dnl Determine where to put the replay cache. dnl AC_MSG_CHECKING([for replay cache directory]) AC_CACHE_VAL(krb5_cv_sys_rcdir, [ for t_dir in /var/tmp /usr/tmp /var/usr/tmp /tmp ; do test -d $t_dir || continue krb5_cv_sys_rcdir=$t_dir break done])dnl AC_MSG_RESULT($krb5_cv_sys_rcdir) KRB5_RCTMPDIR=$krb5_cv_sys_rcdir AC_SUBST(KRB5_RCTMPDIR) dnl dnl AC_MSG_CHECKING(for socklen_t) AC_CACHE_VAL(krb5_cv_has_type_socklen_t, [AC_TRY_COMPILE( [#include #include ],[sizeof (socklen_t);], krb5_cv_has_type_socklen_t=yes,krb5_cv_has_type_socklen_t=no)]) AC_MSG_RESULT($krb5_cv_has_type_socklen_t) if test $krb5_cv_has_type_socklen_t = yes; then AC_DEFINE(HAVE_SOCKLEN_T,1,[Define if there is a socklen_t type. If not, probably use size_t]) fi dnl AC_MSG_CHECKING(for struct lifconf) AC_CACHE_VAL(krb5_cv_has_struct_lifconf, [AC_TRY_COMPILE( [#include #include ],[sizeof (struct lifconf);], krb5_cv_has_struct_lifconf=yes,krb5_cv_has_struct_lifconf=no)]) AC_MSG_RESULT($krb5_cv_has_struct_lifconf) if test $krb5_cv_has_struct_lifconf = yes; then AC_DEFINE(HAVE_STRUCT_LIFCONF,1,[Define if there is a struct lifconf.]) fi dnl HP-UX 11 uses stuct if_laddrconf AC_MSG_CHECKING(for struct if_laddrconf) AC_CACHE_VAL(krb5_cv_has_struct_if_laddrconf, [AC_TRY_COMPILE( [#include #include #include ],[sizeof (struct if_laddrconf);], krb5_cv_has_struct_if_laddrconf=yes,krb5_cv_has_struct_if_laddrconf=no)]) AC_MSG_RESULT($krb5_cv_has_struct_if_laddrconf) if test $krb5_cv_has_struct_if_laddrconf = yes; then AC_DEFINE(HAVE_STRUCT_IF_LADDRCONF,1,[Define if there is a struct if_laddrconf.]) fi dnl dnl AC_MSG_CHECKING([for h_errno in netdb.h]) AC_CACHE_VAL(krb5_cv_header_netdb_h_h_errno, [AC_TRY_COMPILE( [#include ], [int x = h_errno;], krb5_cv_header_netdb_h_h_errno=yes, krb5_cv_header_netdb_h_h_errno=no)]) AC_MSG_RESULT($krb5_cv_header_netdb_h_h_errno) if test $krb5_cv_header_netdb_h_h_errno = yes; then AC_DEFINE([HAVE_NETDB_H_H_ERRNO], 1, [Define if netdb.h declares h_errno]) fi dnl dnl AC_ARG_ENABLE([athena], [ --enable-athena build with MIT Project Athena configuration], AC_DEFINE(KRB5_ATHENA_COMPAT,1,[Define if MIT Project Athena default configuration should be used]),) if test "$KRB4_LIB" = ''; then AC_MSG_NOTICE(No Kerberos 4 compatibility) maybe_kerberosIV= else AC_MSG_NOTICE(Kerberos 4 compatibility enabled) maybe_kerberosIV=kerberosIV AC_DEFINE(KRB5_KRB4_COMPAT,1,[Define if Kerberos V4 backwards compatibility should be supported]) fi AC_SUBST(maybe_kerberosIV) dnl AC_C_INLINE AH_TOP([ #ifndef KRB5_AUTOCONF_H #define KRB5_AUTOCONF_H ]) AH_BOTTOM([ #if defined(__GNUC__) && !defined(inline) /* Silence gcc pedantic warnings about ANSI C. */ # define inline __inline__ #endif #endif /* KRB5_AUTOCONF_H */ ]) dnl dnl Not used yet, but let's find out what we've got on the platforms dnl we're working with.... AC_CHECK_HEADERS(inttypes.h stdint.h) AC_CHECK_TYPES([uint32_t, int32_t, uint64_t, int64_t, uint_least32_t, uintptr_t, uintmax_t, long long], , , [ #ifdef HAVE_STDINT_H # include #elif defined(HAVE_INTTYPES_H) # include #endif ]) AC_CHECK_TYPES([struct cmsghdr, struct in_pktinfo, struct in6_pktinfo], , , [ #include #include #include ]) AC_CHECK_TYPES([struct rt_msghdr], , , [ #include #include #include ]) dnl dnl stuff for util/profile dnl dnl AC_KRB5_TCL already done DO_TCL= test "$TCL_LIBS" != "" && DO_TCL=ok AC_SUBST(DO_TCL) dnl dnl types libdb2 wants dnl AC_CHECK_TYPES([ssize_t, u_char, u_int, u_long, u_int8_t, u_int16_t, u_int32_t, int8_t, int16_t, int32_t]) dnl dnl Some libdb2 test programs want a shell that supports functions. FCTSH=false AC_PATH_PROG(SH,sh,false) AC_PATH_PROG(SH5,sh5,false) AC_PATH_PROG(BASH,bash,false) for prog in $SH $SH5 $BASH; do AC_MSG_CHECKING(if $prog supports functions) if $prog -c 'foo() { true; }; foo' >/dev/null 2>&1; then AC_MSG_RESULT(yes) FCTSH=$prog break else AC_MSG_RESULT(no) fi done AC_SUBST(FCTSH) dnl dnl Test for POSIX 2001 *printf support (X/Open System Interfaces extension dnl to ANSI/ISO C 1999 specification). Specifically, positional dnl specifications; not checking for other features like %zx at present. AC_MSG_CHECKING(for POSIX printf positional specification support) AC_CACHE_VAL(ac_cv_printf_positional,[ AC_TRY_RUN([ #include #include const char expected[] = "200 100"; int main () { char buf[30]; sprintf(buf, "%2\$x %1\$d", 100, 512); if (strcmp(expected, buf)) { fprintf(stderr,"bad result: <%s> wanted: <%s>\n", buf, expected); return 1; } return 0; }], ac_cv_printf_positional=yes, ac_cv_printf_positional=no, AC_MSG_ERROR([Cannot test for printf positional argument support when cross compiling]))]) dnl Nothing for autoconf.h for now. AC_MSG_RESULT($ac_cv_printf_positional) dnl dnl dnl for kadmin dnl AC_PROG_YACC ath_compat= AC_ARG_ENABLE([athena], [ --enable-athena build with MIT Project Athena configuration], ath_compat=compat,) dnl The following are tests for the presence of programs required for dnl kadmin testing. AC_CHECK_PROG(have_RUNTEST,runtest,runtest) AC_CHECK_PROG(have_PERL,perl,perl) AC_KRB5_TCL if test "$have_PERL" = perl -a "$have_RUNTEST" = runtest -a "$TCL_LIBS" != ""; then DO_TEST=ok fi AC_SUBST(DO_TEST) dnl DO_V4_TEST= if test "$have_PERL" = perl -a "$have_RUNTEST" = runtest -a "$TCL_LIBS" != "" -a "$ath_compat" != ""; then DO_V4_TEST=ok fi AC_SUBST(DO_V4_TEST) dnl The following are substituted into kadmin/testing/scripts/env-setup.sh RBUILD=`pwd` AC_SUBST(RBUILD) case "$srcdir" in /*) S_TOP=$srcdir ;; *) S_TOP=`pwd`/$srcdir ;; esac AC_SUBST(S_TOP) AC_PATH_PROG(PERL_PATH,perl) AC_PATH_PROG(EXPECT,expect) dnl For kadmin/testing/util/Makefile.in if test "$TCL_LIBS" != "" ; then DO_ALL=tcl fi AC_SUBST(DO_ALL) KRB5_AC_PRIOCNTL_HACK K5_GEN_FILE(kadmin/testing/scripts/env-setup.sh:kadmin/testing/scripts/env-setup.shin) dnl for lib/kadm5 AC_CHECK_PROG(RUNTEST,runtest,runtest) AC_CHECK_PROG(PERL,perl,perl) dnl dnl dnl for lib/krb4 case $krb5_cv_host in *-apple-darwin*) KRB_ERR_TXT= KRB_ERR= KRB_ERR_C=krb_err.c ;; *) KRB_ERR='$(OUTPRE)krb_err.$(OBJEXT)' KRB_ERR_TXT=krb_err_txt.c KRB_ERR_C= ;; esac AC_SUBST([KRB_ERR_TXT]) AC_SUBST([KRB_ERR]) AC_SUBST([KRB_ERR_C]) dnl dnl dnl lib/gssapi AC_CHECK_HEADER(stdint.h,[ include_stdint='awk '\''END{printf("%cinclude \n", 35);}'\'' < /dev/null'], include_stdint='echo "/* no stdint.h */"') AC_SUBST(include_stdint) AC_CHECK_HEADER(inttypes.h,[ include_inttypes='awk '\''END{printf("%cinclude \n", 35);}'\'' < /dev/null'], include_inttypes='echo "/* no inttypes.h */"') AC_SUBST(include_inttypes) AC_CHECK_HEADER(xom.h,[ include_xom='awk '\''END{printf("%cinclude \n", 35);}'\'' < /dev/null'], [ include_xom='echo "/* no xom.h */"']) AC_SUBST(include_xom) dnl dnl dnl lib/rpc ### Check where struct rpcent is declared. # # This is necessary to determine: # 1. If /usr/include/netdb.h declares struct rpcent # 2. If /usr/include/rpc/netdb.h declares struct rpcent # # We have our own rpc/netdb.h, and if /usr/include/netdb.h includes # rpc/netdb.h, then nastiness could happen. # # Logic: If /usr/include/netdb.h declares struct rpcent, then check # rpc/netdb.h. If /usr/include/rpc/netdb.h declares struct rpcent, # then define STRUCT_RPCENT_IN_RPC_NETDB_H, otherwise do not. If # neither netdb.h nor rpc/netdb.h declares struct rpcent, then define # STRUCT_RPCENT_IN_RPC_NETDB_H anyway. # AC_MSG_CHECKING([where struct rpcent is declared]) AC_TRY_COMPILE([#include ], [struct rpcent e; char c = e.r_name[0]; int i = e.r_number;], [AC_TRY_COMPILE([#include ], [struct rpcent e; char c = e.r_name[0]; int i = e.r_number;], [AC_MSG_RESULT([rpc/netdb.h]) rpcent_define='#define STRUCT_RPCENT_IN_RPC_NETDB_H'], [AC_MSG_RESULT([netdb.h])])], [AC_MSG_RESULT([nowhere]) rpcent_define='#define STRUCT_RPCENT_IN_RPC_NETDB_H']) AC_SUBST(rpcent_define) AC_CHECK_HEADERS(sys/select.h sys/time.h unistd.h) if test $ac_cv_header_sys_select_h = yes; then GSSRPC__SYS_SELECT_H='#include ' else GSSRPC__SYS_SELECT_H='/* #include */' fi AC_SUBST(GSSRPC__SYS_SELECT_H) if test $ac_cv_header_sys_time_h = yes; then GSSRPC__SYS_TIME_H='#include ' else GSSRPC__SYS_TIME_H='/* #include */' fi AC_SUBST(GSSRPC__SYS_TIME_H) if test $ac_cv_header_unistd_h = yes; then GSSRPC__UNISTD_H='#include ' else GSSRPC__UNISTD_H='/* #include */' fi AC_SUBST(GSSRPC__UNISTD_H) AC_CACHE_CHECK([for MAXHOSTNAMELEN in sys/param.h], [krb5_cv_header_sys_param_h_maxhostnamelen], [AC_TRY_COMPILE([#include ], [int i = MAXHOSTNAMELEN;], [krb5_cv_header_sys_param_h_maxhostnamelen=yes], [krb5_cv_header_sys_param_h_maxhostnamelen=no])]) AC_CACHE_CHECK([for MAXHOSTNAMELEN in netdb.h], [krb5_cv_header_netdb_h_maxhostnamelen], [AC_TRY_COMPILE([#include ], [int i = MAXHOSTNAMELEN;], [krb5_cv_header_netdb_h_maxhostnamelen=yes], [krb5_cv_header_netdb_h_maxhostnamelen=no])]) GSSRPC__SYS_PARAM_H='/* #include */' GSSRPC__NETDB_H='/* #include */' if test $krb5_cv_header_sys_param_h_maxhostnamelen = yes; then GSSRPC__SYS_PARAM_H='#include ' else if test $krb5_cv_header_netdb_h_maxhostnamelen = yes; then GSSRPC__NETDB_H='#include ' else AC_MSG_WARN([can't find MAXHOSTNAMELEN definition; faking it]) fi fi AC_SUBST(GSSRPC__SYS_PARAM_H) AC_SUBST(GSSRPC__NETDB_H) AC_CACHE_CHECK([for uint32_t in sys/types.h], [krb5_cv_header_sys_types_h_uint32_t], [AC_TRY_COMPILE([#include ], [uint32_t i = 0;], [krb5_cv_header_sys_types_h_uint32_t=yes], [krb5_cv_header_sys_types_h_uint32_t=no])]) AC_CACHE_CHECK([for uint32_t in stdint.h], [krb5_cv_header_stdint_h_uint32_t], [AC_TRY_COMPILE([#include ], [uint32_t i = 0;], [krb5_cv_header_stdint_h_uint32_t=yes], [krb5_cv_header_stdint_h_uint32_t=no])]) AC_CACHE_CHECK([for uint32_t in inttypes.h], [krb5_cv_header_inttypes_h_uint32_t], [AC_TRY_COMPILE([#include ], [uint32_t i = 0;], [krb5_cv_header_inttypes_h_uint32_t=yes], [krb5_cv_header_inttypes_h_uint32_t=no])]) GSSRPC__STDINT_H='/* #include */' GSSRPC__INTTYPES_H='/* #include */' GSSRPC__FAKE_UINT32='/* #undef GSSRPC__FAKE_INT32 */' if test $krb5_cv_header_sys_types_h_uint32_t = yes; then : # already included sys/types.h else if test $krb5_cv_header_stdint_h_uint32_t = yes; then GSSRPC__STDINT_H='#include ' else if test $krb5_cv_header_inttypes_h_uint32_t = yes; then GSSRPC__INTTYPES_H='#include ' else AC_MSG_WARN([can't find a fixed-width 32-bit type anywhere; faking it]) GSSRPC__FAKE_UINT32='#define GSSRPC__FAKE_UINT32 1' fi fi fi AC_SUBST(GSSRPC__STDINT_H) AC_SUBST(GSSRPC__INTTYPES_H) AC_SUBST(GSSRPC__FAKE_UINT32) AC_CACHE_CHECK([for BSD type aliases], [krb5_cv_type_bsdaliases], [AC_TRY_COMPILE( [#include #if HAVE_UNISTD_H #include #endif], [u_char c; u_int i; u_long l;], [krb5_cv_type_bsdaliases=yes], [krb5_cv_type_bsdaliases=no])]) if test $krb5_cv_type_bsdaliases = yes; then GSSRPC__BSD_TYPEALIASES='/* #undef GSSRPC__BSD_TYPEALIASES */' else GSSRPC__BSD_TYPEALIASES='#define GSSRPC__BSD_TYPEALIASES 1' fi AC_SUBST(GSSRPC__BSD_TYPEALIASES) # # sockaddr length field checks # AC_CHECK_MEMBERS([struct sockaddr_in.sin_len], , , [#include @%:@include ]) AC_CHECK_MEMBERS([struct sockaddr.sa_len], , , [#include @%:@include ]) AC_MSG_CHECKING([return type of setrpcent]) AC_CACHE_VAL(k5_cv_type_setrpcent, [AC_TRY_COMPILE([#include #ifdef __cplusplus extern "C" #endif extern void setrpcent();], [int i;], k5_cv_type_setrpcent=void, k5_cv_type_setrpcent=int)])dnl AC_MSG_RESULT($k5_cv_type_setrpcent) AC_DEFINE_UNQUOTED(SETRPCENT_TYPE, $k5_cv_type_setrpcent, [Define as return type of setrpcent]) dnl AC_MSG_CHECKING([return type of endrpcent]) AC_CACHE_VAL(k5_cv_type_endrpcent, [AC_TRY_COMPILE([#include #ifdef __cplusplus extern "C" #endif extern void endrpcent();], [int i;], k5_cv_type_endrpcent=void, k5_cv_type_endrpcent=int)])dnl AC_MSG_RESULT($k5_cv_type_endrpcent) AC_DEFINE_UNQUOTED(ENDRPCENT_TYPE, $k5_cv_type_endrpcent, [Define as return type of endrpcent]) K5_GEN_FILE(include/gssrpc/types.h:include/gssrpc/types.hin) changequote(<<, >>) case "$krb5_cv_host" in *-*-solaris2.[012345]*) PASS=tcp ;; *) PASS="tcp udp" ;; esac changequote([, ]) AC_SUBST(PASS) dnl for pkinit AC_ARG_ENABLE([pkinit], [ --disable-pkinit disable PKINIT plugin support],, enable_pkinit=yes) if test "$enable_pkinit" = yes; then AC_CACHE_CHECK(for a recent enough OpenSSL, k5_cv_openssl_version_okay, [AC_COMPILE_IFELSE([#include #if OPENSSL_VERSION_NUMBER < 0x00908000L # error openssl is too old, need 0.9.8 #endif int i = 1; ], k5_cv_openssl_version_okay=yes, k5_cv_openssl_version_okay=no)]) old_LIBS="$LIBS" AC_CHECK_LIB(crypto, PKCS7_get_signer_info) LIBS="$old_LIBS" fi if test "$k5_cv_openssl_version_okay" = yes && test "$enable_pkinit" = yes; then K5_GEN_MAKEFILE(plugins/preauth/pkinit) else AC_DEFINE([DISABLE_PKINIT], 1, [Define to disable PKINIT plugin support]) AC_MSG_NOTICE([Disabling PKINIT support.]) fi dnl for lib/apputils AC_REPLACE_FUNCS(daemon) dnl for tests/ if test x"$RUNTEST" != x; then HAVE_RUNTEST=yes else HAVE_RUNTEST=no fi AC_SUBST(HAVE_RUNTEST) if test "$KRB4_LIB" = ''; then KRB4_DEJAGNU_TEST="KRBIV=0" else AC_MSG_RESULT(Kerberos 4 testing enabled) KRB4_DEJAGNU_TEST="KRBIV=1" fi AC_SUBST(KRB4_DEJAGNU_TEST) dnl for plugins/kdb/db2 dnl dnl AIX is unusual in that it wants all symbols resolved at link time dnl Fortunately, it will allow us to link the kdb library now, even if dnl it is linked again later. case $krb5_cv_host in *-*-aix*) DB_EXTRA_LIBS=-ldb ;; *) DB_EXTRA_LIBS= ;; esac AC_SUBST(DB_EXTRA_LIBS) dnl dnl dnl Check for thread safety issues. dnl (Is there a better place for this?) dnl tsfuncs="getpwnam_r getpwuid_r gethostbyname_r getservbyname_r gmtime_r localtime_r" dnl Removed getpwnam_r and getpwuid_r because include/configure.in has some dnl more careful checks, and may decide to pretend that they're not found if dnl the function signatures can't be figured out. tsfuncs="gethostbyname_r getservbyname_r gmtime_r localtime_r" AC_CHECK_FUNCS($tsfuncs) if test "$enable_thread_support" = yes; then tsmissing="" for ts in $tsfuncs; do if eval "test \"\${ac_cv_func_$ts}\" != yes"; then tsmissing="$tsmissing $ts" fi done if test "$ac_cv_func_res_nsearch/$ac_cv_lib_resolv_res_nsearch" = "no/no"; then tsmissing="$tsmissing res_nsearch" fi if test "$tsmissing" != ""; then AC_MSG_WARN([Some functions that are needed for library thread]) AC_MSG_WARN([safety appear to be missing.]) for ts in $tsmissing; do AC_MSG_WARN([ missing thread-safe function: $ts]) done AC_MSG_WARN([Without these functions, the installed libraries]) AC_MSG_WARN([may not be thread-safe.]) fi # tsmissing not empty fi # enable_thread_support dnl HOST_TYPE=$krb5_cv_host AC_SUBST(HOST_TYPE) dnl dnl Sadly, we seem to have accidentally committed ourselves in 1.4 to dnl an ABI that includes the existence of libkrb5support.0 even dnl though random apps should never use anything from it. And on dnl the Mac, to which that didn't apply, we can't use major version 0. dnl case $krb5_cv_host in *-*-darwin* | *-*-rhapsody*) SUPPORTLIB_MAJOR=1 ;; *) SUPPORTLIB_MAJOR=0 ;; esac AC_SUBST(SUPPORTLIB_MAJOR) dnl dnl On the Mac we need CoreFoundation for UCS-2 conversion for RC4. case $krb5_cv_host in *-*-darwin* | *-*-rhapsody*) CRYPTO_LIBS="-framework CoreFoundation" ;; *) CRYPTO_LIBS="" ;; esac AC_SUBST(CRYPTO_LIBS) dnl dnl if test "$COM_ERR_VERSION" = k5 ; then K5_GEN_MAKEFILE(util/et) fi if test "$SS_VERSION" = k5 ; then K5_GEN_MAKEFILE(util/ss) fi if test -n "$KRB4_LIB"; then K5_GEN_MAKEFILE(lib/krb4) fi dnl dnl ldap_plugin_dir="" ldap_lib="" if test -n "$OPENLDAP_PLUGIN"; then AC_CHECK_HEADERS(ldap.h lber.h, :, [AC_MSG_ERROR($ac_header not found)]) AC_CHECK_LIB(ldap, ldap_init, :, [AC_MSG_ERROR(libldap not found or missing ldap_init)]) old_LIBS="$LIBS" LIBS="$LIBS -lldap" AC_CHECK_FUNCS(ldap_initialize ldap_url_parse_nodn ldap_unbind_ext_s ldap_str2dn ldap_explode_dn) LIBS="$old_LIBS" BER_OKAY=0 AC_CHECK_LIB(ldap, ber_init, [BER_OKAY=1]) if test "$BER_OKAY" = "1"; then LDAP_LIBS='-lldap' else AC_CHECK_LIB(lber, ber_init, [BER_OKAY=1], [AC_MSG_WARN([libber not found])]) if test "$BER_OKAY" = "1"; then LDAP_LIBS='-lldap -llber' else AC_ERROR("BER library missing - cannot build LDAP database module") fi fi AC_DEFINE([ENABLE_LDAP], 1, [Define if LDAP KDB support within the Kerberos library (mainly ASN.1 code) should be enabled.]) AC_SUBST(LDAP_LIBS) K5_GEN_MAKEFILE(plugins/kdb/ldap) K5_GEN_MAKEFILE(plugins/kdb/ldap/ldap_util) K5_GEN_MAKEFILE(plugins/kdb/ldap/libkdb_ldap) ldap_plugin_dir=plugins/kdb/ldap fi AC_SUBST(ldap_plugin_dir) AC_CHECK_HEADERS(Python.h python2.3/Python.h) dnl dnl Kludge for simple server --- FIXME is this the best way to do this? dnl if test "$ac_cv_lib_socket" = "yes" -a "$ac_cv_lib_nsl" = "yes"; then AC_DEFINE(BROKEN_STREAMS_SOCKETS,1,[Define if socket can't be bound to 0.0.0.0]) fi dnl AC_CONFIG_SUBDIRS(appl/libpty appl/bsd appl/gssftp appl/telnet) AC_CONFIG_FILES(krb5-config, [chmod +x krb5-config]) V5_AC_OUTPUT_MAKEFILE(. util util/support util/profile util/send-pr lib lib/des425 lib/kdb lib/crypto lib/crypto/crc32 lib/crypto/des lib/crypto/dk lib/crypto/enc_provider lib/crypto/hash_provider lib/crypto/keyhash_provider lib/crypto/md4 lib/crypto/md5 lib/crypto/old lib/crypto/raw lib/crypto/sha1 lib/crypto/arcfour lib/crypto/yarrow lib/crypto/aes lib/krb5 lib/krb5/error_tables lib/krb5/asn.1 lib/krb5/ccache lib/krb5/keytab lib/krb5/krb lib/krb5/rcache lib/krb5/os lib/gssapi lib/gssapi/generic lib/gssapi/krb5 lib/gssapi/mechglue lib/gssapi/spnego lib/rpc lib/rpc/unit-test lib/kadm5 lib/kadm5/clnt lib/kadm5/srv lib/kadm5/unit-test lib/apputils kdc slave krb524 config-files gen-manpages include include/kerberosIV plugins/locate/python plugins/kdb/db2 plugins/kdb/db2/libdb2 plugins/kdb/db2/libdb2/hash plugins/kdb/db2/libdb2/btree plugins/kdb/db2/libdb2/db plugins/kdb/db2/libdb2/mpool plugins/kdb/db2/libdb2/recno plugins/kdb/db2/libdb2/test plugins/preauth/cksum_body plugins/preauth/wpse clients clients/klist clients/kinit clients/kvno clients/kdestroy clients/kpasswd clients/ksu kadmin kadmin/cli kadmin/dbutil kadmin/passwd kadmin/passwd/unit-test kadmin/ktutil kadmin/server kadmin/testing kadmin/testing/scripts kadmin/testing/util appl appl/sample appl/sample/sclient appl/sample/sserver appl/simple appl/simple/client appl/simple/server appl/gss-sample appl/user_user tests tests/resolve tests/asn.1 tests/create tests/hammer tests/verify tests/gssapi tests/dejagnu tests/threads tests/shlib tests/gss-threads tests/misc tests/mkeystash_compat util/collected-client-lib )