2 AC_COPYRIGHT([Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
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 krb5_pre_in=$ac_config_fragdir/pre.in
35 krb5_post_in=$ac_config_fragdir/post.in
36 # echo "Looking for $srcdir/$ac_config_fragdir"
37 if test -d "$srcdir/$ac_config_fragdir"; then
38 AC_CONFIG_AUX_DIR(K5_TOPDIR/config)
40 AC_MSG_ERROR([can not find config/ directory in $ac_reltopdir])
46 pushdef([x],esyscmd([sed -n 's/#define \([A-Z0-9_]*\)[ \t]*\(.*\)/\1=\2/p' < ]K5_TOPDIR/patchlevel.h))
47 define([PL_KRB5_MAJOR_RELEASE],regexp(x,[KRB5_MAJOR_RELEASE=\(.*\)],[\1]))
48 ifelse(PL_KRB5_MAJOR_RELEASE,,[errprint([Can't determine KRB5_MAJOR_RELEASE value from patchlevel.h.
49 ]) m4exit(1) dnl sometimes that does not work?
51 define([PL_KRB5_MINOR_RELEASE],regexp(x,[KRB5_MINOR_RELEASE=\(.*\)],[\1]))
52 ifelse(PL_KRB5_MINOR_RELEASE,,[errprint([Can't determine KRB5_MINOR_RELEASE value from patchlevel.h.
53 ]) m4exit(1) dnl sometimes that does not work?
55 define([PL_KRB5_PATCHLEVEL],regexp(x,[KRB5_PATCHLEVEL=\(.*\)],[\1]))
56 ifelse(PL_KRB5_PATCHLEVEL,,[errprint([Can't determine KRB5_PATCHLEVEL value from patchlevel.h.
57 ]) m4exit(1) dnl sometimes that does not work?
59 define([PL_KRB5_RELTAIL],regexp(x,[KRB5_RELTAIL="\(.*\)"],[\1]))
60 dnl RELTAIL is allowed to not be defined.
62 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))
63 define([K5_BUGADDR],krb5-bugs@mit.edu)
64 define([K5_AC_INIT],[AC_INIT(Kerberos 5, K5_VERSION, K5_BUGADDR, krb5)
65 AC_CONFIG_SRCDIR($1)])
67 dnl drop in standard rules for all configure files -- CONFIG_RULES
69 AC_DEFUN(CONFIG_RULES,[dnl
70 AC_REQUIRE([V5_SET_TOPDIR]) dnl
75 if test -z "$LD" ; then LD=$CC; fi
76 AC_ARG_VAR(LD,[linker command [CC]])
82 dnl allow stuff in tree to access deprecated/private stuff for now
83 AC_DEFINE([KRB5_PRIVATE], 1, [Define only if building in-tree])
84 AC_DEFINE([KRB5_DEPRECATED], 1, [Define only if building in-tree])
88 KRB5_AC_MAINTAINER_MODE dnl
91 dnl This identifies the top of the source tree relative to the directory
92 dnl in which the configure file lives.
94 CONFIG_RELTOPDIR=$ac_reltopdir
95 AC_SUBST(CONFIG_RELTOPDIR)
97 lib_frag=$srcdir/$ac_config_fragdir/lib.in
98 AC_SUBST_FILE(lib_frag)
99 libobj_frag=$srcdir/$ac_config_fragdir/libobj.in
100 AC_SUBST_FILE(libobj_frag)
101 libnover_frag=$srcdir/$ac_config_fragdir/libnover.in
102 AC_SUBST_FILE(libnover_frag)
104 KRB5_AC_PRAGMA_WEAK_REF
107 KRB5_AC_ENABLE_THREADS
111 dnl Maintainer mode, akin to what automake provides, 'cept we don't
112 dnl want to use automake right now.
113 AC_DEFUN([KRB5_AC_MAINTAINER_MODE],
114 [AC_ARG_ENABLE([maintainer-mode],
115 AC_HELP_STRING([--enable-maintainer-mode],[enable rebuilding of source files, Makefiles, etc]),
116 USE_MAINTAINER_MODE=$enableval,
117 USE_MAINTAINER_MODE=no)
118 if test "$USE_MAINTAINER_MODE" = yes; then
119 MAINTAINER_MODE_TRUE=
120 MAINTAINER_MODE_FALSE='#'
121 AC_MSG_NOTICE(enabling maintainer mode)
123 MAINTAINER_MODE_TRUE='#'
124 MAINTAINER_MODE_FALSE=
126 MAINT=$MAINTAINER_MODE_TRUE
127 AC_SUBST(MAINTAINER_MODE_TRUE)
128 AC_SUBST(MAINTAINER_MODE_FALSE)
133 AC_DEFUN([KRB5_AC_INITFINI],[
134 dnl Do we want initialization at load time?
135 AC_ARG_ENABLE([delayed-initialization],
136 AC_HELP_STRING([--disable-delayed-initialization],initialize library code when loaded @<:@delay until first use@:>@), , enable_delayed_initialization=yes)
137 case "$enable_delayed_initialization" in
139 AC_DEFINE(DELAY_INITIALIZER,1,[Define if library initialization should be delayed until first use]) ;;
141 *) AC_MSG_ERROR(invalid option $enable_delayed_initialization for delayed-initialization) ;;
143 dnl We always want finalization at unload time.
145 dnl Can we do things through gcc?
147 dnl How about with the linker?
148 if test -z "$use_linker_init_option" ; then
149 AC_MSG_ERROR(ran INITFINI before checking shlib.conf?)
151 if test "$use_linker_init_option" = yes; then
152 AC_DEFINE(USE_LINKER_INIT_OPTION,1,[Define if link-time options for library initialization will be used])
154 if test "$use_linker_fini_option" = yes; then
155 AC_DEFINE(USE_LINKER_FINI_OPTION,1,[Define if link-time options for library finalization will be used])
160 AC_DEFUN([KRB5_AC_FIND_DLOPEN],[
161 AC_CHECK_LIB(dl, dlopen, DL_LIB=-ldl)
162 AC_CHECK_LIB(ld, main, DL_LIB=-lld)
168 AC_DEFUN([KRB5_AC_ENABLE_THREADS],[
169 AC_ARG_ENABLE([thread-support],
170 AC_HELP_STRING([--disable-thread-support],don't enable thread support @<:@enabled@:>@), , enable_thread_support=yes)
171 if test "$enable_thread_support" = yes ; then
172 AC_MSG_NOTICE(enabling thread support)
173 AC_DEFINE(ENABLE_THREADS,1,[Define if thread support enabled])
175 dnl Maybe this should be inside the conditional above? Doesn't cache....
176 if test "$enable_thread_support" = yes; then
177 ACX_PTHREAD(,[AC_MSG_ERROR([cannot determine options for enabling thread support; try --disable-thread-support])])
178 AC_MSG_NOTICE(PTHREAD_CC = $PTHREAD_CC)
179 AC_MSG_NOTICE(PTHREAD_CFLAGS = $PTHREAD_CFLAGS)
180 AC_MSG_NOTICE(PTHREAD_LIBS = $PTHREAD_LIBS)
181 dnl Not really needed -- if pthread.h isn't found, ACX_PTHREAD will fail.
182 dnl AC_CHECK_HEADERS(pthread.h)
183 # AIX and Tru64 don't support weak references, and don't have
184 # stub versions of the pthread code in libc.
187 # On these platforms, we'll always pull in the thread support.
188 LIBS="$LIBS $PTHREAD_LIBS"
189 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
190 # We don't need to sometimes add the flags we've just folded in...
195 # These are the flags that "gcc -pthread" adds. But we don't
196 # want "-pthread" because that has link-time effects, and we
197 # don't exclude CFLAGS when linking. *sigh*
198 PTHREAD_CFLAGS="-D_REENTRANT -D_THREAD_SAFE -D_POSIX_C_SOURCE=199506L"
201 # On Solaris 10 with gcc 3.4.3, the autoconf archive macro doesn't
202 # get the right result.
203 if test "$GCC" = yes ; then
204 PTHREAD_CFLAGS="-D_REENTRANT -pthreads"
215 AC_SUBST(THREAD_SUPPORT)
216 dnl We want to know where these routines live, so on systems with weak
217 dnl reference support we can figure out whether or not the pthread library
218 dnl has been linked in.
219 dnl If we don't add any libraries for thread support, don't bother.
220 AC_CHECK_FUNCS(pthread_once pthread_mutexattr_setrobust_np pthread_rwlock_init)
222 test "$PTHREAD_CC" != "" && test "$ac_cv_c_compiler_gnu" = no && CC=$PTHREAD_CC
224 # On Solaris, -pthreads is added to CFLAGS, no extra explicit libraries.
225 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
226 AC_SUBST(PTHREAD_CFLAGS)
228 LIBS="$PTHREAD_LIBS $LIBS"
229 AC_MSG_NOTICE(rechecking with PTHREAD_... options)
230 AC_CHECK_LIB(c, pthread_mutexattr_setrobust_np,
231 [AC_DEFINE(HAVE_PTHREAD_MUTEXATTR_SETROBUST_NP_IN_THREAD_LIB,1,[Define if pthread_mutexattr_setrobust_np is provided in the thread library.])])
232 AC_CHECK_LIB(c, pthread_rwlock_init,
233 [AC_DEFINE(HAVE_PTHREAD_RWLOCK_INIT_IN_THREAD_LIB,1,[Define if pthread_rwlock_init is provided in the thread library.])])
239 dnl This is somewhat gross and should go away when the build system
240 dnl is revamped. -- tlyu
241 dnl DECLARE_SYS_ERRLIST - check for sys_errlist in libc
243 AC_DEFUN([DECLARE_SYS_ERRLIST],
244 [AC_CACHE_CHECK([for sys_errlist declaration], krb5_cv_decl_sys_errlist,
245 [AC_TRY_COMPILE([#include <stdio.h>
246 #include <errno.h>], [1+sys_nerr;],
247 krb5_cv_decl_sys_errlist=yes, krb5_cv_decl_sys_errlist=no)])
248 # assume sys_nerr won't be declared w/o being in libc
249 if test $krb5_cv_decl_sys_errlist = yes; then
250 AC_DEFINE(SYS_ERRLIST_DECLARED,1,[Define if sys_errlist is defined in errno.h])
251 AC_DEFINE(HAVE_SYS_ERRLIST,1,[Define if sys_errlist in libc])
253 # This means that sys_errlist is not declared in errno.h, but may still
255 AC_CACHE_CHECK([for sys_errlist in libc], krb5_cv_var_sys_errlist,
256 [AC_TRY_LINK([extern int sys_nerr;], [if (1+sys_nerr < 0) return 1;],
257 krb5_cv_var_sys_errlist=yes, krb5_cv_var_sys_errlist=no;)])
258 if test $krb5_cv_var_sys_errlist = yes; then
259 AC_DEFINE(HAVE_SYS_ERRLIST,1,[Define if sys_errlist in libc])
260 # Do this cruft for backwards compatibility for now.
261 AC_DEFINE(NEED_SYS_ERRLIST,1,[Define if need to declare sys_errlist])
263 AC_MSG_WARN([sys_errlist is neither in errno.h nor in libc])
268 dnl check for sigmask/sigprocmask -- CHECK_SIGPROCMASK
270 AC_DEFUN(CHECK_SIGPROCMASK,[
271 AC_MSG_CHECKING([for use of sigprocmask])
272 AC_CACHE_VAL(krb5_cv_func_sigprocmask_use,
273 [AC_TRY_LINK([#include <signal.h>], [sigprocmask(SIG_SETMASK,0,0);],
274 krb5_cv_func_sigprocmask_use=yes,
275 AC_TRY_LINK([#include <signal.h>], [sigmask(1);],
276 krb5_cv_func_sigprocmask_use=no, krb5_cv_func_sigprocmask_use=yes))])
277 AC_MSG_RESULT($krb5_cv_func_sigprocmask_use)
278 if test $krb5_cv_func_sigprocmask_use = yes; then
279 AC_DEFINE(USE_SIGPROCMASK)
283 AC_DEFUN(AC_PROG_ARCHIVE, [AC_CHECK_PROG(ARCHIVE, ar, ar cqv, false)])dnl
284 AC_DEFUN(AC_PROG_ARCHIVE_ADD, [AC_CHECK_PROG(ARADD, ar, ar cruv, false)])dnl
286 dnl check for <dirent.h> -- CHECK_DIRENT
287 dnl (may need to be more complex later)
289 AC_DEFUN(CHECK_DIRENT,[
290 AC_CHECK_HEADER(dirent.h,AC_DEFINE(USE_DIRENT_H,1,[Define if you have dirent.h functionality]))])dnl
292 dnl check if union wait is defined, or if WAIT_USES_INT -- CHECK_WAIT_TYPE
294 AC_DEFUN(CHECK_WAIT_TYPE,[
295 AC_MSG_CHECKING([if argument to wait is int *])
296 AC_CACHE_VAL(krb5_cv_struct_wait,
297 dnl Test for prototype clash - if there is none - then assume int * works
298 [AC_TRY_COMPILE([#include <sys/types.h>
299 #include <sys/wait.h>
300 extern pid_t wait(int *);],[], krb5_cv_struct_wait=no,dnl
301 dnl Else fallback on old stuff
303 [#include <sys/wait.h>], [union wait i;
308 krb5_cv_struct_wait=yes, krb5_cv_struct_wait=no)])])
309 AC_MSG_RESULT($krb5_cv_struct_wait)
310 if test $krb5_cv_struct_wait = no; then
311 AC_DEFINE(WAIT_USES_INT,1,[Define if wait takes int as a argument])
315 dnl check for POSIX signal handling -- CHECK_SIGNALS
317 AC_DEFUN(CHECK_SIGNALS,[
318 AC_CHECK_FUNC(sigprocmask,
319 AC_MSG_CHECKING(for sigset_t and POSIX_SIGNALS)
320 AC_CACHE_VAL(krb5_cv_type_sigset_t,
322 [#include <signal.h>],
324 krb5_cv_type_sigset_t=yes, krb5_cv_type_sigset_t=no)])
325 AC_MSG_RESULT($krb5_cv_type_sigset_t)
326 if test $krb5_cv_type_sigset_t = yes; then
327 AC_DEFINE(POSIX_SIGNALS,1,[Define if POSIX signal handling is used])
331 dnl check for signal type
333 dnl AC_RETSIGTYPE isn't quite right, but almost.
334 AC_DEFUN(KRB5_SIGTYPE,[
335 AC_MSG_CHECKING([POSIX signal handlers])
336 AC_CACHE_VAL(krb5_cv_has_posix_signals,
338 [#include <sys/types.h>
343 extern void (*signal ()) ();], [],
344 krb5_cv_has_posix_signals=yes, krb5_cv_has_posix_signals=no)])
345 AC_MSG_RESULT($krb5_cv_has_posix_signals)
346 if test $krb5_cv_has_posix_signals = yes; then
348 AC_DEFINE(POSIX_SIGTYPE, 1, [Define if POSIX signal handlers are used])
350 if test $ac_cv_type_signal = void; then
356 AC_DEFINE_UNQUOTED(krb5_sigtype, $stype, [Define krb5_sigtype to type of signal handler])dnl
359 dnl check for POSIX setjmp/longjmp -- CHECK_SETJMP
361 AC_DEFUN(CHECK_SETJMP,[
362 AC_CHECK_FUNC(sigsetjmp,
363 AC_MSG_CHECKING(for sigjmp_buf)
364 AC_CACHE_VAL(krb5_cv_struct_sigjmp_buf,
366 [#include <setjmp.h>],[sigjmp_buf x],
367 krb5_cv_struct_sigjmp_buf=yes,krb5_cv_struct_sigjmp_buf=no)])
368 AC_MSG_RESULT($krb5_cv_struct_sigjmp_buf)
369 if test $krb5_cv_struct_sigjmp_buf = yes; then
370 AC_DEFINE(POSIX_SETJMP)
374 dnl Check for IPv6 compile-time support.
376 AC_DEFUN(KRB5_AC_INET6,[
377 AC_CHECK_HEADERS(sys/types.h sys/socket.h netinet/in.h netdb.h)
378 AC_CHECK_FUNCS(inet_ntop inet_pton getnameinfo)
379 dnl getaddrinfo test needs netdb.h, for proper compilation on alpha
380 dnl under OSF/1^H^H^H^H^HDigital^H^H^H^H^H^H^HTru64 UNIX, where it's
382 AC_MSG_CHECKING(for getaddrinfo)
383 AC_CACHE_VAL(ac_cv_func_getaddrinfo,
384 [AC_TRY_LINK([#ifdef HAVE_NETDB_H
388 getaddrinfo("kerberos.mit.edu", "echo", 0, &ai);
389 ], ac_cv_func_getaddrinfo=yes, ac_cv_func_getaddrinfo=no)])
390 AC_MSG_RESULT($ac_cv_func_getaddrinfo)
391 if test $ac_cv_func_getaddrinfo = yes; then
392 AC_DEFINE(HAVE_GETADDRINFO,1,[Define if you have the getaddrinfo function])
395 AC_REQUIRE([KRB5_SOCKADDR_SA_LEN])dnl
396 AC_ARG_ENABLE([ipv6], , AC_MSG_WARN(enable/disable-ipv6 option is deprecated))dnl
400 AC_DEFUN(KRB5_AC_CHECK_TYPE_WITH_HEADERS,[
401 AC_MSG_CHECKING(for type $1)
402 changequote(<<,>>)dnl
403 varname=`echo $1 | sed 's,[ -],_,g'`
405 AC_CACHE_VAL(krb5_cv_$varname,[
406 AC_TRY_COMPILE([$2],[ $1 foo; ], eval krb5_cv_$varname=yes, eval krb5_cv_$varname=no)])
407 eval x="\$krb5_cv_$varname"
409 if eval test "$x" = yes ; then
410 AC_DEFINE_UNQUOTED(HAVE_`echo $varname | tr [[[a-z]]] [[[A-Z]]]`)
414 AC_DEFUN(KRB5_AC_CHECK_SOCKADDR_STORAGE,[
415 KRB5_AC_CHECK_TYPE_WITH_HEADERS(struct sockaddr_storage, [
416 #ifdef HAVE_SYS_TYPES_H
417 #include <sys/types.h>
419 #include <sys/socket.h>
420 #include <netinet/in.h>
424 AC_DEFUN(KRB5_AC_CHECK_INET6,[
425 AC_REQUIRE([KRB5_AC_CHECK_SOCKADDR_STORAGE])dnl
426 AC_MSG_CHECKING(for IPv6 compile-time support)
427 AC_CACHE_VAL(krb5_cv_inet6,[
428 if test "$ac_cv_func_inet_ntop" != "yes" ; then
432 #ifdef HAVE_SYS_TYPES_H
433 #include <sys/types.h>
435 #include <sys/socket.h>
436 #include <netinet/in.h>
439 struct sockaddr_in6 in;
441 IN6_IS_ADDR_LINKLOCAL (&in.sin6_addr);
442 ],krb5_cv_inet6=yes,krb5_cv_inet6=no)])
444 AC_MSG_RESULT($krb5_cv_inet6)
445 if test "$krb5_cv_inet6" = no && test "$ac_cv_func_inet_ntop" = yes; then
446 AC_MSG_CHECKING(for IPv6 compile-time support with -DINET6)
447 AC_CACHE_VAL(krb5_cv_inet6_with_dinet6,[
451 #ifdef HAVE_SYS_TYPES_H
452 #include <sys/types.h>
454 #include <sys/socket.h>
455 #include <netinet/in.h>
458 struct sockaddr_in6 in;
460 IN6_IS_ADDR_LINKLOCAL (&in.sin6_addr);
461 ],krb5_cv_inet6_with_dinet6=yes,krb5_cv_inet6_with_dinet6=no)
463 AC_MSG_RESULT($krb5_cv_inet6_with_dinet6)
465 if test $krb5_cv_inet6 = yes || test "$krb5_cv_inet6_with_dinet6" = yes; then
466 if test "$krb5_cv_inet6_with_dinet6" = yes; then
467 AC_DEFINE(INET6,1,[May need to be defined to enable IPv6 support, for example on IRIX])
469 AC_DEFINE(KRB5_USE_INET6,1,[Define if we should compile in IPv6 support (even if we can't use it at run time)])
473 dnl Generic File existence tests
475 dnl K5_AC_CHECK_FILE(FILE, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
477 AC_DEFUN(K5_AC_CHECK_FILE,
478 [AC_REQUIRE([AC_PROG_CC])dnl
479 dnl Do the transliteration at runtime so arg 1 can be a shell variable.
480 ac_safe=`echo "$1" | sed 'y%./+-%__p_%'`
481 AC_MSG_CHECKING([for $1])
482 AC_CACHE_VAL(ac_cv_file_$ac_safe,
483 [if test "$cross_compiling" = yes; then
484 errprint(__file__:__line__: warning: Cannot check for file existence when cross compiling
486 AC_MSG_ERROR(Cannot check for file existence when cross compiling)
489 eval "ac_cv_file_$ac_safe=yes"
491 eval "ac_cv_file_$ac_safe=no"
494 if eval "test \"`echo '$ac_cv_file_'$ac_safe`\" = yes"; then
496 ifelse([$2], , :, [$2])
504 dnl K5_AC_CHECK_FILES(FILE... [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
506 AC_DEFUN(K5_AC_CHECK_FILES,
507 [AC_REQUIRE([AC_PROG_CC])dnl
510 K5_AC_CHECK_FILE($ac_file,
512 ac_tr_file=HAVE`echo $ac_file | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
514 AC_DEFINE_UNQUOTED($ac_tr_file) $2], $3)dnl
518 dnl set $(KRB4) from --with-krb4=value -- WITH_KRB4
522 [ --without-krb4 don't include Kerberos V4 backwards compatibility
523 --with-krb4 use V4 libraries included with V5 (default)
524 --with-krb4=KRB4DIR use preinstalled V4 libraries],
528 if test $withval = no; then
529 AC_MSG_NOTICE(no krb4 support)
535 krb5_cv_build_krb4_libs=no
538 AC_DEFINE([KRB5_KRB4_COMPAT], 1, [Define this if building with krb4 compat])
539 if test $withval = yes; then
540 AC_MSG_NOTICE(enabling built in krb4 support)
541 KRB4_DEPLIB='$(TOPLIBD)/libkrb4$(DEPLIBEXT)'
543 KRB4_INCLUDES='-I$(SRCTOP)/include/kerberosIV -I$(BUILDTOP)/include/kerberosIV'
545 KRB_ERR_H_DEP='$(BUILDTOP)/include/kerberosIV/krb_err.h'
546 krb5_cv_build_krb4_libs=yes
549 AC_MSG_NOTICE(using preinstalled krb4 in $withval)
551 dnl DEPKRB4_LIB="$withval/lib/libkrb.a"
552 KRB4_INCLUDES="-I$withval/include"
553 KRB4_LIBPATH="-L$withval/lib"
555 krb5_cv_build_krb4_libs=no
556 krb5_cv_krb4_libdir="$withval/lib"
559 AC_SUBST(KRB4_INCLUDES)
560 AC_SUBST(KRB4_LIBPATH)
562 AC_SUBST(KRB4_DEPLIB)
563 AC_SUBST(KRB_ERR_H_DEP)
564 dnl We always compile the des425 library
565 DES425_DEPLIB='$(TOPLIBD)/libdes425$(DEPLIBEXT)'
567 AC_SUBST(DES425_DEPLIB)
572 AC_DEFUN(KRB5_AC_CHECK_FOR_CFLAGS,[
573 AC_BEFORE([$0],[AC_PROG_CC])
574 krb5_ac_cflags_set=${CFLAGS+set}
577 AC_DEFUN(WITH_CC,[dnl
578 AC_REQUIRE([KRB5_AC_CHECK_FOR_CFLAGS])dnl
579 AC_REQUIRE([AC_PROG_CC])dnl
580 krb5_cv_prog_gcc=$ac_cv_c_compiler_gnu
581 if test $ac_cv_c_compiler_gnu = yes ; then
586 AC_CACHE_CHECK([for GNU linker], krb5_cv_prog_gnu_ld,
587 [krb5_cv_prog_gnu_ld=no
588 if test "$GCC" = yes; then
589 if AC_TRY_COMMAND([$CC -Wl,-v 2>&1 dnl
590 | grep "GNU ld" > /dev/null]); then
591 krb5_cv_prog_gnu_ld=yes
594 # maybe add -Waggregate-return, or can we assume that actually works by now?
595 # -Wno-comment used to be used for SunOS system header <sys/stream.h>
596 # -Wno-long-long, if needed, for k5-platform.h without inttypes.h etc.
597 extra_gcc_warn_opts="-Wall -Wmissing-prototypes -Wcast-qual \
598 -Wcast-align -Wconversion -Wshadow"
599 if test "$GCC" = yes ; then
600 if test "x$krb5_ac_cflags_set" = xset ; then
601 AC_MSG_NOTICE(not adding extra gcc warning flags because CFLAGS was set)
603 AC_MSG_NOTICE(adding extra warning flags for gcc)
604 CFLAGS="$CFLAGS $extra_gcc_warn_opts"
605 if test "`uname -s`" = Darwin ; then
606 AC_MSG_NOTICE(skipping pedantic warnings on Darwin)
607 elif test "`uname -s`" = Linux ; then
608 AC_MSG_NOTICE(skipping pedantic warnings on Linux)
610 CFLAGS="$CFLAGS -pedantic"
613 if test "`uname -s`" = Darwin ; then
614 # Someday this should be a feature test.
615 # One current (Jaguar = OS 10.2) problem:
616 # Archive library with foo.o undef sym X and bar.o common sym X,
617 # if foo.o is pulled in at link time, bar.o may not be, causing
618 # the linker to complain.
619 # Dynamic library problems too?
620 case "$CC $CFLAGS" in
621 *-fcommon*) ;; # why someone would do this, I don't know
622 *-fno-common*) ;; # okay, they're already doing the right thing
624 AC_MSG_NOTICE(disabling the use of common storage on Darwin)
625 CFLAGS="$CFLAGS -fno-common"
628 case "$LD $LDFLAGS" in
629 *-Wl,-search_paths_first*) ;;
630 *) LDFLAGS="${LDFLAGS} -Wl,-search_paths_first" ;;
634 if test "`uname -s`" = AIX ; then
635 # Using AIX but not GCC, assume native compiler.
636 # The native compiler appears not to give a nonzero exit
637 # status for certain classes of errors, like missing arguments
638 # in function calls. Let's try to fix that with -qhalt=e.
639 case "$CC $CFLAGS" in
642 CFLAGS="$CFLAGS -qhalt=e"
643 AC_MSG_NOTICE(adding -qhalt=e for better error reporting)
646 # Also, the optimizer isn't turned on by default, which means
647 # the static inline functions get left in random object files,
648 # leading to references to pthread_mutex_lock from anything that
649 # includes k5-int.h whether it uses threads or not.
650 case "$CC $CFLAGS" in
654 AC_MSG_NOTICE(adding -O for inline thread-support function elimination)
662 dnl check for yylineno -- HAVE_YYLINENO
664 AC_DEFUN(HAVE_YYLINENO,[dnl
665 AC_REQUIRE_CPP()AC_REQUIRE([AC_PROG_LEX])dnl
666 AC_MSG_CHECKING([for yylineno declaration])
667 AC_CACHE_VAL(krb5_cv_type_yylineno,
668 # some systems have yylineno, others don't...
670 %%' | ${LEX} -t > conftest.out
671 if egrep yylineno conftest.out >/dev/null 2>&1; then
672 krb5_cv_type_yylineno=yes
674 krb5_cv_type_yylineno=no
677 AC_MSG_RESULT($krb5_cv_type_yylineno)
678 if test $krb5_cv_type_yylineno = no; then
679 AC_DEFINE(NO_YYLINENO, 1, [Define if lex produes code with yylineno])
683 dnl K5_GEN_MAKEFILE([dir, [frags]])
685 AC_DEFUN(K5_GEN_MAKEFILE,[dnl
686 ifelse($1, ,[_K5_GEN_MAKEFILE(.,$2)],[_K5_GEN_MAKEFILE($1,$2)])
689 dnl _K5_GEN_MAKEFILE(dir, [frags])
690 dnl dir must be present in this case
691 dnl Note: Be careful in quoting.
692 dnl The ac_foreach generates the list of fragments to include
693 dnl or "" if $2 is empty
694 AC_DEFUN(_K5_GEN_MAKEFILE,[dnl
695 AC_CONFIG_FILES([$1/Makefile:$krb5_pre_in:$1/Makefile.in:$krb5_post_in])
698 dnl K5_GEN_FILE( <ac_output arguments> )
700 AC_DEFUN(K5_GEN_FILE,[AC_CONFIG_FILES($1)])dnl
703 dnl Note: Adds the variables to config.status for individual
704 dnl Makefile generation from config.statsu
705 AC_DEFUN(K5_AC_OUTPUT,[dnl
706 AC_CONFIG_COMMANDS([krb5_config_prefix], [], dnl
707 [krb5_pre_in=$krb5_pre_in
708 ac_config_fragdir=$ac_config_fragdir
709 krb5_post_in=$krb5_post_in])
712 dnl V5_AC_OUTPUT_MAKEFILE
714 AC_DEFUN(V5_AC_OUTPUT_MAKEFILE,
715 [ifelse($1, , [_V5_AC_OUTPUT_MAKEFILE(.,$2)],[_V5_AC_OUTPUT_MAKEFILE($1,$2)])])
717 define(_V5_AC_OUTPUT_MAKEFILE,
718 [ifelse($2, , ,AC_CONFIG_FILES($2))
719 AC_FOREACH([DIR], [$1],dnl
720 [AC_CONFIG_FILES(DIR[/Makefile:$krb5_pre_in:]DIR[/Makefile.in:$krb5_post_in])])
724 dnl KRB5_SOCKADDR_SA_LEN: define HAVE_SA_LEN if sockaddr contains the sa_len
727 AC_DEFUN([KRB5_SOCKADDR_SA_LEN],[ dnl
728 AC_MSG_CHECKING(whether struct sockaddr contains sa_len)
729 AC_CACHE_VAL(krb5_cv_sockaddr_sa_len,
730 [AC_TRY_COMPILE([#include <sys/types.h>
731 #include <sys/socket.h>
735 krb5_cv_sockaddr_sa_len=yes,krb5_cv_sockaddr_sa_len=no)])
736 AC_MSG_RESULT([$]krb5_cv_sockaddr_sa_len)
737 if test $krb5_cv_sockaddr_sa_len = yes; then
738 AC_DEFINE_UNQUOTED(HAVE_SA_LEN,1,[Define if struct sockaddr contains sa_len])
743 dnl CHECK_UTMP: check utmp structure and functions
745 AC_DEFUN(CHECK_UTMP,[
746 AC_MSG_CHECKING([ut_pid in struct utmp])
747 AC_CACHE_VAL(krb5_cv_struct_ut_pid,
749 [#include <sys/types.h>
751 [struct utmp ut; ut.ut_pid;],
752 krb5_cv_struct_ut_pid=yes, krb5_cv_struct_ut_pid=no)])
753 AC_MSG_RESULT($krb5_cv_struct_ut_pid)
754 if test $krb5_cv_struct_ut_pid = no; then
757 AC_MSG_CHECKING([ut_type in struct utmp])
758 AC_CACHE_VAL(krb5_cv_struct_ut_type,
760 [#include <sys/types.h>
762 [struct utmp ut; ut.ut_type;],
763 krb5_cv_struct_ut_type=yes, krb5_cv_struct_ut_type=no)])
764 AC_MSG_RESULT($krb5_cv_struct_ut_type)
765 if test $krb5_cv_struct_ut_type = no; then
766 AC_DEFINE(NO_UT_TYPE)
768 AC_MSG_CHECKING([ut_host in struct utmp])
769 AC_CACHE_VAL(krb5_cv_struct_ut_host,
771 [#include <sys/types.h>
773 [struct utmp ut; ut.ut_host;],
774 krb5_cv_struct_ut_host=yes, krb5_cv_struct_ut_host=no)])
775 AC_MSG_RESULT($krb5_cv_struct_ut_host)
776 if test $krb5_cv_struct_ut_host = no; then
777 AC_DEFINE(NO_UT_HOST)
779 AC_MSG_CHECKING([ut_exit in struct utmp])
780 AC_CACHE_VAL(krb5_cv_struct_ut_exit,
782 [#include <sys/types.h>
784 [struct utmp ut; ut.ut_exit;],
785 krb5_cv_struct_ut_exit=yes, krb5_cv_struct_ut_exit=no)])
786 AC_MSG_RESULT($krb5_cv_struct_ut_exit)
787 if test $krb5_cv_struct_ut_exit = no; then
788 AC_DEFINE(NO_UT_EXIT)
790 AC_CHECK_FUNC(setutent,AC_DEFINE(HAVE_SETUTENT))
791 AC_CHECK_FUNC(setutxent,AC_DEFINE(HAVE_SETUTXENT))
792 AC_CHECK_FUNC(updwtmp,AC_DEFINE(HAVE_UPDWTMP))
793 AC_CHECK_FUNC(updwtmpx,AC_DEFINE(HAVE_UPDWTMPX))
799 AC_DEFUN(WITH_NETLIB,[
800 AC_ARG_WITH([netlib],
801 AC_HELP_STRING([--with-netlib=LIBS], use user defined resolver library),
802 [ if test "$withval" = yes -o "$withval" = no ; then
803 AC_MSG_RESULT("netlib will link with C library resolver only")
805 LIBS="$LIBS $withval"
806 AC_MSG_RESULT("netlib will use \'$withval\'")
813 AC_DEFUN(KRB5_AC_NEED_DAEMON, [
814 KRB5_NEED_PROTO([#ifdef HAVE_UNISTD_H
816 #endif],daemon,1)])dnl
818 dnl Check if stdarg or varargs is available *and compiles*; prefer stdarg.
819 dnl (This was sent to djm for incorporation into autoconf 3/12/1996. KR)
821 AC_DEFUN(AC_HEADER_STDARG, [
823 AC_MSG_CHECKING([for stdarg.h])
824 AC_CACHE_VAL(ac_cv_header_stdarg_h,
825 [AC_TRY_COMPILE([#include <stdarg.h>], [
826 } /* ac_try_compile will have started a function body */
827 int aoeu (char *format, ...) {
830 va_start (v, format);
833 ],ac_cv_header_stdarg_h=yes,ac_cv_header_stdarg_h=no)])dnl
834 AC_MSG_RESULT($ac_cv_header_stdarg_h)
835 if test $ac_cv_header_stdarg_h = yes; then
836 AC_DEFINE(HAVE_STDARG_H, 1, [Define if stdarg available and compiles])
839 AC_MSG_CHECKING([for varargs.h])
840 AC_CACHE_VAL(ac_cv_header_varargs_h,
841 [AC_TRY_COMPILE([#include <varargs.h>],[
842 } /* ac_try_compile will have started a function body */
843 int aoeu (va_alist) va_dcl {
849 ],ac_cv_header_varargs_h=yes,ac_cv_header_varargs_h=no)])dnl
850 AC_MSG_RESULT($ac_cv_header_varargs_h)
851 if test $ac_cv_header_varargs_h = yes; then
852 AC_DEFINE(HAVE_VARARGS_H, 1, [Define if varargs available and compiles])
854 AC_MSG_ERROR(Neither stdarg nor varargs compile?)
857 fi dnl stdarg test failure
862 dnl KRB5_AC_NEED_LIBGEN --- check if libgen needs to be linked in for
866 AC_DEFUN(KRB5_AC_NEED_LIBGEN,[
867 AC_REQUIRE([AC_PROG_CC])dnl
869 dnl regcomp is present but non-functional on Solaris 2.4
871 AC_MSG_CHECKING(for working regcomp)
872 AC_CACHE_VAL(ac_cv_func_regcomp,[
874 #include <sys/types.h>
876 regex_t x; regmatch_t m;
877 int main() { return regcomp(&x,"pat.*",0) || regexec(&x,"pattern",1,&m,0); }
878 ], ac_cv_func_regcomp=yes, ac_cv_func_regcomp=no, AC_MSG_ERROR([Cannot test regcomp when cross compiling]))])
879 AC_MSG_RESULT($ac_cv_func_regcomp)
880 test $ac_cv_func_regcomp = yes && AC_DEFINE(HAVE_REGCOMP,1,[Define if regcomp exists and functions])
882 dnl Check for the compile and step functions - only if regcomp is not available
884 if test $ac_cv_func_regcomp = no; then
887 dnl this will fail if there's no compile/step in -lgen, or if there's
888 dnl no -lgen. This is fine.
889 AC_CHECK_FUNCS(compile step)
892 dnl Set GEN_LIB if necessary
894 AC_CHECK_LIB(gen, compile, GEN_LIB=-lgen, GEN_LIB=)
899 dnl KRB5_AC_REGEX_FUNCS --- check for different regular expression
900 dnl support functions
902 AC_DEFUN(KRB5_AC_REGEX_FUNCS,[
903 AC_CHECK_FUNCS(re_comp re_exec regexec)
904 AC_REQUIRE([KRB5_AC_NEED_LIBGEN])dnl
907 dnl AC_KRB5_TCL_FIND_CONFIG (uses tcl_dir)
909 AC_DEFUN(AC_KRB5_TCL_FIND_CONFIG,[
910 AC_REQUIRE([KRB5_LIB_AUX])dnl
911 AC_MSG_CHECKING(for tclConfig.sh)
912 if test -r "$tcl_dir/lib/tclConfig.sh" ; then
913 tcl_conf="$tcl_dir/lib/tclConfig.sh"
914 elif test -r "$tcl_dir/tclConfig.sh" ; then
915 tcl_conf="$tcl_dir/tclConfig.sh"
919 changequote(<<,>>)dnl
920 for d in "$lib" "$lib"/tcl7.[0-9] "$lib"/tcl8.[0-9] ; do
921 if test -r "$d/tclConfig.sh" ; then
922 tcl_conf="$tcl_conf $d/tclConfig.sh"
927 if test -n "$tcl_conf" ; then
928 AC_MSG_RESULT($tcl_conf)
930 AC_MSG_RESULT(not found)
935 old_CPPFLAGS=$CPPFLAGS
938 if test -n "$tcl_conf" ; then
939 for file in $tcl_conf ; do
940 TCL_MAJOR_VERSION=x ; TCL_MINOR_VERSION=x
941 AC_MSG_CHECKING(Tcl info in $file)
943 v=$TCL_MAJOR_VERSION.$TCL_MINOR_VERSION
944 if test -z "$tcl_vers_maj" \
945 || test "$tcl_vers_maj" -lt "$TCL_MAJOR_VERSION" \
946 || test "$tcl_vers_maj" = "$TCL_MAJOR_VERSION" -a "$tcl_vers_min" -lt "$TCL_MINOR_VERSION" ; then
947 for incdir in "$TCL_PREFIX/include/tcl$v" "$TCL_PREFIX/include" ; do
948 if test -r "$incdir/tcl.h" -o -r "$incdir/tcl/tcl.h" ; then
949 CPPFLAGS="$old_CPPFLAGS -I$incdir"
953 LIBS="$old_LIBS `eval echo x $TCL_LIB_SPEC $TCL_LIBS | sed 's/^x//'`"
954 LDFLAGS="$old_LDFLAGS $TCL_LD_FLAGS"
955 AC_TRY_LINK( , [Tcl_CreateInterp ();],
957 tcl_vers_maj=$TCL_MAJOR_VERSION
958 tcl_vers_min=$TCL_MINOR_VERSION
959 AC_MSG_RESULT($v - working),
960 AC_MSG_RESULT($v - compilation failed)
963 AC_MSG_RESULT(older version $v)
967 CPPFLAGS=$old_CPPFLAGS
972 if test -n "$tcl_ok_conf" ; then
975 for incdir in "$TCL_PREFIX/include/tcl$v" "$TCL_PREFIX/include" ; do
976 if test -r "$incdir/tcl.h" -o -r "$incdir/tcl/tcl.h" ; then
977 if test "$incdir" != "/usr/include" ; then
978 TCL_INCLUDES=-I$incdir
983 # Need eval because the first-level expansion could reference
984 # variables like ${TCL_DBGX}.
985 eval TCL_LIBS='"'$TCL_LIB_SPEC $TCL_LIBS $TCL_DL_LIBS'"'
986 TCL_LIBPATH="-L$TCL_EXEC_PREFIX/lib"
987 TCL_RPATH=":$TCL_EXEC_PREFIX/lib"
988 if test "$DEPLIBEXT" != "$SHLIBEXT" && test -n "$RPATH_FLAG"; then
989 TCL_MAYBE_RPATH='$(RPATH_FLAG)'"$TCL_EXEC_PREFIX/lib$RPATH_TAIL"
993 CPPFLAGS="$old_CPPFLAGS $TCL_INCLUDES"
994 AC_CHECK_HEADER(tcl.h,AC_DEFINE(HAVE_TCL_H,1,[Define if tcl.h is available]) tcl_header=yes)
995 if test $tcl_header=no; then
996 AC_CHECK_HEADER(tcl/tcl.h,AC_DEFINE(HAVE_TCL_TCL_H,1,[Define if tcl/tcl.h is available]) tcl_header=yes)
998 CPPFLAGS="$old_CPPFLAGS"
1001 # If we read a tclConfig.sh file, it probably set this.
1004 AC_SUBST(TCL_INCLUDES)
1006 AC_SUBST(TCL_LIBPATH)
1008 AC_SUBST(TCL_MAYBE_RPATH)
1011 dnl AC_KRB5_TCL_TRYOLD
1012 dnl attempt to use old search algorithm for locating tcl
1014 AC_DEFUN(AC_KRB5_TCL_TRYOLD, [
1015 AC_REQUIRE([KRB5_AC_FIND_DLOPEN])
1016 AC_MSG_WARN([trying old tcl search code])
1017 if test "$with_tcl" != yes -a "$with_tcl" != no; then
1018 TCL_INCLUDES=-I$with_tcl/include
1019 TCL_LIBPATH=-L$with_tcl/lib
1020 TCL_RPATH=:$with_tcl/lib
1022 if test "$with_tcl" != no ; then
1023 krb5_save_CPPFLAGS="$CPPFLAGS"
1024 krb5_save_LDFLAGS="$LDFLAGS"
1025 CPPFLAGS="$CPPFLAGS $TCL_INCLUDES"
1026 LDFLAGS="$LDFLAGS $TCL_LIBPATH"
1028 AC_CHECK_HEADER(tcl.h,AC_DEFINE(HAVE_TCL_H) tcl_header=yes)
1029 if test $tcl_header=no; then
1030 AC_CHECK_HEADER(tcl/tcl.h,AC_DEFINE(HAVE_TCL_TCL_H) tcl_header=yes)
1033 if test $tcl_header = yes ; then
1036 if test $tcl_lib = no; then
1037 AC_CHECK_LIB(tcl8.0, Tcl_CreateCommand,
1038 TCL_LIBS="$TCL_LIBS -ltcl8.0 -lm $DL_LIB"
1039 tcl_lib=yes,,-lm $DL_LIB)
1041 if test $tcl_lib = no; then
1042 AC_CHECK_LIB(tcl7.6, Tcl_CreateCommand,
1043 TCL_LIBS="$TCL_LIBS -ltcl7.6 -lm $DL_LIB"
1044 tcl_lib=yes,,-lm $DL_LIB)
1046 if test $tcl_lib = no; then
1047 AC_CHECK_LIB(tcl7.5, Tcl_CreateCommand,
1048 TCL_LIBS="$TCL_LIBS -ltcl7.5 -lm $DL_LIB"
1049 tcl_lib=yes,,-lm $DL_LIB)
1052 if test $tcl_lib = no ; then
1053 AC_CHECK_LIB(tcl, Tcl_CreateCommand,
1054 TCL_LIBS="$TCL_LIBS -ltcl -lm $DL_LIB"
1055 tcl_lib=yes,,-lm $DL_LIB)
1058 if test $tcl_lib = no ; then
1059 AC_MSG_WARN("tcl.h found but not library")
1062 AC_MSG_WARN(Could not find Tcl which is needed for the kadm5 tests)
1065 CPPFLAGS="$krb5_save_CPPFLAGS"
1066 LDFLAGS="$krb5_save_LDFLAGS"
1067 AC_SUBST(TCL_INCLUDES)
1069 AC_SUBST(TCL_LIBPATH)
1072 AC_MSG_RESULT("Not looking for Tcl library")
1076 dnl AC_KRB5_TCL - determine if the TCL library is present on system
1078 AC_DEFUN(AC_KRB5_TCL,[
1086 [ --with-tcl=path where Tcl resides], , with_tcl=try)
1087 if test "$with_tcl" = no ; then
1089 elif test "$with_tcl" = yes -o "$with_tcl" = try ; then
1091 if test ! -r /usr/lib/tclConfig.sh; then
1092 cat >> conftest <<\EOF
1093 puts "tcl_dir=$tcl_library"
1095 if tclsh conftest >conftest.out 2>/dev/null; then
1096 if grep tcl_dir= conftest.out >/dev/null 2>&1; then
1097 t=`sed s/tcl_dir=// conftest.out`
1100 fi # tclsh ran script okay
1101 rm -f conftest conftest.out
1102 fi # no /usr/lib/tclConfig.sh
1106 if test "$with_tcl" != no ; then
1107 AC_KRB5_TCL_FIND_CONFIG
1108 if test $tcl_lib = no ; then
1109 if test "$with_tcl" != try ; then
1112 AC_MSG_WARN(Could not find Tcl which is needed for some tests)
1116 # If "yes" or pathname, error out if not found.
1117 if test "$with_tcl" != no -a "$with_tcl" != try ; then
1118 if test "$tcl_header $tcl_lib" != "yes yes" ; then
1119 AC_MSG_ERROR(Could not find Tcl)
1127 AC_DEFUN(WITH_HESIOD,
1128 [AC_ARG_WITH(hesiod, AC_HELP_STRING(--with-hesiod[=path], compile with hesiod support @<:@omitted@:>@),
1129 hesiod=$with_hesiod, with_hesiod=no)
1130 if test "$with_hesiod" != "no"; then
1131 HESIOD_DEFS=-DHESIOD
1132 AC_CHECK_LIB(resolv, res_send, res_lib=-lresolv)
1133 if test "$hesiod" != "yes"; then
1134 HESIOD_LIBS="-L${hesiod}/lib -lhesiod $res_lib"
1136 HESIOD_LIBS="-lhesiod $res_lib"
1142 AC_SUBST(HESIOD_DEFS)
1143 AC_SUBST(HESIOD_LIBS)])
1147 dnl KRB5_BUILD_LIBRARY
1149 dnl Pull in the necessary stuff to create the libraries.
1151 AC_DEFUN(KRB5_BUILD_LIBRARY,
1152 [KRB5_BUILD_LIBRARY_WITH_DEPS
1153 # null out SHLIB_EXPFLAGS because we lack any dependencies
1157 dnl KRB5_BUILD_LIBRARY_STATIC
1159 dnl Force static library build.
1161 AC_DEFUN(KRB5_AC_FORCE_STATIC,[dnl
1162 AC_BEFORE([$0],[KRB5_LIB_AUX])dnl
1163 krb5_force_static=yes])
1164 AC_DEFUN(KRB5_BUILD_LIBRARY_STATIC,
1165 dnl Use define rather than AC_DEFUN to avoid ordering problems.
1166 [AC_REQUIRE([KRB5_AC_FORCE_STATIC])dnl
1168 # If we're only building static libraries, they're for build-time use only,
1173 dnl KRB5_BUILD_LIBRARY_WITH_DEPS
1175 dnl Like KRB5_BUILD_LIBRARY, but adds in explicit dependencies in the
1176 dnl generated shared library.
1178 AC_DEFUN(KRB5_BUILD_LIBRARY_WITH_DEPS,
1179 [AC_REQUIRE([KRB5_LIB_AUX])dnl
1180 AC_REQUIRE([AC_PROG_LN_S])dnl
1181 AC_REQUIRE([AC_PROG_RANLIB])dnl
1182 AC_REQUIRE([AC_PROG_ARCHIVE])dnl
1183 AC_REQUIRE([AC_PROG_ARCHIVE_ADD])dnl
1184 AC_REQUIRE([AC_PROG_INSTALL])dnl
1185 AC_CHECK_PROG(AR, ar, ar, false)
1186 AC_CHECK_PROG(PERL, perl, perl, false)
1187 if test "$ac_cv_prog_PERL" = "false"; then
1188 AC_MSG_ERROR(Perl is now required for Kerberos builds.)
1192 AC_SUBST(MAKE_SHLIB_COMMAND)
1193 AC_SUBST(SHLIB_EXPFLAGS)
1194 AC_SUBST(SHLIB_EXPORT_FILE_DEP)
1195 AC_SUBST(DYNOBJ_EXPDEPS)
1196 AC_SUBST(DYNOBJ_EXPFLAGS)
1197 AC_SUBST(INSTALL_SHLIB)
1204 AC_SUBST(LIBINSTLIST)
1206 AC_SUBST(MAKE_DYNOBJ_COMMAND)
1210 dnl KRB5_BUILD_LIBOBJS
1212 dnl Pull in the necessary stuff to build library objects.
1214 AC_DEFUN(KRB5_BUILD_LIBOBJS,
1215 [AC_REQUIRE([KRB5_LIB_AUX])dnl
1221 AC_SUBST(PROFFLAGS)])
1224 dnl KRB5_BUILD_PROGRAM
1226 dnl Set variables to build a program.
1228 AC_DEFUN(KRB5_BUILD_PROGRAM,
1229 [AC_REQUIRE([KRB5_LIB_AUX])dnl
1230 AC_REQUIRE([KRB5_AC_NEED_LIBGEN])dnl
1232 AC_SUBST(RPATH_FLAG)
1233 AC_SUBST(DEPLIBEXT)])
1238 dnl Set up environment for running dynamic executables out of build tree
1240 AC_DEFUN(KRB5_RUN_FLAGS,
1241 [AC_REQUIRE([KRB5_LIB_AUX])dnl
1242 KRB5_RUN_ENV="$RUN_ENV"
1243 AC_SUBST(KRB5_RUN_ENV)])
1248 dnl Parse configure options related to library building.
1250 AC_DEFUN(KRB5_LIB_AUX,
1251 [AC_REQUIRE([KRB5_LIB_PARAMS])dnl
1253 # Check whether to build static libraries.
1254 AC_ARG_ENABLE([static],
1255 AC_HELP_STRING([--enable-static],[build static libraries @<:@disabled for most platforms@:>@])
1256 AC_HELP_STRING([--disable-static],[don't build static libraries]), ,
1257 [enable_static=$default_static])
1259 if test "$enable_static" = no && test "$krb5_force_static" != yes; then
1260 AC_MSG_NOTICE([disabling static libraries])
1265 LIBLIST='lib$(LIBBASE)$(STLIBEXT)'
1266 LIBLINKS='$(TOPLIBD)/lib$(LIBBASE)$(STLIBEXT)'
1268 LIBINSTLIST=install-static
1270 # CFLAGS="$CFLAGS -D_KDB5_STATIC_LINK"
1273 # Check whether to build shared libraries.
1274 AC_ARG_ENABLE([shared],
1275 AC_HELP_STRING([--enable-shared],[build shared libraries @<:@enabled for most platforms@:>@])
1276 AC_HELP_STRING([--disable-shared],[don't build shared libraries]), ,
1277 [enable_shared=$default_shared])
1279 if test "$enable_shared" = yes; then
1282 AC_MSG_WARN([shared libraries not supported on this architecture])
1284 CC_LINK="$CC_LINK_STATIC"
1287 # set this now because some logic below may reset SHLIBEXT
1289 if test "$krb5_force_static" = "yes"; then
1290 AC_MSG_RESULT([Forcing static libraries.])
1291 # avoid duplicate rules generation for AIX and such
1292 SHLIBEXT=.so-nobuild
1293 SHLIBVEXT=.so.v-nobuild
1294 SHLIBSEXT=.so.s-nobuild
1296 AC_MSG_NOTICE([enabling shared libraries])
1297 # Clear some stuff in case of AIX, etc.
1298 if test "$STLIBEXT" = "$SHLIBEXT" ; then
1305 LIBLIST="$LIBLIST "'lib$(LIBBASE)$(SHLIBEXT)'
1306 LIBLINKS="$LIBLINKS "'$(TOPLIBD)/lib$(LIBBASE)$(SHLIBEXT) $(TOPLIBD)/lib$(LIBBASE)$(SHLIBVEXT)'
1307 case "$SHLIBSEXT" in
1309 LIBINSTLIST="$LIBINSTLIST install-shared"
1312 LIBLIST="$LIBLIST "'lib$(LIBBASE)$(SHLIBSEXT)'
1313 LIBLINKS="$LIBLINKS "'$(TOPLIBD)/lib$(LIBBASE)$(SHLIBSEXT)'
1314 LIBINSTLIST="$LIBINSTLIST install-shlib-soname"
1317 OBJLISTS="$OBJLISTS OBJS.SH"
1319 CC_LINK="$CC_LINK_SHARED"
1324 CC_LINK="$CC_LINK_STATIC"
1325 SHLIBEXT=.so-nobuild
1326 SHLIBVEXT=.so.v-nobuild
1327 SHLIBSEXT=.so.s-nobuild
1330 if test -z "$LIBLIST"; then
1331 AC_MSG_ERROR([must enable one of shared or static libraries])
1334 # Check whether to build profiled libraries.
1335 AC_ARG_ENABLE([profiled],
1336 [ --enable-profiled build profiled libraries @<:@disabled@:>@],
1337 [if test "$enableval" = yes; then
1340 AC_MSG_WARN([Profiled libraries not supported on this architecture.])
1343 AC_MSG_NOTICE([enabling profiled libraries])
1344 LIBLIST="$LIBLIST "'lib$(LIBBASE)$(PFLIBEXT)'
1345 LIBLINKS="$LIBLINKS "'$(TOPLIBD)/lib$(LIBBASE)$(PFLIBEXT)'
1346 OBJLISTS="$OBJLISTS OBJS.PF"
1347 LIBINSTLIST="$LIBINSTLIST install-profiled"
1355 dnl Determine parameters related to libraries, e.g. various extensions.
1357 AC_DEFUN(KRB5_LIB_PARAMS,
1358 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
1360 AC_SUBST(krb5_cv_host)
1361 AC_REQUIRE([AC_PROG_CC])dnl
1362 AC_REQUIRE([V5_SET_TOPDIR])dnl
1363 . $ac_topdir/config/shlib.conf])
1365 dnl The following was written by jhawk@mit.edu
1367 dnl AC_LIBRARY_NET: Id: net.m4,v 1.4 1997/10/25 20:49:53 jhawk Exp
1369 dnl This test is for network applications that need socket() and
1370 dnl gethostbyname() -ish functions. Under Solaris, those applications need to
1371 dnl link with "-lsocket -lnsl". Under IRIX, they should *not* link with
1372 dnl "-lsocket" because libsocket.a breaks a number of things (for instance:
1373 dnl gethostbyname() under IRIX 5.2, and snoop sockets under most versions of
1376 dnl Unfortunately, many application developers are not aware of this, and
1377 dnl mistakenly write tests that cause -lsocket to be used under IRIX. It is
1378 dnl also easy to write tests that cause -lnsl to be used under operating
1379 dnl systems where neither are necessary (or useful), such as SunOS 4.1.4, which
1380 dnl uses -lnsl for TLI.
1382 dnl This test exists so that every application developer does not test this in
1383 dnl a different, and subtly broken fashion.
1385 dnl It has been argued that this test should be broken up into two seperate
1386 dnl tests, one for the resolver libraries, and one for the libraries necessary
1387 dnl for using Sockets API. Unfortunately, the two are carefully intertwined and
1388 dnl allowing the autoconf user to use them independantly potentially results in
1389 dnl unfortunate ordering dependancies -- as such, such component macros would
1390 dnl have to carefully use indirection and be aware if the other components were
1391 dnl executed. Since other autoconf macros do not go to this trouble, and almost
1392 dnl no applications use sockets without the resolver, this complexity has not
1393 dnl been implemented.
1395 dnl The check for libresolv is in case you are attempting to link statically
1396 dnl and happen to have a libresolv.a lying around (and no libnsl.a).
1398 AC_DEFUN(AC_LIBRARY_NET, [
1399 # Most operating systems have gethostbyname() in the default searched
1400 # libraries (i.e. libc):
1401 AC_CHECK_FUNC(gethostbyname, , [
1402 # Some OSes (eg. Solaris) place it in libnsl:
1403 AC_CHECK_LIB(nsl, gethostbyname, , [
1404 # Some strange OSes (SINIX) have it in libsocket:
1405 AC_CHECK_LIB(socket, gethostbyname, , [
1406 # Unfortunately libsocket sometimes depends on libnsl.
1407 # AC_CHECK_LIB's API is essentially broken so the following
1408 # ugliness is necessary:
1409 AC_CHECK_LIB(socket, gethostbyname,
1410 LIBS="-lsocket -lnsl $LIBS",
1411 [AC_CHECK_LIB(resolv, gethostbyname,
1412 LIBS="-lresolv $LIBS" )],
1417 AC_CHECK_FUNC(socket, , AC_CHECK_LIB(socket, socket, ,
1418 AC_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", , -lnsl)))
1420 if test "$enable_dns" = yes ; then
1421 # We assume that if libresolv exists we can link against it.
1422 # This may get us a gethostby* that doesn't respect nsswitch.
1423 AC_CHECK_LIB(resolv, main)
1425 _KRB5_AC_CHECK_RES_FUNCS(res_ninit res_nclose res_ndestroy res_nsearch dnl
1426 ns_initparse ns_name_uncompress dn_skipname res_search)
1427 if test $krb5_cv_func_res_nsearch = no \
1428 && test $krb5_cv_func_res_search = no; then
1429 # Attempt to link with res_search(), in case it's not prototyped.
1430 AC_CHECK_FUNC(res_search,
1431 [AC_DEFINE(HAVE_RES_SEARCH, 1,
1432 [Define to 1 if you have the `res_search' function])],
1433 [AC_ERROR([cannot find res_nsearch or res_search])])
1437 AC_DEFUN([_KRB5_AC_CHECK_RES_FUNCS],
1438 [AC_FOREACH([AC_Func], [$1],
1439 [AH_TEMPLATE(AS_TR_CPP(HAVE_[]AC_Func),
1440 [Define to 1 if you have the `]AC_Func[' function.])])dnl
1441 for krb5_func in $1; do
1442 _KRB5_AC_CHECK_RES_FUNC($krb5_func)
1445 AC_DEFUN([_KRB5_AC_CHECK_RES_FUNC], [
1446 # Solaris 9 prototypes ns_name_uncompress() in arpa/nameser.h, but
1447 # doesn't export it from libresolv.so, so we use extreme paranoia here
1448 # and check both for the declaration and that we can link against the
1450 AC_CACHE_CHECK([for $1], [krb5_cv_func_$1], [AC_TRY_LINK(
1451 [#include <sys/types.h>
1452 #include <netinet/in.h>
1453 #include <arpa/nameser.h>
1454 @%:@include <resolv.h>],
1456 * Use volatile, or else optimization can cause false positives.
1458 void (* volatile p)() = (void (*)())$1;],
1459 [AS_VAR_SET(krb5_cv_func_$1, yes)],
1460 [AS_VAR_SET(krb5_cv_func_$1, no)])])
1461 AS_IF([test AS_VAR_GET(krb5_cv_func_$1) = yes],
1462 [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1]), 1,
1463 [Define to 1 if you have the `$1' function])])[]dnl
1467 dnl KRB5_AC_ENABLE_DNS
1469 AC_DEFUN(KRB5_AC_ENABLE_DNS, [
1471 enable_dns_for_kdc=yes
1472 AC_DEFINE(KRB5_DNS_LOOKUP_KDC,1,[Define to enable DNS lookups of Kerberos KDCs])
1474 AC_ARG_ENABLE([dns-for-realm],
1475 [ --enable-dns-for-realm enable DNS lookups of Kerberos realm names], ,
1476 [enable_dns_for_realm=no])
1477 if test "$enable_dns_for_realm" = yes; then
1478 AC_DEFINE(KRB5_DNS_LOOKUP_REALM,1,[Define to enable DNS lookups of Kerberos realm names])
1481 AC_DEFINE(KRB5_DNS_LOOKUP, 1,[Define for DNS support of locating realms and KDCs])
1486 dnl Check if we need the prototype for a function - we give it a bogus
1487 dnl prototype and if it complains - then a valid prototype exists on the
1490 dnl KRB5_NEED_PROTO(includes, function, [bypass])
1491 dnl if $3 set, don't see if library defined.
1492 dnl Useful for case where we will define in libkrb5 the function if need be
1493 dnl but want to know if a prototype exists in either case on system.
1495 AC_DEFUN([KRB5_NEED_PROTO], [
1496 ifelse([$3], ,[if test "x$ac_cv_func_$2" = xyes; then])
1497 AC_CACHE_CHECK([if $2 needs a prototype provided], krb5_cv_func_$2_noproto,
1498 AC_TRY_COMPILE([$1],
1499 [struct k5foo {int foo; } xx;
1500 extern int $2 (struct k5foo*);
1503 krb5_cv_func_$2_noproto=yes,krb5_cv_func_$2_noproto=no))
1504 if test $krb5_cv_func_$2_noproto = yes; then
1505 AC_DEFINE([NEED_]translit($2, [a-z], [A-Z])[_PROTO], 1, dnl
1506 [define if the system header files are missing prototype for $2()])
1511 dnl =============================================================
1512 dnl Internal function for testing for getpeername prototype
1514 AC_DEFUN([KRB5_GETPEERNAME_ARGS],[
1515 AC_DEFINE([GETPEERNAME_ARG2_TYPE],GETSOCKNAME_ARG2_TYPE,[Type of getpeername second argument.])
1516 AC_DEFINE([GETPEERNAME_ARG3_TYPE],GETSOCKNAME_ARG3_TYPE,[Type of getpeername second argument.])
1519 dnl =============================================================
1520 dnl Internal function for testing for getsockname arguments
1522 AC_DEFUN([TRY_GETSOCK_INT],[
1523 krb5_lib_var=`echo "$1 $2" | sed 'y% ./+-*%___p_p%'`
1524 AC_MSG_CHECKING([if getsockname() takes arguments $1 and $2])
1525 AC_CACHE_VAL(krb5_cv_getsockname_proto_$krb5_lib_var,
1527 AC_TRY_COMPILE([#include <sys/types.h>
1528 #include <sys/socket.h>
1529 extern int getsockname(int, $1, $2);
1530 ],,eval "krb5_cv_getsockname_proto_$krb5_lib_var=yes",
1531 eval "krb5_cv_getsockname_proto_$krb5_lib_var=no")])
1532 if eval "test \"`echo '$krb5_cv_getsockname_proto_'$krb5_lib_var`\" = yes"; then
1534 sock_set=yes; res1="$1"; res2="$2"
1540 dnl Determines the types of the second and third arguments to getsockname().
1542 AC_DEFUN([KRB5_GETSOCKNAME_ARGS],[
1544 for sock_arg1 in "struct sockaddr *" "void *"
1546 for sock_arg2 in "size_t *" "int *" "socklen_t *"
1548 if test $sock_set = no; then
1549 TRY_GETSOCK_INT($sock_arg1, $sock_arg2)
1553 if test "$sock_set" = no; then
1554 AC_MSG_NOTICE(assuming struct sockaddr and socklen_t for getsockname args)
1555 res1="struct sockaddr *"
1558 res1=`echo "$res1" | tr -d '*' | sed -e 's/ *$//'`
1559 res2=`echo "$res2" | tr -d '*' | sed -e 's/ *$//'`
1560 AC_DEFINE_UNQUOTED([GETSOCKNAME_ARG2_TYPE],$res1,[Type of pointer target for argument 2 to getsockname])
1561 AC_DEFINE_UNQUOTED([GETSOCKNAME_ARG3_TYPE],$res2,[Type of pointer target for argument 3 to getsockname])
1565 AC_DEFUN([KRB5_AC_CHOOSE_ET],[
1566 AC_ARG_WITH([system-et],
1567 AC_HELP_STRING(--with-system-et,use system compile_et and -lcom_err @<:@default: build and install a local version@:>@))
1568 AC_MSG_CHECKING(which version of com_err to use)
1569 if test "x$with_system_et" = xyes ; then
1571 AC_MSG_RESULT(system)
1576 if test $COM_ERR_VERSION = sys; then
1577 # check for various functions we need
1578 AC_CHECK_LIB(com_err, add_error_table, :, AC_MSG_ERROR(cannot find add_error_table in com_err library))
1579 AC_CHECK_LIB(com_err, remove_error_table, :, AC_MSG_ERROR(cannot find remove_error_table in com_err library))
1580 # make sure compile_et provides "et_foo" name
1581 cat >> conf$$e.et <<EOF
1583 error_code ERR_FOO, "foo"
1586 AC_CHECK_PROGS(compile_et,compile_et,false)
1587 if test "$compile_et" = false; then
1588 AC_MSG_ERROR(cannot find compile_et)
1590 AC_CACHE_CHECK(whether compile_et is useful,krb5_cv_compile_et_useful,[
1591 if compile_et conf$$e.et >/dev/null 2>&1 ; then true ; else
1592 AC_MSG_ERROR(execution failed)
1594 AC_TRY_COMPILE([#include "conf$$e.h"
1595 ],[ et_foo_error_table; ],:,
1596 [AC_MSG_ERROR(cannot use et_foo_error_table)])
1597 # Anything else we need to test for?
1598 rm -f conf$$e.et conf$$e.c conf$$e.h
1599 krb5_cv_compile_et_useful=yes
1602 AC_SUBST(COM_ERR_VERSION)
1604 AC_DEFUN([KRB5_AC_CHOOSE_SS],[
1605 AC_ARG_WITH(system-ss,
1606 AC_HELP_STRING(--with-system-ss,use system -lss and mk_cmds @<:@private version@:>@))
1607 AC_ARG_VAR(SS_LIB,[system libraries for 'ss' package [-lss]])
1608 AC_MSG_CHECKING(which version of subsystem package to use)
1609 if test "x$with_system_ss" = xyes ; then
1611 AC_MSG_RESULT(system)
1612 # todo: check for various libraries we might need
1613 # in the meantime...
1614 test "x${SS_LIB+set}" = xset || SS_LIB=-lss
1616 LIBS="$LIBS $SS_LIB"
1617 AC_CACHE_CHECK(whether system ss package works, krb5_cv_system_ss_okay,[
1620 int main(int argc, char *argv[]) {
1623 i = ss_create_invocation("foo","foo","",0,&err);
1627 }], krb5_cv_system_ss_okay=yes, AC_MSG_ERROR(cannot run test program),
1628 krb5_cv_system_ss_okay="assumed")])
1635 AC_SUBST(SS_VERSION)
1638 AC_DEFUN([KRB5_AC_CHOOSE_DB],[
1639 AC_ARG_WITH(system-db,
1640 AC_HELP_STRING(--with-system-db,use system Berkeley db @<:@private version@:>@))
1641 AC_ARG_VAR(DB_HEADER,[header file for system Berkeley db package [db.h]])
1642 AC_ARG_VAR(DB_LIB,[library for system Berkeley db package [-ldb]])
1643 if test "x$with_system_db" = xyes ; then
1645 # TODO: Do we have specific routines we should check for?
1646 # How about known, easily recognizable bugs?
1647 # We want to use bt_rseq in some cases, but no other version but
1648 # ours has it right now.
1650 # Okay, check the variables.
1651 test "x${DB_HEADER+set}" = xset || DB_HEADER=db.h
1652 test "x${DB_LIB+set}" = xset || DB_LIB=-ldb
1654 if test "x${DB_HEADER}" = xdb.h ; then
1655 DB_HEADER_VERSION=sys
1657 DB_HEADER_VERSION=redirect
1659 KDB5_DB_LIB="$DB_LIB"
1662 AC_DEFINE(HAVE_BT_RSEQ,1,[Define if bt_rseq is available, for recursive btree traversal.])
1664 DB_HEADER_VERSION=k5
1665 # libdb gets sucked into libkdb
1667 # needed for a couple of things that need libdb for its own sake
1670 AC_SUBST(DB_VERSION)
1672 AC_SUBST(DB_HEADER_VERSION)
1674 AC_SUBST(KDB5_DB_LIB)
1677 dnl KRB5_AC_PRIOCNTL_HACK
1680 AC_DEFUN([KRB5_AC_PRIOCNTL_HACK],
1681 [AC_REQUIRE([AC_PROG_AWK])dnl
1682 AC_REQUIRE([AC_LANG_COMPILER_REQUIRE])dnl
1683 AC_CACHE_CHECK([whether to use priocntl hack], [krb5_cv_priocntl_hack],
1684 [case $krb5_cv_host in
1686 if test "$cross_compiling" = yes; then
1687 krb5_cv_priocntl_hack=yes
1689 # Solaris patch 117171-11 (sparc) or 117172-11 (x86)
1690 # fixes the Solaris 9 bug where final pty output
1691 # gets lost on close.
1692 if showrev -p | $AWK 'BEGIN { e = 1 }
1693 /Patch: 11717[[12]]/ { x = index[]([$]2, "-");
1694 if (substr[]([$]2, x + 1, length([$]2) - x) >= 11)
1695 { e = 0 } else { e = 1 } }
1696 END { exit e; }'; then
1697 krb5_cv_priocntl_hack=no
1699 krb5_cv_priocntl_hack=yes
1704 krb5_cv_priocntl_hack=no
1707 if test "$krb5_cv_priocntl_hack" = yes; then
1712 AC_SUBST(PRIOCNTL_HACK)])
1715 dnl KRB5_AC_GCC_ATTRS
1716 AC_DEFUN([KRB5_AC_GCC_ATTRS],
1717 [AC_CACHE_CHECK([for constructor/destructor attribute support],krb5_cv_attr_constructor_destructor,
1718 [rm -f conftest.1 conftest.2
1719 if test -r conftest.1 || test -r conftest.2 ; then
1720 AC_MSG_ERROR(write error in local file system?)
1724 if test -r conftest.1 && test -r conftest.2 ; then true ; else
1725 AC_MSG_ERROR(write error in local file system?)
1729 # blindly assume we have 'unlink'...
1730 AC_TRY_RUN([void foo1() __attribute__((constructor));
1731 void foo1() { unlink("conftest.1"); }
1732 void foo2() __attribute__((destructor));
1733 void foo2() { unlink("conftest.2"); }
1734 int main () { return 0; }],
1735 [test -r conftest.1 || a=yes
1736 test -r conftest.2 || b=yes], , AC_MSG_ERROR(Cannot test for constructor/destructor support when cross compiling))
1737 case $krb5_cv_host in
1739 # Under AIX 4.3.3, at least, shared library destructor functions
1740 # appear to get executed in reverse link order (right to left),
1741 # so that a library's destructor function may run after that of
1742 # libraries it depends on, and may still have to access in the
1745 # That counts as "not working", for me, but it's a much more
1746 # complicated test case to set up.
1750 krb5_cv_attr_constructor_destructor="$a,$b"
1752 # Okay, krb5_cv_... should be set now.
1753 case $krb5_cv_attr_constructor_destructor in
1755 AC_DEFINE(CONSTRUCTOR_ATTR_WORKS,1,[Define if __attribute__((constructor)) works]) ;;
1757 case $krb5_cv_attr_constructor_destructor in
1759 AC_DEFINE(DESTRUCTOR_ATTR_WORKS,1,[Define if __attribute__((destructor)) works]) ;;
1761 dnl End of attributes we care about right now.
1765 dnl KRB5_AC_PRAGMA_WEAK_REF
1766 AC_DEFUN([KRB5_AC_PRAGMA_WEAK_REF],
1767 [AC_CACHE_CHECK([whether pragma weak references are supported],
1768 krb5_cv_pragma_weak_ref,
1769 [AC_TRY_LINK([#pragma weak flurbl
1770 extern int flurbl(void);],[if (&flurbl != 0) return flurbl();],
1771 krb5_cv_pragma_weak_ref=yes,krb5_cv_pragma_weak_ref=no)])
1772 if test $krb5_cv_pragma_weak_ref = yes ; then
1773 AC_DEFINE(HAVE_PRAGMA_WEAK_REF,1,[Define if #pragma weak references work])
1777 m4_include(config/ac-archive/acx_pthread.m4)
1781 # Check for libutil, for NetBSD, et al.; needed for openpty() and
1782 # logwtmp() on some platforms.
1784 AC_DEFUN([KRB5_AC_LIBUTIL],
1785 [AC_CHECK_LIB(util, main,
1786 [AC_DEFINE(HAVE_LIBUTIL)
1787 UTIL_LIB=-lutil])dnl