2 AC_COPYRIGHT([Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009
3 Massachusetts Institute of Technology.
6 dnl Figure out the top of the source and build trees. We depend on localdir
7 dnl being a relative pathname; we could make it general later, but for now
8 dnl this is good enough.
10 dnl esyscmd([test -r aclocal.m4 && echo YES])
11 define([fileexists],[dnl
12 pushdef([x],esyscmd([if test -r $1; then echo YES;else echo NO; fi]))dnl
13 dnl Strip out newline.
16 ],[NO],UNKNOWN)[]popdef([x])])
17 define([K5_TOPDIR],dnl
18 ifelse(fileexists(./aclocal.m4),YES,[.],[dnl
19 ifelse(fileexists(../aclocal.m4),YES,[..],[dnl
20 ifelse(fileexists(../../aclocal.m4),YES,[../..],[dnl
21 ifelse(fileexists(../../../aclocal.m4),YES,[../../..],[dnl
22 ifelse(fileexists(../../../../aclocal.m4),YES,[../../../..],[dnl
23 errprint(__file__:__line__: Cannot find path to aclocal.m4[
24 ]) m4exit(1) dnl sometimes that does not work?
25 builtin(m4exit,1)UNKNOWN])])])])]))
27 AC_DEFUN(V5_SET_TOPDIR,[dnl
28 ac_reltopdir="K5_TOPDIR"
29 if test ! -r "$srcdir/K5_TOPDIR/aclocal.m4"; then
30 AC_MSG_ERROR([Configure could not determine the relative topdir])
32 ac_topdir=$srcdir/$ac_reltopdir
33 ac_config_fragdir=$ac_reltopdir/config
34 # echo "Looking for $srcdir/$ac_config_fragdir"
35 if test -d "$srcdir/$ac_config_fragdir"; then
36 AC_CONFIG_AUX_DIR(K5_TOPDIR/config)
38 AC_MSG_ERROR([can not find config/ directory in $ac_reltopdir])
44 pushdef([x],esyscmd([sed -n 's/#define \([A-Z0-9_]*\)[ \t]*\(.*\)/\1=\2/p' < ]K5_TOPDIR/patchlevel.h))
45 define([PL_KRB5_MAJOR_RELEASE],regexp(x,[KRB5_MAJOR_RELEASE=\(.*\)],[\1]))
46 ifelse(PL_KRB5_MAJOR_RELEASE,,[errprint([Can't determine KRB5_MAJOR_RELEASE value from patchlevel.h.
47 ]) m4exit(1) dnl sometimes that does not work?
49 define([PL_KRB5_MINOR_RELEASE],regexp(x,[KRB5_MINOR_RELEASE=\(.*\)],[\1]))
50 ifelse(PL_KRB5_MINOR_RELEASE,,[errprint([Can't determine KRB5_MINOR_RELEASE value from patchlevel.h.
51 ]) m4exit(1) dnl sometimes that does not work?
53 define([PL_KRB5_PATCHLEVEL],regexp(x,[KRB5_PATCHLEVEL=\(.*\)],[\1]))
54 ifelse(PL_KRB5_PATCHLEVEL,,[errprint([Can't determine KRB5_PATCHLEVEL value from patchlevel.h.
55 ]) m4exit(1) dnl sometimes that does not work?
57 define([PL_KRB5_RELTAIL],regexp(x,[KRB5_RELTAIL="\(.*\)"],[\1]))
58 dnl RELTAIL is allowed to not be defined.
60 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))
61 define([K5_BUGADDR],krb5-bugs@mit.edu)
62 define([K5_AC_INIT],[AC_INIT(Kerberos 5, K5_VERSION, K5_BUGADDR, krb5)
66 dnl drop in standard rules for all configure files -- CONFIG_RULES
68 AC_DEFUN(CONFIG_RULES,[dnl
69 AC_REQUIRE([V5_SET_TOPDIR]) dnl
74 if test -z "$LD" ; then LD=$CC; fi
75 AC_ARG_VAR(LD,[linker command [CC]])
80 dnl allow stuff in tree to access deprecated stuff for now
81 dnl AC_DEFINE([KRB5_DEPRECATED], 1, [Define only if building in-tree])
85 KRB5_AC_MAINTAINER_MODE dnl
88 dnl This identifies the top of the source tree relative to the directory
89 dnl in which the configure file lives.
91 CONFIG_RELTOPDIR=$ac_reltopdir
92 AC_SUBST(CONFIG_RELTOPDIR)
93 lib_frag=$srcdir/$ac_config_fragdir/lib.in
94 AC_SUBST_FILE(lib_frag)
95 libobj_frag=$srcdir/$ac_config_fragdir/libobj.in
96 AC_SUBST_FILE(libobj_frag)
97 libnover_frag=$srcdir/$ac_config_fragdir/libnover.in
98 AC_SUBST_FILE(libnover_frag)
99 libpriv_frag=$srcdir/$ac_config_fragdir/libpriv.in
100 AC_SUBST_FILE(libpriv_frag)
101 libnodeps_frag=$srcdir/$ac_config_fragdir/libnodeps.in
102 AC_SUBST_FILE(libnodeps_frag)
104 KRB5_AC_PRAGMA_WEAK_REF
108 KRB5_AC_ENABLE_THREADS
110 KRB5_AC_KEYRING_CCACHE
113 dnl Maintainer mode, akin to what automake provides, 'cept we don't
114 dnl want to use automake right now.
115 AC_DEFUN([KRB5_AC_MAINTAINER_MODE],
116 [AC_ARG_ENABLE([maintainer-mode],
117 AC_HELP_STRING([--enable-maintainer-mode],[enable rebuilding of source files, Makefiles, etc]),
118 USE_MAINTAINER_MODE=$enableval,
119 USE_MAINTAINER_MODE=no)
120 if test "$USE_MAINTAINER_MODE" = yes; then
121 MAINTAINER_MODE_TRUE=
122 MAINTAINER_MODE_FALSE='#'
123 AC_MSG_NOTICE(enabling maintainer mode)
125 MAINTAINER_MODE_TRUE='#'
126 MAINTAINER_MODE_FALSE=
128 MAINT=$MAINTAINER_MODE_TRUE
129 AC_SUBST(MAINTAINER_MODE_TRUE)
130 AC_SUBST(MAINTAINER_MODE_FALSE)
135 AC_DEFUN([KRB5_AC_INITFINI],[
136 dnl Do we want initialization at load time?
137 AC_ARG_ENABLE([delayed-initialization],
138 AC_HELP_STRING([--disable-delayed-initialization],initialize library code when loaded @<:@delay until first use@:>@), , enable_delayed_initialization=yes)
139 case "$enable_delayed_initialization" in
141 AC_DEFINE(DELAY_INITIALIZER,1,[Define if library initialization should be delayed until first use]) ;;
143 *) AC_MSG_ERROR(invalid option $enable_delayed_initialization for delayed-initialization) ;;
145 dnl We always want finalization at unload time.
147 dnl Can we do things through gcc?
149 dnl How about with the linker?
150 if test -z "$use_linker_init_option" ; then
151 AC_MSG_ERROR(ran INITFINI before checking shlib.conf?)
153 if test "$use_linker_init_option" = yes; then
154 AC_DEFINE(USE_LINKER_INIT_OPTION,1,[Define if link-time options for library initialization will be used])
156 if test "$use_linker_fini_option" = yes; then
157 AC_DEFINE(USE_LINKER_FINI_OPTION,1,[Define if link-time options for library finalization will be used])
162 AC_DEFUN([KRB5_AC_FIND_DLOPEN],[
165 AC_SEARCH_LIBS(dlopen, dl, [
166 if test "$ac_cv_search_dlopen" != "none required"; then
167 DL_LIB=$ac_cv_search_dlopen
170 AC_DEFINE(USE_DLOPEN,1,[Define if dlopen should be used])])
176 AC_DEFUN([KRB5_AC_ENABLE_THREADS],[
177 AC_ARG_ENABLE([thread-support],
178 AC_HELP_STRING([--disable-thread-support],don't enable thread support @<:@enabled@:>@), , enable_thread_support=yes)
179 if test "$enable_thread_support" = yes ; then
180 AC_MSG_NOTICE(enabling thread support)
181 AC_DEFINE(ENABLE_THREADS,1,[Define if thread support enabled])
183 dnl Maybe this should be inside the conditional above? Doesn't cache....
184 if test "$enable_thread_support" = yes; then
185 ACX_PTHREAD(,[AC_MSG_ERROR([cannot determine options for enabling thread support; try --disable-thread-support])])
186 AC_MSG_NOTICE(PTHREAD_CC = $PTHREAD_CC)
187 AC_MSG_NOTICE(PTHREAD_CFLAGS = $PTHREAD_CFLAGS)
188 AC_MSG_NOTICE(PTHREAD_LIBS = $PTHREAD_LIBS)
189 dnl Not really needed -- if pthread.h isn't found, ACX_PTHREAD will fail.
190 dnl AC_CHECK_HEADERS(pthread.h)
191 # AIX and Tru64 don't support weak references, and don't have
192 # stub versions of the pthread code in libc.
195 # On these platforms, we'll always pull in the thread support.
196 LIBS="$LIBS $PTHREAD_LIBS"
197 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
198 # We don't need to sometimes add the flags we've just folded in...
203 # These are the flags that "gcc -pthread" adds. But we don't
204 # want "-pthread" because that has link-time effects, and we
205 # don't exclude CFLAGS when linking. *sigh*
206 PTHREAD_CFLAGS="-D_REENTRANT -D_THREAD_SAFE -D_POSIX_C_SOURCE=199506L"
209 # On Solaris 10 with gcc 3.4.3, the autoconf archive macro doesn't
210 # get the right result. XXX What about Solaris 9 and earlier?
211 if test "$GCC" = yes ; then
212 PTHREAD_CFLAGS="-D_REENTRANT -pthreads"
216 # On Solaris 10 with gcc 3.4.3, the autoconf archive macro doesn't
217 # get the right result.
218 if test "$GCC" = yes ; then
219 PTHREAD_CFLAGS="-D_REENTRANT -pthreads"
221 # On Solaris 10, the thread support is always available in libc.
222 AC_DEFINE(NO_WEAK_PTHREADS,1,[Define if references to pthread routines should be non-weak.])
232 AC_SUBST(THREAD_SUPPORT)
233 dnl We want to know where these routines live, so on systems with weak
234 dnl reference support we can figure out whether or not the pthread library
235 dnl has been linked in.
236 dnl If we don't add any libraries for thread support, don't bother.
237 AC_CHECK_FUNCS(pthread_once pthread_rwlock_init)
239 test "$PTHREAD_CC" != "" && test "$ac_cv_c_compiler_gnu" = no && CC=$PTHREAD_CC
241 # On Solaris, -pthreads is added to CFLAGS, no extra explicit libraries.
242 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
243 AC_SUBST(PTHREAD_CFLAGS)
245 LIBS="$PTHREAD_LIBS $LIBS"
246 AC_MSG_NOTICE(rechecking with PTHREAD_... options)
247 AC_CHECK_LIB(c, pthread_rwlock_init,
248 [AC_DEFINE(HAVE_PTHREAD_RWLOCK_INIT_IN_THREAD_LIB,1,[Define if pthread_rwlock_init is provided in the thread library.])])
254 dnl This is somewhat gross and should go away when the build system
255 dnl is revamped. -- tlyu
256 dnl DECLARE_SYS_ERRLIST - check for sys_errlist in libc
258 AC_DEFUN([DECLARE_SYS_ERRLIST],
259 [AC_CACHE_CHECK([for sys_errlist declaration], krb5_cv_decl_sys_errlist,
260 [AC_TRY_COMPILE([#include <stdio.h>
261 #include <errno.h>], [1+sys_nerr;],
262 krb5_cv_decl_sys_errlist=yes, krb5_cv_decl_sys_errlist=no)])
263 # assume sys_nerr won't be declared w/o being in libc
264 if test $krb5_cv_decl_sys_errlist = yes; then
265 AC_DEFINE(SYS_ERRLIST_DECLARED,1,[Define if sys_errlist is defined in errno.h])
266 AC_DEFINE(HAVE_SYS_ERRLIST,1,[Define if sys_errlist in libc])
268 # This means that sys_errlist is not declared in errno.h, but may still
270 AC_CACHE_CHECK([for sys_errlist in libc], krb5_cv_var_sys_errlist,
271 [AC_TRY_LINK([extern int sys_nerr;], [if (1+sys_nerr < 0) return 1;],
272 krb5_cv_var_sys_errlist=yes, krb5_cv_var_sys_errlist=no;)])
273 if test $krb5_cv_var_sys_errlist = yes; then
274 AC_DEFINE(HAVE_SYS_ERRLIST,1,[Define if sys_errlist in libc])
275 # Do this cruft for backwards compatibility for now.
276 AC_DEFINE(NEED_SYS_ERRLIST,1,[Define if need to declare sys_errlist])
278 AC_MSG_WARN([sys_errlist is neither in errno.h nor in libc])
283 dnl check for sigmask/sigprocmask -- CHECK_SIGPROCMASK
285 AC_DEFUN(CHECK_SIGPROCMASK,[
286 AC_MSG_CHECKING([for use of sigprocmask])
287 AC_CACHE_VAL(krb5_cv_func_sigprocmask_use,
288 [AC_TRY_LINK([#include <signal.h>], [sigprocmask(SIG_SETMASK,0,0);],
289 krb5_cv_func_sigprocmask_use=yes,
290 AC_TRY_LINK([#include <signal.h>], [sigmask(1);],
291 krb5_cv_func_sigprocmask_use=no, krb5_cv_func_sigprocmask_use=yes))])
292 AC_MSG_RESULT($krb5_cv_func_sigprocmask_use)
293 if test $krb5_cv_func_sigprocmask_use = yes; then
294 AC_DEFINE(USE_SIGPROCMASK,1,[Define if sigprocmask should be used])
298 AC_DEFUN(AC_PROG_ARCHIVE, [AC_CHECK_PROG(ARCHIVE, ar, ar cqv, false)])dnl
299 AC_DEFUN(AC_PROG_ARCHIVE_ADD, [AC_CHECK_PROG(ARADD, ar, ar cruv, false)])dnl
301 dnl check for <dirent.h> -- CHECK_DIRENT
302 dnl (may need to be more complex later)
304 AC_DEFUN(CHECK_DIRENT,[
305 AC_CHECK_HEADER(dirent.h,AC_DEFINE(USE_DIRENT_H,1,[Define if you have dirent.h functionality]))])dnl
307 dnl check if union wait is defined, or if WAIT_USES_INT -- CHECK_WAIT_TYPE
309 AC_DEFUN(CHECK_WAIT_TYPE,[
310 AC_MSG_CHECKING([if argument to wait is int *])
311 AC_CACHE_VAL(krb5_cv_struct_wait,
312 dnl Test for prototype clash - if there is none - then assume int * works
313 [AC_TRY_COMPILE([#include <sys/types.h>
314 #include <sys/wait.h>
315 extern pid_t wait(int *);],[], krb5_cv_struct_wait=no,dnl
316 dnl Else fallback on old stuff
318 [#include <sys/wait.h>], [union wait i;
323 krb5_cv_struct_wait=yes, krb5_cv_struct_wait=no)])])
324 AC_MSG_RESULT($krb5_cv_struct_wait)
325 if test $krb5_cv_struct_wait = no; then
326 AC_DEFINE(WAIT_USES_INT,1,[Define if wait takes int as a argument])
330 dnl check for POSIX signal handling -- CHECK_SIGNALS
332 AC_DEFUN(CHECK_SIGNALS,[
333 AC_CHECK_FUNC(sigprocmask,
334 AC_MSG_CHECKING(for sigset_t and POSIX_SIGNALS)
335 AC_CACHE_VAL(krb5_cv_type_sigset_t,
337 [#include <signal.h>],
339 krb5_cv_type_sigset_t=yes, krb5_cv_type_sigset_t=no)])
340 AC_MSG_RESULT($krb5_cv_type_sigset_t)
341 if test $krb5_cv_type_sigset_t = yes; then
342 AC_DEFINE(POSIX_SIGNALS,1,[Define if POSIX signal handling is used])
346 dnl check for signal type
348 dnl AC_RETSIGTYPE isn't quite right, but almost.
349 AC_DEFUN(KRB5_SIGTYPE,[
350 AC_MSG_CHECKING([POSIX signal handlers])
351 AC_CACHE_VAL(krb5_cv_has_posix_signals,
353 [#include <sys/types.h>
358 extern void (*signal ()) ();], [],
359 krb5_cv_has_posix_signals=yes, krb5_cv_has_posix_signals=no)])
360 AC_MSG_RESULT($krb5_cv_has_posix_signals)
361 if test $krb5_cv_has_posix_signals = yes; then
363 AC_DEFINE(POSIX_SIGTYPE, 1, [Define if POSIX signal handlers are used])
365 if test $ac_cv_type_signal = void; then
371 AC_DEFINE_UNQUOTED(krb5_sigtype, $stype, [Define krb5_sigtype to type of signal handler])dnl
374 dnl check for POSIX setjmp/longjmp -- CHECK_SETJMP
376 AC_DEFUN(CHECK_SETJMP,[
377 AC_CHECK_FUNC(sigsetjmp,
378 AC_MSG_CHECKING(for sigjmp_buf)
379 AC_CACHE_VAL(krb5_cv_struct_sigjmp_buf,
381 [#include <setjmp.h>],[sigjmp_buf x],
382 krb5_cv_struct_sigjmp_buf=yes,krb5_cv_struct_sigjmp_buf=no)])
383 AC_MSG_RESULT($krb5_cv_struct_sigjmp_buf)
384 if test $krb5_cv_struct_sigjmp_buf = yes; then
385 AC_DEFINE(POSIX_SETJMP,1,[Define if setjmp indicates POSIX interface])
389 dnl Check for IPv6 compile-time support.
391 AC_DEFUN(KRB5_AC_INET6,[
392 AC_CHECK_HEADERS(sys/types.h sys/socket.h netinet/in.h netdb.h)
393 AC_CHECK_FUNCS(inet_ntop inet_pton getnameinfo)
394 dnl getaddrinfo test needs netdb.h, for proper compilation on alpha
395 dnl under OSF/1^H^H^H^H^HDigital^H^H^H^H^H^H^HTru64 UNIX, where it's
397 AC_MSG_CHECKING(for getaddrinfo)
398 AC_CACHE_VAL(ac_cv_func_getaddrinfo,
399 [AC_TRY_LINK([#ifdef HAVE_NETDB_H
403 getaddrinfo("kerberos.mit.edu", "echo", 0, &ai);
404 ], ac_cv_func_getaddrinfo=yes, ac_cv_func_getaddrinfo=no)])
405 AC_MSG_RESULT($ac_cv_func_getaddrinfo)
406 if test $ac_cv_func_getaddrinfo = yes; then
407 AC_DEFINE(HAVE_GETADDRINFO,1,[Define if you have the getaddrinfo function])
410 AC_REQUIRE([KRB5_SOCKADDR_SA_LEN])dnl
411 AC_ARG_ENABLE([ipv6], , AC_MSG_WARN(enable/disable-ipv6 option is deprecated))dnl
412 AC_MSG_CHECKING(for IPv6 compile-time support)
413 AC_CACHE_VAL(krb5_cv_inet6,[
414 if test "$ac_cv_func_inet_ntop" != "yes" ; then
418 #ifdef HAVE_SYS_TYPES_H
419 #include <sys/types.h>
421 #include <sys/socket.h>
422 #include <netinet/in.h>
425 struct sockaddr_in6 in;
427 IN6_IS_ADDR_LINKLOCAL (&in.sin6_addr);
428 ],krb5_cv_inet6=yes,krb5_cv_inet6=no)])
430 AC_MSG_RESULT($krb5_cv_inet6)
431 if test "$krb5_cv_inet6" = no && test "$ac_cv_func_inet_ntop" = yes; then
432 AC_MSG_CHECKING(for IPv6 compile-time support with -DINET6)
433 AC_CACHE_VAL(krb5_cv_inet6_with_dinet6,[
437 #ifdef HAVE_SYS_TYPES_H
438 #include <sys/types.h>
440 #include <sys/socket.h>
441 #include <netinet/in.h>
444 struct sockaddr_in6 in;
446 IN6_IS_ADDR_LINKLOCAL (&in.sin6_addr);
447 ],krb5_cv_inet6_with_dinet6=yes,krb5_cv_inet6_with_dinet6=no)
449 AC_MSG_RESULT($krb5_cv_inet6_with_dinet6)
451 if test $krb5_cv_inet6 = yes || test "$krb5_cv_inet6_with_dinet6" = yes; then
452 if test "$krb5_cv_inet6_with_dinet6" = yes; then
453 AC_DEFINE(INET6,1,[May need to be defined to enable IPv6 support, for example on IRIX])
455 AC_DEFINE(KRB5_USE_INET6,1,[Define if we should compile in IPv6 support (even if we can't use it at run time)])
459 AC_DEFUN(KRB5_AC_CHECK_FOR_CFLAGS,[
460 AC_BEFORE([$0],[AC_PROG_CC])
461 AC_BEFORE([$0],[AC_PROG_CXX])
462 krb5_ac_cflags_set=${CFLAGS+set}
463 krb5_ac_cxxflags_set=${CXXFLAGS+set}
464 krb5_ac_warn_cflags_set=${WARN_CFLAGS+set}
465 krb5_ac_warn_cxxflags_set=${WARN_CXXFLAGS+set}
468 AC_DEFUN(TRY_WARN_CC_FLAG,[dnl
469 cachevar=`echo "krb5_cv_cc_flag_$1" | sed -e s/=/_eq_/g -e s/-/_dash_/g -e s/[[^a-zA-Z0-9_]]/_/g`
470 AC_CACHE_CHECK([if C compiler supports $1], [$cachevar],
471 [# first try without, then with
472 AC_TRY_COMPILE([], 1;,
473 [old_cflags="$CFLAGS"
475 AC_TRY_COMPILE([], 1;, eval $cachevar=yes, eval $cachevar=no)
476 CFLAGS="$old_cflags"],
477 [AC_MSG_ERROR(compiling simple test program with $CFLAGS failed)])])
478 if eval test '"${'$cachevar'}"' = yes; then
479 WARN_CFLAGS="$WARN_CFLAGS $1"
481 eval flag_supported='${'$cachevar'}'
484 AC_DEFUN(WITH_CC,[dnl
485 AC_REQUIRE([KRB5_AC_CHECK_FOR_CFLAGS])dnl
486 AC_REQUIRE([AC_PROG_CC])dnl
487 AC_REQUIRE([AC_PROG_CXX])dnl
488 if test $ac_cv_c_compiler_gnu = yes ; then
493 AC_CACHE_CHECK([for GNU linker], krb5_cv_prog_gnu_ld,
494 [krb5_cv_prog_gnu_ld=no
495 if test "$GCC" = yes; then
496 if AC_TRY_COMMAND([$CC -Wl,-v 2>&1 dnl
497 | grep "GNU ld" > /dev/null]); then
498 krb5_cv_prog_gnu_ld=yes
501 AC_ARG_WITH([size-optimizations],
502 [ --with-size-optimizations enable a few optimizations to reduce code size
503 possibly at some run-time cost],
506 if test "$withval" = yes; then
507 AC_DEFINE(CONFIG_SMALL,1,[Define to reduce code size even if it means more cpu usage])
509 # -Wno-long-long, if needed, for k5-platform.h without inttypes.h etc.
510 extra_gcc_warn_opts="-Wall -Wcast-align -Wshadow"
511 # -Wmissing-prototypes
512 if test "$GCC" = yes ; then
513 # Putting this here means we get -Os after -O2, which works.
514 if test "$with_size_optimizations" = yes && test "x$krb5_ac_cflags_set" != xset; then
515 AC_MSG_NOTICE(adding -Os optimization option)
517 "-g -O2") CFLAGS="-g -Os" ;;
518 "-O2") CFLAGS="-Os" ;;
519 *) CFLAGS="$CFLAGS -Os" ;;
522 if test "x$krb5_ac_warn_cflags_set" = xset ; then
523 AC_MSG_NOTICE(not adding extra gcc warning flags because WARN_CFLAGS was set)
525 AC_MSG_NOTICE(adding extra warning flags for gcc)
526 WARN_CFLAGS="$WARN_CFLAGS $extra_gcc_warn_opts -Wmissing-prototypes"
527 if test "`uname -s`" = Darwin ; then
528 AC_MSG_NOTICE(skipping pedantic warnings on Darwin)
529 elif test "`uname -s`" = Linux ; then
530 AC_MSG_NOTICE(skipping pedantic warnings on Linux)
532 WARN_CFLAGS="$WARN_CFLAGS -pedantic"
534 if test "$ac_cv_cxx_compiler_gnu" = yes; then
535 if test "x$krb5_ac_warn_cxxflags_set" = xset ; then
536 AC_MSG_NOTICE(not adding extra g++ warnings because WARN_CXXFLAGS was set)
538 AC_MSG_NOTICE(adding extra warning flags for g++)
539 WARN_CXXFLAGS="$WARN_CXXFLAGS $extra_gcc_warn_opts"
542 # Currently, G++ does not support -Wno-format-zero-length.
543 TRY_WARN_CC_FLAG(-Wno-format-zero-length)
544 # Other flags here may not be supported on some versions of
545 # gcc that people want to use.
546 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 ; do
547 TRY_WARN_CC_FLAG(-W$flag)
549 # old-style-definition? generates many, many warnings
551 # Warnings that we'd like to turn into errors on versions of gcc
552 # that support promoting only specific warnings to errors, but
553 # we'll take as warnings on older compilers. (If such a warning
554 # is added after the -Werror=foo feature, you can just put
555 # error=foo in the above list, and skip the test for the
556 # warning-only form.) At least in some versions, -Werror= doesn't
557 # seem to make the conditions actual errors, but still issues
558 # warnings; I guess we'll take what we can get.
560 # We're currently targeting C89+, not C99, so disallow some
562 for flag in declaration-after-statement variadic-macros ; do
563 TRY_WARN_CC_FLAG(-Werror=$flag)
564 if test "$flag_supported" = no; then
565 TRY_WARN_CC_FLAG(-W$flag)
568 # We require function declarations now.
570 # In some compiler versions -- e.g., "gcc version 4.2.1 (Apple
571 # Inc. build 5664)" -- the -Werror- option works, but the -Werror=
572 # version doesn't cause implicitly declared functions to be
573 # flagged as errors. If neither works, -Wall implies
574 # -Wimplicit-function-declaration so don't bother.
575 TRY_WARN_CC_FLAG(-Werror-implicit-function-declaration)
576 if test "implicit-function-declaration_supported" = no; then
577 TRY_WARN_CC_FLAG(-Werror=implicit-function-declaration)
581 if test "`uname -s`" = Darwin ; then
582 # Someday this should be a feature test.
583 # One current (Jaguar = OS 10.2) problem:
584 # Archive library with foo.o undef sym X and bar.o common sym X,
585 # if foo.o is pulled in at link time, bar.o may not be, causing
586 # the linker to complain.
587 # Dynamic library problems too?
588 case "$CC $CFLAGS" in
589 *-fcommon*) ;; # why someone would do this, I don't know
590 *-fno-common*) ;; # okay, they're already doing the right thing
592 AC_MSG_NOTICE(disabling the use of common storage on Darwin)
593 CFLAGS="$CFLAGS -fno-common"
596 case "$LD $LDFLAGS" in
597 *-Wl,-search_paths_first*) ;;
598 *) LDFLAGS="${LDFLAGS} -Wl,-search_paths_first" ;;
602 if test "`uname -s`" = AIX ; then
603 # Using AIX but not GCC, assume native compiler.
604 # The native compiler appears not to give a nonzero exit
605 # status for certain classes of errors, like missing arguments
606 # in function calls. Let's try to fix that with -qhalt=e.
607 case "$CC $CFLAGS" in
610 CFLAGS="$CFLAGS -qhalt=e"
611 AC_MSG_NOTICE(adding -qhalt=e for better error reporting)
614 # Also, the optimizer isn't turned on by default, which means
615 # the static inline functions get left in random object files,
616 # leading to references to pthread_mutex_lock from anything that
617 # includes k5-int.h whether it uses threads or not.
618 case "$CC $CFLAGS" in
622 AC_MSG_NOTICE(adding -O for inline thread-support function elimination)
626 if test "`uname -s`" = SunOS ; then
627 # Using Solaris but not GCC, assume Sunsoft compiler.
628 # We have some error-out-on-warning options available.
629 # Sunsoft 12 compiler defaults to -xc99=all, it appears, so "inline"
630 # works, but it also means that declaration-in-code warnings won't
632 # -v -fd -errwarn=E_DECLARATION_IN_CODE ...
633 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"
634 WARN_CXXFLAGS="-errtags=yes +w +w2 -xport64"
637 AC_SUBST(WARN_CFLAGS)
638 AC_SUBST(WARN_CXXFLAGS)
642 dnl check for yylineno -- HAVE_YYLINENO
644 AC_DEFUN(HAVE_YYLINENO,[dnl
645 AC_REQUIRE_CPP()AC_REQUIRE([AC_PROG_LEX])dnl
646 AC_MSG_CHECKING([for yylineno declaration])
647 AC_CACHE_VAL(krb5_cv_type_yylineno,
648 # some systems have yylineno, others don't...
650 %%' | ${LEX} -t > conftest.out
651 if egrep yylineno conftest.out >/dev/null 2>&1; then
652 krb5_cv_type_yylineno=yes
654 krb5_cv_type_yylineno=no
657 AC_MSG_RESULT($krb5_cv_type_yylineno)
658 if test $krb5_cv_type_yylineno = no; then
659 AC_DEFINE(NO_YYLINENO, 1, [Define if lex produes code with yylineno])
663 dnl K5_GEN_MAKEFILE([dir, [frags]])
665 AC_DEFUN(K5_GEN_MAKEFILE,[dnl
666 ifelse($1, ,[_K5_GEN_MAKEFILE(.,$2)],[_K5_GEN_MAKEFILE($1,$2)])
669 dnl _K5_GEN_MAKEFILE(dir, [frags])
670 dnl dir must be present in this case
671 dnl Note: Be careful in quoting.
672 dnl The ac_foreach generates the list of fragments to include
673 dnl or "" if $2 is empty
674 AC_DEFUN(_K5_GEN_MAKEFILE,[dnl
675 AC_CONFIG_FILES([$1/Makefile:$srcdir/]K5_TOPDIR[/config/pre.in:$1/Makefile.in:$1/deps:$srcdir/]K5_TOPDIR[/config/post.in])
678 dnl K5_GEN_FILE( <ac_output arguments> )
680 AC_DEFUN(K5_GEN_FILE,[AC_CONFIG_FILES($1)])dnl
683 dnl Note: Adds the variables to config.status for individual
684 dnl Makefile generation from config.status
685 AC_DEFUN(K5_AC_OUTPUT,[AC_OUTPUT])dnl
687 dnl V5_AC_OUTPUT_MAKEFILE
689 AC_DEFUN(V5_AC_OUTPUT_MAKEFILE,
690 [ifelse($1, , [_V5_AC_OUTPUT_MAKEFILE(.,$2)],[_V5_AC_OUTPUT_MAKEFILE($1,$2)])])
692 define(_V5_AC_OUTPUT_MAKEFILE,
693 [ifelse($2, , ,AC_CONFIG_FILES($2))
694 AC_FOREACH([DIR], [$1],dnl
695 [AC_CONFIG_FILES(DIR[/Makefile:$srcdir/]K5_TOPDIR[/config/pre.in:]DIR[/Makefile.in:]DIR[/deps:$srcdir/]K5_TOPDIR[/config/post.in])])
699 dnl KRB5_SOCKADDR_SA_LEN: define HAVE_SA_LEN if sockaddr contains the sa_len
702 AC_DEFUN([KRB5_SOCKADDR_SA_LEN],[ dnl
703 AC_CHECK_MEMBER(struct sockaddr.sa_len,
704 AC_DEFINE(HAVE_SA_LEN,1,[Define if struct sockaddr contains sa_len])
705 ,,[#include <sys/types.h>
706 #include <sys/socket.h>])])
711 AC_DEFUN(WITH_NETLIB,[
712 AC_ARG_WITH([netlib],
713 AC_HELP_STRING([--with-netlib=LIBS], use user defined resolver library),
714 [ if test "$withval" = yes -o "$withval" = no ; then
715 AC_MSG_RESULT("netlib will link with C library resolver only")
717 LIBS="$LIBS $withval"
718 AC_MSG_RESULT("netlib will use \'$withval\'")
725 AC_DEFUN(KRB5_AC_NEED_DAEMON, [
726 KRB5_NEED_PROTO([#ifdef HAVE_UNISTD_H
728 #endif],daemon,1)])dnl
730 dnl Check if stdarg or varargs is available *and compiles*; prefer stdarg.
731 dnl (This was sent to djm for incorporation into autoconf 3/12/1996. KR)
733 AC_DEFUN(AC_HEADER_STDARG, [
735 AC_MSG_CHECKING([for stdarg.h])
736 AC_CACHE_VAL(ac_cv_header_stdarg_h,
737 [AC_TRY_COMPILE([#include <stdarg.h>], [
738 } /* ac_try_compile will have started a function body */
739 int aoeu (char *format, ...) {
742 va_start (v, format);
745 ],ac_cv_header_stdarg_h=yes,ac_cv_header_stdarg_h=no)])dnl
746 AC_MSG_RESULT($ac_cv_header_stdarg_h)
747 if test $ac_cv_header_stdarg_h = yes; then
748 AC_DEFINE(HAVE_STDARG_H, 1, [Define if stdarg available and compiles])
751 AC_MSG_CHECKING([for varargs.h])
752 AC_CACHE_VAL(ac_cv_header_varargs_h,
753 [AC_TRY_COMPILE([#include <varargs.h>],[
754 } /* ac_try_compile will have started a function body */
755 int aoeu (va_alist) va_dcl {
761 ],ac_cv_header_varargs_h=yes,ac_cv_header_varargs_h=no)])dnl
762 AC_MSG_RESULT($ac_cv_header_varargs_h)
763 if test $ac_cv_header_varargs_h = yes; then
764 AC_DEFINE(HAVE_VARARGS_H, 1, [Define if varargs available and compiles])
766 AC_MSG_ERROR(Neither stdarg nor varargs compile?)
769 fi dnl stdarg test failure
774 dnl KRB5_AC_NEED_LIBGEN --- check if libgen needs to be linked in for
778 AC_DEFUN(KRB5_AC_NEED_LIBGEN,[
779 AC_REQUIRE([AC_PROG_CC])dnl
781 dnl regcomp is present but non-functional on Solaris 2.4
783 AC_MSG_CHECKING(for working regcomp)
784 AC_CACHE_VAL(ac_cv_func_regcomp,[
786 #include <sys/types.h>
788 regex_t x; regmatch_t m;
789 int main() { return regcomp(&x,"pat.*",0) || regexec(&x,"pattern",1,&m,0); }
790 ], ac_cv_func_regcomp=yes, ac_cv_func_regcomp=no, AC_MSG_ERROR([Cannot test regcomp when cross compiling]))])
791 AC_MSG_RESULT($ac_cv_func_regcomp)
792 test $ac_cv_func_regcomp = yes && AC_DEFINE(HAVE_REGCOMP,1,[Define if regcomp exists and functions])
794 dnl Check for the compile and step functions - only if regcomp is not available
796 if test $ac_cv_func_regcomp = no; then
799 dnl this will fail if there's no compile/step in -lgen, or if there's
800 dnl no -lgen. This is fine.
801 AC_CHECK_FUNCS(compile step)
804 dnl Set GEN_LIB if necessary
806 AC_CHECK_LIB(gen, compile, GEN_LIB=-lgen, GEN_LIB=)
811 dnl KRB5_AC_REGEX_FUNCS --- check for different regular expression
812 dnl support functions
814 AC_DEFUN(KRB5_AC_REGEX_FUNCS,[
815 AC_CHECK_FUNCS(re_comp re_exec regexec)
816 AC_REQUIRE([KRB5_AC_NEED_LIBGEN])dnl
819 dnl AC_KRB5_TCL_FIND_CONFIG (uses tcl_dir)
821 AC_DEFUN(AC_KRB5_TCL_FIND_CONFIG,[
822 AC_REQUIRE([KRB5_LIB_AUX])dnl
823 AC_MSG_CHECKING(for tclConfig.sh)
824 dnl On Debian, we might be given --with-tcl=/usr, or tclsh might
825 dnl point us to /usr/lib/tcl8.4; either way, we need to find
826 dnl /usr/lib/tcl8.4/tclConfig.sh.
827 dnl On NetBSD, we might be given --with-tcl=/usr/pkg, or tclsh
828 dnl might point us to /usr/pkg/lib/tcl8.4; we need to find
829 dnl /usr/pkg/lib/tclConfig.sh.
830 if test -r "$tcl_dir/lib/tclConfig.sh" ; then
831 tcl_conf="$tcl_dir/lib/tclConfig.sh"
832 elif test -r "$tcl_dir/tclConfig.sh" ; then
833 tcl_conf="$tcl_dir/tclConfig.sh"
834 elif test -r "$tcl_dir/../tclConfig.sh" ; then
835 tcl_conf="$tcl_dir/../tclConfig.sh"
839 changequote(<<,>>)dnl
840 for d in "$lib" "$lib"/tcl7.[0-9] "$lib"/tcl8.[0-9] ; do
841 if test -r "$d/tclConfig.sh" ; then
842 tcl_conf="$tcl_conf $d/tclConfig.sh"
847 if test -n "$tcl_conf" ; then
848 AC_MSG_RESULT($tcl_conf)
850 AC_MSG_RESULT(not found)
855 old_CPPFLAGS=$CPPFLAGS
858 if test -n "$tcl_conf" ; then
859 for file in $tcl_conf ; do
860 TCL_MAJOR_VERSION=x ; TCL_MINOR_VERSION=x
861 AC_MSG_CHECKING(Tcl info in $file)
863 v=$TCL_MAJOR_VERSION.$TCL_MINOR_VERSION
864 if test -z "$tcl_vers_maj" \
865 || test "$tcl_vers_maj" -lt "$TCL_MAJOR_VERSION" \
866 || test "$tcl_vers_maj" = "$TCL_MAJOR_VERSION" -a "$tcl_vers_min" -lt "$TCL_MINOR_VERSION" ; then
867 for incdir in "$TCL_PREFIX/include/tcl$v" "$TCL_PREFIX/include" ; do
868 if test -r "$incdir/tcl.h" -o -r "$incdir/tcl/tcl.h" ; then
869 CPPFLAGS="$old_CPPFLAGS -I$incdir"
873 LIBS="$old_LIBS `eval echo x $TCL_LIB_SPEC $TCL_LIBS | sed 's/^x//'`"
874 LDFLAGS="$old_LDFLAGS $TCL_LD_FLAGS"
875 AC_TRY_LINK( , [Tcl_CreateInterp ();],
877 tcl_vers_maj=$TCL_MAJOR_VERSION
878 tcl_vers_min=$TCL_MINOR_VERSION
879 AC_MSG_RESULT($v - working),
880 AC_MSG_RESULT($v - compilation failed)
883 AC_MSG_RESULT(older version $v)
887 CPPFLAGS=$old_CPPFLAGS
892 if test -n "$tcl_ok_conf" ; then
895 for incdir in "$TCL_PREFIX/include/tcl$v" "$TCL_PREFIX/include" ; do
896 if test -r "$incdir/tcl.h" -o -r "$incdir/tcl/tcl.h" ; then
897 if test "$incdir" != "/usr/include" ; then
898 TCL_INCLUDES=-I$incdir
903 # Need eval because the first-level expansion could reference
904 # variables like ${TCL_DBGX}.
905 eval TCL_LIBS='"'$TCL_LIB_SPEC $TCL_LIBS $TCL_DL_LIBS'"'
906 TCL_LIBPATH="-L$TCL_EXEC_PREFIX/lib"
907 TCL_RPATH=":$TCL_EXEC_PREFIX/lib"
908 if test "$DEPLIBEXT" != "$SHLIBEXT" && test -n "$RPATH_FLAG"; then
909 TCL_MAYBE_RPATH='$(RPATH_FLAG)'"$TCL_EXEC_PREFIX/lib$RPATH_TAIL"
913 CPPFLAGS="$old_CPPFLAGS $TCL_INCLUDES"
914 AC_CHECK_HEADER(tcl.h,AC_DEFINE(HAVE_TCL_H,1,[Define if tcl.h is available]) tcl_header=yes)
915 if test $tcl_header=no; then
916 AC_CHECK_HEADER(tcl/tcl.h,AC_DEFINE(HAVE_TCL_TCL_H,1,[Define if tcl/tcl.h is available]) tcl_header=yes)
918 CPPFLAGS="$old_CPPFLAGS"
921 # If we read a tclConfig.sh file, it probably set this.
924 AC_SUBST(TCL_INCLUDES)
926 AC_SUBST(TCL_LIBPATH)
928 AC_SUBST(TCL_MAYBE_RPATH)
931 dnl AC_KRB5_TCL_TRYOLD
932 dnl attempt to use old search algorithm for locating tcl
934 AC_DEFUN(AC_KRB5_TCL_TRYOLD, [
935 AC_REQUIRE([KRB5_AC_FIND_DLOPEN])
936 AC_MSG_WARN([trying old tcl search code])
937 if test "$with_tcl" != yes -a "$with_tcl" != no; then
938 TCL_INCLUDES=-I$with_tcl/include
939 TCL_LIBPATH=-L$with_tcl/lib
940 TCL_RPATH=:$with_tcl/lib
942 if test "$with_tcl" != no ; then
943 krb5_save_CPPFLAGS="$CPPFLAGS"
944 krb5_save_LDFLAGS="$LDFLAGS"
945 CPPFLAGS="$CPPFLAGS $TCL_INCLUDES"
946 LDFLAGS="$LDFLAGS $TCL_LIBPATH"
948 AC_CHECK_HEADER(tcl.h,AC_DEFINE(HAVE_TCL_H,1,[Define if tcl.h found]) tcl_header=yes)
949 if test $tcl_header=no; then
950 AC_CHECK_HEADER(tcl/tcl.h,AC_DEFINE(HAVE_TCL_TCL_H,1,[Define if tcl/tcl.h found]) tcl_header=yes)
953 if test $tcl_header = yes ; then
956 if test $tcl_lib = no; then
957 AC_CHECK_LIB(tcl8.0, Tcl_CreateCommand,
958 TCL_LIBS="$TCL_LIBS -ltcl8.0 -lm $DL_LIB $LIBS"
959 tcl_lib=yes,,-lm $DL_LIB)
961 if test $tcl_lib = no; then
962 AC_CHECK_LIB(tcl7.6, Tcl_CreateCommand,
963 TCL_LIBS="$TCL_LIBS -ltcl7.6 -lm $DL_LIB $LIBS"
964 tcl_lib=yes,,-lm $DL_LIB)
966 if test $tcl_lib = no; then
967 AC_CHECK_LIB(tcl7.5, Tcl_CreateCommand,
968 TCL_LIBS="$TCL_LIBS -ltcl7.5 -lm $DL_LIB $LIBS"
969 tcl_lib=yes,,-lm $DL_LIB)
972 if test $tcl_lib = no ; then
973 AC_CHECK_LIB(tcl, Tcl_CreateCommand,
974 TCL_LIBS="$TCL_LIBS -ltcl -lm $DL_LIB $LIBS"
975 tcl_lib=yes,,-lm $DL_LIB)
978 if test $tcl_lib = no ; then
979 AC_MSG_WARN("tcl.h found but not library")
982 AC_MSG_WARN(Could not find Tcl which is needed for the kadm5 tests)
985 CPPFLAGS="$krb5_save_CPPFLAGS"
986 LDFLAGS="$krb5_save_LDFLAGS"
987 AC_SUBST(TCL_INCLUDES)
989 AC_SUBST(TCL_LIBPATH)
992 AC_MSG_RESULT("Not looking for Tcl library")
996 dnl AC_KRB5_TCL - determine if the TCL library is present on system
998 AC_DEFUN(AC_KRB5_TCL,[
1006 [ --with-tcl=path where Tcl resides], , with_tcl=try)
1007 if test "$with_tcl" = no ; then
1009 elif test "$with_tcl" = yes -o "$with_tcl" = try ; then
1011 if test ! -r /usr/lib/tclConfig.sh; then
1012 cat >> conftest <<\EOF
1013 puts "tcl_dir=$tcl_library"
1015 if tclsh conftest >conftest.out 2>/dev/null; then
1016 if grep tcl_dir= conftest.out >/dev/null 2>&1; then
1017 t=`sed s/tcl_dir=// conftest.out`
1020 fi # tclsh ran script okay
1021 rm -f conftest conftest.out
1022 fi # no /usr/lib/tclConfig.sh
1026 if test "$with_tcl" != no ; then
1027 AC_KRB5_TCL_FIND_CONFIG
1028 if test $tcl_lib = no ; then
1029 if test "$with_tcl" != try ; then
1032 AC_MSG_WARN(Could not find Tcl which is needed for some tests)
1036 # If "yes" or pathname, error out if not found.
1037 if test "$with_tcl" != no -a "$with_tcl" != try ; then
1038 if test "$tcl_header $tcl_lib" != "yes yes" ; then
1039 AC_MSG_ERROR(Could not find Tcl)
1047 AC_DEFUN(WITH_HESIOD,
1048 [AC_ARG_WITH(hesiod, AC_HELP_STRING(--with-hesiod[=path], compile with hesiod support @<:@omitted@:>@),
1049 hesiod=$with_hesiod, with_hesiod=no)
1050 if test "$with_hesiod" != "no"; then
1051 HESIOD_DEFS=-DHESIOD
1052 AC_CHECK_LIB(resolv, res_send, res_lib=-lresolv)
1053 if test "$hesiod" != "yes"; then
1054 HESIOD_LIBS="-L${hesiod}/lib -lhesiod $res_lib"
1056 HESIOD_LIBS="-lhesiod $res_lib"
1062 AC_SUBST(HESIOD_DEFS)
1063 AC_SUBST(HESIOD_LIBS)])
1067 dnl KRB5_BUILD_LIBRARY
1069 dnl Pull in the necessary stuff to create the libraries.
1071 AC_DEFUN(KRB5_BUILD_LIBRARY,
1072 [AC_REQUIRE([KRB5_LIB_AUX])dnl
1073 AC_REQUIRE([AC_PROG_LN_S])dnl
1074 AC_REQUIRE([AC_PROG_RANLIB])dnl
1075 AC_REQUIRE([AC_PROG_ARCHIVE])dnl
1076 AC_REQUIRE([AC_PROG_ARCHIVE_ADD])dnl
1077 AC_REQUIRE([AC_PROG_INSTALL])dnl
1078 AC_CHECK_PROG(AR, ar, ar, false)
1079 AC_CHECK_PROG(PERL, perl, perl, false)
1080 if test "$ac_cv_prog_PERL" = "false"; then
1081 AC_MSG_ERROR(Perl is now required for Kerberos builds.)
1086 AC_SUBST(PLUGINLINK)
1087 AC_SUBST(PLUGININST)
1088 AC_SUBST(KDB5_PLUGIN_DEPLIBS)
1089 AC_SUBST(KDB5_PLUGIN_LIBS)
1090 AC_SUBST(MAKE_SHLIB_COMMAND)
1091 AC_SUBST(SHLIB_RPATH_FLAGS)
1092 AC_SUBST(SHLIB_EXPFLAGS)
1093 AC_SUBST(SHLIB_EXPORT_FILE_DEP)
1094 AC_SUBST(DYNOBJ_EXPDEPS)
1095 AC_SUBST(DYNOBJ_EXPFLAGS)
1096 AC_SUBST(INSTALL_SHLIB)
1103 AC_SUBST(LIBINSTLIST)
1105 AC_SUBST(MAKE_DYNOBJ_COMMAND)
1109 dnl KRB5_BUILD_LIBOBJS
1111 dnl Pull in the necessary stuff to build library objects.
1113 AC_DEFUN(KRB5_BUILD_LIBOBJS,
1114 [AC_REQUIRE([KRB5_LIB_AUX])dnl
1120 AC_SUBST(PROFFLAGS)])
1123 dnl KRB5_BUILD_PROGRAM
1125 dnl Set variables to build a program.
1127 AC_DEFUN(KRB5_BUILD_PROGRAM,
1128 [AC_REQUIRE([KRB5_LIB_AUX])dnl
1129 AC_REQUIRE([KRB5_AC_NEED_LIBGEN])dnl
1132 AC_SUBST(RPATH_FLAG)
1133 AC_SUBST(PROG_RPATH_FLAGS)
1134 AC_SUBST(DEPLIBEXT)])
1139 dnl Set up environment for running dynamic executables out of build tree
1141 AC_DEFUN(KRB5_RUN_FLAGS,
1142 [AC_REQUIRE([KRB5_LIB_AUX])dnl
1143 KRB5_RUN_ENV="$RUN_ENV"
1144 KRB5_RUN_VARS="$RUN_VARS"
1145 AC_SUBST(KRB5_RUN_ENV)
1146 AC_SUBST(KRB5_RUN_VARS)])
1151 dnl Parse configure options related to library building.
1153 AC_DEFUN(KRB5_LIB_AUX,
1154 [AC_REQUIRE([KRB5_LIB_PARAMS])dnl
1156 AC_ARG_ENABLE([static],,, [enable_static=no])
1157 AC_ARG_ENABLE([shared],,, [enable_shared=yes])
1159 if test "x$enable_static" = "x$enable_shared"; then
1160 AC_MSG_ERROR([--enable-static must be specified with --disable-shared])
1163 AC_ARG_ENABLE([rpath],
1164 AC_HELP_STRING([--disable-rpath],[suppress run path flags in link lines]),,
1167 if test "x$enable_rpath" != xyes ; then
1168 # Unset the rpath flag values set by shlib.conf
1174 if test "$SHLIBEXT" = ".so-nobuild"; then
1175 AC_MSG_ERROR([Shared libraries are not yet supported on this platform.])
1180 if test "x$enable_static" = xyes; then
1181 AC_MSG_NOTICE([using static libraries])
1182 LIBLIST='lib$(LIBBASE)$(STLIBEXT)'
1183 LIBLINKS='$(TOPLIBD)/lib$(LIBBASE)$(STLIBEXT)'
1184 PLUGIN='libkrb5_$(LIBBASE)$(STLIBEXT)'
1185 PLUGINLINK='$(TOPLIBD)/libkrb5_$(LIBBASE)$(STLIBEXT)'
1186 PLUGININST=install-static
1188 LIBINSTLIST=install-static
1190 AC_DEFINE([STATIC_PLUGINS], 1, [Define for static plugin linkage])
1192 KDB5_PLUGIN_DEPLIBS='$(TOPLIBD)/libkrb5_db2$(DEPLIBEXT)'
1193 KDB5_PLUGIN_LIBS='-lkrb5_db2'
1194 if test "x$OPENLDAP_PLUGIN" = xyes; then
1195 KDB5_PLUGIN_DEBLIBS=$KDB5_PLUGIN_DEPLIBS' $(TOPLIBD)/libkrb5_ldap$(DEPLIBEXT)'
1196 KDB5_PLUGIN_LIBS=$KDB_LUGIN_LIBS' -lkrb5_ldap'
1199 # avoid duplicate rules generation for AIX and such
1200 SHLIBEXT=.so-nobuild
1201 SHLIBVEXT=.so.v-nobuild
1202 SHLIBSEXT=.so.s-nobuild
1204 AC_MSG_NOTICE([using shared libraries])
1206 # Clear some stuff in case of AIX, etc.
1207 if test "$STLIBEXT" = "$SHLIBEXT" ; then
1210 case "$SHLIBSEXT" in
1212 LIBLIST='lib$(LIBBASE)$(SHLIBEXT)'
1213 LIBLINKS='$(TOPLIBD)/lib$(LIBBASE)$(SHLIBEXT) $(TOPLIBD)/lib$(LIBBASE)$(SHLIBVEXT)'
1214 LIBINSTLIST="install-shared"
1217 LIBLIST='lib$(LIBBASE)$(SHLIBEXT) lib$(LIBBASE)$(SHLIBSEXT)'
1218 LIBLINKS='$(TOPLIBD)/lib$(LIBBASE)$(SHLIBEXT) $(TOPLIBD)/lib$(LIBBASE)$(SHLIBVEXT) $(TOPLIBD)/lib$(LIBBASE)$(SHLIBSEXT)'
1219 LIBINSTLIST="install-shlib-soname"
1223 PLUGIN='$(LIBBASE)$(DYNOBJEXT)'
1225 PLUGININST=install-plugin
1226 KDB5_PLUGIN_DEPLIBS=
1229 CC_LINK="$CC_LINK_SHARED"
1230 CXX_LINK="$CXX_LINK_SHARED"
1232 if test -z "$LIBLIST"; then
1233 AC_MSG_ERROR([must enable one of shared or static libraries])
1236 # Check whether to build profiled libraries.
1237 AC_ARG_ENABLE([profiled],
1238 dnl [ --enable-profiled build profiled libraries @<:@disabled@:>@]
1240 [if test "$enableval" = yes; then
1241 AC_MSG_ERROR([Sorry, profiled libraries do not work in this release.])
1247 dnl Determine parameters related to libraries, e.g. various extensions.
1249 AC_DEFUN(KRB5_LIB_PARAMS,
1250 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
1252 AC_SUBST(krb5_cv_host)
1253 AC_REQUIRE([AC_PROG_CC])dnl
1254 AC_REQUIRE([V5_SET_TOPDIR])dnl
1255 . $ac_topdir/config/shlib.conf])
1257 dnl The following was written by jhawk@mit.edu
1259 dnl AC_LIBRARY_NET: Id: net.m4,v 1.4 1997/10/25 20:49:53 jhawk Exp
1261 dnl This test is for network applications that need socket() and
1262 dnl gethostbyname() -ish functions. Under Solaris, those applications need to
1263 dnl link with "-lsocket -lnsl". Under IRIX, they should *not* link with
1264 dnl "-lsocket" because libsocket.a breaks a number of things (for instance:
1265 dnl gethostbyname() under IRIX 5.2, and snoop sockets under most versions of
1268 dnl Unfortunately, many application developers are not aware of this, and
1269 dnl mistakenly write tests that cause -lsocket to be used under IRIX. It is
1270 dnl also easy to write tests that cause -lnsl to be used under operating
1271 dnl systems where neither are necessary (or useful), such as SunOS 4.1.4, which
1272 dnl uses -lnsl for TLI.
1274 dnl This test exists so that every application developer does not test this in
1275 dnl a different, and subtly broken fashion.
1277 dnl It has been argued that this test should be broken up into two seperate
1278 dnl tests, one for the resolver libraries, and one for the libraries necessary
1279 dnl for using Sockets API. Unfortunately, the two are carefully intertwined and
1280 dnl allowing the autoconf user to use them independantly potentially results in
1281 dnl unfortunate ordering dependancies -- as such, such component macros would
1282 dnl have to carefully use indirection and be aware if the other components were
1283 dnl executed. Since other autoconf macros do not go to this trouble, and almost
1284 dnl no applications use sockets without the resolver, this complexity has not
1285 dnl been implemented.
1287 dnl The check for libresolv is in case you are attempting to link statically
1288 dnl and happen to have a libresolv.a lying around (and no libnsl.a).
1290 AC_DEFUN(AC_LIBRARY_NET, [
1291 # Most operating systems have gethostbyname() in the default searched
1292 # libraries (i.e. libc):
1293 AC_CHECK_FUNC(gethostbyname, , [
1294 # Some OSes (eg. Solaris) place it in libnsl:
1295 AC_CHECK_LIB(nsl, gethostbyname, , [
1296 # Some strange OSes (SINIX) have it in libsocket:
1297 AC_CHECK_LIB(socket, gethostbyname, , [
1298 # Unfortunately libsocket sometimes depends on libnsl.
1299 # AC_CHECK_LIB's API is essentially broken so the following
1300 # ugliness is necessary:
1301 AC_CHECK_LIB(socket, gethostbyname,
1302 LIBS="-lsocket -lnsl $LIBS",
1303 [AC_CHECK_LIB(resolv, gethostbyname,
1304 LIBS="-lresolv $LIBS" )],
1309 AC_CHECK_FUNC(socket, , AC_CHECK_LIB(socket, socket, ,
1310 AC_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", , -lnsl)))
1312 if test "$enable_dns" = yes ; then
1313 # We assume that if libresolv exists we can link against it.
1314 # This may get us a gethostby* that doesn't respect nsswitch.
1315 AC_CHECK_LIB(resolv, main)
1317 _KRB5_AC_CHECK_RES_FUNCS(res_ninit res_nclose res_ndestroy res_nsearch dnl
1318 ns_initparse ns_name_uncompress dn_skipname res_search)
1319 if test $krb5_cv_func_res_nsearch = no \
1320 && test $krb5_cv_func_res_search = no; then
1321 # Attempt to link with res_search(), in case it's not prototyped.
1322 AC_CHECK_FUNC(res_search,
1323 [AC_DEFINE(HAVE_RES_SEARCH, 1,
1324 [Define to 1 if you have the `res_search' function])],
1325 [AC_ERROR([cannot find res_nsearch or res_search])])
1329 AC_DEFUN([_KRB5_AC_CHECK_RES_FUNCS],
1330 [AC_FOREACH([AC_Func], [$1],
1331 [AH_TEMPLATE(AS_TR_CPP(HAVE_[]AC_Func),
1332 [Define to 1 if you have the `]AC_Func[' function.])])dnl
1333 for krb5_func in $1; do
1334 _KRB5_AC_CHECK_RES_FUNC($krb5_func)
1337 AC_DEFUN([_KRB5_AC_CHECK_RES_FUNC], [
1338 # Solaris 9 prototypes ns_name_uncompress() in arpa/nameser.h, but
1339 # doesn't export it from libresolv.so, so we use extreme paranoia here
1340 # and check both for the declaration and that we can link against the
1342 AC_CACHE_CHECK([for $1], [krb5_cv_func_$1], [AC_TRY_LINK(
1343 [#include <sys/types.h>
1344 #include <netinet/in.h>
1345 #include <arpa/nameser.h>
1346 @%:@include <resolv.h>],
1348 * Use volatile, or else optimization can cause false positives.
1350 void (* volatile p)() = (void (*)())$1;],
1351 [AS_VAR_SET(krb5_cv_func_$1, yes)],
1352 [AS_VAR_SET(krb5_cv_func_$1, no)])])
1353 AS_IF([test AS_VAR_GET(krb5_cv_func_$1) = yes],
1354 [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1]), 1,
1355 [Define to 1 if you have the `$1' function])])[]dnl
1359 dnl KRB5_AC_ENABLE_DNS
1361 AC_DEFUN(KRB5_AC_ENABLE_DNS, [
1363 enable_dns_for_kdc=yes
1364 AC_DEFINE(KRB5_DNS_LOOKUP_KDC,1,[Define to enable DNS lookups of Kerberos KDCs])
1366 AC_ARG_ENABLE([dns-for-realm],
1367 [ --enable-dns-for-realm enable DNS lookups of Kerberos realm names], ,
1368 [enable_dns_for_realm=no])
1369 if test "$enable_dns_for_realm" = yes; then
1370 AC_DEFINE(KRB5_DNS_LOOKUP_REALM,1,[Define to enable DNS lookups of Kerberos realm names])
1373 AC_DEFINE(KRB5_DNS_LOOKUP, 1,[Define for DNS support of locating realms and KDCs])
1378 dnl Check if we need the prototype for a function - we give it a bogus
1379 dnl prototype and if it complains - then a valid prototype exists on the
1382 dnl KRB5_NEED_PROTO(includes, function, [bypass])
1383 dnl if $3 set, don't see if library defined.
1384 dnl Useful for case where we will define in libkrb5 the function if need be
1385 dnl but want to know if a prototype exists in either case on system.
1387 AC_DEFUN([KRB5_NEED_PROTO], [
1388 ifelse([$3], ,[if test "x$ac_cv_func_$2" = xyes; then])
1389 AC_CACHE_CHECK([if $2 needs a prototype provided], krb5_cv_func_$2_noproto,
1390 AC_TRY_COMPILE([$1],
1392 struct k5foo {int foo; } xx;
1393 extern int $2 (struct k5foo*);
1396 krb5_cv_func_$2_noproto=yes,krb5_cv_func_$2_noproto=no))
1397 if test $krb5_cv_func_$2_noproto = yes; then
1398 AC_DEFINE([NEED_]translit($2, [a-z], [A-Z])[_PROTO], 1, dnl
1399 [define if the system header files are missing prototype for $2()])
1404 dnl =============================================================
1405 dnl Internal function for testing for getpeername prototype
1407 AC_DEFUN([KRB5_GETPEERNAME_ARGS],[
1408 AC_DEFINE([GETPEERNAME_ARG2_TYPE],GETSOCKNAME_ARG2_TYPE,[Type of getpeername second argument.])
1409 AC_DEFINE([GETPEERNAME_ARG3_TYPE],GETSOCKNAME_ARG3_TYPE,[Type of getpeername second argument.])
1412 dnl =============================================================
1413 dnl Internal function for testing for getsockname arguments
1415 AC_DEFUN([TRY_GETSOCK_INT],[
1416 krb5_lib_var=`echo "$1 $2" | sed 'y% ./+-*%___p_p%'`
1417 AC_MSG_CHECKING([if getsockname() takes arguments $1 and $2])
1418 AC_CACHE_VAL(krb5_cv_getsockname_proto_$krb5_lib_var,
1420 AC_TRY_COMPILE([#include <sys/types.h>
1421 #include <sys/socket.h>
1422 extern int getsockname(int, $1, $2);
1423 ],,eval "krb5_cv_getsockname_proto_$krb5_lib_var=yes",
1424 eval "krb5_cv_getsockname_proto_$krb5_lib_var=no")])
1425 if eval "test \"`echo '$krb5_cv_getsockname_proto_'$krb5_lib_var`\" = yes"; then
1427 sock_set=yes; res1="$1"; res2="$2"
1433 dnl Determines the types of the second and third arguments to getsockname().
1435 AC_DEFUN([KRB5_GETSOCKNAME_ARGS],[
1437 for sock_arg1 in "struct sockaddr *" "void *"
1439 for sock_arg2 in "size_t *" "int *" "socklen_t *"
1441 if test $sock_set = no; then
1442 TRY_GETSOCK_INT($sock_arg1, $sock_arg2)
1446 if test "$sock_set" = no; then
1447 AC_MSG_NOTICE(assuming struct sockaddr and socklen_t for getsockname args)
1448 res1="struct sockaddr *"
1451 res1=`echo "$res1" | tr -d '*' | sed -e 's/ *$//'`
1452 res2=`echo "$res2" | tr -d '*' | sed -e 's/ *$//'`
1453 AC_DEFINE_UNQUOTED([GETSOCKNAME_ARG2_TYPE],$res1,[Type of pointer target for argument 2 to getsockname])
1454 AC_DEFINE_UNQUOTED([GETSOCKNAME_ARG3_TYPE],$res2,[Type of pointer target for argument 3 to getsockname])
1458 AC_DEFUN([KRB5_AC_CHOOSE_ET],[
1459 AC_ARG_WITH([system-et],
1460 AC_HELP_STRING(--with-system-et,use system compile_et and -lcom_err @<:@default: build and install a local version@:>@))
1461 AC_MSG_CHECKING(which version of com_err to use)
1462 if test "x$with_system_et" = xyes ; then
1464 AC_MSG_RESULT(system)
1469 if test $COM_ERR_VERSION = sys; then
1470 # check for various functions we need
1471 AC_CHECK_LIB(com_err, add_error_table, :, AC_MSG_ERROR(cannot find add_error_table in com_err library))
1472 AC_CHECK_LIB(com_err, remove_error_table, :, AC_MSG_ERROR(cannot find remove_error_table in com_err library))
1473 # make sure compile_et provides "et_foo" name
1474 cat >> conf$$e.et <<EOF
1476 error_code ERR_FOO, "foo"
1479 AC_CHECK_PROGS(compile_et,compile_et,false)
1480 if test "$compile_et" = false; then
1481 AC_MSG_ERROR(cannot find compile_et)
1483 AC_CACHE_CHECK(whether compile_et is useful,krb5_cv_compile_et_useful,[
1484 if compile_et conf$$e.et >/dev/null 2>&1 ; then true ; else
1485 AC_MSG_ERROR(execution failed)
1487 AC_TRY_COMPILE([#include "conf$$e.h"
1488 ],[ &et_foo_error_table; ],:,
1489 [AC_MSG_ERROR(cannot use et_foo_error_table)])
1490 # Anything else we need to test for?
1491 rm -f conf$$e.et conf$$e.c conf$$e.h
1492 krb5_cv_compile_et_useful=yes
1495 AC_SUBST(COM_ERR_VERSION)
1497 AC_DEFUN([KRB5_AC_CHOOSE_SS],[
1498 AC_ARG_WITH(system-ss,
1499 AC_HELP_STRING(--with-system-ss,use system -lss and mk_cmds @<:@private version@:>@))
1500 AC_ARG_VAR(SS_LIB,[system libraries for 'ss' package [-lss]])
1501 AC_MSG_CHECKING(which version of subsystem package to use)
1502 if test "x$with_system_ss" = xyes ; then
1504 AC_MSG_RESULT(system)
1505 # todo: check for various libraries we might need
1506 # in the meantime...
1507 test "x${SS_LIB+set}" = xset || SS_LIB=-lss
1509 LIBS="$LIBS $SS_LIB"
1510 AC_CACHE_CHECK(whether system ss package works, krb5_cv_system_ss_okay,[
1513 int main(int argc, char *argv[]) {
1516 i = ss_create_invocation("foo","foo","",0,&err);
1520 }], krb5_cv_system_ss_okay=yes, AC_MSG_ERROR(cannot run test program),
1521 krb5_cv_system_ss_okay="assumed")])
1528 AC_SUBST(SS_VERSION)
1531 AC_DEFUN([KRB5_AC_CHOOSE_DB],[
1532 AC_ARG_WITH(system-db,
1533 AC_HELP_STRING(--with-system-db,use system Berkeley db @<:@private version@:>@))
1534 AC_ARG_VAR(DB_HEADER,[header file for system Berkeley db package [db.h]])
1535 AC_ARG_VAR(DB_LIB,[library for system Berkeley db package [-ldb]])
1536 if test "x$with_system_db" = xyes ; then
1538 # TODO: Do we have specific routines we should check for?
1539 # How about known, easily recognizable bugs?
1540 # We want to use bt_rseq in some cases, but no other version but
1541 # ours has it right now.
1543 # Okay, check the variables.
1544 test "x${DB_HEADER+set}" = xset || DB_HEADER=db.h
1545 test "x${DB_LIB+set}" = xset || DB_LIB=-ldb
1547 if test "x${DB_HEADER}" = xdb.h ; then
1548 DB_HEADER_VERSION=sys
1550 DB_HEADER_VERSION=redirect
1552 KDB5_DB_LIB="$DB_LIB"
1555 AC_DEFINE(HAVE_BT_RSEQ,1,[Define if bt_rseq is available, for recursive btree traversal.])
1557 DB_HEADER_VERSION=k5
1558 # libdb gets sucked into libkdb
1560 # needed for a couple of things that need libdb for its own sake
1563 AC_SUBST(DB_VERSION)
1565 AC_SUBST(DB_HEADER_VERSION)
1567 AC_SUBST(KDB5_DB_LIB)
1570 dnl KRB5_AC_PRIOCNTL_HACK
1573 AC_DEFUN([KRB5_AC_PRIOCNTL_HACK],
1574 [AC_REQUIRE([AC_PROG_AWK])dnl
1575 AC_REQUIRE([AC_LANG_COMPILER_REQUIRE])dnl
1576 AC_CACHE_CHECK([whether to use priocntl hack], [krb5_cv_priocntl_hack],
1577 [case $krb5_cv_host in
1579 if test "$cross_compiling" = yes; then
1580 krb5_cv_priocntl_hack=yes
1582 # Solaris patch 117171-11 (sparc) or 117172-11 (x86)
1583 # fixes the Solaris 9 bug where final pty output
1584 # gets lost on close.
1585 if showrev -p | $AWK 'BEGIN { e = 1 }
1586 /Patch: 11717[[12]]/ { x = index[]([$]2, "-");
1587 if (substr[]([$]2, x + 1, length([$]2) - x) >= 11)
1588 { e = 0 } else { e = 1 } }
1589 END { exit e; }'; then
1590 krb5_cv_priocntl_hack=no
1592 krb5_cv_priocntl_hack=yes
1597 krb5_cv_priocntl_hack=no
1600 if test "$krb5_cv_priocntl_hack" = yes; then
1605 AC_SUBST(PRIOCNTL_HACK)])
1608 dnl KRB5_AC_GCC_ATTRS
1609 AC_DEFUN([KRB5_AC_GCC_ATTRS],
1610 [AC_CACHE_CHECK([for constructor/destructor attribute support],krb5_cv_attr_constructor_destructor,
1611 [rm -f conftest.1 conftest.2
1612 if test -r conftest.1 || test -r conftest.2 ; then
1613 AC_MSG_ERROR(write error in local file system?)
1617 if test -r conftest.1 && test -r conftest.2 ; then true ; else
1618 AC_MSG_ERROR(write error in local file system?)
1622 # blindly assume we have 'unlink'...
1623 AC_TRY_RUN([void foo1() __attribute__((constructor));
1624 void foo1() { unlink("conftest.1"); }
1625 void foo2() __attribute__((destructor));
1626 void foo2() { unlink("conftest.2"); }
1627 int main () { return 0; }],
1628 [test -r conftest.1 || a=yes
1629 test -r conftest.2 || b=yes], , AC_MSG_ERROR(Cannot test for constructor/destructor support when cross compiling))
1630 case $krb5_cv_host in
1632 # Under AIX 4.3.3, at least, shared library destructor functions
1633 # appear to get executed in reverse link order (right to left),
1634 # so that a library's destructor function may run after that of
1635 # libraries it depends on, and may still have to access in the
1638 # That counts as "not working", for me, but it's a much more
1639 # complicated test case to set up.
1643 krb5_cv_attr_constructor_destructor="$a,$b"
1645 # Okay, krb5_cv_... should be set now.
1646 case $krb5_cv_attr_constructor_destructor in
1648 AC_DEFINE(CONSTRUCTOR_ATTR_WORKS,1,[Define if __attribute__((constructor)) works]) ;;
1650 case $krb5_cv_attr_constructor_destructor in
1652 AC_DEFINE(DESTRUCTOR_ATTR_WORKS,1,[Define if __attribute__((destructor)) works]) ;;
1654 dnl End of attributes we care about right now.
1658 dnl KRB5_AC_PRAGMA_WEAK_REF
1659 AC_DEFUN([KRB5_AC_PRAGMA_WEAK_REF],
1660 [AC_CACHE_CHECK([whether pragma weak references are supported],
1661 krb5_cv_pragma_weak_ref,
1662 [AC_TRY_LINK([#pragma weak flurbl
1663 extern int flurbl(void);],[if (&flurbl != 0) return flurbl();],
1664 krb5_cv_pragma_weak_ref=yes,krb5_cv_pragma_weak_ref=no)])
1665 if test $krb5_cv_pragma_weak_ref = yes ; then
1666 AC_DEFINE(HAVE_PRAGMA_WEAK_REF,1,[Define if #pragma weak references work])
1670 m4_include(config/ac-archive/acx_pthread.m4)
1674 dnl --with-ldap=value
1676 AC_DEFUN(WITH_LDAP,[
1678 [ --with-ldap compile OpenLDAP database backend module],
1680 OPENLDAP) with_ldap=yes ;;
1682 EDIRECTORY) AC_MSG_ERROR(Option --with-ldap=EDIRECTORY is deprecated; use --with-edirectory instead.) ;;
1683 *) AC_MSG_ERROR(Invalid option value --with-ldap="$withval") ;;
1684 esac], with_ldap=no)dnl
1685 AC_ARG_WITH([edirectory],
1686 [ --with-edirectory compile eDirectory database backend module],
1689 *) AC_MSG_ERROR(Invalid option value --with-edirectory="$withval") ;;
1690 esac], with_edirectory=no)dnl
1692 if test $with_ldap = yes; then
1693 if test $with_edirectory = yes; then
1694 AC_MSG_ERROR(Cannot enable both OpenLDAP and eDirectory backends; choose one.)
1696 AC_MSG_NOTICE(enabling OpenLDAP database backend module support)
1698 elif test $with_edirectory = yes; then
1699 AC_MSG_NOTICE(enabling eDirectory database backend module support)
1701 AC_DEFINE(HAVE_EDIRECTORY,1,[Define if LDAP KDB interface should assume eDirectory.])
1704 dnl AC_MSG_NOTICE(disabling ldap backend module support)
1708 dnl If libkeyutils exists (on Linux) include it and use keyring ccache
1709 AC_DEFUN(KRB5_AC_KEYRING_CCACHE,[
1710 AC_CHECK_HEADERS([keyutils.h],
1711 AC_CHECK_LIB(keyutils, add_key,
1712 [dnl Pre-reqs were found
1713 AC_DEFINE(USE_KEYRING_CCACHE, 1, [Define if the keyring ccache should be enabled])
1714 LIBS="-lkeyutils $LIBS"