1K5_AC_INIT([aclocal.m4]) 2 3# If $runstatedir isn't set by autoconf (<2.70), set it manually. 4if test x"$runstatedir" = x; then 5 runstatedir='${localstatedir}/run' 6fi 7AC_SUBST(runstatedir) 8 9# Don't make duplicate profile path entries for /etc/krb5.conf if 10# $sysconfdir is /etc 11if test "$sysconfdir" = /etc; then 12 SYSCONFCONF="" 13else 14 SYSCONFCONF=":${sysconfdir}/krb5.conf" 15fi 16AC_SUBST(SYSCONFCONF) 17 18CONFIG_RULES 19KRB5_VERSION=K5_VERSION 20AC_SUBST(KRB5_VERSION) 21 22 23AC_REQUIRE_CPP 24 25PKG_PROG_PKG_CONFIG 26 27AC_CHECK_HEADER([stdint.h], [], 28 [AC_MSG_ERROR([stdint.h is required])]) 29 30AC_CACHE_CHECK([whether integers are two's complement], 31 [krb5_cv_ints_twos_compl], 32 [AC_COMPILE_IFELSE( 33 [AC_LANG_BOOL_COMPILE_TRY( 34[#include <limits.h> 35], 36 [/* Basic two's complement check */ 37 ~(-1) == 0 && ~(-1L) == 0L && 38 /* Check that values with sign bit 1 and value bits 0 are valid */ 39 -(INT_MIN + 1) == INT_MAX && -(LONG_MIN + 1) == LONG_MAX && 40 /* Check that unsigned-to-signed conversions preserve bit patterns */ 41 (int)((unsigned int)INT_MAX + 1) == INT_MIN && 42 (long)((unsigned long)LONG_MAX + 1) == LONG_MIN])], 43 [krb5_cv_ints_twos_compl=yes], 44 [krb5_cv_ints_twos_compl=no])]) 45 46if test "$krb5_cv_ints_twos_compl" = "no"; then 47 AC_MSG_ERROR([integers are not two's complement]) 48fi 49 50AC_CACHE_CHECK([whether CHAR_BIT is 8], 51 [krb5_cv_char_bit_8], 52 [AC_PREPROC_IFELSE([AC_LANG_SOURCE( 53[[#include <limits.h> 54#if CHAR_BIT != 8 55 #error CHAR_BIT != 8 56#endif 57]])], 58 [krb5_cv_char_bit_8=yes], [krb5_cv_char_bit_8=no])]) 59 60if test "$krb5_cv_char_bit_8" = "no"; then 61 AC_MSG_ERROR([CHAR_BIT is not 8]) 62fi 63 64AC_CACHE_CHECK(if va_copy is available, krb5_cv_va_copy, 65[AC_LINK_IFELSE([AC_LANG_SOURCE([ 66#include <stdarg.h> 67void f(va_list ap) { 68 va_list ap2; 69 va_copy(ap2, ap); 70 va_end(ap2); 71} 72va_list x; 73int main() 74{ 75 f(x); 76 return 0; 77}])], krb5_cv_va_copy=yes, krb5_cv_va_copy=no)]) 78if test "$krb5_cv_va_copy" = yes; then 79 AC_DEFINE(HAS_VA_COPY,1,[Define if va_copy macro or function is available.]) 80fi 81 82# Note that this isn't checking if the copied value *works*, just 83# whether the C language constraints permit the copying. If 84# va_list is defined as an array type, it can't be assigned. 85AC_CACHE_CHECK(if va_list objects can be copied by assignment, 86 krb5_cv_va_simple_copy, 87[AC_COMPILE_IFELSE([ 88AC_LANG_SOURCE([#include <stdarg.h> 89void f(va_list va2) { 90 va_list va1; 91 va1 = va2; 92}])], krb5_cv_va_simple_copy=yes, krb5_cv_va_simple_copy=no)]) 93if test "$krb5_cv_va_simple_copy" = yes; then 94 AC_DEFINE(CAN_COPY_VA_LIST,1,[Define if va_list objects can be simply copied by assignment.]) 95fi 96 97# The following lines are so that configure --help gives some global 98# configuration options. 99 100KRB5_LIB_AUX 101AC_ARG_ENABLE([athena], 102[ --enable-athena build with MIT Project Athena configuration],,) 103 104# Begin autoconf tests for the Makefiles generated out of the top-level 105# configure.in... 106 107KRB5_BUILD_LIBOBJS 108KRB5_BUILD_LIBRARY 109KRB5_BUILD_PROGRAM 110# for kprop 111AC_TYPE_MODE_T 112AC_PROG_INSTALL 113KRB5_AC_NEED_DAEMON 114KRB5_GETSOCKNAME_ARGS 115KRB5_GETPEERNAME_ARGS 116LIBUTIL= 117AC_CHECK_LIB(util,main,[AC_DEFINE(HAVE_LIBUTIL,1,[Define if the util library is available]) 118LIBUTIL=-lutil 119]) 120AC_SUBST(LIBUTIL) 121 122# Determine if NLS is desired and supported. 123po= 124AC_ARG_ENABLE([nls], 125 [AS_HELP_STRING([--disable-nls], [disable native language support])], 126 [], [enable_nls=check]) 127if test "$enable_nls" != no; then 128 AC_CHECK_HEADER(libintl.h, [ 129 AC_SEARCH_LIBS(dgettext, intl, [ 130 AC_DEFINE(ENABLE_NLS, 1, 131 [Define if translation functions should be used.]) 132 nls_enabled=yes])]) 133 134 AC_CHECK_PROG(MSGFMT,msgfmt,msgfmt) 135 if test x"$MSGFMT" != x; then 136 K5_GEN_MAKEFILE(po) 137 po=po 138 fi 139 140 # Error out if --enable-nls was explicitly requested but can't be enabled. 141 if test "$enable_nls" = yes; then 142 if test "$nls_enabled" != yes -o "x$po" = x; then 143 AC_MSG_ERROR([NLS support requested but cannot be built]) 144 fi 145 fi 146fi 147AC_SUBST(po) 148 149# for kdc 150AC_CHECK_HEADERS(sys/sockio.h ifaddrs.h unistd.h fnmatch.h) 151AC_CHECK_FUNCS(vsprintf vasprintf vsnprintf strlcpy fnmatch secure_getenv) 152 153EXTRA_SUPPORT_SYMS= 154AC_CHECK_FUNC(strlcpy, 155[STRLCPY_ST_OBJ= 156STRLCPY_OBJ=], 157[STRLCPY_ST_OBJ=strlcpy.o 158STRLCPY_OBJ='$(OUTPRE)strlcpy.$(OBJEXT)' 159EXTRA_SUPPORT_SYMS="$EXTRA_SUPPORT_SYMS krb5int_strlcpy krb5int_strlcat"]) 160AC_SUBST(STRLCPY_OBJ) 161AC_SUBST(STRLCPY_ST_OBJ) 162 163AC_CHECK_FUNC(getopt, 164[GETOPT_ST_OBJ= 165GETOPT_OBJ= 166AC_DEFINE(HAVE_GETOPT, 1, [Define if system getopt should be used.])], 167[GETOPT_ST_OBJ='getopt.o' 168GETOPT_OBJ='$(OUTPRE)getopt.$(OBJEXT)' 169EXTRA_SUPPORT_SYMS="$EXTRA_SUPPORT_SYMS k5_optind k5_optarg k5_opterr k5_optopt k5_getopt"]) 170AC_SUBST(GETOPT_OBJ) 171AC_SUBST(GETOPT_ST_OBJ) 172 173AC_CHECK_FUNC(getopt_long, 174[GETOPT_LONG_ST_OBJ= 175GETOPT_LONG_OBJ= 176AC_DEFINE(HAVE_GETOPT_LONG, 1, [Define if system getopt_long should be used.])], 177[GETOPT_LONG_ST_OBJ='getopt_long.o' 178GETOPT_LONG_OBJ='$(OUTPRE)getopt_long.$(OBJEXT)' 179EXTRA_SUPPORT_SYMS="$EXTRA_SUPPORT_SYMS k5_getopt_long"]) 180AC_SUBST(GETOPT_LONG_OBJ) 181AC_SUBST(GETOPT_LONG_ST_OBJ) 182 183AC_CHECK_FUNC(fnmatch, 184[FNMATCH_ST_OBJ= 185FNMATCH_OBJ=], 186[FNMATCH_ST_OBJ=fnmatch.o 187FNMATCH_OBJ='$(OUTPRE)fnmatch.$(OBJEXT)' 188EXTRA_SUPPORT_SYMS="$EXTRA_SUPPORT_SYMS k5_fnmatch"]) 189AC_SUBST(FNMATCH_OBJ) 190AC_SUBST(FNMATCH_ST_OBJ) 191 192AC_CHECK_FUNC(vasprintf, 193[PRINTF_ST_OBJ= 194PRINTF_OBJ=], 195[PRINTF_ST_OBJ=printf.o 196PRINTF_OBJ='$(OUTPRE)printf.$(OBJEXT)' 197EXTRA_SUPPORT_SYMS="$EXTRA_SUPPORT_SYMS krb5int_asprintf krb5int_vasprintf"]) 198AC_SUBST(PRINTF_OBJ) 199AC_SUBST(PRINTF_ST_OBJ) 200KRB5_NEED_PROTO([#include <stdarg.h> 201#include <stdio.h> 202],vasprintf) 203KRB5_NEED_PROTO([#include <string.h> 204#ifdef HAVE_UNISTD_H 205#include <unistd.h> 206#endif 207/* Solaris 8 declares swab in stdlib.h. */ 208#include <stdlib.h> 209],swab,1) 210 211AC_CHECK_FUNC(secure_getenv, 212[SECURE_GETENV_ST_OBJ= 213SECURE_GETENV_OBJ= 214SECURE_GETENV_INIT=], 215[SECURE_GETENV_ST_OBJ=secure_getenv.o 216SECURE_GETENV_OBJ='$(OUTPRE)secure_getenv.$(OBJEXT)' 217SECURE_GETENV_INIT=k5_secure_getenv_init 218EXTRA_SUPPORT_SYMS="$EXTRA_SUPPORT_SYMS k5_secure_getenv"]) 219AC_SUBST(SECURE_GETENV_OBJ) 220AC_SUBST(SECURE_GETENV_ST_OBJ) 221AC_SUBST(SECURE_GETENV_INIT) 222 223AC_PROG_AWK 224KRB5_AC_INET6 225KRB5_SOCKADDR_SA_LEN 226CHECK_SIGNALS 227 228# --with-vague-errors disables useful error messages. 229 230AC_ARG_WITH([vague-errors], 231 [AS_HELP_STRING([--with-vague-errors], 232 [Do not @<:@do@:>@ send helpful errors to client])], 233 [], [withval=no]) 234if test "$withval" = yes; then 235 AC_MSG_NOTICE(Supplying vague error messages to KDC clients) 236 AC_DEFINE(KRBCONF_VAGUE_ERRORS,1,[Define if the KDC should return only vague error codes to clients]) 237fi 238 239# Check which (if any) audit plugin to build 240audit_plugin="" 241AC_ARG_ENABLE([audit-plugin], 242 [AS_HELP_STRING([--enable-audit-plugin=IMPL], 243 [use audit plugin @<:@ do not use audit @:>@])], 244 [], enableval=no) 245if test "$enableval" != no; then 246 case "$enableval" in 247 simple) 248 # if audit_log_user_message is found, we assume 249 # that audit_open and audit_close are also defined. 250 AC_CHECK_LIB(audit, audit_log_user_message, 251 [AUDIT_IMPL_LIBS=-laudit 252 K5_GEN_MAKEFILE(plugins/audit/simple) 253 audit_plugin=plugins/audit/simple ], 254 AC_MSG_ERROR([libaudit not found or undefined symbol audit_log_user_message])) 255 ;; 256 *) 257 AC_MSG_ERROR([Unknown audit plugin implementation $enableval.]) 258 ;; 259 esac 260fi 261AC_SUBST(AUDIT_IMPL_LIBS) 262AC_SUBST(audit_plugin) 263 264# WITH_CRYPTO_IMPL 265 266CRYPTO_IMPL=builtin 267AC_ARG_WITH([crypto-impl], 268 [AS_HELP_STRING([--with-crypto-impl=IMPL], 269 [use specified crypto implementation @<:@builtin@:>@])], 270 [CRYPTO_IMPL=$withval 271 AC_MSG_NOTICE(k5crypto will use '$withval')]) 272 273CRYPTO_BUILTIN_TESTS=no 274case $CRYPTO_IMPL in 275builtin) 276 CRYPTO_BUILTIN_TESTS=yes 277 ;; 278openssl) 279 AC_CHECK_LIB(crypto, PKCS7_get_signer_info) 280 AC_DEFINE([CRYPTO_OPENSSL], 1, [Define to use OpenSSL crypto library]) 281 ;; 282*) 283 AC_MSG_ERROR([Unknown crypto implementation $withval]) 284 ;; 285esac 286AC_SUBST([CRYPTO_IMPL_CFLAGS]) 287AC_SUBST([CRYPTO_IMPL_LIBS]) 288AC_SUBST([CRYPTO_BUILTIN_TESTS]) 289 290# WITH_TLS_IMPL 291 292AC_ARG_WITH([tls-impl], 293 [AS_HELP_STRING([--with-tls-impl=IMPL], 294 [use specified TLS implementation @<:@auto@:>@])], 295 [TLS_IMPL=$withval], [TLS_IMPL=auto]) 296case "$TLS_IMPL" in 297openssl|auto) 298 AC_CHECK_LIB(ssl,SSL_CTX_new,[have_lib_ssl=true],[have_lib_ssl=false], 299 -lcrypto) 300 AC_MSG_CHECKING([for OpenSSL]) 301 if test x$have_lib_ssl = xtrue ; then 302 AC_DEFINE(TLS_IMPL_OPENSSL,1,[Define if TLS implementation is OpenSSL]) 303 AC_MSG_RESULT([yes]) 304 TLS_IMPL_LIBS="-lssl -lcrypto" 305 TLS_IMPL=openssl 306 AC_MSG_NOTICE([TLS module will use OpenSSL]) 307 else 308 if test "$TLS_IMPL" = openssl ; then 309 AC_MSG_ERROR([OpenSSL not found!]) 310 else 311 AC_MSG_WARN([OpenSSL not found!]) 312 fi 313 TLS_IMPL=no 314 AC_MSG_NOTICE(building without TLS support) 315 fi 316 ;; 317no) 318 AC_MSG_NOTICE(building without TLS support) 319 ;; 320*) 321 AC_MSG_ERROR([Unsupported TLS implementation $withval]) 322 ;; 323esac 324 325if test "$TLS_IMPL" = no; then 326 AC_DEFINE(TLS_IMPL_NONE,1,[Define if no TLS implementation is selected]) 327fi 328 329AC_SUBST(TLS_IMPL) 330AC_SUBST(TLS_IMPL_CFLAGS) 331AC_SUBST(TLS_IMPL_LIBS) 332 333AC_ARG_WITH([keyutils], 334 [AS_HELP_STRING([--without-keyutils], [do not link with libkeyutils])], 335 [], [with_keyutils=check]) 336if test "$with_keyutils" != no; then 337 have_keyutils=false 338 AC_CHECK_HEADERS([keyutils.h], 339 AC_CHECK_LIB(keyutils, add_key, [have_keyutils=true])) 340 if test "$have_keyutils" = true; then 341 AC_DEFINE(USE_KEYRING_CCACHE, 1, 342 [Define if the keyring ccache should be enabled]) 343 LIBS="-lkeyutils $LIBS" 344 # If libkeyutils supports persistent keyrings, use them. 345 AC_CHECK_LIB(keyutils, keyctl_get_persistent, 346 [AC_DEFINE(HAVE_PERSISTENT_KEYRING, 1, 347 [Define if persistent keyrings are supported]) 348 ]) 349 elif test "$with_keyutils" = yes; then 350 AC_MSG_ERROR([libkeyutils not found]) 351 fi 352fi 353 354# The SPAKE preauth plugin currently supports edwards25519 natively, 355# and can support three NIST groups using OpenSSL. 356HAVE_SPAKE_OPENSSL=no 357AC_ARG_WITH([spake-openssl], 358 [AS_HELP_STRING([--with-spake-openssl], 359 [use OpenSSL for SPAKE preauth @<:@auto@:>@])], 360 [], [withval=auto]) 361if test "$withval" = auto -o "$withval" = yes; then 362 AC_CHECK_LIB([crypto],[EC_POINT_new],[have_crypto=true],[have_crypto=false]) 363 if test "$have_crypto" = true; then 364 AC_DEFINE(SPAKE_OPENSSL,1,[Define to use OpenSSL for SPAKE preauth]) 365 SPAKE_OPENSSL_LIBS=-lcrypto 366 HAVE_SPAKE_OPENSSL=yes 367 elif test "$withval" = yes; then 368 AC_MSG_ERROR([OpenSSL libcrypto not found]) 369 fi 370fi 371AC_SUBST(HAVE_SPAKE_OPENSSL) 372AC_SUBST(SPAKE_OPENSSL_LIBS) 373 374AC_ARG_ENABLE([aesni], 375 [AS_HELP_STRING([--disable-aesni], [Do not build with AES-NI support])], 376 [], [enable_aesni=check]) 377if test "$CRYPTO_IMPL" = builtin -a "x$enable_aesni" != xno; then 378 case "$host" in 379 i686-*) 380 aesni_obj=iaesx86.o 381 aesni_machine=x86 382 ;; 383 x86_64-*) 384 aesni_obj=iaesx64.o 385 aesni_machine=amd64 386 ;; 387 esac 388 case "$host" in 389 *-*-linux* | *-*-gnu* | *-*-*bsd* | *-*-solaris*) 390 # All Unix-like platforms need -D__linux__ for iaesx64.s to 391 # use the System V x86-64 calling convention. 392 aesni_flags="-D__linux__ -f elf -m $aesni_machine" 393 ;; 394 esac 395 if test "x$aesni_obj" != x && test "x$aesni_flags" != x; then 396 AC_CHECK_PROG(YASM,yasm,yasm) 397 AC_CHECK_HEADERS(cpuid.h) 398 if test x"$YASM" != x -a "x$ac_cv_header_cpuid_h" = xyes; then 399 AESNI_OBJ=$aesni_obj 400 AESNI_FLAGS=$aesni_flags 401 AC_DEFINE(AESNI,1,[Define if AES-NI support is enabled]) 402 AC_MSG_NOTICE([Building with AES-NI support]) 403 fi 404 fi 405 if test "x$enable_aesni" = xyes -a "x$AESNI_OBJ" = x; then 406 AC_MSG_ERROR([AES-NI support requested but cannot be built]) 407 fi 408fi 409AC_SUBST(AESNI_OBJ) 410AC_SUBST(AESNI_FLAGS) 411 412AC_ARG_ENABLE([kdc-lookaside-cache], 413 AS_HELP_STRING([--disable-kdc-lookaside-cache], 414 [Disable the cache which detects client retransmits]), 415 [], [enableval=yes]) 416if test "$enableval" = no ; then 417 AC_DEFINE(NOCACHE,1,[Define if the KDC should use no lookaside cache]) 418fi 419KRB5_RUN_FLAGS 420 421# asan is a gcc and clang facility to instrument the code with memory 422# error checking. To use it, we compile C and C++ source files with 423# -fsanitize=address, and set ASAN=yes to suppress the undefined 424# symbols check when building shared libraries. 425AC_ARG_ENABLE([asan], 426 [AS_HELP_STRING([--enable-asan], [Build with asan memory checking])], 427 [], [enable_asan=no]) 428if test "$enable_asan" != no; then 429 if test "$enable_asan" = yes; then 430 enable_asan=address 431 fi 432 ASAN_FLAGS="$DEFS -fsanitize=$enable_asan" 433 ASAN=yes 434 UNDEF_CHECK= 435else 436 ASAN_FLAGS= 437 ASAN=no 438fi 439AC_SUBST(ASAN_FLAGS) 440AC_SUBST(ASAN) 441 442# from old include/configure.in 443AH_TEMPLATE([HAVE_STRUCT_SOCKADDR_STORAGE], 444[Define if "struct sockaddr_storage" is available.]) 445 446AC_CONFIG_HEADERS(include/autoconf.h, [echo timestamp > include/autoconf.stamp]) 447AC_C_CONST 448AC_HEADER_DIRENT 449AC_FUNC_STRERROR_R 450AC_CHECK_FUNCS(strdup setvbuf seteuid setresuid setreuid setegid setresgid setregid setsid flock fchmod chmod strptime geteuid setenv unsetenv getenv gmtime_r localtime_r bswap16 bswap64 mkstemp getusershell access getcwd srand48 srand srandom stat strchr strerror timegm explicit_bzero explicit_memset getresuid getresgid) 451 452AC_CHECK_FUNC(mkstemp, 453[MKSTEMP_ST_OBJ= 454MKSTEMP_OBJ=], 455[MKSTEMP_ST_OBJ='mkstemp.o' 456MKSTEMP_OBJ='$(OUTPRE)mkstemp.$(OBJEXT)' 457EXTRA_SUPPORT_SYMS="$EXTRA_SUPPORT_SYMS krb5int_mkstemp"]) 458AC_SUBST(MKSTEMP_OBJ) 459AC_SUBST(MKSTEMP_ST_OBJ) 460 461AC_CHECK_FUNC(gettimeofday, 462 [GETTIMEOFDAY_ST_OBJ= 463 GETTIMEOFDAY_OBJ= 464 AC_DEFINE(HAVE_GETTIMEOFDAY, 1, [Have the gettimeofday function]) 465], 466 [GETTIMEOFDAY_ST_OBJ='gettimeofday.o' 467 GETTIMEOFDAY_OBJ='$(OUTPRE)gettimeofday.$(OBJEXT)' 468 EXTRA_SUPPORT_SYMS="$EXTRA_SUPPORT_SYMS krb5int_gettimeofday"]) 469AC_SUBST(GETTIMEOFDAY_OBJ) 470AC_SUBST(GETTIMEOFDAY_ST_OBJ) 471AC_SUBST(EXTRA_SUPPORT_SYMS) 472 473DECLARE_SYS_ERRLIST 474AC_CHECK_HEADERS(unistd.h paths.h regex.h regexpr.h fcntl.h memory.h ifaddrs.h sys/filio.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) 475AC_CHECK_HEADER(regexp.h, [], [], 476[#define INIT char *sp = instring; 477#define GETC() (*sp++) 478#define PEEKC() (*sp) 479#define UNGETC(c) (--sp) 480#define RETURN(c) return(c) 481#define ERROR(c) 482]) 483AC_CHECK_MEMBERS([struct stat.st_mtimensec,struct stat.st_mtimespec.tv_nsec,struct stat.st_mtim.tv_nsec],,,[#include <sys/types.h> 484#include <sys/stat.h>]) 485KRB5_AC_REGEX_FUNCS 486AC_TYPE_OFF_T 487 488# Fancy caching of perror result... 489AC_MSG_CHECKING(for perror declaration) 490AC_CACHE_VAL(krb5_cv_decl_perror, 491[AC_EGREP_HEADER(perror, errno.h, 492 krb5_cv_decl_perror=yes, krb5_cv_decl_perror=no)]) 493AC_MSG_RESULT($krb5_cv_decl_perror) 494if test $krb5_cv_decl_perror = yes; then 495 AC_DEFINE(HDR_HAS_PERROR,1,[Define if errno.h declares perror]) 496fi 497 498KRB5_NEED_PROTO([#include <time.h>],strptime) 499CHECK_WAIT_TYPE 500CHECK_SIGPROCMASK 501AC_TYPE_GETGROUPS 502CHECK_SETJMP 503 504# *rpcent return types needed for lib/rpc 505 506AC_MSG_CHECKING([return type of setrpcent]) 507AC_CACHE_VAL(k5_cv_type_setrpcent, 508[AC_COMPILE_IFELSE( 509 [AC_LANG_SOURCE([[#include <netdb.h> 510 extern void setrpcent();]])], 511 [k5_cv_type_setrpcent=void], 512 [k5_cv_type_setrpcent=int])]) 513AC_MSG_RESULT($k5_cv_type_setrpcent) 514AC_DEFINE_UNQUOTED(SETRPCENT_TYPE, $k5_cv_type_setrpcent, [Define as return type of setrpcent]) 515 516AC_MSG_CHECKING([return type of endrpcent]) 517AC_CACHE_VAL(k5_cv_type_endrpcent, 518[AC_COMPILE_IFELSE( 519 [AC_LANG_SOURCE( 520 [[#include <netdb.h> 521 extern void endrpcent();]])], 522 [k5_cv_type_endrpcent=void], [k5_cv_type_endrpcent=int])]) 523AC_MSG_RESULT($k5_cv_type_endrpcent) 524AC_DEFINE_UNQUOTED(ENDRPCENT_TYPE, $k5_cv_type_endrpcent, [Define as return type of endrpcent]) 525 526 527# bswap_16 is a macro in byteswap.h under GNU libc 528AC_MSG_CHECKING(for bswap_16) 529AC_CACHE_VAL(krb5_cv_bswap_16, 530[AC_LINK_IFELSE( 531 [AC_LANG_PROGRAM( 532 [[#if HAVE_BYTESWAP_H 533 #include <byteswap.h> 534 #endif 535 ]], 536 [[bswap_16(37);]])], 537 [krb5_cv_bswap_16=yes], [krb5_cv_bswap_16=no])]) 538AC_MSG_RESULT($krb5_cv_bswap_16) 539if test "$krb5_cv_bswap_16" = yes; then 540 AC_DEFINE(HAVE_BSWAP_16,1,[Define to 1 if bswap_16 is available via byteswap.h]) 541fi 542AC_MSG_CHECKING(for bswap_64) 543AC_CACHE_VAL(krb5_cv_bswap_64, 544[AC_LINK_IFELSE( 545 [AC_LANG_PROGRAM( 546 [[#if HAVE_BYTESWAP_H 547 #include <byteswap.h> 548 #endif 549 ]], 550 [[bswap_64(37);]])], 551 [krb5_cv_bswap_64=yes], [krb5_cv_bswap_64=no])]) 552AC_MSG_RESULT($krb5_cv_bswap_64) 553if test "$krb5_cv_bswap_64" = yes; then 554 AC_DEFINE(HAVE_BSWAP_64,1,[Define to 1 if bswap_64 is available via byteswap.h]) 555fi 556 557# Needed for ksu and some appl stuff. 558 559case $krb5_cv_host in 560alpha*-dec-osf*) 561 AC_CHECK_LIB(security,setluid, 562 AC_DEFINE(HAVE_SETLUID,1,[Define if setluid provided in OSF/1 security library]) 563 KSU_LIBS="-lsecurity" 564 ) 565 ;; 566esac 567AC_SUBST(KSU_LIBS) 568 569if test $ac_cv_func_setenv = no || test $ac_cv_func_unsetenv = no \ 570 || test $ac_cv_func_getenv = no; then 571 SETENVOBJ=setenv.o 572else 573 SETENVOBJ= 574fi 575AC_SUBST(SETENVOBJ) 576 577# Check what the return types for gethostbyname_r and getservbyname_r are. 578 579AC_CHECK_FUNC(gethostbyname_r,[ 580ac_cv_func_gethostbyname_r=yes 581if test "$ac_cv_func_gethostbyname_r" = yes; then 582 AC_MSG_CHECKING([if gethostbyname_r returns an int]) 583 AC_CACHE_VAL(krb5_cv_gethostbyname_r_returns_int, 584 [AC_COMPILE_IFELSE( 585 [AC_LANG_SOURCE( 586 [[#include <netdb.h> 587 extern int gethostbyname_r();]])], 588 [krb5_cv_gethostbyname_r_returns_int=yes], 589 [krb5_cv_gethostbyname_r_returns_int=no])]) 590 AC_MSG_RESULT($krb5_cv_gethostbyname_r_returns_int) 591 592 AC_MSG_CHECKING([if gethostbyname_r returns a pointer]) 593 AC_CACHE_VAL(krb5_cv_gethostbyname_r_returns_ptr, 594 [AC_COMPILE_IFELSE( 595 [AC_LANG_SOURCE( 596 [[#include <netdb.h> 597 extern struct hostent *gethostbyname_r();]])], 598 [krb5_cv_gethostbyname_r_returns_ptr=yes], 599 [krb5_cv_gethostbyname_r_returns_ptr=no])]) 600 AC_MSG_RESULT($krb5_cv_gethostbyname_r_returns_ptr) 601 602 if test "$krb5_cv_gethostbyname_r_returns_int" = "$krb5_cv_gethostbyname_r_returns_ptr"; then 603 AC_MSG_WARN(cannot determine return type of gethostbyname_r -- disabling) 604 ac_cv_func_gethostbyname_r=no 605 fi 606 if test "$krb5_cv_gethostbyname_r_returns_int" = yes; then 607 AC_DEFINE(GETHOSTBYNAME_R_RETURNS_INT, 1, [Define if gethostbyname_r returns int rather than struct hostent * ]) 608 fi 609fi 610if test "$ac_cv_func_gethostbyname_r" = yes; then 611 AC_DEFINE(HAVE_GETHOSTBYNAME_R, 1, [Define if gethostbyname_r exists and its return type is known]) 612 AC_CHECK_FUNC(gethostbyaddr_r) 613fi 614]) 615 616 617# PTHREAD_CFLAGS changes which variant of these functions is declared 618# on Solaris 11, so use it for these tests. 619old_CFLAGS=$CFLAGS 620CFLAGS="$CFLAGS $PTHREAD_CFLAGS" 621AC_CHECK_FUNC(getpwnam_r,ac_cv_func_getpwnam_r=yes,ac_cv_func_getpwnam_r=no) 622AC_CHECK_FUNC(getpwuid_r,ac_cv_func_getpwuid_r=yes,ac_cv_func_getpwuid_r=no) 623if test "$ac_cv_func_getpwnam_r" = yes; then 624 AC_MSG_CHECKING([return type of getpwnam_r]) 625 AC_CACHE_VAL(krb5_cv_getpwnam_r_return_type, 626 [AC_COMPILE_IFELSE( 627 [AC_LANG_SOURCE( 628 [[#include <pwd.h> 629 extern int getpwnam_r();]])], 630 [getpwnam_r_returns_int=yes], [getpwnam_r_returns_int=no]) 631 AC_COMPILE_IFELSE( 632 [AC_LANG_SOURCE( 633 [[#include <pwd.h> 634 extern struct passwd *getpwnam_r();]])], 635 [getpwnam_r_returns_ptr=yes], [getpwnam_r_returns_ptr=no]) 636 case "$getpwnam_r_returns_int/$getpwnam_r_returns_ptr" in 637 yes/no) krb5_cv_getpwnam_r_return_type=int ;; 638 no/yes) krb5_cv_getpwnam_r_return_type=ptr ;; 639 *) krb5_cv_getpwnam_r_return_type=unknown ;; 640 esac]) 641 AC_MSG_RESULT($krb5_cv_getpwnam_r_return_type) 642 if test $krb5_cv_getpwnam_r_return_type = int; then 643 AC_DEFINE(GETPWNAM_R_RETURNS_INT, 1, [Define if getpwnam_r returns an int]) 644 elif test $krb5_cv_getpwnam_r_return_type = unknown; then 645 AC_MSG_WARN([Cannot determine getpwnam_r return type, disabling getpwnam_r]) 646 ac_cv_func_getpwnam_r=no 647 fi 648fi 649if test "$ac_cv_func_getpwnam_r" = yes; then 650 AC_MSG_CHECKING([number of arguments to getpwnam_r]) 651 AC_CACHE_VAL(krb5_cv_getpwnam_r_args, 652 [AC_COMPILE_IFELSE( 653 [AC_LANG_PROGRAM( 654 [[#include <pwd.h> 655 struct passwd pwx; char buf[1024];]], 656 [[getpwnam_r("", &pwx, buf, sizeof(buf));]])], 657 [args4=yes], [args4=no]) 658 AC_COMPILE_IFELSE( 659 [AC_LANG_PROGRAM( 660 [[#include <pwd.h> 661 struct passwd pwx, *p; 662 char buf[1024];]], 663 [[getpwnam_r("", &pwx, buf, sizeof(buf), &p);]])], 664 [args5=yes], [args5=no]) 665 case $args4/$args5 in 666 yes/no) krb5_cv_getpwnam_r_args=4 ;; 667 no/yes) krb5_cv_getpwnam_r_args=5 ;; 668 *) krb5_cv_getpwnam_r_args=unknown ;; 669 esac]) 670 AC_MSG_RESULT($krb5_cv_getpwnam_r_args) 671 if test "$krb5_cv_getpwnam_r_args" = unknown; then 672 AC_MSG_WARN([Cannot determine number of arguments to getpwnam_r, disabling its use.]) 673 ac_cv_func_getpwnam_r=no 674 else 675 AC_DEFINE(HAVE_GETPWNAM_R,1,[Define if getpwnam_r is available and useful.]) 676 if test "$krb5_cv_getpwnam_r_args" = 4; then 677 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).]) 678 fi 679 fi 680fi 681CFLAGS=$old_CFLAGS 682 683if test "$ac_cv_func_getpwnam_r" = no && test "$ac_cv_func_getpwuid_r" = yes; then 684 # Actually, we could do this check, and the corresponding checks 685 # for return type and number of arguments, but I doubt we'll run 686 # into a system where we'd get to use getpwuid_r but not getpwnam_r. 687 AC_MSG_NOTICE([getpwnam_r not useful, so disabling getpwuid_r too]) 688 ac_cv_func_getpwuid_r=no 689fi 690if test "$ac_cv_func_getpwuid_r" = yes; then 691 AC_DEFINE(HAVE_GETPWUID_R,1,[Define if getpwuid_r is available and useful.]) 692 # Hack: Assume getpwuid_r is the shorter form if getpwnam_r is. 693 if test "$krb5_cv_getpwnam_r_args" = 4; then 694 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).]) 695 fi 696fi 697 698if test "$ac_cv_func_gmtime_r" = yes; then 699 AC_MSG_CHECKING([whether gmtime_r returns int]) 700 AC_CACHE_VAL(krb5_cv_gmtime_r_returns_int, 701 [AC_COMPILE_IFELSE( 702 [AC_LANG_SOURCE( 703 [[#include <time.h> 704 extern int gmtime_r();]])], 705 [return_int=yes], [return_int=no]) 706 AC_COMPILE_IFELSE([ 707 AC_LANG_SOURCE( 708 [[#include <time.h> 709 extern struct tm *gmtime_r();]])], 710 [return_ptr=yes], [return_ptr=no]) 711 case $return_int/$return_ptr in 712 yes/no) krb5_cv_gmtime_r_returns_int=yes ;; 713 no/yes) krb5_cv_gmtime_r_returns_int=no ;; 714 *) # Can't figure it out, punt the function. 715 ac_cv_func_gmtime_r=no ;; 716 esac]) 717 if test "$ac_cv_func_gmtime_r" = no; then 718 AC_MSG_RESULT(unknown -- ignoring gmtime_r) 719 else 720 AC_MSG_RESULT($krb5_cv_gmtime_r_returns_int) 721 if test "$krb5_cv_gmtime_r_returns_int" = yes; then 722 AC_DEFINE(GMTIME_R_RETURNS_INT,1,[Define if gmtime_r returns int instead of struct tm pointer, as on old HP-UX systems.]) 723 fi 724 fi 725fi 726 727AC_CHECK_FUNC(getservbyname_r,[ 728ac_cv_func_getservbyname_r=yes 729if test "$ac_cv_func_getservbyname_r" = yes; then 730 AC_MSG_CHECKING([if getservbyname_r returns an int]) 731 AC_CACHE_VAL(krb5_cv_getservbyname_r_returns_int, 732 [AC_COMPILE_IFELSE( 733 [AC_LANG_SOURCE( 734 [[#include <netdb.h> 735 extern int getservbyname_r();]])], 736 [krb5_cv_getservbyname_r_returns_int=yes], 737 [krb5_cv_getservbyname_r_returns_int=no])]) 738 AC_MSG_RESULT($krb5_cv_getservbyname_r_returns_int) 739 740 AC_MSG_CHECKING([if getservbyname_r returns a pointer]) 741 AC_CACHE_VAL(krb5_cv_getservbyname_r_returns_ptr, 742 [AC_COMPILE_IFELSE( 743 [AC_LANG_SOURCE( 744 [[#include <netdb.h> 745 extern struct servent *getservbyname_r();]])], 746 [krb5_cv_getservbyname_r_returns_ptr=yes], 747 [krb5_cv_getservbyname_r_returns_ptr=no])]) 748 AC_MSG_RESULT($krb5_cv_getservbyname_r_returns_ptr) 749 750 if test "$krb5_cv_getservbyname_r_returns_int" = "$krb5_cv_getservbyname_r_returns_ptr"; then 751 AC_MSG_WARN(cannot determine return type of getservbyname_r -- disabling) 752 ac_cv_func_getservbyname_r=no 753 fi 754 if test "$krb5_cv_getservbyname_r_returns_int" = yes; then 755 AC_DEFINE(GETSERVBYNAME_R_RETURNS_INT, 1, [Define if getservbyname_r returns int rather than struct servent * ]) 756 fi 757fi 758if test "$ac_cv_func_getservbyname_r" = yes; then 759 AC_DEFINE(HAVE_GETSERVBYNAME_R, 1, [Define if getservbyname_r exists and its return type is known]) 760 AC_CHECK_FUNC(getservbyport_r) 761fi 762]) 763 764CHECK_DIRENT 765AC_TYPE_UID_T 766 767AC_CHECK_HEADER(termios.h, 768[AC_CHECK_FUNC([tcsetattr], 769 AC_DEFINE(POSIX_TERMIOS,1,[Define if termios.h exists and tcsetattr exists]))]) 770 771AC_CHECK_HEADERS(poll.h 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) 772 773# If compiling with IPv6 support, test if in6addr_any functions. 774# Irix 6.5.16 defines it, but lacks support in the C library. 775if test $krb5_cv_inet6 = yes || test "$krb5_cv_inet6_with_dinet6" = yes ; then 776 AC_CACHE_CHECK([for in6addr_any definition in library], 777 [krb5_cv_var_in6addr_any], 778 [AC_LINK_IFELSE( 779 [AC_LANG_PROGRAM( 780 [[#ifdef HAVE_SYS_TYPES_H 781 #include <sys/types.h> 782 #endif 783 #include <sys/socket.h> 784 #include <netinet/in.h> 785 #include <netdb.h> 786 #include <stdio.h> 787 ]], 788 [[struct sockaddr_in6 in; 789 in.sin6_addr = in6addr_any; 790 printf("%x", &in);]])], 791 [krb5_cv_var_in6addr_any=yes], [krb5_cv_var_in6addr_any=no])]) 792 if test $krb5_cv_var_in6addr_any = no; then 793 AC_DEFINE(NEED_INSIXADDR_ANY,1,[Define if in6addr_any is not defined in libc]) 794 fi 795fi 796 797# then from osconf.h, we have 798 799AC_CHECK_TYPE(time_t, long) 800AC_CHECK_SIZEOF(time_t) 801SIZEOF_TIME_T=$ac_cv_sizeof_time_t 802AC_SUBST(SIZEOF_TIME_T) 803 804# Determine where to put the replay cache. 805 806AC_MSG_CHECKING([for replay cache directory]) 807AC_CACHE_VAL(krb5_cv_sys_rcdir, 808[ 809if test $cross_compiling = yes; then 810 krb5_cv_sys_rcdir=/var/tmp 811else 812 for t_dir in /var/tmp /usr/tmp /var/usr/tmp /tmp ; do 813 test -d $t_dir || continue 814 krb5_cv_sys_rcdir=$t_dir 815 break 816 done 817fi]) 818AC_MSG_RESULT($krb5_cv_sys_rcdir) 819KRB5_RCTMPDIR=$krb5_cv_sys_rcdir 820AC_SUBST(KRB5_RCTMPDIR) 821 822 823AC_MSG_CHECKING(for socklen_t) 824AC_CACHE_VAL(krb5_cv_has_type_socklen_t, 825[AC_COMPILE_IFELSE( 826 [AC_LANG_PROGRAM( 827 [[#include <sys/types.h> 828 #include <sys/socket.h> 829 ]], 830 [[sizeof(socklen_t);]])], 831 [krb5_cv_has_type_socklen_t=yes], [krb5_cv_has_type_socklen_t=no])]) 832AC_MSG_RESULT($krb5_cv_has_type_socklen_t) 833if test $krb5_cv_has_type_socklen_t = yes; then 834 AC_DEFINE(HAVE_SOCKLEN_T,1,[Define if there is a socklen_t type. If not, probably use size_t]) 835fi 836 837AC_MSG_CHECKING(for struct lifconf) 838AC_CACHE_VAL(krb5_cv_has_struct_lifconf, 839[AC_COMPILE_IFELSE( 840 [AC_LANG_PROGRAM( 841 [[#include <sys/socket.h> 842 #include <net/if.h> 843 ]], 844 [[sizeof (struct lifconf);]])], 845 [krb5_cv_has_struct_lifconf=yes], [krb5_cv_has_struct_lifconf=no])]) 846AC_MSG_RESULT($krb5_cv_has_struct_lifconf) 847if test $krb5_cv_has_struct_lifconf = yes; then 848 AC_DEFINE(HAVE_STRUCT_LIFCONF,1,[Define if there is a struct lifconf.]) 849fi 850# HP-UX 11 uses stuct if_laddrconf 851AC_MSG_CHECKING(for struct if_laddrconf) 852AC_CACHE_VAL(krb5_cv_has_struct_if_laddrconf, 853[AC_COMPILE_IFELSE( 854 [AC_LANG_PROGRAM( 855 [[#include <sys/socket.h> 856 #include <net/if.h> 857 #include <net/if6.h> 858 ]], 859 [[sizeof(struct if_laddrconf);]])], 860 [krb5_cv_has_struct_if_laddrconf=yes], 861 [krb5_cv_has_struct_if_laddrconf=no])]) 862AC_MSG_RESULT($krb5_cv_has_struct_if_laddrconf) 863if test $krb5_cv_has_struct_if_laddrconf = yes; then 864 AC_DEFINE(HAVE_STRUCT_IF_LADDRCONF,1,[Define if there is a struct if_laddrconf.]) 865fi 866 867 868AC_MSG_CHECKING([for h_errno in netdb.h]) 869AC_CACHE_VAL(krb5_cv_header_netdb_h_h_errno, 870[AC_COMPILE_IFELSE( 871 [AC_LANG_PROGRAM( 872 [[#include <netdb.h>]], 873 [[int x = h_errno;]])], 874 [krb5_cv_header_netdb_h_h_errno=yes], 875 [krb5_cv_header_netdb_h_h_errno=no])]) 876AC_MSG_RESULT($krb5_cv_header_netdb_h_h_errno) 877if test $krb5_cv_header_netdb_h_h_errno = yes; then 878 AC_DEFINE([HAVE_NETDB_H_H_ERRNO], 1, 879 [Define if netdb.h declares h_errno]) 880fi 881 882 883AC_ARG_ENABLE([athena], 884[ --enable-athena build with MIT Project Athena configuration], 885AC_DEFINE(KRB5_ATHENA_COMPAT,1,[Define if MIT Project Athena default configuration should be used]),) 886 887 888AC_C_INLINE 889AH_TOP([ 890#ifndef KRB5_AUTOCONF_H 891#define KRB5_AUTOCONF_H 892]) 893AH_BOTTOM([ 894#if defined(__GNUC__) && !defined(inline) 895/* Silence gcc pedantic warnings about ANSI C. */ 896# define inline __inline__ 897#endif 898#endif /* KRB5_AUTOCONF_H */ 899]) 900 901AC_CHECK_TYPES([struct cmsghdr, struct in_pktinfo, struct in6_pktinfo, struct sockaddr_storage], , , [ 902#include <sys/types.h> 903#include <sys/socket.h> 904#include <netinet/in.h> 905]) 906AC_CHECK_TYPES([struct rt_msghdr], , , [ 907#include <sys/socket.h> 908#include <net/if.h> 909#include <net/route.h> 910]) 911 912# Tests for 64-bit edwards25519 code. 913AC_CHECK_SIZEOF([size_t]) 914AC_CHECK_TYPES([__int128_t, __uint128_t]) 915 916# types libdb2 wants 917 918AC_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]) 919 920# Some libdb2 test programs want a shell that supports functions. 921FCTSH=false 922AC_PATH_PROG(SH,sh,false) 923AC_PATH_PROG(SH5,sh5,false) 924AC_PATH_PROG(BASH,bash,false) 925for prog in $SH $SH5 $BASH; do 926 AC_MSG_CHECKING(if $prog supports functions) 927 if $prog -c 'foo() { true; }; foo' >/dev/null 2>&1; then 928 AC_MSG_RESULT(yes) 929 FCTSH=$prog 930 break 931 else 932 AC_MSG_RESULT(no) 933 fi 934done 935AC_SUBST(FCTSH) 936 937# Test for POSIX 2001 *printf support (X/Open System Interfaces extension 938# to ANSI/ISO C 1999 specification). Specifically, positional 939# specifications; not checking for other features like %zx at present. 940AC_MSG_CHECKING(for POSIX printf positional specification support) 941AC_CACHE_VAL(ac_cv_printf_positional, 942[AC_RUN_IFELSE( 943 [AC_LANG_SOURCE( 944 [[#include <stdio.h> 945 #include <string.h> 946 const char expected[] = "200 100"; 947 int main() 948 { 949 char buf[30]; 950 sprintf(buf, "%2\$x %1\$d", 100, 512); 951 if (strcmp(expected, buf)) { 952 fprintf(stderr, "bad result: <%s> wanted: <%s>\n", 953 buf, expected); 954 return 1; 955 } 956 return 0; 957 }]])], 958 [ac_cv_printf_positional=yes], [ac_cv_printf_positional=no], 959 [AC_MSG_ERROR(Cannot test for printf positional argument support when cross compiling)])]) 960# Nothing for autoconf.h for now. 961AC_MSG_RESULT($ac_cv_printf_positional) 962 963 964# for t_locate_kdc test 965 966AC_PATH_PROG(DIG, dig, false) 967AC_PATH_PROG(NSLOOKUP, nslookup, false) 968 969# for kadmin 970 971AC_PROG_YACC 972ath_compat= 973AC_ARG_ENABLE([athena], 974[ --enable-athena build with MIT Project Athena configuration], 975ath_compat=compat,) 976 977KRB5_AC_PRIOCNTL_HACK 978 979AC_CHECK_PROG(PERL,perl,perl) 980 981# lib/gssapi 982AC_CHECK_HEADER(xom.h,[ 983 include_xom='awk '\''END{printf("%cinclude <xom.h>\n", 35);}'\'' < /dev/null'], [ 984 include_xom='echo "/* no xom.h */"']) 985AC_SUBST(include_xom) 986 987 988# lib/rpc 989### Check where struct rpcent is declared. 990 991# This is necessary to determine: 992# 1. If /usr/include/netdb.h declares struct rpcent 993# 2. If /usr/include/rpc/netdb.h declares struct rpcent 994 995# We have our own rpc/netdb.h, and if /usr/include/netdb.h includes 996# rpc/netdb.h, then nastiness could happen. 997 998# Logic: If /usr/include/netdb.h declares struct rpcent, then check 999# rpc/netdb.h. If /usr/include/rpc/netdb.h declares struct rpcent, 1000# then define STRUCT_RPCENT_IN_RPC_NETDB_H, otherwise do not. If 1001# neither netdb.h nor rpc/netdb.h declares struct rpcent, then define 1002# STRUCT_RPCENT_IN_RPC_NETDB_H anyway. 1003 1004AC_MSG_CHECKING([where struct rpcent is declared]) 1005AC_COMPILE_IFELSE( 1006 [AC_LANG_PROGRAM( 1007 [[#include <netdb.h> 1008 ]], 1009 [[struct rpcent e; 1010 char c = e.r_name[0]; 1011 int i = e.r_number;]])], 1012 [netdb_rpcent=yes], [netdb_rpcent=no]) 1013if test "$netdb_rpcent" = yes; then 1014 AC_COMPILE_IFELSE( 1015 [AC_LANG_PROGRAM( 1016 [[#include <rpc/netdb.h> 1017 ]], 1018 [[struct rpcent e; 1019 char c = e.r_name[0]; 1020 int i = e.r_number;]])], 1021 [rpc_netdb_rpcent=yes], [rpc_netdb_rpcent=no]) 1022 if test "$rpc_netdb_rpcent" = yes; then 1023 AC_MSG_RESULT([rpc/netdb.h]) 1024 rpcent_define='#define STRUCT_RPCENT_IN_RPC_NETDB_H' 1025 else 1026 AC_MSG_RESULT([netdb.h]) 1027 fi 1028else 1029 AC_MSG_RESULT([nowhere]) 1030 rpcent_define='#define STRUCT_RPCENT_IN_RPC_NETDB_H' 1031fi 1032AC_SUBST(rpcent_define) 1033 1034AC_CHECK_HEADERS(sys/select.h sys/time.h unistd.h) 1035if test $ac_cv_header_sys_select_h = yes; then 1036 GSSRPC__SYS_SELECT_H='#include <sys/select.h>' 1037else 1038 GSSRPC__SYS_SELECT_H='/* #include <sys/select.h> */' 1039fi 1040AC_SUBST(GSSRPC__SYS_SELECT_H) 1041if test $ac_cv_header_sys_time_h = yes; then 1042 GSSRPC__SYS_TIME_H='#include <sys/time.h>' 1043else 1044 GSSRPC__SYS_TIME_H='/* #include <sys/time.h> */' 1045fi 1046AC_SUBST(GSSRPC__SYS_TIME_H) 1047if test $ac_cv_header_unistd_h = yes; then 1048 GSSRPC__UNISTD_H='#include <unistd.h>' 1049else 1050 GSSRPC__UNISTD_H='/* #include <unistd.h> */' 1051fi 1052AC_SUBST(GSSRPC__UNISTD_H) 1053 1054AC_CACHE_CHECK([for MAXHOSTNAMELEN in sys/param.h], 1055[krb5_cv_header_sys_param_h_maxhostnamelen], 1056[AC_COMPILE_IFELSE( 1057 [AC_LANG_PROGRAM( 1058 [[#include <sys/param.h> 1059 ]], 1060 [[int i = MAXHOSTNAMELEN;]])], 1061 [krb5_cv_header_sys_param_h_maxhostnamelen=yes], 1062 [krb5_cv_header_sys_param_h_maxhostnamelen=no])]) 1063AC_CACHE_CHECK([for MAXHOSTNAMELEN in netdb.h], 1064[krb5_cv_header_netdb_h_maxhostnamelen], 1065[AC_COMPILE_IFELSE( 1066 [AC_LANG_PROGRAM( 1067 [[#include <netdb.h> 1068 ]], 1069 [[int i = MAXHOSTNAMELEN;]])], 1070 [krb5_cv_header_netdb_h_maxhostnamelen=yes], 1071 [krb5_cv_header_netdb_h_maxhostnamelen=no])]) 1072 1073GSSRPC__SYS_PARAM_H='/* #include <sys/param.h> */' 1074GSSRPC__NETDB_H='/* #include <netdb.h> */' 1075if test $krb5_cv_header_sys_param_h_maxhostnamelen = yes; then 1076 GSSRPC__SYS_PARAM_H='#include <sys/param.h>' 1077else 1078 if test $krb5_cv_header_netdb_h_maxhostnamelen = yes; then 1079 GSSRPC__NETDB_H='#include <netdb.h>' 1080 else 1081 AC_MSG_WARN([can't find MAXHOSTNAMELEN definition; faking it]) 1082 fi 1083fi 1084AC_SUBST(GSSRPC__SYS_PARAM_H) 1085AC_SUBST(GSSRPC__NETDB_H) 1086 1087AC_CACHE_CHECK([for BSD type aliases], [krb5_cv_type_bsdaliases], 1088[AC_COMPILE_IFELSE( 1089 [AC_LANG_PROGRAM( 1090 [[#include <sys/types.h> 1091 #if HAVE_UNISTD_H 1092 #include <unistd.h> 1093 #endif 1094 ]], 1095 [[u_char c; 1096 u_int i; 1097 u_long l;]])], 1098 [krb5_cv_type_bsdaliases=yes], [krb5_cv_type_bsdaliases=no])]) 1099if test $krb5_cv_type_bsdaliases = yes; then 1100 GSSRPC__BSD_TYPEALIASES='/* #undef GSSRPC__BSD_TYPEALIASES */' 1101else 1102 GSSRPC__BSD_TYPEALIASES='#define GSSRPC__BSD_TYPEALIASES 1' 1103fi 1104AC_SUBST(GSSRPC__BSD_TYPEALIASES) 1105 1106AC_MSG_CHECKING([return type of setrpcent]) 1107AC_CACHE_VAL(k5_cv_type_setrpcent, 1108[AC_COMPILE_IFELSE( 1109 [AC_LANG_SOURCE( 1110 [[#include <netdb.h> 1111 extern void setrpcent();]])], 1112 [k5_cv_type_setrpcent=void], [k5_cv_type_setrpcent=int])]) 1113AC_MSG_RESULT($k5_cv_type_setrpcent) 1114AC_DEFINE_UNQUOTED(SETRPCENT_TYPE, $k5_cv_type_setrpcent, [Define as return type of setrpcent]) 1115 1116AC_MSG_CHECKING([return type of endrpcent]) 1117AC_CACHE_VAL(k5_cv_type_endrpcent, 1118[AC_COMPILE_IFELSE( 1119 [AC_LANG_SOURCE( 1120 [[#include <netdb.h> 1121 extern void endrpcent();]])], 1122 [k5_cv_type_endrpcent=void], [k5_cv_type_endrpcent=int])]) 1123AC_MSG_RESULT($k5_cv_type_endrpcent) 1124AC_DEFINE_UNQUOTED(ENDRPCENT_TYPE, $k5_cv_type_endrpcent, [Define as return type of endrpcent]) 1125K5_GEN_FILE(include/gssrpc/types.h:include/gssrpc/types.hin) 1126 1127# for pkinit 1128AC_ARG_ENABLE([pkinit], 1129[ --disable-pkinit disable PKINIT plugin support],, 1130enable_pkinit=try) 1131if test "$enable_pkinit" = yes || test "$enable_pkinit" = try; then 1132 AC_CACHE_CHECK(for a recent enough OpenSSL, k5_cv_openssl_version_okay, 1133[AC_COMPILE_IFELSE([AC_LANG_SOURCE([#include <openssl/opensslv.h> 1134#if OPENSSL_VERSION_NUMBER < 0x10000000L 1135# error openssl is too old, need 1.0.0 1136#endif 1137int i = 1; 1138])], k5_cv_openssl_version_okay=yes, k5_cv_openssl_version_okay=no)]) 1139 old_LIBS="$LIBS" 1140 AC_CHECK_LIB(crypto, PKCS7_get_signer_info) 1141 AC_CHECK_FUNCS(EVP_PKEY_get_bn_param) 1142 LIBS="$old_LIBS" 1143fi 1144if test "$k5_cv_openssl_version_okay" = yes && (test "$enable_pkinit" = yes || test "$enable_pkinit" = try); then 1145 K5_GEN_MAKEFILE(plugins/preauth/pkinit) 1146 K5_GEN_MAKEFILE(tests/softpkcs11) 1147 PKINIT=yes 1148elif test "$k5_cv_openssl_version_okay" = no && test "$enable_pkinit" = yes; then 1149 AC_MSG_ERROR([Version of OpenSSL is too old; cannot enable PKINIT.]) 1150else 1151 AC_DEFINE([DISABLE_PKINIT], 1, [Define to disable PKINIT plugin support]) 1152 AC_MSG_NOTICE([Disabling PKINIT support.]) 1153 PKINIT=no 1154fi 1155AC_SUBST(PKINIT) 1156 1157# for lib/apputils 1158AC_REPLACE_FUNCS(daemon) 1159 1160# For Python tests. Python version 3.2.4 is required as prior 1161# versions do not accept string input to subprocess.Popen.communicate 1162# when universal_newlines is set. 1163PYTHON_MINVERSION=3.2.4 1164AC_SUBST(PYTHON_MINVERSION) 1165AC_CHECK_PROG(PYTHON,python3,python3) 1166if test x"$PYTHON" = x; then 1167 AC_CHECK_PROG(PYTHON,python,python) 1168fi 1169HAVE_PYTHON=no 1170if test x"$PYTHON" != x; then 1171 wantver="(sys.hexversion >= 0x30204F0)" 1172 if "$PYTHON" -c "import sys; sys.exit(not $wantver and 1 or 0)"; then 1173 HAVE_PYTHON=yes 1174 fi 1175fi 1176AC_SUBST(HAVE_PYTHON) 1177 1178# For cmocka tests. 1179CMOCKA_LIBS= 1180HAVE_CMOCKA=no 1181HAVE_CMOCKA_H=no 1182HAVE_CMOCKA_LIB=no 1183AC_CHECK_HEADER(cmocka.h, [HAVE_CMOCKA_H=yes], :, [ 1184#include <stdarg.h> 1185#include <stddef.h> 1186#include <setjmp.h> ]) 1187AC_CHECK_LIB(cmocka, _cmocka_run_group_tests, [HAVE_CMOCKA_LIB=yes]) 1188if test "$HAVE_CMOCKA_LIB" = yes && test "$HAVE_CMOCKA_H" = yes; then 1189 HAVE_CMOCKA=yes 1190 CMOCKA_LIBS='-lcmocka' 1191 AC_DEFINE([HAVE_CMOCKA],1,[Define if cmocka library is available.]) 1192fi 1193AC_SUBST(HAVE_CMOCKA) 1194AC_SUBST(CMOCKA_LIBS) 1195 1196# For URI lookup tests. Requires resolv_wrapper >= 1.1.5 for URI 1197# support. 1198HAVE_RESOLV_WRAPPER=0 1199PKG_CHECK_EXISTS([resolv_wrapper >= 1.1.5], [HAVE_RESOLV_WRAPPER=1]) 1200AC_SUBST(HAVE_RESOLV_WRAPPER) 1201 1202# for plugins/kdb/db2 1203 1204# AIX is unusual in that it wants all symbols resolved at link time 1205# Fortunately, it will allow us to link the kdb library now, even if 1206# it is linked again later. 1207case $krb5_cv_host in 1208*-*-aix*) 1209 DB_EXTRA_LIBS=-ldb 1210 ;; 1211*) 1212 DB_EXTRA_LIBS= 1213 ;; 1214esac 1215AC_SUBST(DB_EXTRA_LIBS) 1216 1217 1218 1219# Warn about possible thread safety issues. These functions have all 1220# been checked for previously. 1221tsfuncs="getpwnam_r getpwuid_r gethostbyname_r getservbyname_r gmtime_r localtime_r" 1222if test "$enable_thread_support" = yes; then 1223 tsmissing="" 1224 for ts in $tsfuncs; do 1225 if eval "test \"\${ac_cv_func_$ts}\" != yes"; then 1226 tsmissing="$tsmissing $ts" 1227 fi 1228 done 1229 if test "$ac_cv_func_res_nsearch/$ac_cv_lib_resolv_res_nsearch" = "no/no"; then 1230 tsmissing="$tsmissing res_nsearch" 1231 fi 1232 if test "$tsmissing" != ""; then 1233 AC_MSG_WARN([Some functions that are needed for library thread]) 1234 AC_MSG_WARN([safety appear to be missing.]) 1235 for ts in $tsmissing; do 1236 AC_MSG_WARN([ missing thread-safe function: $ts]) 1237 done 1238 AC_MSG_WARN([Without these functions, the installed libraries]) 1239 AC_MSG_WARN([may not be thread-safe.]) 1240 fi # tsmissing not empty 1241fi # enable_thread_support 1242 1243# Sadly, we seem to have accidentally committed ourselves in 1.4 to 1244# an ABI that includes the existence of libkrb5support.0 even 1245# though random apps should never use anything from it. And on 1246# the Mac, to which that didn't apply, we can't use major version 0. 1247 1248case $krb5_cv_host in 1249*-*-darwin* | *-*-rhapsody*) SUPPORTLIB_MAJOR=1 ;; 1250*) SUPPORTLIB_MAJOR=0 ;; 1251esac 1252AC_SUBST(SUPPORTLIB_MAJOR) 1253 1254 1255if test "$COM_ERR_VERSION" = k5 ; then 1256 K5_GEN_MAKEFILE(util/et) 1257fi 1258if test "$SS_VERSION" = k5 ; then 1259 K5_GEN_MAKEFILE(util/ss) 1260fi 1261 1262 1263ldap_plugin_dir="" 1264ldap_lib="" 1265if test -n "$OPENLDAP_PLUGIN"; then 1266 AC_CHECK_HEADERS(ldap.h lber.h, :, [AC_MSG_ERROR($ac_header not found)]) 1267 AC_CHECK_LIB(ldap, ldap_str2dn, :, [AC_MSG_ERROR(libldap not found or missing ldap_str2dn)]) 1268 1269 BER_OKAY=0 1270 AC_CHECK_LIB(ldap, ber_init, [BER_OKAY=1]) 1271 if test "$BER_OKAY" = "1"; then 1272 LDAP_LIBS='-lldap' 1273 else 1274 AC_CHECK_LIB(lber, ber_init, [BER_OKAY=1], [AC_MSG_WARN([libber not found])]) 1275 if test "$BER_OKAY" = "1"; then 1276 LDAP_LIBS='-lldap -llber' 1277 else 1278 AC_MSG_ERROR("BER library missing - cannot build LDAP database module") 1279 fi 1280 fi 1281 AC_DEFINE([ENABLE_LDAP], 1, [Define if LDAP KDB support within the Kerberos library (mainly ASN.1 code) should be enabled.]) 1282 AC_SUBST(LDAP_LIBS) 1283 1284 AC_CHECK_HEADERS([sasl/sasl.h], [HAVE_SASL=yes], [HAVE_SASL=no]) 1285 AC_SUBST(HAVE_SASL) 1286 if test "$HAVE_SASL" = no; then 1287 AC_MSG_WARN([not building LDAP SASL support]) 1288 fi 1289 1290 K5_GEN_MAKEFILE(plugins/kdb/ldap) 1291 K5_GEN_MAKEFILE(plugins/kdb/ldap/ldap_util) 1292 K5_GEN_MAKEFILE(plugins/kdb/ldap/libkdb_ldap) 1293 ldap_plugin_dir='plugins/kdb/ldap plugins/kdb/ldap/ldap_util' 1294 LDAP=yes 1295else 1296 LDAP=no 1297fi 1298AC_SUBST(ldap_plugin_dir) 1299AC_SUBST(LDAP) 1300# This check is for plugins/preauth/securid_sam2 1301sam2_plugin="" 1302old_CFLAGS=$CFLAGS 1303CFLAGS="$CFLAGS $PTHREAD_CFLAGS" 1304AC_CHECK_LIB(aceclnt, SD_Init, [ 1305 AC_MSG_NOTICE([Enabling RSA securID support]) 1306 K5_GEN_MAKEFILE(plugins/preauth/securid_sam2) 1307 sam2_plugin=plugins/preauth/securid_sam2 1308 ]) 1309AC_SUBST(sam2_plugin) 1310CFLAGS=$old_CFLAGS 1311 1312lmdb_plugin_dir="" 1313HAVE_LMDB=no 1314AC_ARG_WITH([lmdb], 1315 [AS_HELP_STRING([--with-lmdb], 1316 [compile LMDB database backend module @<:@auto@:>@])], 1317 [], [withval=auto]) 1318if test "$withval" = auto -o "$withval" = yes; then 1319 AC_CHECK_LIB([lmdb],[mdb_env_create],[have_lmdb=true],[have_lmdb=false]) 1320 if test "$have_lmdb" = true; then 1321 LMDB_LIBS=-llmdb 1322 HAVE_LMDB=yes 1323 lmdb_plugin_dir='plugins/kdb/lmdb' 1324 K5_GEN_MAKEFILE(plugins/kdb/lmdb) 1325 elif test "$withval" = yes; then 1326 AC_MSG_ERROR([liblmdb not found]) 1327 fi 1328fi 1329AC_SUBST(HAVE_LMDB) 1330AC_SUBST(LMDB_LIBS) 1331AC_SUBST(lmdb_plugin_dir) 1332 1333# Kludge for simple server --- FIXME is this the best way to do this? 1334 1335if test "$ac_cv_lib_socket" = "yes" -a "$ac_cv_lib_nsl" = "yes"; then 1336 AC_DEFINE(BROKEN_STREAMS_SOCKETS,1,[Define if socket can't be bound to 0.0.0.0]) 1337fi 1338 1339# Compile with libedit support in ss by default if available. Compile 1340# with readline only if asked, to avoid a default GPL dependency. 1341AC_ARG_WITH([libedit], 1342 [AS_HELP_STRING([--without-libedit], [do not compile with libedit])], 1343 [], [with_libedit=default]) 1344AC_ARG_WITH([readline], 1345 [AS_HELP_STRING([--with-readline], [compile with GNU Readline])], 1346 [], [with_readline=no]) 1347if test "x$with_readline" = xyes; then 1348 with_libedit=no 1349fi 1350RL_CFLAGS= 1351RL_LIBS= 1352if test "x$with_libedit" != xno; then 1353 PKG_CHECK_MODULES(LIBEDIT, libedit, [have_libedit=yes], [have_libedit=no]) 1354 if test "x$have_libedit" = xyes; then 1355 RL_CFLAGS=$LIBEDIT_CFLAGS 1356 RL_LIBS=$LIBEDIT_LIBS 1357 AC_DEFINE([HAVE_LIBEDIT], 1, [Define if building with libedit.]) 1358 AC_MSG_NOTICE([Using libedit for readline support]) 1359 elif test "x$with_libedit" = xyes; then 1360 # We were explicitly asked for libedit and couldn't find it. 1361 AC_MSG_ERROR([Could not detect libedit with pkg-config]) 1362 else 1363 AC_MSG_NOTICE([Not using any readline support]) 1364 fi 1365elif test "x$with_readline" = xyes; then 1366 AC_MSG_NOTICE([Using GNU Readline]) 1367 AC_CHECK_LIB([readline], [main], :, 1368 AC_MSG_FAILURE([Cannot find readline library.])) 1369 AC_DEFINE([HAVE_READLINE], 1, [Define if building with GNU Readline.]) 1370 RL_LIBS='-lreadline' 1371else 1372 AC_MSG_RESULT([Not using any readline support]) 1373fi 1374AC_SUBST([RL_CFLAGS]) 1375AC_SUBST([RL_LIBS]) 1376 1377AC_ARG_WITH([system-verto], 1378 [AS_HELP_STRING([--with-system-verto], [always use system verto library])], 1379 [], [with_system_verto=default]) 1380VERTO_VERSION=k5 1381if test "x$with_system_verto" != xno; then 1382 PKG_CHECK_MODULES(VERTO, libverto, [have_sysverto=yes], [have_sysverto=no]) 1383 if test "x$have_sysverto" = xyes; then 1384 VERTO_VERSION=sys 1385 elif test "x$with_system_verto" = xyes; then 1386 AC_MSG_ERROR([cannot detect system libverto]) 1387 fi 1388fi 1389if test "x$VERTO_VERSION" = xsys; then 1390 AC_MSG_NOTICE([Using system libverto]) 1391else 1392 VERTO_CFLAGS= 1393 VERTO_LIBS="-lverto" 1394 AC_MSG_NOTICE([Using built-in libverto]) 1395fi 1396AC_SUBST([VERTO_CFLAGS]) 1397AC_SUBST([VERTO_LIBS]) 1398AC_SUBST([VERTO_VERSION]) 1399 1400AC_PATH_PROG(GROFF, groff) 1401 1402# Make localedir work in autoconf 2.5x. 1403if test "${localedir+set}" != set; then 1404 localedir='$(datadir)/locale' 1405fi 1406AC_SUBST(localedir) 1407 1408# Determine the default macOS ccache type and whether to build the KCM 1409# Mach RPC support. 1410MACOS_FRAMEWORK= 1411dnl The outer brackets around the case statement prevent m4 from 1412dnl eating the brackets in the glob patterns, but also prevent us from 1413dnl using AC_DEFINE within the body. 1414[case $host in 1415*-*-darwin[0-9].* | *-*-darwin10.*) 1416 # Use the normal default cache type for macOS 10.6 (Darwin 10) and 1417 # prior. Build the KCM Mach RPC support. 1418 OSX=osx 1419 ;; 1420*-*-darwin*) 1421 # macOS 10.6 (Darwin 11) uses the KCM type by default. macOS 11 1422 # (Darwin 20) uses an xpc-based cache type called XCACHE by default. 1423 # We can access either of these collections via a macos-specific 1424 # implementation of the API cache type. Build the KCM Mach RPC 1425 # support. 1426 OSX=osx 1427 macos_defccname=API: 1428 MACOS_FRAMEWORK="-framework Kerberos" 1429 ;; 1430*) 1431 # This is not macOS; do not build the Mach RPC support and use the 1432 # normal default cache type. 1433 OSX=no 1434 ;; 1435esac] 1436if test "$macos_defccname" = API:; then 1437 AC_DEFINE(USE_CCAPI_MACOS, 1, [Define to build macOS CCAPI client]) 1438fi 1439AC_SUBST(OSX) 1440AC_SUBST(MACOS_FRAMEWORK) 1441 1442# Build-time default ccache, keytab, and client keytab names. These 1443# can be given as variable arguments DEFCCNAME, DEFKTNAME, and 1444# DEFCKTNAME. Otherwise, we try to get the OS defaults from 1445# krb5-config if we can, or fall back to hardcoded defaults. 1446AC_ARG_VAR(DEFCCNAME, [Default ccache name]) 1447AC_ARG_VAR(DEFKTNAME, [Default keytab name]) 1448AC_ARG_VAR(DEFCKTNAME, [Default client keytab name]) 1449AC_ARG_WITH([krb5-config], 1450 [AS_HELP_STRING([--with-krb5-config=PATH], 1451 [path to existing krb5-config program for defaults])], 1452 [], [with_krb5_config=krb5-config]) 1453if test "x$with_krb5_config" != xno; then 1454 if test "x$with_krb5_config" = xyes; then 1455 with_krb5_config=krb5-config 1456 fi 1457 if $with_krb5_config --help 2>&1 | grep defccname >/dev/null; then 1458 AC_MSG_NOTICE([Using $with_krb5_config for build defaults]) 1459 : "${DEFCCNAME=`$with_krb5_config --defccname`}" 1460 : "${DEFKTNAME=`$with_krb5_config --defktname`}" 1461 : "${DEFCKTNAME=`$with_krb5_config --defcktname`}" 1462 fi 1463fi 1464if test "${DEFCCNAME+set}" != set; then 1465 if test "${macos_defccname+set}" = set; then 1466 DEFCCNAME=$macos_defccname 1467 else 1468 DEFCCNAME=FILE:/tmp/krb5cc_%{uid} 1469 fi 1470fi 1471if test "${DEFKTNAME+set}" != set; then 1472 DEFKTNAME=FILE:/etc/krb5.keytab 1473fi 1474if test "${DEFCKTNAME+set}" != set; then 1475 AX_RECURSIVE_EVAL($localstatedir, exp_localstatedir) 1476 DEFCKTNAME=FILE:$exp_localstatedir/krb5/user/%{euid}/client.keytab 1477fi 1478AC_MSG_NOTICE([Default ccache name: $DEFCCNAME]) 1479AC_MSG_NOTICE([Default keytab name: $DEFKTNAME]) 1480AC_MSG_NOTICE([Default client keytab name: $DEFCKTNAME]) 1481AC_DEFINE_UNQUOTED(DEFCCNAME, ["$DEFCCNAME"], [Define to default ccache name]) 1482AC_DEFINE_UNQUOTED(DEFKTNAME, ["$DEFKTNAME"], [Define to default keytab name]) 1483AC_DEFINE_UNQUOTED(DEFCKTNAME, ["$DEFCKTNAME"], 1484 [Define to default client keytab name]) 1485 1486AC_ARG_VAR(PKCS11_MODNAME, [Default PKCS11 module name]) 1487if test "${PKCS11_MODNAME+set}" != set; then 1488 PKCS11_MODNAME=opensc-pkcs11.so 1489fi 1490AC_MSG_NOTICE([Default PKCS11 module name: $PKCS11_MODNAME]) 1491AC_DEFINE_UNQUOTED(PKCS11_MODNAME, ["$PKCS11_MODNAME"], 1492 [Default PKCS11 module name]) 1493 1494AC_CONFIG_FILES([build-tools/krb5-config], [chmod +x build-tools/krb5-config]) 1495AC_CONFIG_FILES([build-tools/kadm-server.pc 1496 build-tools/kadm-client.pc 1497 build-tools/kdb.pc 1498 build-tools/krb5.pc 1499 build-tools/krb5-gssapi.pc 1500 build-tools/mit-krb5.pc 1501 build-tools/mit-krb5-gssapi.pc 1502 build-tools/gssrpc.pc 1503]) 1504V5_AC_OUTPUT_MAKEFILE(. 1505 1506 util util/support util/profile util/profile/testmod 1507 util/verto 1508 1509 lib lib/kdb 1510 1511 lib/crypto lib/crypto/krb lib/crypto/crypto_tests 1512 lib/crypto/builtin lib/crypto/builtin/des 1513 lib/crypto/builtin/aes lib/crypto/builtin/camellia 1514 lib/crypto/builtin/md4 lib/crypto/builtin/md5 1515 lib/crypto/builtin/sha1 lib/crypto/builtin/sha2 1516 lib/crypto/builtin/enc_provider lib/crypto/builtin/hash_provider 1517 lib/crypto/openssl lib/crypto/openssl/des 1518 lib/crypto/openssl/enc_provider lib/crypto/openssl/hash_provider 1519 1520 lib/krb5 lib/krb5/error_tables lib/krb5/asn.1 lib/krb5/ccache 1521 lib/krb5/keytab lib/krb5/krb lib/krb5/rcache lib/krb5/os 1522 lib/krb5/unicode 1523 1524 lib/gssapi lib/gssapi/generic lib/gssapi/krb5 lib/gssapi/spnego 1525 lib/gssapi/mechglue 1526 1527 lib/rpc lib/rpc/unit-test 1528 1529 lib/kadm5 lib/kadm5/clnt lib/kadm5/srv 1530 lib/krad 1531 lib/apputils 1532 1533 kdc kprop config-files build-tools man doc include 1534 1535 plugins/certauth/test 1536 plugins/gssapi/negoextest 1537 plugins/hostrealm/test 1538 plugins/localauth/test 1539 plugins/kadm5_hook/test 1540 plugins/kadm5_auth/test 1541 plugins/pwqual/test 1542 plugins/audit 1543 plugins/audit/test 1544 plugins/kdb/db2 1545 plugins/kdb/db2/libdb2 1546 plugins/kdb/db2/libdb2/hash 1547 plugins/kdb/db2/libdb2/btree 1548 plugins/kdb/db2/libdb2/db 1549 plugins/kdb/db2/libdb2/mpool 1550 plugins/kdb/db2/libdb2/recno 1551 plugins/kdb/db2/libdb2/test 1552 plugins/kdb/test 1553 plugins/kdcpolicy/test 1554 plugins/preauth/otp 1555 plugins/preauth/spake 1556 plugins/preauth/test 1557 plugins/authdata/greet_client 1558 plugins/authdata/greet_server 1559 plugins/tls/k5tls 1560 1561 clients clients/klist clients/kinit clients/kvno 1562 clients/kdestroy clients/kpasswd clients/ksu clients/kswitch 1563 1564 kadmin kadmin/cli kadmin/dbutil kadmin/ktutil kadmin/server 1565 1566 appl 1567 appl/sample appl/sample/sclient appl/sample/sserver 1568 appl/simple appl/simple/client appl/simple/server 1569 appl/gss-sample appl/user_user 1570 1571 tests tests/asn.1 tests/create tests/hammer tests/verify tests/gssapi 1572 tests/threads tests/shlib tests/gss-threads tests/misc 1573) 1574