2 AC_COPYRIGHT([Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008
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]])
81 dnl allow stuff in tree to access deprecated stuff for now
82 dnl AC_DEFINE([KRB5_DEPRECATED], 1, [Define only if building in-tree])
86 KRB5_AC_MAINTAINER_MODE dnl
89 dnl This identifies the top of the source tree relative to the directory
90 dnl in which the configure file lives.
92 CONFIG_RELTOPDIR=$ac_reltopdir
93 AC_SUBST(CONFIG_RELTOPDIR)
95 lib_frag=$srcdir/$ac_config_fragdir/lib.in
96 AC_SUBST_FILE(lib_frag)
97 libobj_frag=$srcdir/$ac_config_fragdir/libobj.in
98 AC_SUBST_FILE(libobj_frag)
99 libnover_frag=$srcdir/$ac_config_fragdir/libnover.in
100 AC_SUBST_FILE(libnover_frag)
101 libpriv_frag=$srcdir/$ac_config_fragdir/libpriv.in
102 AC_SUBST_FILE(libpriv_frag)
103 libnodeps_frag=$srcdir/$ac_config_fragdir/libnodeps.in
104 AC_SUBST_FILE(libnodeps_frag)
106 KRB5_AC_PRAGMA_WEAK_REF
110 KRB5_AC_ENABLE_THREADS
112 KRB5_AC_KEYRING_CCACHE
115 dnl Maintainer mode, akin to what automake provides, 'cept we don't
116 dnl want to use automake right now.
117 AC_DEFUN([KRB5_AC_MAINTAINER_MODE],
118 [AC_ARG_ENABLE([maintainer-mode],
119 AC_HELP_STRING([--enable-maintainer-mode],[enable rebuilding of source files, Makefiles, etc]),
120 USE_MAINTAINER_MODE=$enableval,
121 USE_MAINTAINER_MODE=no)
122 if test "$USE_MAINTAINER_MODE" = yes; then
123 MAINTAINER_MODE_TRUE=
124 MAINTAINER_MODE_FALSE='#'
125 AC_MSG_NOTICE(enabling maintainer mode)
127 MAINTAINER_MODE_TRUE='#'
128 MAINTAINER_MODE_FALSE=
130 MAINT=$MAINTAINER_MODE_TRUE
131 AC_SUBST(MAINTAINER_MODE_TRUE)
132 AC_SUBST(MAINTAINER_MODE_FALSE)
137 AC_DEFUN([KRB5_AC_INITFINI],[
138 dnl Do we want initialization at load time?
139 AC_ARG_ENABLE([delayed-initialization],
140 AC_HELP_STRING([--disable-delayed-initialization],initialize library code when loaded @<:@delay until first use@:>@), , enable_delayed_initialization=yes)
141 case "$enable_delayed_initialization" in
143 AC_DEFINE(DELAY_INITIALIZER,1,[Define if library initialization should be delayed until first use]) ;;
145 *) AC_MSG_ERROR(invalid option $enable_delayed_initialization for delayed-initialization) ;;
147 dnl We always want finalization at unload time.
149 dnl Can we do things through gcc?
151 dnl How about with the linker?
152 if test -z "$use_linker_init_option" ; then
153 AC_MSG_ERROR(ran INITFINI before checking shlib.conf?)
155 if test "$use_linker_init_option" = yes; then
156 AC_DEFINE(USE_LINKER_INIT_OPTION,1,[Define if link-time options for library initialization will be used])
158 if test "$use_linker_fini_option" = yes; then
159 AC_DEFINE(USE_LINKER_FINI_OPTION,1,[Define if link-time options for library finalization will be used])
164 AC_DEFUN([KRB5_AC_FIND_DLOPEN],[
167 AC_SEARCH_LIBS(dlopen, dl, [
168 if test "$ac_cv_search_dlopen" != "none required"; then
169 DL_LIB=$ac_cv_search_dlopen
172 AC_DEFINE(USE_DLOPEN,1,[Define if dlopen should be used])])
178 AC_DEFUN([KRB5_AC_ENABLE_THREADS],[
179 AC_ARG_ENABLE([thread-support],
180 AC_HELP_STRING([--disable-thread-support],don't enable thread support @<:@enabled@:>@), , enable_thread_support=yes)
181 if test "$enable_thread_support" = yes ; then
182 AC_MSG_NOTICE(enabling thread support)
183 AC_DEFINE(ENABLE_THREADS,1,[Define if thread support enabled])
185 dnl Maybe this should be inside the conditional above? Doesn't cache....
186 if test "$enable_thread_support" = yes; then
187 ACX_PTHREAD(,[AC_MSG_ERROR([cannot determine options for enabling thread support; try --disable-thread-support])])
188 AC_MSG_NOTICE(PTHREAD_CC = $PTHREAD_CC)
189 AC_MSG_NOTICE(PTHREAD_CFLAGS = $PTHREAD_CFLAGS)
190 AC_MSG_NOTICE(PTHREAD_LIBS = $PTHREAD_LIBS)
191 dnl Not really needed -- if pthread.h isn't found, ACX_PTHREAD will fail.
192 dnl AC_CHECK_HEADERS(pthread.h)
193 # AIX and Tru64 don't support weak references, and don't have
194 # stub versions of the pthread code in libc.
197 # On these platforms, we'll always pull in the thread support.
198 LIBS="$LIBS $PTHREAD_LIBS"
199 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
200 # We don't need to sometimes add the flags we've just folded in...
205 # These are the flags that "gcc -pthread" adds. But we don't
206 # want "-pthread" because that has link-time effects, and we
207 # don't exclude CFLAGS when linking. *sigh*
208 PTHREAD_CFLAGS="-D_REENTRANT -D_THREAD_SAFE -D_POSIX_C_SOURCE=199506L"
211 # On Solaris 10 with gcc 3.4.3, the autoconf archive macro doesn't
212 # get the right result. XXX What about Solaris 9 and earlier?
213 if test "$GCC" = yes ; then
214 PTHREAD_CFLAGS="-D_REENTRANT -pthreads"
218 # On Solaris 10 with gcc 3.4.3, the autoconf archive macro doesn't
219 # get the right result.
220 if test "$GCC" = yes ; then
221 PTHREAD_CFLAGS="-D_REENTRANT -pthreads"
223 # On Solaris 10, the thread support is always available in libc.
224 AC_DEFINE(NO_WEAK_PTHREADS,1,[Define if references to pthread routines should be non-weak.])
234 AC_SUBST(THREAD_SUPPORT)
235 dnl We want to know where these routines live, so on systems with weak
236 dnl reference support we can figure out whether or not the pthread library
237 dnl has been linked in.
238 dnl If we don't add any libraries for thread support, don't bother.
239 AC_CHECK_FUNCS(pthread_once pthread_rwlock_init)
241 test "$PTHREAD_CC" != "" && test "$ac_cv_c_compiler_gnu" = no && CC=$PTHREAD_CC
243 # On Solaris, -pthreads is added to CFLAGS, no extra explicit libraries.
244 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
245 AC_SUBST(PTHREAD_CFLAGS)
247 LIBS="$PTHREAD_LIBS $LIBS"
248 AC_MSG_NOTICE(rechecking with PTHREAD_... options)
249 AC_CHECK_LIB(c, pthread_rwlock_init,
250 [AC_DEFINE(HAVE_PTHREAD_RWLOCK_INIT_IN_THREAD_LIB,1,[Define if pthread_rwlock_init is provided in the thread library.])])
256 dnl This is somewhat gross and should go away when the build system
257 dnl is revamped. -- tlyu
258 dnl DECLARE_SYS_ERRLIST - check for sys_errlist in libc
260 AC_DEFUN([DECLARE_SYS_ERRLIST],
261 [AC_CACHE_CHECK([for sys_errlist declaration], krb5_cv_decl_sys_errlist,
262 [AC_TRY_COMPILE([#include <stdio.h>
263 #include <errno.h>], [1+sys_nerr;],
264 krb5_cv_decl_sys_errlist=yes, krb5_cv_decl_sys_errlist=no)])
265 # assume sys_nerr won't be declared w/o being in libc
266 if test $krb5_cv_decl_sys_errlist = yes; then
267 AC_DEFINE(SYS_ERRLIST_DECLARED,1,[Define if sys_errlist is defined in errno.h])
268 AC_DEFINE(HAVE_SYS_ERRLIST,1,[Define if sys_errlist in libc])
270 # This means that sys_errlist is not declared in errno.h, but may still
272 AC_CACHE_CHECK([for sys_errlist in libc], krb5_cv_var_sys_errlist,
273 [AC_TRY_LINK([extern int sys_nerr;], [if (1+sys_nerr < 0) return 1;],
274 krb5_cv_var_sys_errlist=yes, krb5_cv_var_sys_errlist=no;)])
275 if test $krb5_cv_var_sys_errlist = yes; then
276 AC_DEFINE(HAVE_SYS_ERRLIST,1,[Define if sys_errlist in libc])
277 # Do this cruft for backwards compatibility for now.
278 AC_DEFINE(NEED_SYS_ERRLIST,1,[Define if need to declare sys_errlist])
280 AC_MSG_WARN([sys_errlist is neither in errno.h nor in libc])
285 dnl check for sigmask/sigprocmask -- CHECK_SIGPROCMASK
287 AC_DEFUN(CHECK_SIGPROCMASK,[
288 AC_MSG_CHECKING([for use of sigprocmask])
289 AC_CACHE_VAL(krb5_cv_func_sigprocmask_use,
290 [AC_TRY_LINK([#include <signal.h>], [sigprocmask(SIG_SETMASK,0,0);],
291 krb5_cv_func_sigprocmask_use=yes,
292 AC_TRY_LINK([#include <signal.h>], [sigmask(1);],
293 krb5_cv_func_sigprocmask_use=no, krb5_cv_func_sigprocmask_use=yes))])
294 AC_MSG_RESULT($krb5_cv_func_sigprocmask_use)
295 if test $krb5_cv_func_sigprocmask_use = yes; then
296 AC_DEFINE(USE_SIGPROCMASK,1,[Define if sigprocmask should be used])
300 AC_DEFUN(AC_PROG_ARCHIVE, [AC_CHECK_PROG(ARCHIVE, ar, ar cqv, false)])dnl
301 AC_DEFUN(AC_PROG_ARCHIVE_ADD, [AC_CHECK_PROG(ARADD, ar, ar cruv, false)])dnl
303 dnl check for <dirent.h> -- CHECK_DIRENT
304 dnl (may need to be more complex later)
306 AC_DEFUN(CHECK_DIRENT,[
307 AC_CHECK_HEADER(dirent.h,AC_DEFINE(USE_DIRENT_H,1,[Define if you have dirent.h functionality]))])dnl
309 dnl check if union wait is defined, or if WAIT_USES_INT -- CHECK_WAIT_TYPE
311 AC_DEFUN(CHECK_WAIT_TYPE,[
312 AC_MSG_CHECKING([if argument to wait is int *])
313 AC_CACHE_VAL(krb5_cv_struct_wait,
314 dnl Test for prototype clash - if there is none - then assume int * works
315 [AC_TRY_COMPILE([#include <sys/types.h>
316 #include <sys/wait.h>
317 extern pid_t wait(int *);],[], krb5_cv_struct_wait=no,dnl
318 dnl Else fallback on old stuff
320 [#include <sys/wait.h>], [union wait i;
325 krb5_cv_struct_wait=yes, krb5_cv_struct_wait=no)])])
326 AC_MSG_RESULT($krb5_cv_struct_wait)
327 if test $krb5_cv_struct_wait = no; then
328 AC_DEFINE(WAIT_USES_INT,1,[Define if wait takes int as a argument])
332 dnl check for POSIX signal handling -- CHECK_SIGNALS
334 AC_DEFUN(CHECK_SIGNALS,[
335 AC_CHECK_FUNC(sigprocmask,
336 AC_MSG_CHECKING(for sigset_t and POSIX_SIGNALS)
337 AC_CACHE_VAL(krb5_cv_type_sigset_t,
339 [#include <signal.h>],
341 krb5_cv_type_sigset_t=yes, krb5_cv_type_sigset_t=no)])
342 AC_MSG_RESULT($krb5_cv_type_sigset_t)
343 if test $krb5_cv_type_sigset_t = yes; then
344 AC_DEFINE(POSIX_SIGNALS,1,[Define if POSIX signal handling is used])
348 dnl check for signal type
350 dnl AC_RETSIGTYPE isn't quite right, but almost.
351 AC_DEFUN(KRB5_SIGTYPE,[
352 AC_MSG_CHECKING([POSIX signal handlers])
353 AC_CACHE_VAL(krb5_cv_has_posix_signals,
355 [#include <sys/types.h>
360 extern void (*signal ()) ();], [],
361 krb5_cv_has_posix_signals=yes, krb5_cv_has_posix_signals=no)])
362 AC_MSG_RESULT($krb5_cv_has_posix_signals)
363 if test $krb5_cv_has_posix_signals = yes; then
365 AC_DEFINE(POSIX_SIGTYPE, 1, [Define if POSIX signal handlers are used])
367 if test $ac_cv_type_signal = void; then
373 AC_DEFINE_UNQUOTED(krb5_sigtype, $stype, [Define krb5_sigtype to type of signal handler])dnl
376 dnl check for POSIX setjmp/longjmp -- CHECK_SETJMP
378 AC_DEFUN(CHECK_SETJMP,[
379 AC_CHECK_FUNC(sigsetjmp,
380 AC_MSG_CHECKING(for sigjmp_buf)
381 AC_CACHE_VAL(krb5_cv_struct_sigjmp_buf,
383 [#include <setjmp.h>],[sigjmp_buf x],
384 krb5_cv_struct_sigjmp_buf=yes,krb5_cv_struct_sigjmp_buf=no)])
385 AC_MSG_RESULT($krb5_cv_struct_sigjmp_buf)
386 if test $krb5_cv_struct_sigjmp_buf = yes; then
387 AC_DEFINE(POSIX_SETJMP,1,[Define if setjmp indicates POSIX interface])
391 dnl Check for IPv6 compile-time support.
393 AC_DEFUN(KRB5_AC_INET6,[
394 AC_CHECK_HEADERS(sys/types.h sys/socket.h netinet/in.h netdb.h)
395 AC_CHECK_FUNCS(inet_ntop inet_pton getnameinfo)
396 dnl getaddrinfo test needs netdb.h, for proper compilation on alpha
397 dnl under OSF/1^H^H^H^H^HDigital^H^H^H^H^H^H^HTru64 UNIX, where it's
399 AC_MSG_CHECKING(for getaddrinfo)
400 AC_CACHE_VAL(ac_cv_func_getaddrinfo,
401 [AC_TRY_LINK([#ifdef HAVE_NETDB_H
405 getaddrinfo("kerberos.mit.edu", "echo", 0, &ai);
406 ], ac_cv_func_getaddrinfo=yes, ac_cv_func_getaddrinfo=no)])
407 AC_MSG_RESULT($ac_cv_func_getaddrinfo)
408 if test $ac_cv_func_getaddrinfo = yes; then
409 AC_DEFINE(HAVE_GETADDRINFO,1,[Define if you have the getaddrinfo function])
412 AC_REQUIRE([KRB5_SOCKADDR_SA_LEN])dnl
413 AC_ARG_ENABLE([ipv6], , AC_MSG_WARN(enable/disable-ipv6 option is deprecated))dnl
414 AC_MSG_CHECKING(for IPv6 compile-time support)
415 AC_CACHE_VAL(krb5_cv_inet6,[
416 if test "$ac_cv_func_inet_ntop" != "yes" ; then
420 #ifdef HAVE_SYS_TYPES_H
421 #include <sys/types.h>
423 #include <sys/socket.h>
424 #include <netinet/in.h>
427 struct sockaddr_in6 in;
429 IN6_IS_ADDR_LINKLOCAL (&in.sin6_addr);
430 ],krb5_cv_inet6=yes,krb5_cv_inet6=no)])
432 AC_MSG_RESULT($krb5_cv_inet6)
433 if test "$krb5_cv_inet6" = no && test "$ac_cv_func_inet_ntop" = yes; then
434 AC_MSG_CHECKING(for IPv6 compile-time support with -DINET6)
435 AC_CACHE_VAL(krb5_cv_inet6_with_dinet6,[
439 #ifdef HAVE_SYS_TYPES_H
440 #include <sys/types.h>
442 #include <sys/socket.h>
443 #include <netinet/in.h>
446 struct sockaddr_in6 in;
448 IN6_IS_ADDR_LINKLOCAL (&in.sin6_addr);
449 ],krb5_cv_inet6_with_dinet6=yes,krb5_cv_inet6_with_dinet6=no)
451 AC_MSG_RESULT($krb5_cv_inet6_with_dinet6)
453 if test $krb5_cv_inet6 = yes || test "$krb5_cv_inet6_with_dinet6" = yes; then
454 if test "$krb5_cv_inet6_with_dinet6" = yes; then
455 AC_DEFINE(INET6,1,[May need to be defined to enable IPv6 support, for example on IRIX])
457 AC_DEFINE(KRB5_USE_INET6,1,[Define if we should compile in IPv6 support (even if we can't use it at run time)])
461 dnl Generic File existence tests
463 dnl K5_AC_CHECK_FILE(FILE, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
465 AC_DEFUN(K5_AC_CHECK_FILE,
466 [AC_REQUIRE([AC_PROG_CC])dnl
467 dnl Do the transliteration at runtime so arg 1 can be a shell variable.
468 ac_safe=`echo "$1" | sed 'y%./+-%__p_%'`
469 AC_MSG_CHECKING([for $1])
470 AC_CACHE_VAL(ac_cv_file_$ac_safe,
471 [if test "$cross_compiling" = yes; then
472 errprint(__file__:__line__: warning: Cannot check for file existence when cross compiling
474 AC_MSG_ERROR(Cannot check for file existence when cross compiling)
477 eval "ac_cv_file_$ac_safe=yes"
479 eval "ac_cv_file_$ac_safe=no"
482 if eval "test \"`echo '$ac_cv_file_'$ac_safe`\" = yes"; then
484 ifelse([$2], , :, [$2])
492 dnl K5_AC_CHECK_FILES(FILE... [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
494 AC_DEFUN(K5_AC_CHECK_FILES,
495 [AC_REQUIRE([AC_PROG_CC])dnl
498 K5_AC_CHECK_FILE($ac_file,
500 ac_tr_file=HAVE`echo $ac_file | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
502 AC_DEFINE_UNQUOTED($ac_tr_file) $2], $3)dnl
506 dnl set $(KRB4) from --with-krb4=value -- WITH_KRB4
510 [ --without-krb4 omit Kerberos V4 backwards compatibility (default)
511 --with-krb4 use V4 libraries included with V5
512 --with-krb4=KRB4DIR use preinstalled V4 libraries],
516 if test $withval = no; then
517 AC_MSG_NOTICE(no krb4 support)
523 krb5_cv_build_krb4_libs=no
526 AC_DEFINE([KRB5_KRB4_COMPAT], 1, [Define this if building with krb4 compat])
527 if test $withval = yes; then
528 AC_MSG_NOTICE(enabling built in krb4 support)
529 KRB4_DEPLIB='$(TOPLIBD)/libkrb4$(DEPLIBEXT)'
531 KRB4_INCLUDES='-I$(SRCTOP)/include/kerberosIV -I$(BUILDTOP)/include/kerberosIV'
533 KRB_ERR_H_DEP='$(BUILDTOP)/include/kerberosIV/krb_err.h'
534 krb5_cv_build_krb4_libs=yes
537 AC_MSG_NOTICE(using preinstalled krb4 in $withval)
539 dnl DEPKRB4_LIB="$withval/lib/libkrb.a"
540 KRB4_INCLUDES="-I$withval/include"
541 KRB4_LIBPATH="-L$withval/lib"
543 krb5_cv_build_krb4_libs=no
544 krb5_cv_krb4_libdir="$withval/lib"
547 AC_SUBST(KRB4_INCLUDES)
548 AC_SUBST(KRB4_LIBPATH)
550 AC_SUBST(KRB4_DEPLIB)
551 AC_SUBST(KRB_ERR_H_DEP)
552 dnl We always compile the des425 library
553 DES425_DEPLIB='$(TOPLIBD)/libdes425$(DEPLIBEXT)'
555 AC_SUBST(DES425_DEPLIB)
560 AC_DEFUN(KRB5_AC_CHECK_FOR_CFLAGS,[
561 AC_BEFORE([$0],[AC_PROG_CC])
562 AC_BEFORE([$0],[AC_PROG_CXX])
563 krb5_ac_cflags_set=${CFLAGS+set}
564 krb5_ac_cxxflags_set=${CXXFLAGS+set}
565 krb5_ac_warn_cflags_set=${WARN_CFLAGS+set}
566 krb5_ac_warn_cxxflags_set=${WARN_CXXFLAGS+set}
569 AC_DEFUN(TRY_WARN_CC_FLAG,[dnl
570 cachevar=`echo "krb5_cv_cc_flag_$1" | sed s/[[^a-zA-Z0-9_]]/_/g`
571 AC_CACHE_CHECK([if C compiler supports $1], [$cachevar],
572 [# first try without, then with
573 AC_TRY_COMPILE([], 1;,
574 [old_cflags="$CFLAGS"
576 AC_TRY_COMPILE([], 1;, eval $cachevar=yes, eval $cachevar=no)
577 CFLAGS="$old_cflags"],
578 [AC_MSG_ERROR(compiling simple test program with $CFLAGS failed)])])
579 if eval test '"${'$cachevar'}"' = yes; then
580 WARN_CFLAGS="$WARN_CFLAGS $1"
582 eval flag_supported='${'$cachevar'}'
585 AC_DEFUN(WITH_CC,[dnl
586 AC_REQUIRE([KRB5_AC_CHECK_FOR_CFLAGS])dnl
587 AC_REQUIRE([AC_PROG_CC])dnl
588 AC_REQUIRE([AC_PROG_CXX])dnl
589 if test $ac_cv_c_compiler_gnu = yes ; then
594 AC_CACHE_CHECK([for GNU linker], krb5_cv_prog_gnu_ld,
595 [krb5_cv_prog_gnu_ld=no
596 if test "$GCC" = yes; then
597 if AC_TRY_COMMAND([$CC -Wl,-v 2>&1 dnl
598 | grep "GNU ld" > /dev/null]); then
599 krb5_cv_prog_gnu_ld=yes
602 AC_ARG_WITH([size-optimizations],
603 [ --with-size-optimizations enable a few optimizations to reduce code size
604 possibly at some run-time cost],
607 if test "$withval" = yes; then
608 AC_DEFINE(CONFIG_SMALL,1,[Define to reduce code size even if it means more cpu usage])
610 # -Wno-long-long, if needed, for k5-platform.h without inttypes.h etc.
611 extra_gcc_warn_opts="-Wall -Wcast-qual -Wcast-align -Wshadow"
612 # -Wmissing-prototypes
613 if test "$GCC" = yes ; then
614 # Putting this here means we get -Os after -O2, which works.
615 if test "$with_size_optimizations" = yes && test "x$krb5_ac_cflags_set" != xset; then
616 AC_MSG_NOTICE(adding -Os optimization option)
618 "-g -O2") CFLAGS="-g -Os" ;;
619 "-O2") CFLAGS="-Os" ;;
620 *) CFLAGS="$CFLAGS -Os" ;;
623 if test "x$krb5_ac_warn_cflags_set" = xset ; then
624 AC_MSG_NOTICE(not adding extra gcc warning flags because WARN_CFLAGS was set)
626 AC_MSG_NOTICE(adding extra warning flags for gcc)
627 WARN_CFLAGS="$WARN_CFLAGS $extra_gcc_warn_opts -Wmissing-prototypes"
628 if test "`uname -s`" = Darwin ; then
629 AC_MSG_NOTICE(skipping pedantic warnings on Darwin)
630 elif test "`uname -s`" = Linux ; then
631 AC_MSG_NOTICE(skipping pedantic warnings on Linux)
633 WARN_CFLAGS="$WARN_CFLAGS -pedantic"
635 if test "$ac_cv_cxx_compiler_gnu" = yes; then
636 if test "x$krb5_ac_warn_cxxflags_set" = xset ; then
637 AC_MSG_NOTICE(not adding extra g++ warnings because WARN_CXXFLAGS was set)
639 AC_MSG_NOTICE(adding extra warning flags for g++)
640 WARN_CXXFLAGS="$WARN_CXXFLAGS $extra_gcc_warn_opts"
643 # Currently, G++ does not support -Wno-format-zero-length.
644 TRY_WARN_CC_FLAG(-Wno-format-zero-length)
645 # Other flags here may not be supported on some versions of
646 # gcc that people want to use.
647 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
648 TRY_WARN_CC_FLAG(-W$flag)
650 # old-style-definition? generates many, many warnings
652 # Warnings that we'd like to turn into errors on versions of gcc
653 # that support promoting only specific warnings to errors, but
654 # we'll take as warnings on older compilers. (If such a warning
655 # is added after the -Werror=foo feature, you can just put
656 # error=foo in the above list, and skip the test for the
657 # warning-only form.) At least in some versions, -Werror= doesn't
658 # seem to make the conditions actual errors, but still issues
659 # warnings; I guess we'll take what we can get.
661 # We're currently targeting C89+, not C99, so disallow some
663 for flag in declaration-after-statement variadic-macros ; do
664 TRY_WARN_CC_FLAG(-Werror=$flag)
665 if test "$flag_supported" = no; then
666 TRY_WARN_CC_FLAG(-W$flag)
669 # missing-prototypes? maybe someday
672 if test "`uname -s`" = Darwin ; then
673 # Someday this should be a feature test.
674 # One current (Jaguar = OS 10.2) problem:
675 # Archive library with foo.o undef sym X and bar.o common sym X,
676 # if foo.o is pulled in at link time, bar.o may not be, causing
677 # the linker to complain.
678 # Dynamic library problems too?
679 case "$CC $CFLAGS" in
680 *-fcommon*) ;; # why someone would do this, I don't know
681 *-fno-common*) ;; # okay, they're already doing the right thing
683 AC_MSG_NOTICE(disabling the use of common storage on Darwin)
684 CFLAGS="$CFLAGS -fno-common"
687 case "$LD $LDFLAGS" in
688 *-Wl,-search_paths_first*) ;;
689 *) LDFLAGS="${LDFLAGS} -Wl,-search_paths_first" ;;
693 if test "`uname -s`" = AIX ; then
694 # Using AIX but not GCC, assume native compiler.
695 # The native compiler appears not to give a nonzero exit
696 # status for certain classes of errors, like missing arguments
697 # in function calls. Let's try to fix that with -qhalt=e.
698 case "$CC $CFLAGS" in
701 CFLAGS="$CFLAGS -qhalt=e"
702 AC_MSG_NOTICE(adding -qhalt=e for better error reporting)
705 # Also, the optimizer isn't turned on by default, which means
706 # the static inline functions get left in random object files,
707 # leading to references to pthread_mutex_lock from anything that
708 # includes k5-int.h whether it uses threads or not.
709 case "$CC $CFLAGS" in
713 AC_MSG_NOTICE(adding -O for inline thread-support function elimination)
717 if test "`uname -s`" = SunOS ; then
718 # Using Solaris but not GCC, assume Sunsoft compiler.
719 # We have some error-out-on-warning options available.
720 # Sunsoft 12 compiler defaults to -xc99=all, it appears, so "inline"
721 # works, but it also means that declaration-in-code warnings won't
723 # -v -fd -errwarn=E_DECLARATION_IN_CODE ...
724 WARN_CFLAGS="-errtags=yes -errwarn=E_BAD_PTR_INT_COMBINATION"
725 WARN_CXXFLAGS="-errtags=yes +w +w2 -xport64"
728 AC_SUBST(WARN_CFLAGS)
729 AC_SUBST(WARN_CXXFLAGS)
733 dnl check for yylineno -- HAVE_YYLINENO
735 AC_DEFUN(HAVE_YYLINENO,[dnl
736 AC_REQUIRE_CPP()AC_REQUIRE([AC_PROG_LEX])dnl
737 AC_MSG_CHECKING([for yylineno declaration])
738 AC_CACHE_VAL(krb5_cv_type_yylineno,
739 # some systems have yylineno, others don't...
741 %%' | ${LEX} -t > conftest.out
742 if egrep yylineno conftest.out >/dev/null 2>&1; then
743 krb5_cv_type_yylineno=yes
745 krb5_cv_type_yylineno=no
748 AC_MSG_RESULT($krb5_cv_type_yylineno)
749 if test $krb5_cv_type_yylineno = no; then
750 AC_DEFINE(NO_YYLINENO, 1, [Define if lex produes code with yylineno])
754 dnl K5_GEN_MAKEFILE([dir, [frags]])
756 AC_DEFUN(K5_GEN_MAKEFILE,[dnl
757 ifelse($1, ,[_K5_GEN_MAKEFILE(.,$2)],[_K5_GEN_MAKEFILE($1,$2)])
760 dnl _K5_GEN_MAKEFILE(dir, [frags])
761 dnl dir must be present in this case
762 dnl Note: Be careful in quoting.
763 dnl The ac_foreach generates the list of fragments to include
764 dnl or "" if $2 is empty
765 AC_DEFUN(_K5_GEN_MAKEFILE,[dnl
766 AC_CONFIG_FILES([$1/Makefile:$srcdir/]K5_TOPDIR[/config/pre.in:$1/Makefile.in:$srcdir/]K5_TOPDIR[/config/post.in])
769 dnl K5_GEN_FILE( <ac_output arguments> )
771 AC_DEFUN(K5_GEN_FILE,[AC_CONFIG_FILES($1)])dnl
774 dnl Note: Adds the variables to config.status for individual
775 dnl Makefile generation from config.status
776 AC_DEFUN(K5_AC_OUTPUT,[AC_OUTPUT])dnl
778 dnl V5_AC_OUTPUT_MAKEFILE
780 AC_DEFUN(V5_AC_OUTPUT_MAKEFILE,
781 [ifelse($1, , [_V5_AC_OUTPUT_MAKEFILE(.,$2)],[_V5_AC_OUTPUT_MAKEFILE($1,$2)])])
783 define(_V5_AC_OUTPUT_MAKEFILE,
784 [ifelse($2, , ,AC_CONFIG_FILES($2))
785 AC_FOREACH([DIR], [$1],dnl
786 [AC_CONFIG_FILES(DIR[/Makefile:$srcdir/]K5_TOPDIR[/config/pre.in:]DIR[/Makefile.in:$srcdir/]K5_TOPDIR[/config/post.in])])
790 dnl KRB5_SOCKADDR_SA_LEN: define HAVE_SA_LEN if sockaddr contains the sa_len
793 AC_DEFUN([KRB5_SOCKADDR_SA_LEN],[ dnl
794 AC_CHECK_MEMBER(struct sockaddr.sa_len,
795 AC_DEFINE(HAVE_SA_LEN,1,[Define if struct sockaddr contains sa_len])
796 ,,[#include <sys/types.h>
797 #include <sys/socket.h>])])
800 dnl CHECK_UTMP: check utmp structure and functions
802 AC_DEFUN(CHECK_UTMP,[
803 AC_CHECK_MEMBERS([struct utmp.ut_pid, struct utmp.ut_type, struct utmp.ut_host, struct utmp.ut_exit],,,
804 [#include <sys/types.h>
807 # Define the names actually used in the krb5 code currently:
808 if test $ac_cv_member_struct_utmp_ut_pid = no; then
809 AC_DEFINE(NO_UT_PID,1,[Define if ut_pid field not found])
811 if test $ac_cv_member_struct_utmp_ut_type = no; then
812 AC_DEFINE(NO_UT_TYPE,1,[Define if ut_type field not found])
814 if test $ac_cv_member_struct_utmp_ut_host = no; then
815 AC_DEFINE(NO_UT_HOST,1,[Define if ut_host field not found])
817 if test $ac_cv_member_struct_utmp_ut_exit = no; then
818 AC_DEFINE(NO_UT_EXIT,1,[Define if ut_exit field not found])
821 AC_CHECK_FUNCS(setutent setutxent updwtmp updwtmpx)
827 AC_DEFUN(WITH_NETLIB,[
828 AC_ARG_WITH([netlib],
829 AC_HELP_STRING([--with-netlib=LIBS], use user defined resolver library),
830 [ if test "$withval" = yes -o "$withval" = no ; then
831 AC_MSG_RESULT("netlib will link with C library resolver only")
833 LIBS="$LIBS $withval"
834 AC_MSG_RESULT("netlib will use \'$withval\'")
841 AC_DEFUN(KRB5_AC_NEED_DAEMON, [
842 KRB5_NEED_PROTO([#ifdef HAVE_UNISTD_H
844 #endif],daemon,1)])dnl
846 dnl Check if stdarg or varargs is available *and compiles*; prefer stdarg.
847 dnl (This was sent to djm for incorporation into autoconf 3/12/1996. KR)
849 AC_DEFUN(AC_HEADER_STDARG, [
851 AC_MSG_CHECKING([for stdarg.h])
852 AC_CACHE_VAL(ac_cv_header_stdarg_h,
853 [AC_TRY_COMPILE([#include <stdarg.h>], [
854 } /* ac_try_compile will have started a function body */
855 int aoeu (char *format, ...) {
858 va_start (v, format);
861 ],ac_cv_header_stdarg_h=yes,ac_cv_header_stdarg_h=no)])dnl
862 AC_MSG_RESULT($ac_cv_header_stdarg_h)
863 if test $ac_cv_header_stdarg_h = yes; then
864 AC_DEFINE(HAVE_STDARG_H, 1, [Define if stdarg available and compiles])
867 AC_MSG_CHECKING([for varargs.h])
868 AC_CACHE_VAL(ac_cv_header_varargs_h,
869 [AC_TRY_COMPILE([#include <varargs.h>],[
870 } /* ac_try_compile will have started a function body */
871 int aoeu (va_alist) va_dcl {
877 ],ac_cv_header_varargs_h=yes,ac_cv_header_varargs_h=no)])dnl
878 AC_MSG_RESULT($ac_cv_header_varargs_h)
879 if test $ac_cv_header_varargs_h = yes; then
880 AC_DEFINE(HAVE_VARARGS_H, 1, [Define if varargs available and compiles])
882 AC_MSG_ERROR(Neither stdarg nor varargs compile?)
885 fi dnl stdarg test failure
890 dnl KRB5_AC_NEED_LIBGEN --- check if libgen needs to be linked in for
894 AC_DEFUN(KRB5_AC_NEED_LIBGEN,[
895 AC_REQUIRE([AC_PROG_CC])dnl
897 dnl regcomp is present but non-functional on Solaris 2.4
899 AC_MSG_CHECKING(for working regcomp)
900 AC_CACHE_VAL(ac_cv_func_regcomp,[
902 #include <sys/types.h>
904 regex_t x; regmatch_t m;
905 int main() { return regcomp(&x,"pat.*",0) || regexec(&x,"pattern",1,&m,0); }
906 ], ac_cv_func_regcomp=yes, ac_cv_func_regcomp=no, AC_MSG_ERROR([Cannot test regcomp when cross compiling]))])
907 AC_MSG_RESULT($ac_cv_func_regcomp)
908 test $ac_cv_func_regcomp = yes && AC_DEFINE(HAVE_REGCOMP,1,[Define if regcomp exists and functions])
910 dnl Check for the compile and step functions - only if regcomp is not available
912 if test $ac_cv_func_regcomp = no; then
915 dnl this will fail if there's no compile/step in -lgen, or if there's
916 dnl no -lgen. This is fine.
917 AC_CHECK_FUNCS(compile step)
920 dnl Set GEN_LIB if necessary
922 AC_CHECK_LIB(gen, compile, GEN_LIB=-lgen, GEN_LIB=)
927 dnl KRB5_AC_REGEX_FUNCS --- check for different regular expression
928 dnl support functions
930 AC_DEFUN(KRB5_AC_REGEX_FUNCS,[
931 AC_CHECK_FUNCS(re_comp re_exec regexec)
932 AC_REQUIRE([KRB5_AC_NEED_LIBGEN])dnl
935 dnl AC_KRB5_TCL_FIND_CONFIG (uses tcl_dir)
937 AC_DEFUN(AC_KRB5_TCL_FIND_CONFIG,[
938 AC_REQUIRE([KRB5_LIB_AUX])dnl
939 AC_MSG_CHECKING(for tclConfig.sh)
940 dnl On Debian, we might be given --with-tcl=/usr, or tclsh might
941 dnl point us to /usr/lib/tcl8.4; either way, we need to find
942 dnl /usr/lib/tcl8.4/tclConfig.sh.
943 dnl On NetBSD, we might be given --with-tcl=/usr/pkg, or tclsh
944 dnl might point us to /usr/pkg/lib/tcl8.4; we need to find
945 dnl /usr/pkg/lib/tclConfig.sh.
946 if test -r "$tcl_dir/lib/tclConfig.sh" ; then
947 tcl_conf="$tcl_dir/lib/tclConfig.sh"
948 elif test -r "$tcl_dir/tclConfig.sh" ; then
949 tcl_conf="$tcl_dir/tclConfig.sh"
950 elif test -r "$tcl_dir/../tclConfig.sh" ; then
951 tcl_conf="$tcl_dir/../tclConfig.sh"
955 changequote(<<,>>)dnl
956 for d in "$lib" "$lib"/tcl7.[0-9] "$lib"/tcl8.[0-9] ; do
957 if test -r "$d/tclConfig.sh" ; then
958 tcl_conf="$tcl_conf $d/tclConfig.sh"
963 if test -n "$tcl_conf" ; then
964 AC_MSG_RESULT($tcl_conf)
966 AC_MSG_RESULT(not found)
971 old_CPPFLAGS=$CPPFLAGS
974 if test -n "$tcl_conf" ; then
975 for file in $tcl_conf ; do
976 TCL_MAJOR_VERSION=x ; TCL_MINOR_VERSION=x
977 AC_MSG_CHECKING(Tcl info in $file)
979 v=$TCL_MAJOR_VERSION.$TCL_MINOR_VERSION
980 if test -z "$tcl_vers_maj" \
981 || test "$tcl_vers_maj" -lt "$TCL_MAJOR_VERSION" \
982 || test "$tcl_vers_maj" = "$TCL_MAJOR_VERSION" -a "$tcl_vers_min" -lt "$TCL_MINOR_VERSION" ; then
983 for incdir in "$TCL_PREFIX/include/tcl$v" "$TCL_PREFIX/include" ; do
984 if test -r "$incdir/tcl.h" -o -r "$incdir/tcl/tcl.h" ; then
985 CPPFLAGS="$old_CPPFLAGS -I$incdir"
989 LIBS="$old_LIBS `eval echo x $TCL_LIB_SPEC $TCL_LIBS | sed 's/^x//'`"
990 LDFLAGS="$old_LDFLAGS $TCL_LD_FLAGS"
991 AC_TRY_LINK( , [Tcl_CreateInterp ();],
993 tcl_vers_maj=$TCL_MAJOR_VERSION
994 tcl_vers_min=$TCL_MINOR_VERSION
995 AC_MSG_RESULT($v - working),
996 AC_MSG_RESULT($v - compilation failed)
999 AC_MSG_RESULT(older version $v)
1003 CPPFLAGS=$old_CPPFLAGS
1005 LDFLAGS=$old_LDFLAGS
1008 if test -n "$tcl_ok_conf" ; then
1011 for incdir in "$TCL_PREFIX/include/tcl$v" "$TCL_PREFIX/include" ; do
1012 if test -r "$incdir/tcl.h" -o -r "$incdir/tcl/tcl.h" ; then
1013 if test "$incdir" != "/usr/include" ; then
1014 TCL_INCLUDES=-I$incdir
1019 # Need eval because the first-level expansion could reference
1020 # variables like ${TCL_DBGX}.
1021 eval TCL_LIBS='"'$TCL_LIB_SPEC $TCL_LIBS $TCL_DL_LIBS'"'
1022 TCL_LIBPATH="-L$TCL_EXEC_PREFIX/lib"
1023 TCL_RPATH=":$TCL_EXEC_PREFIX/lib"
1024 if test "$DEPLIBEXT" != "$SHLIBEXT" && test -n "$RPATH_FLAG"; then
1025 TCL_MAYBE_RPATH='$(RPATH_FLAG)'"$TCL_EXEC_PREFIX/lib$RPATH_TAIL"
1029 CPPFLAGS="$old_CPPFLAGS $TCL_INCLUDES"
1030 AC_CHECK_HEADER(tcl.h,AC_DEFINE(HAVE_TCL_H,1,[Define if tcl.h is available]) tcl_header=yes)
1031 if test $tcl_header=no; then
1032 AC_CHECK_HEADER(tcl/tcl.h,AC_DEFINE(HAVE_TCL_TCL_H,1,[Define if tcl/tcl.h is available]) tcl_header=yes)
1034 CPPFLAGS="$old_CPPFLAGS"
1037 # If we read a tclConfig.sh file, it probably set this.
1040 AC_SUBST(TCL_INCLUDES)
1042 AC_SUBST(TCL_LIBPATH)
1044 AC_SUBST(TCL_MAYBE_RPATH)
1047 dnl AC_KRB5_TCL_TRYOLD
1048 dnl attempt to use old search algorithm for locating tcl
1050 AC_DEFUN(AC_KRB5_TCL_TRYOLD, [
1051 AC_REQUIRE([KRB5_AC_FIND_DLOPEN])
1052 AC_MSG_WARN([trying old tcl search code])
1053 if test "$with_tcl" != yes -a "$with_tcl" != no; then
1054 TCL_INCLUDES=-I$with_tcl/include
1055 TCL_LIBPATH=-L$with_tcl/lib
1056 TCL_RPATH=:$with_tcl/lib
1058 if test "$with_tcl" != no ; then
1059 krb5_save_CPPFLAGS="$CPPFLAGS"
1060 krb5_save_LDFLAGS="$LDFLAGS"
1061 CPPFLAGS="$CPPFLAGS $TCL_INCLUDES"
1062 LDFLAGS="$LDFLAGS $TCL_LIBPATH"
1064 AC_CHECK_HEADER(tcl.h,AC_DEFINE(HAVE_TCL_H,1,[Define if tcl.h found]) tcl_header=yes)
1065 if test $tcl_header=no; then
1066 AC_CHECK_HEADER(tcl/tcl.h,AC_DEFINE(HAVE_TCL_TCL_H,1,[Define if tcl/tcl.h found]) tcl_header=yes)
1069 if test $tcl_header = yes ; then
1072 if test $tcl_lib = no; then
1073 AC_CHECK_LIB(tcl8.0, Tcl_CreateCommand,
1074 TCL_LIBS="$TCL_LIBS -ltcl8.0 -lm $DL_LIB $LIBS"
1075 tcl_lib=yes,,-lm $DL_LIB)
1077 if test $tcl_lib = no; then
1078 AC_CHECK_LIB(tcl7.6, Tcl_CreateCommand,
1079 TCL_LIBS="$TCL_LIBS -ltcl7.6 -lm $DL_LIB $LIBS"
1080 tcl_lib=yes,,-lm $DL_LIB)
1082 if test $tcl_lib = no; then
1083 AC_CHECK_LIB(tcl7.5, Tcl_CreateCommand,
1084 TCL_LIBS="$TCL_LIBS -ltcl7.5 -lm $DL_LIB $LIBS"
1085 tcl_lib=yes,,-lm $DL_LIB)
1088 if test $tcl_lib = no ; then
1089 AC_CHECK_LIB(tcl, Tcl_CreateCommand,
1090 TCL_LIBS="$TCL_LIBS -ltcl -lm $DL_LIB $LIBS"
1091 tcl_lib=yes,,-lm $DL_LIB)
1094 if test $tcl_lib = no ; then
1095 AC_MSG_WARN("tcl.h found but not library")
1098 AC_MSG_WARN(Could not find Tcl which is needed for the kadm5 tests)
1101 CPPFLAGS="$krb5_save_CPPFLAGS"
1102 LDFLAGS="$krb5_save_LDFLAGS"
1103 AC_SUBST(TCL_INCLUDES)
1105 AC_SUBST(TCL_LIBPATH)
1108 AC_MSG_RESULT("Not looking for Tcl library")
1112 dnl AC_KRB5_TCL - determine if the TCL library is present on system
1114 AC_DEFUN(AC_KRB5_TCL,[
1122 [ --with-tcl=path where Tcl resides], , with_tcl=try)
1123 if test "$with_tcl" = no ; then
1125 elif test "$with_tcl" = yes -o "$with_tcl" = try ; then
1127 if test ! -r /usr/lib/tclConfig.sh; then
1128 cat >> conftest <<\EOF
1129 puts "tcl_dir=$tcl_library"
1131 if tclsh conftest >conftest.out 2>/dev/null; then
1132 if grep tcl_dir= conftest.out >/dev/null 2>&1; then
1133 t=`sed s/tcl_dir=// conftest.out`
1136 fi # tclsh ran script okay
1137 rm -f conftest conftest.out
1138 fi # no /usr/lib/tclConfig.sh
1142 if test "$with_tcl" != no ; then
1143 AC_KRB5_TCL_FIND_CONFIG
1144 if test $tcl_lib = no ; then
1145 if test "$with_tcl" != try ; then
1148 AC_MSG_WARN(Could not find Tcl which is needed for some tests)
1152 # If "yes" or pathname, error out if not found.
1153 if test "$with_tcl" != no -a "$with_tcl" != try ; then
1154 if test "$tcl_header $tcl_lib" != "yes yes" ; then
1155 AC_MSG_ERROR(Could not find Tcl)
1163 AC_DEFUN(WITH_HESIOD,
1164 [AC_ARG_WITH(hesiod, AC_HELP_STRING(--with-hesiod[=path], compile with hesiod support @<:@omitted@:>@),
1165 hesiod=$with_hesiod, with_hesiod=no)
1166 if test "$with_hesiod" != "no"; then
1167 HESIOD_DEFS=-DHESIOD
1168 AC_CHECK_LIB(resolv, res_send, res_lib=-lresolv)
1169 if test "$hesiod" != "yes"; then
1170 HESIOD_LIBS="-L${hesiod}/lib -lhesiod $res_lib"
1172 HESIOD_LIBS="-lhesiod $res_lib"
1178 AC_SUBST(HESIOD_DEFS)
1179 AC_SUBST(HESIOD_LIBS)])
1183 dnl KRB5_BUILD_LIBRARY
1185 dnl Pull in the necessary stuff to create the libraries.
1187 AC_DEFUN(KRB5_BUILD_LIBRARY,
1188 [AC_REQUIRE([KRB5_LIB_AUX])dnl
1189 AC_REQUIRE([AC_PROG_LN_S])dnl
1190 AC_REQUIRE([AC_PROG_RANLIB])dnl
1191 AC_REQUIRE([AC_PROG_ARCHIVE])dnl
1192 AC_REQUIRE([AC_PROG_ARCHIVE_ADD])dnl
1193 AC_REQUIRE([AC_PROG_INSTALL])dnl
1194 AC_CHECK_PROG(AR, ar, ar, false)
1195 AC_CHECK_PROG(PERL, perl, perl, false)
1196 if test "$ac_cv_prog_PERL" = "false"; then
1197 AC_MSG_ERROR(Perl is now required for Kerberos builds.)
1201 AC_SUBST(MAKE_SHLIB_COMMAND)
1202 AC_SUBST(SHLIB_RPATH_FLAGS)
1203 AC_SUBST(SHLIB_EXPFLAGS)
1204 AC_SUBST(SHLIB_EXPORT_FILE_DEP)
1205 AC_SUBST(DYNOBJ_EXPDEPS)
1206 AC_SUBST(DYNOBJ_EXPFLAGS)
1207 AC_SUBST(INSTALL_SHLIB)
1214 AC_SUBST(LIBINSTLIST)
1216 AC_SUBST(MAKE_DYNOBJ_COMMAND)
1220 dnl KRB5_BUILD_LIBOBJS
1222 dnl Pull in the necessary stuff to build library objects.
1224 AC_DEFUN(KRB5_BUILD_LIBOBJS,
1225 [AC_REQUIRE([KRB5_LIB_AUX])dnl
1231 AC_SUBST(PROFFLAGS)])
1234 dnl KRB5_BUILD_PROGRAM
1236 dnl Set variables to build a program.
1238 AC_DEFUN(KRB5_BUILD_PROGRAM,
1239 [AC_REQUIRE([KRB5_LIB_AUX])dnl
1240 AC_REQUIRE([KRB5_AC_NEED_LIBGEN])dnl
1243 AC_SUBST(RPATH_FLAG)
1244 AC_SUBST(PROG_RPATH_FLAGS)
1245 AC_SUBST(DEPLIBEXT)])
1250 dnl Set up environment for running dynamic executables out of build tree
1252 AC_DEFUN(KRB5_RUN_FLAGS,
1253 [AC_REQUIRE([KRB5_LIB_AUX])dnl
1254 KRB5_RUN_ENV="$RUN_ENV"
1255 AC_SUBST(KRB5_RUN_ENV)])
1260 dnl Parse configure options related to library building.
1262 AC_DEFUN(KRB5_LIB_AUX,
1263 [AC_REQUIRE([KRB5_LIB_PARAMS])dnl
1265 AC_ARG_ENABLE([static],,
1266 [if test "$enableval" != no; then
1267 AC_MSG_ERROR([Sorry, static libraries do not work in this release.])
1269 AC_ARG_ENABLE([shared], ,
1270 [if test "$enableval" != yes; then
1271 AC_MSG_ERROR([Sorry, this release builds only shared libraries, cannot disable them.])
1273 AC_ARG_ENABLE([rpath],
1274 AC_HELP_STRING([--disable-rpath],[suppress run path flags in link lines]),
1275 [enable_rpath=$withval],
1278 if test "x$enable_rpath" != xyes ; then
1279 # Unset the rpath flag values set by shlib.conf
1285 if test "$SHLIBEXT" = ".so-nobuild"; then
1286 AC_MSG_ERROR([Shared libraries are not yet supported on this platform.])
1291 if test "$krb5_force_static" = "yes"; then
1292 LIBLIST='lib$(LIBBASE)$(STLIBEXT)'
1293 LIBLINKS='$(TOPLIBD)/lib$(LIBBASE)$(STLIBEXT)'
1295 # This used to be install-static, but now we only follow this
1296 # path for internal libraries we don't want installed, not for
1297 # configure-time requests for installed static libraries.
1299 # CFLAGS="$CFLAGS -D_KDB5_STATIC_LINK"
1301 AC_MSG_RESULT([Forcing static libraries.])
1302 # avoid duplicate rules generation for AIX and such
1303 SHLIBEXT=.so-nobuild
1304 SHLIBVEXT=.so.v-nobuild
1305 SHLIBSEXT=.so.s-nobuild
1307 AC_MSG_NOTICE([using shared libraries])
1309 # Clear some stuff in case of AIX, etc.
1310 if test "$STLIBEXT" = "$SHLIBEXT" ; then
1313 case "$SHLIBSEXT" in
1315 SHLIB_HAVE_MINOR_VERS=no
1316 LIBLIST='lib$(LIBBASE)$(SHLIBEXT)'
1317 LIBLINKS='$(TOPLIBD)/lib$(LIBBASE)$(SHLIBEXT) $(TOPLIBD)/lib$(LIBBASE)$(SHLIBVEXT)'
1318 LIBINSTLIST="install-shared"
1321 SHLIB_HAVE_MINOR_VERS=yes
1322 LIBLIST='lib$(LIBBASE)$(SHLIBEXT) lib$(LIBBASE)$(SHLIBSEXT)'
1323 LIBLINKS='$(TOPLIBD)/lib$(LIBBASE)$(SHLIBEXT) $(TOPLIBD)/lib$(LIBBASE)$(SHLIBVEXT) $(TOPLIBD)/lib$(LIBBASE)$(SHLIBSEXT)'
1324 LIBINSTLIST="install-shlib-soname"
1329 CC_LINK="$CC_LINK_SHARED"
1330 CXX_LINK="$CXX_LINK_SHARED"
1331 AC_SUBST(SHLIB_HAVE_MINOR_VERS)
1333 if test -z "$LIBLIST"; then
1334 AC_MSG_ERROR([must enable one of shared or static libraries])
1337 # Check whether to build profiled libraries.
1338 AC_ARG_ENABLE([profiled],
1339 dnl [ --enable-profiled build profiled libraries @<:@disabled@:>@]
1341 [if test "$enableval" = yes; then
1342 AC_MSG_ERROR([Sorry, profiled libraries do not work in this release.])
1348 dnl Determine parameters related to libraries, e.g. various extensions.
1350 AC_DEFUN(KRB5_LIB_PARAMS,
1351 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
1353 AC_SUBST(krb5_cv_host)
1354 AC_REQUIRE([AC_PROG_CC])dnl
1355 AC_REQUIRE([V5_SET_TOPDIR])dnl
1356 . $ac_topdir/config/shlib.conf])
1358 dnl The following was written by jhawk@mit.edu
1360 dnl AC_LIBRARY_NET: Id: net.m4,v 1.4 1997/10/25 20:49:53 jhawk Exp
1362 dnl This test is for network applications that need socket() and
1363 dnl gethostbyname() -ish functions. Under Solaris, those applications need to
1364 dnl link with "-lsocket -lnsl". Under IRIX, they should *not* link with
1365 dnl "-lsocket" because libsocket.a breaks a number of things (for instance:
1366 dnl gethostbyname() under IRIX 5.2, and snoop sockets under most versions of
1369 dnl Unfortunately, many application developers are not aware of this, and
1370 dnl mistakenly write tests that cause -lsocket to be used under IRIX. It is
1371 dnl also easy to write tests that cause -lnsl to be used under operating
1372 dnl systems where neither are necessary (or useful), such as SunOS 4.1.4, which
1373 dnl uses -lnsl for TLI.
1375 dnl This test exists so that every application developer does not test this in
1376 dnl a different, and subtly broken fashion.
1378 dnl It has been argued that this test should be broken up into two seperate
1379 dnl tests, one for the resolver libraries, and one for the libraries necessary
1380 dnl for using Sockets API. Unfortunately, the two are carefully intertwined and
1381 dnl allowing the autoconf user to use them independantly potentially results in
1382 dnl unfortunate ordering dependancies -- as such, such component macros would
1383 dnl have to carefully use indirection and be aware if the other components were
1384 dnl executed. Since other autoconf macros do not go to this trouble, and almost
1385 dnl no applications use sockets without the resolver, this complexity has not
1386 dnl been implemented.
1388 dnl The check for libresolv is in case you are attempting to link statically
1389 dnl and happen to have a libresolv.a lying around (and no libnsl.a).
1391 AC_DEFUN(AC_LIBRARY_NET, [
1392 # Most operating systems have gethostbyname() in the default searched
1393 # libraries (i.e. libc):
1394 AC_CHECK_FUNC(gethostbyname, , [
1395 # Some OSes (eg. Solaris) place it in libnsl:
1396 AC_CHECK_LIB(nsl, gethostbyname, , [
1397 # Some strange OSes (SINIX) have it in libsocket:
1398 AC_CHECK_LIB(socket, gethostbyname, , [
1399 # Unfortunately libsocket sometimes depends on libnsl.
1400 # AC_CHECK_LIB's API is essentially broken so the following
1401 # ugliness is necessary:
1402 AC_CHECK_LIB(socket, gethostbyname,
1403 LIBS="-lsocket -lnsl $LIBS",
1404 [AC_CHECK_LIB(resolv, gethostbyname,
1405 LIBS="-lresolv $LIBS" )],
1410 AC_CHECK_FUNC(socket, , AC_CHECK_LIB(socket, socket, ,
1411 AC_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", , -lnsl)))
1413 if test "$enable_dns" = yes ; then
1414 # We assume that if libresolv exists we can link against it.
1415 # This may get us a gethostby* that doesn't respect nsswitch.
1416 AC_CHECK_LIB(resolv, main)
1418 _KRB5_AC_CHECK_RES_FUNCS(res_ninit res_nclose res_ndestroy res_nsearch dnl
1419 ns_initparse ns_name_uncompress dn_skipname res_search)
1420 if test $krb5_cv_func_res_nsearch = no \
1421 && test $krb5_cv_func_res_search = no; then
1422 # Attempt to link with res_search(), in case it's not prototyped.
1423 AC_CHECK_FUNC(res_search,
1424 [AC_DEFINE(HAVE_RES_SEARCH, 1,
1425 [Define to 1 if you have the `res_search' function])],
1426 [AC_ERROR([cannot find res_nsearch or res_search])])
1430 AC_DEFUN([_KRB5_AC_CHECK_RES_FUNCS],
1431 [AC_FOREACH([AC_Func], [$1],
1432 [AH_TEMPLATE(AS_TR_CPP(HAVE_[]AC_Func),
1433 [Define to 1 if you have the `]AC_Func[' function.])])dnl
1434 for krb5_func in $1; do
1435 _KRB5_AC_CHECK_RES_FUNC($krb5_func)
1438 AC_DEFUN([_KRB5_AC_CHECK_RES_FUNC], [
1439 # Solaris 9 prototypes ns_name_uncompress() in arpa/nameser.h, but
1440 # doesn't export it from libresolv.so, so we use extreme paranoia here
1441 # and check both for the declaration and that we can link against the
1443 AC_CACHE_CHECK([for $1], [krb5_cv_func_$1], [AC_TRY_LINK(
1444 [#include <sys/types.h>
1445 #include <netinet/in.h>
1446 #include <arpa/nameser.h>
1447 @%:@include <resolv.h>],
1449 * Use volatile, or else optimization can cause false positives.
1451 void (* volatile p)() = (void (*)())$1;],
1452 [AS_VAR_SET(krb5_cv_func_$1, yes)],
1453 [AS_VAR_SET(krb5_cv_func_$1, no)])])
1454 AS_IF([test AS_VAR_GET(krb5_cv_func_$1) = yes],
1455 [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1]), 1,
1456 [Define to 1 if you have the `$1' function])])[]dnl
1460 dnl KRB5_AC_ENABLE_DNS
1462 AC_DEFUN(KRB5_AC_ENABLE_DNS, [
1464 enable_dns_for_kdc=yes
1465 AC_DEFINE(KRB5_DNS_LOOKUP_KDC,1,[Define to enable DNS lookups of Kerberos KDCs])
1467 AC_ARG_ENABLE([dns-for-realm],
1468 [ --enable-dns-for-realm enable DNS lookups of Kerberos realm names], ,
1469 [enable_dns_for_realm=no])
1470 if test "$enable_dns_for_realm" = yes; then
1471 AC_DEFINE(KRB5_DNS_LOOKUP_REALM,1,[Define to enable DNS lookups of Kerberos realm names])
1474 AC_DEFINE(KRB5_DNS_LOOKUP, 1,[Define for DNS support of locating realms and KDCs])
1479 dnl Check if we need the prototype for a function - we give it a bogus
1480 dnl prototype and if it complains - then a valid prototype exists on the
1483 dnl KRB5_NEED_PROTO(includes, function, [bypass])
1484 dnl if $3 set, don't see if library defined.
1485 dnl Useful for case where we will define in libkrb5 the function if need be
1486 dnl but want to know if a prototype exists in either case on system.
1488 AC_DEFUN([KRB5_NEED_PROTO], [
1489 ifelse([$3], ,[if test "x$ac_cv_func_$2" = xyes; then])
1490 AC_CACHE_CHECK([if $2 needs a prototype provided], krb5_cv_func_$2_noproto,
1491 AC_TRY_COMPILE([$1],
1493 struct k5foo {int foo; } xx;
1494 extern int $2 (struct k5foo*);
1497 krb5_cv_func_$2_noproto=yes,krb5_cv_func_$2_noproto=no))
1498 if test $krb5_cv_func_$2_noproto = yes; then
1499 AC_DEFINE([NEED_]translit($2, [a-z], [A-Z])[_PROTO], 1, dnl
1500 [define if the system header files are missing prototype for $2()])
1505 dnl =============================================================
1506 dnl Internal function for testing for getpeername prototype
1508 AC_DEFUN([KRB5_GETPEERNAME_ARGS],[
1509 AC_DEFINE([GETPEERNAME_ARG2_TYPE],GETSOCKNAME_ARG2_TYPE,[Type of getpeername second argument.])
1510 AC_DEFINE([GETPEERNAME_ARG3_TYPE],GETSOCKNAME_ARG3_TYPE,[Type of getpeername second argument.])
1513 dnl =============================================================
1514 dnl Internal function for testing for getsockname arguments
1516 AC_DEFUN([TRY_GETSOCK_INT],[
1517 krb5_lib_var=`echo "$1 $2" | sed 'y% ./+-*%___p_p%'`
1518 AC_MSG_CHECKING([if getsockname() takes arguments $1 and $2])
1519 AC_CACHE_VAL(krb5_cv_getsockname_proto_$krb5_lib_var,
1521 AC_TRY_COMPILE([#include <sys/types.h>
1522 #include <sys/socket.h>
1523 extern int getsockname(int, $1, $2);
1524 ],,eval "krb5_cv_getsockname_proto_$krb5_lib_var=yes",
1525 eval "krb5_cv_getsockname_proto_$krb5_lib_var=no")])
1526 if eval "test \"`echo '$krb5_cv_getsockname_proto_'$krb5_lib_var`\" = yes"; then
1528 sock_set=yes; res1="$1"; res2="$2"
1534 dnl Determines the types of the second and third arguments to getsockname().
1536 AC_DEFUN([KRB5_GETSOCKNAME_ARGS],[
1538 for sock_arg1 in "struct sockaddr *" "void *"
1540 for sock_arg2 in "size_t *" "int *" "socklen_t *"
1542 if test $sock_set = no; then
1543 TRY_GETSOCK_INT($sock_arg1, $sock_arg2)
1547 if test "$sock_set" = no; then
1548 AC_MSG_NOTICE(assuming struct sockaddr and socklen_t for getsockname args)
1549 res1="struct sockaddr *"
1552 res1=`echo "$res1" | tr -d '*' | sed -e 's/ *$//'`
1553 res2=`echo "$res2" | tr -d '*' | sed -e 's/ *$//'`
1554 AC_DEFINE_UNQUOTED([GETSOCKNAME_ARG2_TYPE],$res1,[Type of pointer target for argument 2 to getsockname])
1555 AC_DEFINE_UNQUOTED([GETSOCKNAME_ARG3_TYPE],$res2,[Type of pointer target for argument 3 to getsockname])
1559 AC_DEFUN([KRB5_AC_CHOOSE_ET],[
1560 AC_ARG_WITH([system-et],
1561 AC_HELP_STRING(--with-system-et,use system compile_et and -lcom_err @<:@default: build and install a local version@:>@))
1562 AC_MSG_CHECKING(which version of com_err to use)
1563 if test "x$with_system_et" = xyes ; then
1565 AC_MSG_RESULT(system)
1570 if test $COM_ERR_VERSION = sys; then
1571 # check for various functions we need
1572 AC_CHECK_LIB(com_err, add_error_table, :, AC_MSG_ERROR(cannot find add_error_table in com_err library))
1573 AC_CHECK_LIB(com_err, remove_error_table, :, AC_MSG_ERROR(cannot find remove_error_table in com_err library))
1574 # make sure compile_et provides "et_foo" name
1575 cat >> conf$$e.et <<EOF
1577 error_code ERR_FOO, "foo"
1580 AC_CHECK_PROGS(compile_et,compile_et,false)
1581 if test "$compile_et" = false; then
1582 AC_MSG_ERROR(cannot find compile_et)
1584 AC_CACHE_CHECK(whether compile_et is useful,krb5_cv_compile_et_useful,[
1585 if compile_et conf$$e.et >/dev/null 2>&1 ; then true ; else
1586 AC_MSG_ERROR(execution failed)
1588 AC_TRY_COMPILE([#include "conf$$e.h"
1589 ],[ &et_foo_error_table; ],:,
1590 [AC_MSG_ERROR(cannot use et_foo_error_table)])
1591 # Anything else we need to test for?
1592 rm -f conf$$e.et conf$$e.c conf$$e.h
1593 krb5_cv_compile_et_useful=yes
1596 AC_SUBST(COM_ERR_VERSION)
1598 AC_DEFUN([KRB5_AC_CHOOSE_SS],[
1599 AC_ARG_WITH(system-ss,
1600 AC_HELP_STRING(--with-system-ss,use system -lss and mk_cmds @<:@private version@:>@))
1601 AC_ARG_VAR(SS_LIB,[system libraries for 'ss' package [-lss]])
1602 AC_MSG_CHECKING(which version of subsystem package to use)
1603 if test "x$with_system_ss" = xyes ; then
1605 AC_MSG_RESULT(system)
1606 # todo: check for various libraries we might need
1607 # in the meantime...
1608 test "x${SS_LIB+set}" = xset || SS_LIB=-lss
1610 LIBS="$LIBS $SS_LIB"
1611 AC_CACHE_CHECK(whether system ss package works, krb5_cv_system_ss_okay,[
1614 int main(int argc, char *argv[]) {
1617 i = ss_create_invocation("foo","foo","",0,&err);
1621 }], krb5_cv_system_ss_okay=yes, AC_MSG_ERROR(cannot run test program),
1622 krb5_cv_system_ss_okay="assumed")])
1629 AC_SUBST(SS_VERSION)
1632 AC_DEFUN([KRB5_AC_CHOOSE_DB],[
1633 AC_ARG_WITH(system-db,
1634 AC_HELP_STRING(--with-system-db,use system Berkeley db @<:@private version@:>@))
1635 AC_ARG_VAR(DB_HEADER,[header file for system Berkeley db package [db.h]])
1636 AC_ARG_VAR(DB_LIB,[library for system Berkeley db package [-ldb]])
1637 if test "x$with_system_db" = xyes ; then
1639 # TODO: Do we have specific routines we should check for?
1640 # How about known, easily recognizable bugs?
1641 # We want to use bt_rseq in some cases, but no other version but
1642 # ours has it right now.
1644 # Okay, check the variables.
1645 test "x${DB_HEADER+set}" = xset || DB_HEADER=db.h
1646 test "x${DB_LIB+set}" = xset || DB_LIB=-ldb
1648 if test "x${DB_HEADER}" = xdb.h ; then
1649 DB_HEADER_VERSION=sys
1651 DB_HEADER_VERSION=redirect
1653 KDB5_DB_LIB="$DB_LIB"
1656 AC_DEFINE(HAVE_BT_RSEQ,1,[Define if bt_rseq is available, for recursive btree traversal.])
1658 DB_HEADER_VERSION=k5
1659 # libdb gets sucked into libkdb
1661 # needed for a couple of things that need libdb for its own sake
1664 AC_SUBST(DB_VERSION)
1666 AC_SUBST(DB_HEADER_VERSION)
1668 AC_SUBST(KDB5_DB_LIB)
1671 dnl KRB5_AC_PRIOCNTL_HACK
1674 AC_DEFUN([KRB5_AC_PRIOCNTL_HACK],
1675 [AC_REQUIRE([AC_PROG_AWK])dnl
1676 AC_REQUIRE([AC_LANG_COMPILER_REQUIRE])dnl
1677 AC_CACHE_CHECK([whether to use priocntl hack], [krb5_cv_priocntl_hack],
1678 [case $krb5_cv_host in
1680 if test "$cross_compiling" = yes; then
1681 krb5_cv_priocntl_hack=yes
1683 # Solaris patch 117171-11 (sparc) or 117172-11 (x86)
1684 # fixes the Solaris 9 bug where final pty output
1685 # gets lost on close.
1686 if showrev -p | $AWK 'BEGIN { e = 1 }
1687 /Patch: 11717[[12]]/ { x = index[]([$]2, "-");
1688 if (substr[]([$]2, x + 1, length([$]2) - x) >= 11)
1689 { e = 0 } else { e = 1 } }
1690 END { exit e; }'; then
1691 krb5_cv_priocntl_hack=no
1693 krb5_cv_priocntl_hack=yes
1698 krb5_cv_priocntl_hack=no
1701 if test "$krb5_cv_priocntl_hack" = yes; then
1706 AC_SUBST(PRIOCNTL_HACK)])
1709 dnl KRB5_AC_GCC_ATTRS
1710 AC_DEFUN([KRB5_AC_GCC_ATTRS],
1711 [AC_CACHE_CHECK([for constructor/destructor attribute support],krb5_cv_attr_constructor_destructor,
1712 [rm -f conftest.1 conftest.2
1713 if test -r conftest.1 || test -r conftest.2 ; then
1714 AC_MSG_ERROR(write error in local file system?)
1718 if test -r conftest.1 && test -r conftest.2 ; then true ; else
1719 AC_MSG_ERROR(write error in local file system?)
1723 # blindly assume we have 'unlink'...
1724 AC_TRY_RUN([void foo1() __attribute__((constructor));
1725 void foo1() { unlink("conftest.1"); }
1726 void foo2() __attribute__((destructor));
1727 void foo2() { unlink("conftest.2"); }
1728 int main () { return 0; }],
1729 [test -r conftest.1 || a=yes
1730 test -r conftest.2 || b=yes], , AC_MSG_ERROR(Cannot test for constructor/destructor support when cross compiling))
1731 case $krb5_cv_host in
1733 # Under AIX 4.3.3, at least, shared library destructor functions
1734 # appear to get executed in reverse link order (right to left),
1735 # so that a library's destructor function may run after that of
1736 # libraries it depends on, and may still have to access in the
1739 # That counts as "not working", for me, but it's a much more
1740 # complicated test case to set up.
1744 krb5_cv_attr_constructor_destructor="$a,$b"
1746 # Okay, krb5_cv_... should be set now.
1747 case $krb5_cv_attr_constructor_destructor in
1749 AC_DEFINE(CONSTRUCTOR_ATTR_WORKS,1,[Define if __attribute__((constructor)) works]) ;;
1751 case $krb5_cv_attr_constructor_destructor in
1753 AC_DEFINE(DESTRUCTOR_ATTR_WORKS,1,[Define if __attribute__((destructor)) works]) ;;
1755 dnl End of attributes we care about right now.
1759 dnl KRB5_AC_PRAGMA_WEAK_REF
1760 AC_DEFUN([KRB5_AC_PRAGMA_WEAK_REF],
1761 [AC_CACHE_CHECK([whether pragma weak references are supported],
1762 krb5_cv_pragma_weak_ref,
1763 [AC_TRY_LINK([#pragma weak flurbl
1764 extern int flurbl(void);],[if (&flurbl != 0) return flurbl();],
1765 krb5_cv_pragma_weak_ref=yes,krb5_cv_pragma_weak_ref=no)])
1766 if test $krb5_cv_pragma_weak_ref = yes ; then
1767 AC_DEFINE(HAVE_PRAGMA_WEAK_REF,1,[Define if #pragma weak references work])
1771 m4_include(config/ac-archive/acx_pthread.m4)
1775 # Check for libutil, for NetBSD, et al.; needed for openpty() and
1776 # logwtmp() on some platforms.
1778 AC_DEFUN([KRB5_AC_LIBUTIL],
1779 [AC_CHECK_LIB(util, main,
1780 [AC_DEFINE(HAVE_LIBUTIL,1,[Define if util library is available with openpty, logwtmp, etc])
1781 UTIL_LIB=-lutil])dnl
1787 dnl --with-ldap=value
1789 AC_DEFUN(WITH_LDAP,[
1791 [ --with-ldap compile OpenLDAP database backend module],
1793 OPENLDAP) with_ldap=yes ;;
1795 EDIRECTORY) AC_MSG_ERROR(Option --with-ldap=EDIRECTORY is deprecated; use --with-edirectory instead.) ;;
1796 *) AC_MSG_ERROR(Invalid option value --with-ldap="$withval") ;;
1797 esac], with_ldap=no)dnl
1798 AC_ARG_WITH([edirectory],
1799 [ --with-edirectory compile eDirectory database backend module],
1802 *) AC_MSG_ERROR(Invalid option value --with-edirectory="$withval") ;;
1803 esac], with_edirectory=no)dnl
1805 if test $with_ldap = yes; then
1806 if test $with_edirectory = yes; then
1807 AC_MSG_ERROR(Cannot enable both OpenLDAP and eDirectory backends; choose one.)
1809 AC_MSG_NOTICE(enabling OpenLDAP database backend module support)
1811 elif test $with_edirectory = yes; then
1812 AC_MSG_NOTICE(enabling eDirectory database backend module support)
1814 AC_DEFINE(HAVE_EDIRECTORY,1,[Define if LDAP KDB interface should assume eDirectory.])
1817 dnl AC_MSG_NOTICE(disabling ldap backend module support)
1819 AC_SUBST(OPENLDAP_PLUGIN)
1822 dnl If libkeyutils exists (on Linux) include it and use keyring ccache
1823 AC_DEFUN(KRB5_AC_KEYRING_CCACHE,[
1824 AC_CHECK_HEADERS([keyutils.h],
1825 AC_CHECK_LIB(keyutils, add_key,
1826 [dnl Pre-reqs were found
1827 AC_DEFINE(USE_KEYRING_CCACHE, 1, [Define if the keyring ccache should be enabled])
1828 LIBS="-lkeyutils $LIBS"