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)
68 dnl drop in standard rules for all configure files -- CONFIG_RULES
70 AC_DEFUN(CONFIG_RULES,[dnl
71 AC_REQUIRE([V5_SET_TOPDIR]) dnl
76 if test -z "$LD" ; then LD=$CC; fi
77 AC_ARG_VAR(LD,[linker command [CC]])
83 dnl allow stuff in tree to access deprecated/private stuff for now
84 AC_DEFINE([KRB5_PRIVATE], 1, [Define only if building in-tree])
85 AC_DEFINE([KRB5_DEPRECATED], 1, [Define only if building in-tree])
89 KRB5_AC_MAINTAINER_MODE dnl
92 dnl This identifies the top of the source tree relative to the directory
93 dnl in which the configure file lives.
95 CONFIG_RELTOPDIR=$ac_reltopdir
96 AC_SUBST(CONFIG_RELTOPDIR)
98 lib_frag=$srcdir/$ac_config_fragdir/lib.in
99 AC_SUBST_FILE(lib_frag)
100 libobj_frag=$srcdir/$ac_config_fragdir/libobj.in
101 AC_SUBST_FILE(libobj_frag)
102 libnover_frag=$srcdir/$ac_config_fragdir/libnover.in
103 AC_SUBST_FILE(libnover_frag)
105 KRB5_AC_PRAGMA_WEAK_REF
108 KRB5_AC_ENABLE_THREADS
112 dnl Maintainer mode, akin to what automake provides, 'cept we don't
113 dnl want to use automake right now.
114 AC_DEFUN([KRB5_AC_MAINTAINER_MODE],
115 [AC_ARG_ENABLE([maintainer-mode],
116 AC_HELP_STRING([--enable-maintainer-mode],[enable rebuilding of source files, Makefiles, etc]),
117 USE_MAINTAINER_MODE=$enableval,
118 USE_MAINTAINER_MODE=no)
119 if test "$USE_MAINTAINER_MODE" = yes; then
120 MAINTAINER_MODE_TRUE=
121 MAINTAINER_MODE_FALSE='#'
122 AC_MSG_NOTICE(enabling maintainer mode)
124 MAINTAINER_MODE_TRUE='#'
125 MAINTAINER_MODE_FALSE=
127 MAINT=$MAINTAINER_MODE_TRUE
128 AC_SUBST(MAINTAINER_MODE_TRUE)
129 AC_SUBST(MAINTAINER_MODE_FALSE)
134 AC_DEFUN([KRB5_AC_INITFINI],[
135 dnl Do we want initialization at load time?
136 AC_ARG_ENABLE([delayed-initialization],
137 AC_HELP_STRING([--disable-delayed-initialization],initialize library code when loaded @<:@delay until first use@:>@), , enable_delayed_initialization=yes)
138 case "$enable_delayed_initialization" in
140 AC_DEFINE(DELAY_INITIALIZER,1,[Define if library initialization should be delayed until first use]) ;;
142 *) AC_MSG_ERROR(invalid option $enable_delayed_initialization for delayed-initialization) ;;
144 dnl We always want finalization at unload time.
146 dnl Can we do things through gcc?
148 dnl How about with the linker?
149 if test -z "$use_linker_init_option" ; then
150 AC_MSG_ERROR(ran INITFINI before checking shlib.conf?)
152 if test "$use_linker_init_option" = yes; then
153 AC_DEFINE(USE_LINKER_INIT_OPTION,1,[Define if link-time options for library initialization will be used])
155 if test "$use_linker_fini_option" = yes; then
156 AC_DEFINE(USE_LINKER_FINI_OPTION,1,[Define if link-time options for library finalization will be used])
161 AC_DEFUN([KRB5_AC_FIND_DLOPEN],[
162 AC_CHECK_LIB(dl, dlopen,[DL_LIB=-ldl
163 AC_DEFINE(USE_DLOPEN,1,[Define if dlopen should be used])])
164 dnl AC_CHECK_LIB(ld, main, DL_LIB=-lld)
170 AC_DEFUN([KRB5_AC_ENABLE_THREADS],[
171 AC_ARG_ENABLE([thread-support],
172 AC_HELP_STRING([--disable-thread-support],don't enable thread support @<:@enabled@:>@), , enable_thread_support=yes)
173 if test "$enable_thread_support" = yes ; then
174 AC_MSG_NOTICE(enabling thread support)
175 AC_DEFINE(ENABLE_THREADS,1,[Define if thread support enabled])
177 dnl Maybe this should be inside the conditional above? Doesn't cache....
178 if test "$enable_thread_support" = yes; then
179 ACX_PTHREAD(,[AC_MSG_ERROR([cannot determine options for enabling thread support; try --disable-thread-support])])
180 AC_MSG_NOTICE(PTHREAD_CC = $PTHREAD_CC)
181 AC_MSG_NOTICE(PTHREAD_CFLAGS = $PTHREAD_CFLAGS)
182 AC_MSG_NOTICE(PTHREAD_LIBS = $PTHREAD_LIBS)
183 dnl Not really needed -- if pthread.h isn't found, ACX_PTHREAD will fail.
184 dnl AC_CHECK_HEADERS(pthread.h)
185 # AIX and Tru64 don't support weak references, and don't have
186 # stub versions of the pthread code in libc.
189 # On these platforms, we'll always pull in the thread support.
190 LIBS="$LIBS $PTHREAD_LIBS"
191 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
192 # We don't need to sometimes add the flags we've just folded in...
197 # These are the flags that "gcc -pthread" adds. But we don't
198 # want "-pthread" because that has link-time effects, and we
199 # don't exclude CFLAGS when linking. *sigh*
200 PTHREAD_CFLAGS="-D_REENTRANT -D_THREAD_SAFE -D_POSIX_C_SOURCE=199506L"
203 # On Solaris 10 with gcc 3.4.3, the autoconf archive macro doesn't
204 # get the right result.
205 if test "$GCC" = yes ; then
206 PTHREAD_CFLAGS="-D_REENTRANT -pthreads"
217 AC_SUBST(THREAD_SUPPORT)
218 dnl We want to know where these routines live, so on systems with weak
219 dnl reference support we can figure out whether or not the pthread library
220 dnl has been linked in.
221 dnl If we don't add any libraries for thread support, don't bother.
222 AC_CHECK_FUNCS(pthread_once pthread_mutexattr_setrobust_np pthread_rwlock_init)
224 test "$PTHREAD_CC" != "" && test "$ac_cv_c_compiler_gnu" = no && CC=$PTHREAD_CC
226 # On Solaris, -pthreads is added to CFLAGS, no extra explicit libraries.
227 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
228 AC_SUBST(PTHREAD_CFLAGS)
230 LIBS="$PTHREAD_LIBS $LIBS"
231 AC_MSG_NOTICE(rechecking with PTHREAD_... options)
232 AC_CHECK_LIB(c, pthread_mutexattr_setrobust_np,
233 [AC_DEFINE(HAVE_PTHREAD_MUTEXATTR_SETROBUST_NP_IN_THREAD_LIB,1,[Define if pthread_mutexattr_setrobust_np is provided in the thread library.])])
234 AC_CHECK_LIB(c, pthread_rwlock_init,
235 [AC_DEFINE(HAVE_PTHREAD_RWLOCK_INIT_IN_THREAD_LIB,1,[Define if pthread_rwlock_init is provided in the thread library.])])
241 dnl This is somewhat gross and should go away when the build system
242 dnl is revamped. -- tlyu
243 dnl DECLARE_SYS_ERRLIST - check for sys_errlist in libc
245 AC_DEFUN([DECLARE_SYS_ERRLIST],
246 [AC_CACHE_CHECK([for sys_errlist declaration], krb5_cv_decl_sys_errlist,
247 [AC_TRY_COMPILE([#include <stdio.h>
248 #include <errno.h>], [1+sys_nerr;],
249 krb5_cv_decl_sys_errlist=yes, krb5_cv_decl_sys_errlist=no)])
250 # assume sys_nerr won't be declared w/o being in libc
251 if test $krb5_cv_decl_sys_errlist = yes; then
252 AC_DEFINE(SYS_ERRLIST_DECLARED,1,[Define if sys_errlist is defined in errno.h])
253 AC_DEFINE(HAVE_SYS_ERRLIST,1,[Define if sys_errlist in libc])
255 # This means that sys_errlist is not declared in errno.h, but may still
257 AC_CACHE_CHECK([for sys_errlist in libc], krb5_cv_var_sys_errlist,
258 [AC_TRY_LINK([extern int sys_nerr;], [if (1+sys_nerr < 0) return 1;],
259 krb5_cv_var_sys_errlist=yes, krb5_cv_var_sys_errlist=no;)])
260 if test $krb5_cv_var_sys_errlist = yes; then
261 AC_DEFINE(HAVE_SYS_ERRLIST,1,[Define if sys_errlist in libc])
262 # Do this cruft for backwards compatibility for now.
263 AC_DEFINE(NEED_SYS_ERRLIST,1,[Define if need to declare sys_errlist])
265 AC_MSG_WARN([sys_errlist is neither in errno.h nor in libc])
270 dnl check for sigmask/sigprocmask -- CHECK_SIGPROCMASK
272 AC_DEFUN(CHECK_SIGPROCMASK,[
273 AC_MSG_CHECKING([for use of sigprocmask])
274 AC_CACHE_VAL(krb5_cv_func_sigprocmask_use,
275 [AC_TRY_LINK([#include <signal.h>], [sigprocmask(SIG_SETMASK,0,0);],
276 krb5_cv_func_sigprocmask_use=yes,
277 AC_TRY_LINK([#include <signal.h>], [sigmask(1);],
278 krb5_cv_func_sigprocmask_use=no, krb5_cv_func_sigprocmask_use=yes))])
279 AC_MSG_RESULT($krb5_cv_func_sigprocmask_use)
280 if test $krb5_cv_func_sigprocmask_use = yes; then
281 AC_DEFINE(USE_SIGPROCMASK)
285 AC_DEFUN(AC_PROG_ARCHIVE, [AC_CHECK_PROG(ARCHIVE, ar, ar cqv, false)])dnl
286 AC_DEFUN(AC_PROG_ARCHIVE_ADD, [AC_CHECK_PROG(ARADD, ar, ar cruv, false)])dnl
288 dnl check for <dirent.h> -- CHECK_DIRENT
289 dnl (may need to be more complex later)
291 AC_DEFUN(CHECK_DIRENT,[
292 AC_CHECK_HEADER(dirent.h,AC_DEFINE(USE_DIRENT_H,1,[Define if you have dirent.h functionality]))])dnl
294 dnl check if union wait is defined, or if WAIT_USES_INT -- CHECK_WAIT_TYPE
296 AC_DEFUN(CHECK_WAIT_TYPE,[
297 AC_MSG_CHECKING([if argument to wait is int *])
298 AC_CACHE_VAL(krb5_cv_struct_wait,
299 dnl Test for prototype clash - if there is none - then assume int * works
300 [AC_TRY_COMPILE([#include <sys/types.h>
301 #include <sys/wait.h>
302 extern pid_t wait(int *);],[], krb5_cv_struct_wait=no,dnl
303 dnl Else fallback on old stuff
305 [#include <sys/wait.h>], [union wait i;
310 krb5_cv_struct_wait=yes, krb5_cv_struct_wait=no)])])
311 AC_MSG_RESULT($krb5_cv_struct_wait)
312 if test $krb5_cv_struct_wait = no; then
313 AC_DEFINE(WAIT_USES_INT,1,[Define if wait takes int as a argument])
317 dnl check for POSIX signal handling -- CHECK_SIGNALS
319 AC_DEFUN(CHECK_SIGNALS,[
320 AC_CHECK_FUNC(sigprocmask,
321 AC_MSG_CHECKING(for sigset_t and POSIX_SIGNALS)
322 AC_CACHE_VAL(krb5_cv_type_sigset_t,
324 [#include <signal.h>],
326 krb5_cv_type_sigset_t=yes, krb5_cv_type_sigset_t=no)])
327 AC_MSG_RESULT($krb5_cv_type_sigset_t)
328 if test $krb5_cv_type_sigset_t = yes; then
329 AC_DEFINE(POSIX_SIGNALS,1,[Define if POSIX signal handling is used])
333 dnl check for signal type
335 dnl AC_RETSIGTYPE isn't quite right, but almost.
336 AC_DEFUN(KRB5_SIGTYPE,[
337 AC_MSG_CHECKING([POSIX signal handlers])
338 AC_CACHE_VAL(krb5_cv_has_posix_signals,
340 [#include <sys/types.h>
345 extern void (*signal ()) ();], [],
346 krb5_cv_has_posix_signals=yes, krb5_cv_has_posix_signals=no)])
347 AC_MSG_RESULT($krb5_cv_has_posix_signals)
348 if test $krb5_cv_has_posix_signals = yes; then
350 AC_DEFINE(POSIX_SIGTYPE, 1, [Define if POSIX signal handlers are used])
352 if test $ac_cv_type_signal = void; then
358 AC_DEFINE_UNQUOTED(krb5_sigtype, $stype, [Define krb5_sigtype to type of signal handler])dnl
361 dnl check for POSIX setjmp/longjmp -- CHECK_SETJMP
363 AC_DEFUN(CHECK_SETJMP,[
364 AC_CHECK_FUNC(sigsetjmp,
365 AC_MSG_CHECKING(for sigjmp_buf)
366 AC_CACHE_VAL(krb5_cv_struct_sigjmp_buf,
368 [#include <setjmp.h>],[sigjmp_buf x],
369 krb5_cv_struct_sigjmp_buf=yes,krb5_cv_struct_sigjmp_buf=no)])
370 AC_MSG_RESULT($krb5_cv_struct_sigjmp_buf)
371 if test $krb5_cv_struct_sigjmp_buf = yes; then
372 AC_DEFINE(POSIX_SETJMP)
376 dnl Check for IPv6 compile-time support.
378 AC_DEFUN(KRB5_AC_INET6,[
379 AC_CHECK_HEADERS(sys/types.h sys/socket.h netinet/in.h netdb.h)
380 AC_CHECK_FUNCS(inet_ntop inet_pton getnameinfo)
381 dnl getaddrinfo test needs netdb.h, for proper compilation on alpha
382 dnl under OSF/1^H^H^H^H^HDigital^H^H^H^H^H^H^HTru64 UNIX, where it's
384 AC_MSG_CHECKING(for getaddrinfo)
385 AC_CACHE_VAL(ac_cv_func_getaddrinfo,
386 [AC_TRY_LINK([#ifdef HAVE_NETDB_H
390 getaddrinfo("kerberos.mit.edu", "echo", 0, &ai);
391 ], ac_cv_func_getaddrinfo=yes, ac_cv_func_getaddrinfo=no)])
392 AC_MSG_RESULT($ac_cv_func_getaddrinfo)
393 if test $ac_cv_func_getaddrinfo = yes; then
394 AC_DEFINE(HAVE_GETADDRINFO,1,[Define if you have the getaddrinfo function])
397 AC_REQUIRE([KRB5_SOCKADDR_SA_LEN])dnl
398 AC_ARG_ENABLE([ipv6], , AC_MSG_WARN(enable/disable-ipv6 option is deprecated))dnl
402 AC_DEFUN(KRB5_AC_CHECK_TYPE_WITH_HEADERS,[
403 AC_MSG_CHECKING(for type $1)
404 changequote(<<,>>)dnl
405 varname=`echo $1 | sed 's,[ -],_,g'`
407 AC_CACHE_VAL(krb5_cv_$varname,[
408 AC_TRY_COMPILE([$2],[ $1 foo; ], eval krb5_cv_$varname=yes, eval krb5_cv_$varname=no)])
409 eval x="\$krb5_cv_$varname"
411 if eval test "$x" = yes ; then
412 AC_DEFINE_UNQUOTED(HAVE_`echo $varname | tr [[[a-z]]] [[[A-Z]]]`)
416 AC_DEFUN(KRB5_AC_CHECK_SOCKADDR_STORAGE,[
417 KRB5_AC_CHECK_TYPE_WITH_HEADERS(struct sockaddr_storage, [
418 #ifdef HAVE_SYS_TYPES_H
419 #include <sys/types.h>
421 #include <sys/socket.h>
422 #include <netinet/in.h>
426 AC_DEFUN(KRB5_AC_CHECK_INET6,[
427 AC_REQUIRE([KRB5_AC_CHECK_SOCKADDR_STORAGE])dnl
428 AC_MSG_CHECKING(for IPv6 compile-time support)
429 AC_CACHE_VAL(krb5_cv_inet6,[
430 if test "$ac_cv_func_inet_ntop" != "yes" ; then
434 #ifdef HAVE_SYS_TYPES_H
435 #include <sys/types.h>
437 #include <sys/socket.h>
438 #include <netinet/in.h>
441 struct sockaddr_in6 in;
443 IN6_IS_ADDR_LINKLOCAL (&in.sin6_addr);
444 ],krb5_cv_inet6=yes,krb5_cv_inet6=no)])
446 AC_MSG_RESULT($krb5_cv_inet6)
447 if test "$krb5_cv_inet6" = no && test "$ac_cv_func_inet_ntop" = yes; then
448 AC_MSG_CHECKING(for IPv6 compile-time support with -DINET6)
449 AC_CACHE_VAL(krb5_cv_inet6_with_dinet6,[
453 #ifdef HAVE_SYS_TYPES_H
454 #include <sys/types.h>
456 #include <sys/socket.h>
457 #include <netinet/in.h>
460 struct sockaddr_in6 in;
462 IN6_IS_ADDR_LINKLOCAL (&in.sin6_addr);
463 ],krb5_cv_inet6_with_dinet6=yes,krb5_cv_inet6_with_dinet6=no)
465 AC_MSG_RESULT($krb5_cv_inet6_with_dinet6)
467 if test $krb5_cv_inet6 = yes || test "$krb5_cv_inet6_with_dinet6" = yes; then
468 if test "$krb5_cv_inet6_with_dinet6" = yes; then
469 AC_DEFINE(INET6,1,[May need to be defined to enable IPv6 support, for example on IRIX])
471 AC_DEFINE(KRB5_USE_INET6,1,[Define if we should compile in IPv6 support (even if we can't use it at run time)])
475 dnl Generic File existence tests
477 dnl K5_AC_CHECK_FILE(FILE, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
479 AC_DEFUN(K5_AC_CHECK_FILE,
480 [AC_REQUIRE([AC_PROG_CC])dnl
481 dnl Do the transliteration at runtime so arg 1 can be a shell variable.
482 ac_safe=`echo "$1" | sed 'y%./+-%__p_%'`
483 AC_MSG_CHECKING([for $1])
484 AC_CACHE_VAL(ac_cv_file_$ac_safe,
485 [if test "$cross_compiling" = yes; then
486 errprint(__file__:__line__: warning: Cannot check for file existence when cross compiling
488 AC_MSG_ERROR(Cannot check for file existence when cross compiling)
491 eval "ac_cv_file_$ac_safe=yes"
493 eval "ac_cv_file_$ac_safe=no"
496 if eval "test \"`echo '$ac_cv_file_'$ac_safe`\" = yes"; then
498 ifelse([$2], , :, [$2])
506 dnl K5_AC_CHECK_FILES(FILE... [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
508 AC_DEFUN(K5_AC_CHECK_FILES,
509 [AC_REQUIRE([AC_PROG_CC])dnl
512 K5_AC_CHECK_FILE($ac_file,
514 ac_tr_file=HAVE`echo $ac_file | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
516 AC_DEFINE_UNQUOTED($ac_tr_file) $2], $3)dnl
520 dnl set $(KRB4) from --with-krb4=value -- WITH_KRB4
524 [ --without-krb4 don't include Kerberos V4 backwards compatibility
525 --with-krb4 use V4 libraries included with V5 (default)
526 --with-krb4=KRB4DIR use preinstalled V4 libraries],
530 if test $withval = no; then
531 AC_MSG_NOTICE(no krb4 support)
537 krb5_cv_build_krb4_libs=no
540 AC_DEFINE([KRB5_KRB4_COMPAT], 1, [Define this if building with krb4 compat])
541 if test $withval = yes; then
542 AC_MSG_NOTICE(enabling built in krb4 support)
543 KRB4_DEPLIB='$(TOPLIBD)/libkrb4$(DEPLIBEXT)'
545 KRB4_INCLUDES='-I$(SRCTOP)/include/kerberosIV -I$(BUILDTOP)/include/kerberosIV'
547 KRB_ERR_H_DEP='$(BUILDTOP)/include/kerberosIV/krb_err.h'
548 krb5_cv_build_krb4_libs=yes
551 AC_MSG_NOTICE(using preinstalled krb4 in $withval)
553 dnl DEPKRB4_LIB="$withval/lib/libkrb.a"
554 KRB4_INCLUDES="-I$withval/include"
555 KRB4_LIBPATH="-L$withval/lib"
557 krb5_cv_build_krb4_libs=no
558 krb5_cv_krb4_libdir="$withval/lib"
561 AC_SUBST(KRB4_INCLUDES)
562 AC_SUBST(KRB4_LIBPATH)
564 AC_SUBST(KRB4_DEPLIB)
565 AC_SUBST(KRB_ERR_H_DEP)
566 dnl We always compile the des425 library
567 DES425_DEPLIB='$(TOPLIBD)/libdes425$(DEPLIBEXT)'
569 AC_SUBST(DES425_DEPLIB)
574 AC_DEFUN(KRB5_AC_CHECK_FOR_CFLAGS,[
575 AC_BEFORE([$0],[AC_PROG_CC])
576 krb5_ac_cflags_set=${CFLAGS+set}
579 AC_DEFUN(WITH_CC,[dnl
580 AC_REQUIRE([KRB5_AC_CHECK_FOR_CFLAGS])dnl
581 AC_REQUIRE([AC_PROG_CC])dnl
582 krb5_cv_prog_gcc=$ac_cv_c_compiler_gnu
583 if test $ac_cv_c_compiler_gnu = yes ; then
588 AC_CACHE_CHECK([for GNU linker], krb5_cv_prog_gnu_ld,
589 [krb5_cv_prog_gnu_ld=no
590 if test "$GCC" = yes; then
591 if AC_TRY_COMMAND([$CC -Wl,-v 2>&1 dnl
592 | grep "GNU ld" > /dev/null]); then
593 krb5_cv_prog_gnu_ld=yes
596 # maybe add -Waggregate-return, or can we assume that actually works by now?
597 # -Wno-comment used to be used for SunOS system header <sys/stream.h>
598 # -Wno-long-long, if needed, for k5-platform.h without inttypes.h etc.
599 extra_gcc_warn_opts="-Wall -Wmissing-prototypes -Wcast-qual \
600 -Wcast-align -Wconversion -Wshadow"
601 if test "$GCC" = yes ; then
602 if test "x$krb5_ac_cflags_set" = xset ; then
603 AC_MSG_NOTICE(not adding extra gcc warning flags because CFLAGS was set)
605 AC_MSG_NOTICE(adding extra warning flags for gcc)
606 CFLAGS="$CFLAGS $extra_gcc_warn_opts"
607 if test "`uname -s`" = Darwin ; then
608 AC_MSG_NOTICE(skipping pedantic warnings on Darwin)
609 elif test "`uname -s`" = Linux ; then
610 AC_MSG_NOTICE(skipping pedantic warnings on Linux)
612 CFLAGS="$CFLAGS -pedantic"
615 if test "`uname -s`" = Darwin ; then
616 # Someday this should be a feature test.
617 # One current (Jaguar = OS 10.2) problem:
618 # Archive library with foo.o undef sym X and bar.o common sym X,
619 # if foo.o is pulled in at link time, bar.o may not be, causing
620 # the linker to complain.
621 # Dynamic library problems too?
622 case "$CC $CFLAGS" in
623 *-fcommon*) ;; # why someone would do this, I don't know
624 *-fno-common*) ;; # okay, they're already doing the right thing
626 AC_MSG_NOTICE(disabling the use of common storage on Darwin)
627 CFLAGS="$CFLAGS -fno-common"
630 case "$LD $LDFLAGS" in
631 *-Wl,-search_paths_first*) ;;
632 *) LDFLAGS="${LDFLAGS} -Wl,-search_paths_first" ;;
636 if test "`uname -s`" = AIX ; then
637 # Using AIX but not GCC, assume native compiler.
638 # The native compiler appears not to give a nonzero exit
639 # status for certain classes of errors, like missing arguments
640 # in function calls. Let's try to fix that with -qhalt=e.
641 case "$CC $CFLAGS" in
644 CFLAGS="$CFLAGS -qhalt=e"
645 AC_MSG_NOTICE(adding -qhalt=e for better error reporting)
648 # Also, the optimizer isn't turned on by default, which means
649 # the static inline functions get left in random object files,
650 # leading to references to pthread_mutex_lock from anything that
651 # includes k5-int.h whether it uses threads or not.
652 case "$CC $CFLAGS" in
656 AC_MSG_NOTICE(adding -O for inline thread-support function elimination)
664 dnl check for yylineno -- HAVE_YYLINENO
666 AC_DEFUN(HAVE_YYLINENO,[dnl
667 AC_REQUIRE_CPP()AC_REQUIRE([AC_PROG_LEX])dnl
668 AC_MSG_CHECKING([for yylineno declaration])
669 AC_CACHE_VAL(krb5_cv_type_yylineno,
670 # some systems have yylineno, others don't...
672 %%' | ${LEX} -t > conftest.out
673 if egrep yylineno conftest.out >/dev/null 2>&1; then
674 krb5_cv_type_yylineno=yes
676 krb5_cv_type_yylineno=no
679 AC_MSG_RESULT($krb5_cv_type_yylineno)
680 if test $krb5_cv_type_yylineno = no; then
681 AC_DEFINE(NO_YYLINENO, 1, [Define if lex produes code with yylineno])
685 dnl K5_GEN_MAKEFILE([dir, [frags]])
687 AC_DEFUN(K5_GEN_MAKEFILE,[dnl
688 ifelse($1, ,[_K5_GEN_MAKEFILE(.,$2)],[_K5_GEN_MAKEFILE($1,$2)])
691 dnl _K5_GEN_MAKEFILE(dir, [frags])
692 dnl dir must be present in this case
693 dnl Note: Be careful in quoting.
694 dnl The ac_foreach generates the list of fragments to include
695 dnl or "" if $2 is empty
696 AC_DEFUN(_K5_GEN_MAKEFILE,[dnl
697 AC_CONFIG_FILES([$1/Makefile:$krb5_pre_in:$1/Makefile.in:$krb5_post_in])
700 dnl K5_GEN_FILE( <ac_output arguments> )
702 AC_DEFUN(K5_GEN_FILE,[AC_CONFIG_FILES($1)])dnl
705 dnl Note: Adds the variables to config.status for individual
706 dnl Makefile generation from config.statsu
707 AC_DEFUN(K5_AC_OUTPUT,[dnl
708 AC_CONFIG_COMMANDS([krb5_config_prefix], [], dnl
709 [krb5_pre_in=$krb5_pre_in
710 ac_config_fragdir=$ac_config_fragdir
711 krb5_post_in=$krb5_post_in])
714 dnl V5_AC_OUTPUT_MAKEFILE
716 AC_DEFUN(V5_AC_OUTPUT_MAKEFILE,
717 [ifelse($1, , [_V5_AC_OUTPUT_MAKEFILE(.,$2)],[_V5_AC_OUTPUT_MAKEFILE($1,$2)])])
719 define(_V5_AC_OUTPUT_MAKEFILE,
720 [ifelse($2, , ,AC_CONFIG_FILES($2))
721 AC_FOREACH([DIR], [$1],dnl
722 [AC_CONFIG_FILES(DIR[/Makefile:$krb5_pre_in:]DIR[/Makefile.in:$krb5_post_in])])
726 dnl KRB5_SOCKADDR_SA_LEN: define HAVE_SA_LEN if sockaddr contains the sa_len
729 AC_DEFUN([KRB5_SOCKADDR_SA_LEN],[ dnl
730 AC_MSG_CHECKING(whether struct sockaddr contains sa_len)
731 AC_CACHE_VAL(krb5_cv_sockaddr_sa_len,
732 [AC_TRY_COMPILE([#include <sys/types.h>
733 #include <sys/socket.h>
737 krb5_cv_sockaddr_sa_len=yes,krb5_cv_sockaddr_sa_len=no)])
738 AC_MSG_RESULT([$]krb5_cv_sockaddr_sa_len)
739 if test $krb5_cv_sockaddr_sa_len = yes; then
740 AC_DEFINE_UNQUOTED(HAVE_SA_LEN,1,[Define if struct sockaddr contains sa_len])
745 dnl CHECK_UTMP: check utmp structure and functions
747 AC_DEFUN(CHECK_UTMP,[
748 AC_MSG_CHECKING([ut_pid in struct utmp])
749 AC_CACHE_VAL(krb5_cv_struct_ut_pid,
751 [#include <sys/types.h>
753 [struct utmp ut; ut.ut_pid;],
754 krb5_cv_struct_ut_pid=yes, krb5_cv_struct_ut_pid=no)])
755 AC_MSG_RESULT($krb5_cv_struct_ut_pid)
756 if test $krb5_cv_struct_ut_pid = no; then
759 AC_MSG_CHECKING([ut_type in struct utmp])
760 AC_CACHE_VAL(krb5_cv_struct_ut_type,
762 [#include <sys/types.h>
764 [struct utmp ut; ut.ut_type;],
765 krb5_cv_struct_ut_type=yes, krb5_cv_struct_ut_type=no)])
766 AC_MSG_RESULT($krb5_cv_struct_ut_type)
767 if test $krb5_cv_struct_ut_type = no; then
768 AC_DEFINE(NO_UT_TYPE)
770 AC_MSG_CHECKING([ut_host in struct utmp])
771 AC_CACHE_VAL(krb5_cv_struct_ut_host,
773 [#include <sys/types.h>
775 [struct utmp ut; ut.ut_host;],
776 krb5_cv_struct_ut_host=yes, krb5_cv_struct_ut_host=no)])
777 AC_MSG_RESULT($krb5_cv_struct_ut_host)
778 if test $krb5_cv_struct_ut_host = no; then
779 AC_DEFINE(NO_UT_HOST)
781 AC_MSG_CHECKING([ut_exit in struct utmp])
782 AC_CACHE_VAL(krb5_cv_struct_ut_exit,
784 [#include <sys/types.h>
786 [struct utmp ut; ut.ut_exit;],
787 krb5_cv_struct_ut_exit=yes, krb5_cv_struct_ut_exit=no)])
788 AC_MSG_RESULT($krb5_cv_struct_ut_exit)
789 if test $krb5_cv_struct_ut_exit = no; then
790 AC_DEFINE(NO_UT_EXIT)
792 AC_CHECK_FUNC(setutent,AC_DEFINE(HAVE_SETUTENT))
793 AC_CHECK_FUNC(setutxent,AC_DEFINE(HAVE_SETUTXENT))
794 AC_CHECK_FUNC(updwtmp,AC_DEFINE(HAVE_UPDWTMP))
795 AC_CHECK_FUNC(updwtmpx,AC_DEFINE(HAVE_UPDWTMPX))
801 AC_DEFUN(WITH_NETLIB,[
802 AC_ARG_WITH([netlib],
803 AC_HELP_STRING([--with-netlib=LIBS], use user defined resolver library),
804 [ if test "$withval" = yes -o "$withval" = no ; then
805 AC_MSG_RESULT("netlib will link with C library resolver only")
807 LIBS="$LIBS $withval"
808 AC_MSG_RESULT("netlib will use \'$withval\'")
815 AC_DEFUN(KRB5_AC_NEED_DAEMON, [
816 KRB5_NEED_PROTO([#ifdef HAVE_UNISTD_H
818 #endif],daemon,1)])dnl
820 dnl Check if stdarg or varargs is available *and compiles*; prefer stdarg.
821 dnl (This was sent to djm for incorporation into autoconf 3/12/1996. KR)
823 AC_DEFUN(AC_HEADER_STDARG, [
825 AC_MSG_CHECKING([for stdarg.h])
826 AC_CACHE_VAL(ac_cv_header_stdarg_h,
827 [AC_TRY_COMPILE([#include <stdarg.h>], [
828 } /* ac_try_compile will have started a function body */
829 int aoeu (char *format, ...) {
832 va_start (v, format);
835 ],ac_cv_header_stdarg_h=yes,ac_cv_header_stdarg_h=no)])dnl
836 AC_MSG_RESULT($ac_cv_header_stdarg_h)
837 if test $ac_cv_header_stdarg_h = yes; then
838 AC_DEFINE(HAVE_STDARG_H, 1, [Define if stdarg available and compiles])
841 AC_MSG_CHECKING([for varargs.h])
842 AC_CACHE_VAL(ac_cv_header_varargs_h,
843 [AC_TRY_COMPILE([#include <varargs.h>],[
844 } /* ac_try_compile will have started a function body */
845 int aoeu (va_alist) va_dcl {
851 ],ac_cv_header_varargs_h=yes,ac_cv_header_varargs_h=no)])dnl
852 AC_MSG_RESULT($ac_cv_header_varargs_h)
853 if test $ac_cv_header_varargs_h = yes; then
854 AC_DEFINE(HAVE_VARARGS_H, 1, [Define if varargs available and compiles])
856 AC_MSG_ERROR(Neither stdarg nor varargs compile?)
859 fi dnl stdarg test failure
864 dnl KRB5_AC_NEED_LIBGEN --- check if libgen needs to be linked in for
868 AC_DEFUN(KRB5_AC_NEED_LIBGEN,[
869 AC_REQUIRE([AC_PROG_CC])dnl
871 dnl regcomp is present but non-functional on Solaris 2.4
873 AC_MSG_CHECKING(for working regcomp)
874 AC_CACHE_VAL(ac_cv_func_regcomp,[
876 #include <sys/types.h>
878 regex_t x; regmatch_t m;
879 int main() { return regcomp(&x,"pat.*",0) || regexec(&x,"pattern",1,&m,0); }
880 ], ac_cv_func_regcomp=yes, ac_cv_func_regcomp=no, AC_MSG_ERROR([Cannot test regcomp when cross compiling]))])
881 AC_MSG_RESULT($ac_cv_func_regcomp)
882 test $ac_cv_func_regcomp = yes && AC_DEFINE(HAVE_REGCOMP,1,[Define if regcomp exists and functions])
884 dnl Check for the compile and step functions - only if regcomp is not available
886 if test $ac_cv_func_regcomp = no; then
889 dnl this will fail if there's no compile/step in -lgen, or if there's
890 dnl no -lgen. This is fine.
891 AC_CHECK_FUNCS(compile step)
894 dnl Set GEN_LIB if necessary
896 AC_CHECK_LIB(gen, compile, GEN_LIB=-lgen, GEN_LIB=)
901 dnl KRB5_AC_REGEX_FUNCS --- check for different regular expression
902 dnl support functions
904 AC_DEFUN(KRB5_AC_REGEX_FUNCS,[
905 AC_CHECK_FUNCS(re_comp re_exec regexec)
906 AC_REQUIRE([KRB5_AC_NEED_LIBGEN])dnl
909 dnl AC_KRB5_TCL_FIND_CONFIG (uses tcl_dir)
911 AC_DEFUN(AC_KRB5_TCL_FIND_CONFIG,[
912 AC_REQUIRE([KRB5_LIB_AUX])dnl
913 AC_MSG_CHECKING(for tclConfig.sh)
914 if test -r "$tcl_dir/lib/tclConfig.sh" ; then
915 tcl_conf="$tcl_dir/lib/tclConfig.sh"
916 elif test -r "$tcl_dir/tclConfig.sh" ; then
917 tcl_conf="$tcl_dir/tclConfig.sh"
921 changequote(<<,>>)dnl
922 for d in "$lib" "$lib"/tcl7.[0-9] "$lib"/tcl8.[0-9] ; do
923 if test -r "$d/tclConfig.sh" ; then
924 tcl_conf="$tcl_conf $d/tclConfig.sh"
929 if test -n "$tcl_conf" ; then
930 AC_MSG_RESULT($tcl_conf)
932 AC_MSG_RESULT(not found)
937 old_CPPFLAGS=$CPPFLAGS
940 if test -n "$tcl_conf" ; then
941 for file in $tcl_conf ; do
942 TCL_MAJOR_VERSION=x ; TCL_MINOR_VERSION=x
943 AC_MSG_CHECKING(Tcl info in $file)
945 v=$TCL_MAJOR_VERSION.$TCL_MINOR_VERSION
946 if test -z "$tcl_vers_maj" \
947 || test "$tcl_vers_maj" -lt "$TCL_MAJOR_VERSION" \
948 || test "$tcl_vers_maj" = "$TCL_MAJOR_VERSION" -a "$tcl_vers_min" -lt "$TCL_MINOR_VERSION" ; then
949 for incdir in "$TCL_PREFIX/include/tcl$v" "$TCL_PREFIX/include" ; do
950 if test -r "$incdir/tcl.h" -o -r "$incdir/tcl/tcl.h" ; then
951 CPPFLAGS="$old_CPPFLAGS -I$incdir"
955 LIBS="$old_LIBS `eval echo x $TCL_LIB_SPEC $TCL_LIBS | sed 's/^x//'`"
956 LDFLAGS="$old_LDFLAGS $TCL_LD_FLAGS"
957 AC_TRY_LINK( , [Tcl_CreateInterp ();],
959 tcl_vers_maj=$TCL_MAJOR_VERSION
960 tcl_vers_min=$TCL_MINOR_VERSION
961 AC_MSG_RESULT($v - working),
962 AC_MSG_RESULT($v - compilation failed)
965 AC_MSG_RESULT(older version $v)
969 CPPFLAGS=$old_CPPFLAGS
974 if test -n "$tcl_ok_conf" ; then
977 for incdir in "$TCL_PREFIX/include/tcl$v" "$TCL_PREFIX/include" ; do
978 if test -r "$incdir/tcl.h" -o -r "$incdir/tcl/tcl.h" ; then
979 if test "$incdir" != "/usr/include" ; then
980 TCL_INCLUDES=-I$incdir
985 # Need eval because the first-level expansion could reference
986 # variables like ${TCL_DBGX}.
987 eval TCL_LIBS='"'$TCL_LIB_SPEC $TCL_LIBS $TCL_DL_LIBS'"'
988 TCL_LIBPATH="-L$TCL_EXEC_PREFIX/lib"
989 TCL_RPATH=":$TCL_EXEC_PREFIX/lib"
990 if test "$DEPLIBEXT" != "$SHLIBEXT" && test -n "$RPATH_FLAG"; then
991 TCL_MAYBE_RPATH='$(RPATH_FLAG)'"$TCL_EXEC_PREFIX/lib$RPATH_TAIL"
995 CPPFLAGS="$old_CPPFLAGS $TCL_INCLUDES"
996 AC_CHECK_HEADER(tcl.h,AC_DEFINE(HAVE_TCL_H,1,[Define if tcl.h is available]) tcl_header=yes)
997 if test $tcl_header=no; then
998 AC_CHECK_HEADER(tcl/tcl.h,AC_DEFINE(HAVE_TCL_TCL_H,1,[Define if tcl/tcl.h is available]) tcl_header=yes)
1000 CPPFLAGS="$old_CPPFLAGS"
1003 # If we read a tclConfig.sh file, it probably set this.
1006 AC_SUBST(TCL_INCLUDES)
1008 AC_SUBST(TCL_LIBPATH)
1010 AC_SUBST(TCL_MAYBE_RPATH)
1013 dnl AC_KRB5_TCL_TRYOLD
1014 dnl attempt to use old search algorithm for locating tcl
1016 AC_DEFUN(AC_KRB5_TCL_TRYOLD, [
1017 AC_REQUIRE([KRB5_AC_FIND_DLOPEN])
1018 AC_MSG_WARN([trying old tcl search code])
1019 if test "$with_tcl" != yes -a "$with_tcl" != no; then
1020 TCL_INCLUDES=-I$with_tcl/include
1021 TCL_LIBPATH=-L$with_tcl/lib
1022 TCL_RPATH=:$with_tcl/lib
1024 if test "$with_tcl" != no ; then
1025 krb5_save_CPPFLAGS="$CPPFLAGS"
1026 krb5_save_LDFLAGS="$LDFLAGS"
1027 CPPFLAGS="$CPPFLAGS $TCL_INCLUDES"
1028 LDFLAGS="$LDFLAGS $TCL_LIBPATH"
1030 AC_CHECK_HEADER(tcl.h,AC_DEFINE(HAVE_TCL_H) tcl_header=yes)
1031 if test $tcl_header=no; then
1032 AC_CHECK_HEADER(tcl/tcl.h,AC_DEFINE(HAVE_TCL_TCL_H) tcl_header=yes)
1035 if test $tcl_header = yes ; then
1038 if test $tcl_lib = no; then
1039 AC_CHECK_LIB(tcl8.0, Tcl_CreateCommand,
1040 TCL_LIBS="$TCL_LIBS -ltcl8.0 -lm $DL_LIB $LIBS"
1041 tcl_lib=yes,,-lm $DL_LIB)
1043 if test $tcl_lib = no; then
1044 AC_CHECK_LIB(tcl7.6, Tcl_CreateCommand,
1045 TCL_LIBS="$TCL_LIBS -ltcl7.6 -lm $DL_LIB $LIBS"
1046 tcl_lib=yes,,-lm $DL_LIB)
1048 if test $tcl_lib = no; then
1049 AC_CHECK_LIB(tcl7.5, Tcl_CreateCommand,
1050 TCL_LIBS="$TCL_LIBS -ltcl7.5 -lm $DL_LIB $LIBS"
1051 tcl_lib=yes,,-lm $DL_LIB)
1054 if test $tcl_lib = no ; then
1055 AC_CHECK_LIB(tcl, Tcl_CreateCommand,
1056 TCL_LIBS="$TCL_LIBS -ltcl -lm $DL_LIB $LIBS"
1057 tcl_lib=yes,,-lm $DL_LIB)
1060 if test $tcl_lib = no ; then
1061 AC_MSG_WARN("tcl.h found but not library")
1064 AC_MSG_WARN(Could not find Tcl which is needed for the kadm5 tests)
1067 CPPFLAGS="$krb5_save_CPPFLAGS"
1068 LDFLAGS="$krb5_save_LDFLAGS"
1069 AC_SUBST(TCL_INCLUDES)
1071 AC_SUBST(TCL_LIBPATH)
1074 AC_MSG_RESULT("Not looking for Tcl library")
1078 dnl AC_KRB5_TCL - determine if the TCL library is present on system
1080 AC_DEFUN(AC_KRB5_TCL,[
1088 [ --with-tcl=path where Tcl resides], , with_tcl=try)
1089 if test "$with_tcl" = no ; then
1091 elif test "$with_tcl" = yes -o "$with_tcl" = try ; then
1093 if test ! -r /usr/lib/tclConfig.sh; then
1094 cat >> conftest <<\EOF
1095 puts "tcl_dir=$tcl_library"
1097 if tclsh conftest >conftest.out 2>/dev/null; then
1098 if grep tcl_dir= conftest.out >/dev/null 2>&1; then
1099 t=`sed s/tcl_dir=// conftest.out`
1102 fi # tclsh ran script okay
1103 rm -f conftest conftest.out
1104 fi # no /usr/lib/tclConfig.sh
1108 if test "$with_tcl" != no ; then
1109 AC_KRB5_TCL_FIND_CONFIG
1110 if test $tcl_lib = no ; then
1111 if test "$with_tcl" != try ; then
1114 AC_MSG_WARN(Could not find Tcl which is needed for some tests)
1118 # If "yes" or pathname, error out if not found.
1119 if test "$with_tcl" != no -a "$with_tcl" != try ; then
1120 if test "$tcl_header $tcl_lib" != "yes yes" ; then
1121 AC_MSG_ERROR(Could not find Tcl)
1129 AC_DEFUN(WITH_HESIOD,
1130 [AC_ARG_WITH(hesiod, AC_HELP_STRING(--with-hesiod[=path], compile with hesiod support @<:@omitted@:>@),
1131 hesiod=$with_hesiod, with_hesiod=no)
1132 if test "$with_hesiod" != "no"; then
1133 HESIOD_DEFS=-DHESIOD
1134 AC_CHECK_LIB(resolv, res_send, res_lib=-lresolv)
1135 if test "$hesiod" != "yes"; then
1136 HESIOD_LIBS="-L${hesiod}/lib -lhesiod $res_lib"
1138 HESIOD_LIBS="-lhesiod $res_lib"
1144 AC_SUBST(HESIOD_DEFS)
1145 AC_SUBST(HESIOD_LIBS)])
1149 dnl KRB5_BUILD_LIBRARY
1151 dnl Pull in the necessary stuff to create the libraries.
1153 AC_DEFUN(KRB5_BUILD_LIBRARY,
1154 [KRB5_BUILD_LIBRARY_WITH_DEPS
1155 # null out SHLIB_EXPFLAGS because we lack any dependencies
1159 dnl KRB5_BUILD_LIBRARY_STATIC
1161 dnl Force static library build.
1163 AC_DEFUN(KRB5_AC_FORCE_STATIC,[dnl
1164 AC_BEFORE([$0],[KRB5_LIB_AUX])dnl
1165 krb5_force_static=yes])
1166 AC_DEFUN(KRB5_BUILD_LIBRARY_STATIC,
1167 dnl Use define rather than AC_DEFUN to avoid ordering problems.
1168 [AC_REQUIRE([KRB5_AC_FORCE_STATIC])dnl
1170 # If we're only building static libraries, they're for build-time use only,
1175 dnl KRB5_BUILD_LIBRARY_WITH_DEPS
1177 dnl Like KRB5_BUILD_LIBRARY, but adds in explicit dependencies in the
1178 dnl generated shared library.
1180 AC_DEFUN(KRB5_BUILD_LIBRARY_WITH_DEPS,
1181 [AC_REQUIRE([KRB5_LIB_AUX])dnl
1182 AC_REQUIRE([AC_PROG_LN_S])dnl
1183 AC_REQUIRE([AC_PROG_RANLIB])dnl
1184 AC_REQUIRE([AC_PROG_ARCHIVE])dnl
1185 AC_REQUIRE([AC_PROG_ARCHIVE_ADD])dnl
1186 AC_REQUIRE([AC_PROG_INSTALL])dnl
1187 AC_CHECK_PROG(AR, ar, ar, false)
1188 AC_CHECK_PROG(PERL, perl, perl, false)
1189 if test "$ac_cv_prog_PERL" = "false"; then
1190 AC_MSG_ERROR(Perl is now required for Kerberos builds.)
1194 AC_SUBST(MAKE_SHLIB_COMMAND)
1195 AC_SUBST(SHLIB_EXPFLAGS)
1196 AC_SUBST(SHLIB_EXPORT_FILE_DEP)
1197 AC_SUBST(DYNOBJ_EXPDEPS)
1198 AC_SUBST(DYNOBJ_EXPFLAGS)
1199 AC_SUBST(INSTALL_SHLIB)
1206 AC_SUBST(LIBINSTLIST)
1208 AC_SUBST(MAKE_DYNOBJ_COMMAND)
1212 dnl KRB5_BUILD_LIBOBJS
1214 dnl Pull in the necessary stuff to build library objects.
1216 AC_DEFUN(KRB5_BUILD_LIBOBJS,
1217 [AC_REQUIRE([KRB5_LIB_AUX])dnl
1223 AC_SUBST(PROFFLAGS)])
1226 dnl KRB5_BUILD_PROGRAM
1228 dnl Set variables to build a program.
1230 AC_DEFUN(KRB5_BUILD_PROGRAM,
1231 [AC_REQUIRE([KRB5_LIB_AUX])dnl
1232 AC_REQUIRE([KRB5_AC_NEED_LIBGEN])dnl
1234 AC_SUBST(RPATH_FLAG)
1235 AC_SUBST(DEPLIBEXT)])
1240 dnl Set up environment for running dynamic executables out of build tree
1242 AC_DEFUN(KRB5_RUN_FLAGS,
1243 [AC_REQUIRE([KRB5_LIB_AUX])dnl
1244 KRB5_RUN_ENV="$RUN_ENV"
1245 AC_SUBST(KRB5_RUN_ENV)])
1250 dnl Parse configure options related to library building.
1252 AC_DEFUN(KRB5_LIB_AUX,
1253 [AC_REQUIRE([KRB5_LIB_PARAMS])dnl
1255 # Check whether to build static libraries.
1256 AC_ARG_ENABLE([static],
1257 AC_HELP_STRING([--enable-static],[build static libraries @<:@disabled for most platforms@:>@])
1258 AC_HELP_STRING([--disable-static],[don't build static libraries]), ,
1259 [enable_static=$default_static])
1261 if test "$enable_static" = no && test "$krb5_force_static" != yes; then
1262 AC_MSG_NOTICE([disabling static libraries])
1267 LIBLIST='lib$(LIBBASE)$(STLIBEXT)'
1268 LIBLINKS='$(TOPLIBD)/lib$(LIBBASE)$(STLIBEXT)'
1270 LIBINSTLIST=install-static
1272 # CFLAGS="$CFLAGS -D_KDB5_STATIC_LINK"
1275 # Check whether to build shared libraries.
1276 AC_ARG_ENABLE([shared],
1277 AC_HELP_STRING([--enable-shared],[build shared libraries @<:@enabled for most platforms@:>@])
1278 AC_HELP_STRING([--disable-shared],[don't build shared libraries]), ,
1279 [enable_shared=$default_shared])
1281 if test "$enable_shared" = yes; then
1284 AC_MSG_WARN([shared libraries not supported on this architecture])
1286 CC_LINK="$CC_LINK_STATIC"
1289 # set this now because some logic below may reset SHLIBEXT
1291 if test "$krb5_force_static" = "yes"; then
1292 AC_MSG_RESULT([Forcing static libraries.])
1293 # avoid duplicate rules generation for AIX and such
1294 SHLIBEXT=.so-nobuild
1295 SHLIBVEXT=.so.v-nobuild
1296 SHLIBSEXT=.so.s-nobuild
1298 AC_MSG_NOTICE([enabling shared libraries])
1299 # Clear some stuff in case of AIX, etc.
1300 if test "$STLIBEXT" = "$SHLIBEXT" ; then
1307 LIBLIST="$LIBLIST "'lib$(LIBBASE)$(SHLIBEXT)'
1308 LIBLINKS="$LIBLINKS "'$(TOPLIBD)/lib$(LIBBASE)$(SHLIBEXT) $(TOPLIBD)/lib$(LIBBASE)$(SHLIBVEXT)'
1309 case "$SHLIBSEXT" in
1311 LIBINSTLIST="$LIBINSTLIST install-shared"
1314 LIBLIST="$LIBLIST "'lib$(LIBBASE)$(SHLIBSEXT)'
1315 LIBLINKS="$LIBLINKS "'$(TOPLIBD)/lib$(LIBBASE)$(SHLIBSEXT)'
1316 LIBINSTLIST="$LIBINSTLIST install-shlib-soname"
1319 OBJLISTS="$OBJLISTS OBJS.SH"
1321 CC_LINK="$CC_LINK_SHARED"
1326 CC_LINK="$CC_LINK_STATIC"
1327 SHLIBEXT=.so-nobuild
1328 SHLIBVEXT=.so.v-nobuild
1329 SHLIBSEXT=.so.s-nobuild
1332 if test "$build_dynobj" = yes; then
1333 OBJLISTS=`echo $OBJLISTS | sed -e s/OBJS.ST//g -e s/OBJS.SH//g`
1334 OBJLISTS="$OBJLISTS OBJS.SH"
1337 if test -z "$LIBLIST"; then
1338 AC_MSG_ERROR([must enable one of shared or static libraries])
1341 # Check whether to build profiled libraries.
1342 AC_ARG_ENABLE([profiled],
1343 [ --enable-profiled build profiled libraries @<:@disabled@:>@],
1344 [if test "$enableval" = yes; then
1347 AC_MSG_WARN([Profiled libraries not supported on this architecture.])
1350 AC_MSG_NOTICE([enabling profiled libraries])
1351 LIBLIST="$LIBLIST "'lib$(LIBBASE)$(PFLIBEXT)'
1352 LIBLINKS="$LIBLINKS "'$(TOPLIBD)/lib$(LIBBASE)$(PFLIBEXT)'
1353 OBJLISTS="$OBJLISTS OBJS.PF"
1354 LIBINSTLIST="$LIBINSTLIST install-profiled"
1362 dnl Determine parameters related to libraries, e.g. various extensions.
1364 AC_DEFUN(KRB5_LIB_PARAMS,
1365 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
1367 AC_SUBST(krb5_cv_host)
1368 AC_REQUIRE([AC_PROG_CC])dnl
1369 AC_REQUIRE([V5_SET_TOPDIR])dnl
1370 . $ac_topdir/config/shlib.conf])
1372 dnl The following was written by jhawk@mit.edu
1374 dnl AC_LIBRARY_NET: Id: net.m4,v 1.4 1997/10/25 20:49:53 jhawk Exp
1376 dnl This test is for network applications that need socket() and
1377 dnl gethostbyname() -ish functions. Under Solaris, those applications need to
1378 dnl link with "-lsocket -lnsl". Under IRIX, they should *not* link with
1379 dnl "-lsocket" because libsocket.a breaks a number of things (for instance:
1380 dnl gethostbyname() under IRIX 5.2, and snoop sockets under most versions of
1383 dnl Unfortunately, many application developers are not aware of this, and
1384 dnl mistakenly write tests that cause -lsocket to be used under IRIX. It is
1385 dnl also easy to write tests that cause -lnsl to be used under operating
1386 dnl systems where neither are necessary (or useful), such as SunOS 4.1.4, which
1387 dnl uses -lnsl for TLI.
1389 dnl This test exists so that every application developer does not test this in
1390 dnl a different, and subtly broken fashion.
1392 dnl It has been argued that this test should be broken up into two seperate
1393 dnl tests, one for the resolver libraries, and one for the libraries necessary
1394 dnl for using Sockets API. Unfortunately, the two are carefully intertwined and
1395 dnl allowing the autoconf user to use them independantly potentially results in
1396 dnl unfortunate ordering dependancies -- as such, such component macros would
1397 dnl have to carefully use indirection and be aware if the other components were
1398 dnl executed. Since other autoconf macros do not go to this trouble, and almost
1399 dnl no applications use sockets without the resolver, this complexity has not
1400 dnl been implemented.
1402 dnl The check for libresolv is in case you are attempting to link statically
1403 dnl and happen to have a libresolv.a lying around (and no libnsl.a).
1405 AC_DEFUN(AC_LIBRARY_NET, [
1406 # Most operating systems have gethostbyname() in the default searched
1407 # libraries (i.e. libc):
1408 AC_CHECK_FUNC(gethostbyname, , [
1409 # Some OSes (eg. Solaris) place it in libnsl:
1410 AC_CHECK_LIB(nsl, gethostbyname, , [
1411 # Some strange OSes (SINIX) have it in libsocket:
1412 AC_CHECK_LIB(socket, gethostbyname, , [
1413 # Unfortunately libsocket sometimes depends on libnsl.
1414 # AC_CHECK_LIB's API is essentially broken so the following
1415 # ugliness is necessary:
1416 AC_CHECK_LIB(socket, gethostbyname,
1417 LIBS="-lsocket -lnsl $LIBS",
1418 [AC_CHECK_LIB(resolv, gethostbyname,
1419 LIBS="-lresolv $LIBS" )],
1424 AC_CHECK_FUNC(socket, , AC_CHECK_LIB(socket, socket, ,
1425 AC_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", , -lnsl)))
1427 if test "$enable_dns" = yes ; then
1428 # We assume that if libresolv exists we can link against it.
1429 # This may get us a gethostby* that doesn't respect nsswitch.
1430 AC_CHECK_LIB(resolv, main)
1432 _KRB5_AC_CHECK_RES_FUNCS(res_ninit res_nclose res_ndestroy res_nsearch dnl
1433 ns_initparse ns_name_uncompress dn_skipname res_search)
1434 if test $krb5_cv_func_res_nsearch = no \
1435 && test $krb5_cv_func_res_search = no; then
1436 # Attempt to link with res_search(), in case it's not prototyped.
1437 AC_CHECK_FUNC(res_search,
1438 [AC_DEFINE(HAVE_RES_SEARCH, 1,
1439 [Define to 1 if you have the `res_search' function])],
1440 [AC_ERROR([cannot find res_nsearch or res_search])])
1444 AC_DEFUN([_KRB5_AC_CHECK_RES_FUNCS],
1445 [AC_FOREACH([AC_Func], [$1],
1446 [AH_TEMPLATE(AS_TR_CPP(HAVE_[]AC_Func),
1447 [Define to 1 if you have the `]AC_Func[' function.])])dnl
1448 for krb5_func in $1; do
1449 _KRB5_AC_CHECK_RES_FUNC($krb5_func)
1452 AC_DEFUN([_KRB5_AC_CHECK_RES_FUNC], [
1453 # Solaris 9 prototypes ns_name_uncompress() in arpa/nameser.h, but
1454 # doesn't export it from libresolv.so, so we use extreme paranoia here
1455 # and check both for the declaration and that we can link against the
1457 AC_CACHE_CHECK([for $1], [krb5_cv_func_$1], [AC_TRY_LINK(
1458 [#include <sys/types.h>
1459 #include <netinet/in.h>
1460 #include <arpa/nameser.h>
1461 @%:@include <resolv.h>],
1463 * Use volatile, or else optimization can cause false positives.
1465 void (* volatile p)() = (void (*)())$1;],
1466 [AS_VAR_SET(krb5_cv_func_$1, yes)],
1467 [AS_VAR_SET(krb5_cv_func_$1, no)])])
1468 AS_IF([test AS_VAR_GET(krb5_cv_func_$1) = yes],
1469 [AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$1]), 1,
1470 [Define to 1 if you have the `$1' function])])[]dnl
1474 dnl KRB5_AC_ENABLE_DNS
1476 AC_DEFUN(KRB5_AC_ENABLE_DNS, [
1478 enable_dns_for_kdc=yes
1479 AC_DEFINE(KRB5_DNS_LOOKUP_KDC,1,[Define to enable DNS lookups of Kerberos KDCs])
1481 AC_ARG_ENABLE([dns-for-realm],
1482 [ --enable-dns-for-realm enable DNS lookups of Kerberos realm names], ,
1483 [enable_dns_for_realm=no])
1484 if test "$enable_dns_for_realm" = yes; then
1485 AC_DEFINE(KRB5_DNS_LOOKUP_REALM,1,[Define to enable DNS lookups of Kerberos realm names])
1488 AC_DEFINE(KRB5_DNS_LOOKUP, 1,[Define for DNS support of locating realms and KDCs])
1493 dnl Check if we need the prototype for a function - we give it a bogus
1494 dnl prototype and if it complains - then a valid prototype exists on the
1497 dnl KRB5_NEED_PROTO(includes, function, [bypass])
1498 dnl if $3 set, don't see if library defined.
1499 dnl Useful for case where we will define in libkrb5 the function if need be
1500 dnl but want to know if a prototype exists in either case on system.
1502 AC_DEFUN([KRB5_NEED_PROTO], [
1503 ifelse([$3], ,[if test "x$ac_cv_func_$2" = xyes; then])
1504 AC_CACHE_CHECK([if $2 needs a prototype provided], krb5_cv_func_$2_noproto,
1505 AC_TRY_COMPILE([$1],
1506 [struct k5foo {int foo; } xx;
1507 extern int $2 (struct k5foo*);
1510 krb5_cv_func_$2_noproto=yes,krb5_cv_func_$2_noproto=no))
1511 if test $krb5_cv_func_$2_noproto = yes; then
1512 AC_DEFINE([NEED_]translit($2, [a-z], [A-Z])[_PROTO], 1, dnl
1513 [define if the system header files are missing prototype for $2()])
1518 dnl =============================================================
1519 dnl Internal function for testing for getpeername prototype
1521 AC_DEFUN([KRB5_GETPEERNAME_ARGS],[
1522 AC_DEFINE([GETPEERNAME_ARG2_TYPE],GETSOCKNAME_ARG2_TYPE,[Type of getpeername second argument.])
1523 AC_DEFINE([GETPEERNAME_ARG3_TYPE],GETSOCKNAME_ARG3_TYPE,[Type of getpeername second argument.])
1526 dnl =============================================================
1527 dnl Internal function for testing for getsockname arguments
1529 AC_DEFUN([TRY_GETSOCK_INT],[
1530 krb5_lib_var=`echo "$1 $2" | sed 'y% ./+-*%___p_p%'`
1531 AC_MSG_CHECKING([if getsockname() takes arguments $1 and $2])
1532 AC_CACHE_VAL(krb5_cv_getsockname_proto_$krb5_lib_var,
1534 AC_TRY_COMPILE([#include <sys/types.h>
1535 #include <sys/socket.h>
1536 extern int getsockname(int, $1, $2);
1537 ],,eval "krb5_cv_getsockname_proto_$krb5_lib_var=yes",
1538 eval "krb5_cv_getsockname_proto_$krb5_lib_var=no")])
1539 if eval "test \"`echo '$krb5_cv_getsockname_proto_'$krb5_lib_var`\" = yes"; then
1541 sock_set=yes; res1="$1"; res2="$2"
1547 dnl Determines the types of the second and third arguments to getsockname().
1549 AC_DEFUN([KRB5_GETSOCKNAME_ARGS],[
1551 for sock_arg1 in "struct sockaddr *" "void *"
1553 for sock_arg2 in "size_t *" "int *" "socklen_t *"
1555 if test $sock_set = no; then
1556 TRY_GETSOCK_INT($sock_arg1, $sock_arg2)
1560 if test "$sock_set" = no; then
1561 AC_MSG_NOTICE(assuming struct sockaddr and socklen_t for getsockname args)
1562 res1="struct sockaddr *"
1565 res1=`echo "$res1" | tr -d '*' | sed -e 's/ *$//'`
1566 res2=`echo "$res2" | tr -d '*' | sed -e 's/ *$//'`
1567 AC_DEFINE_UNQUOTED([GETSOCKNAME_ARG2_TYPE],$res1,[Type of pointer target for argument 2 to getsockname])
1568 AC_DEFINE_UNQUOTED([GETSOCKNAME_ARG3_TYPE],$res2,[Type of pointer target for argument 3 to getsockname])
1572 AC_DEFUN([KRB5_AC_CHOOSE_ET],[
1573 AC_ARG_WITH([system-et],
1574 AC_HELP_STRING(--with-system-et,use system compile_et and -lcom_err @<:@default: build and install a local version@:>@))
1575 AC_MSG_CHECKING(which version of com_err to use)
1576 if test "x$with_system_et" = xyes ; then
1578 AC_MSG_RESULT(system)
1583 if test $COM_ERR_VERSION = sys; then
1584 # check for various functions we need
1585 AC_CHECK_LIB(com_err, add_error_table, :, AC_MSG_ERROR(cannot find add_error_table in com_err library))
1586 AC_CHECK_LIB(com_err, remove_error_table, :, AC_MSG_ERROR(cannot find remove_error_table in com_err library))
1587 # make sure compile_et provides "et_foo" name
1588 cat >> conf$$e.et <<EOF
1590 error_code ERR_FOO, "foo"
1593 AC_CHECK_PROGS(compile_et,compile_et,false)
1594 if test "$compile_et" = false; then
1595 AC_MSG_ERROR(cannot find compile_et)
1597 AC_CACHE_CHECK(whether compile_et is useful,krb5_cv_compile_et_useful,[
1598 if compile_et conf$$e.et >/dev/null 2>&1 ; then true ; else
1599 AC_MSG_ERROR(execution failed)
1601 AC_TRY_COMPILE([#include "conf$$e.h"
1602 ],[ et_foo_error_table; ],:,
1603 [AC_MSG_ERROR(cannot use et_foo_error_table)])
1604 # Anything else we need to test for?
1605 rm -f conf$$e.et conf$$e.c conf$$e.h
1606 krb5_cv_compile_et_useful=yes
1609 AC_SUBST(COM_ERR_VERSION)
1611 AC_DEFUN([KRB5_AC_CHOOSE_SS],[
1612 AC_ARG_WITH(system-ss,
1613 AC_HELP_STRING(--with-system-ss,use system -lss and mk_cmds @<:@private version@:>@))
1614 AC_ARG_VAR(SS_LIB,[system libraries for 'ss' package [-lss]])
1615 AC_MSG_CHECKING(which version of subsystem package to use)
1616 if test "x$with_system_ss" = xyes ; then
1618 AC_MSG_RESULT(system)
1619 # todo: check for various libraries we might need
1620 # in the meantime...
1621 test "x${SS_LIB+set}" = xset || SS_LIB=-lss
1623 LIBS="$LIBS $SS_LIB"
1624 AC_CACHE_CHECK(whether system ss package works, krb5_cv_system_ss_okay,[
1627 int main(int argc, char *argv[]) {
1630 i = ss_create_invocation("foo","foo","",0,&err);
1634 }], krb5_cv_system_ss_okay=yes, AC_MSG_ERROR(cannot run test program),
1635 krb5_cv_system_ss_okay="assumed")])
1642 AC_SUBST(SS_VERSION)
1645 AC_DEFUN([KRB5_AC_CHOOSE_DB],[
1646 AC_ARG_WITH(system-db,
1647 AC_HELP_STRING(--with-system-db,use system Berkeley db @<:@private version@:>@))
1648 AC_ARG_VAR(DB_HEADER,[header file for system Berkeley db package [db.h]])
1649 AC_ARG_VAR(DB_LIB,[library for system Berkeley db package [-ldb]])
1650 if test "x$with_system_db" = xyes ; then
1652 # TODO: Do we have specific routines we should check for?
1653 # How about known, easily recognizable bugs?
1654 # We want to use bt_rseq in some cases, but no other version but
1655 # ours has it right now.
1657 # Okay, check the variables.
1658 test "x${DB_HEADER+set}" = xset || DB_HEADER=db.h
1659 test "x${DB_LIB+set}" = xset || DB_LIB=-ldb
1661 if test "x${DB_HEADER}" = xdb.h ; then
1662 DB_HEADER_VERSION=sys
1664 DB_HEADER_VERSION=redirect
1666 KDB5_DB_LIB="$DB_LIB"
1669 AC_DEFINE(HAVE_BT_RSEQ,1,[Define if bt_rseq is available, for recursive btree traversal.])
1671 DB_HEADER_VERSION=k5
1672 # libdb gets sucked into libkdb
1674 # needed for a couple of things that need libdb for its own sake
1677 AC_SUBST(DB_VERSION)
1679 AC_SUBST(DB_HEADER_VERSION)
1681 AC_SUBST(KDB5_DB_LIB)
1684 dnl KRB5_AC_PRIOCNTL_HACK
1687 AC_DEFUN([KRB5_AC_PRIOCNTL_HACK],
1688 [AC_REQUIRE([AC_PROG_AWK])dnl
1689 AC_REQUIRE([AC_LANG_COMPILER_REQUIRE])dnl
1690 AC_CACHE_CHECK([whether to use priocntl hack], [krb5_cv_priocntl_hack],
1691 [case $krb5_cv_host in
1693 if test "$cross_compiling" = yes; then
1694 krb5_cv_priocntl_hack=yes
1696 # Solaris patch 117171-11 (sparc) or 117172-11 (x86)
1697 # fixes the Solaris 9 bug where final pty output
1698 # gets lost on close.
1699 if showrev -p | $AWK 'BEGIN { e = 1 }
1700 /Patch: 11717[[12]]/ { x = index[]([$]2, "-");
1701 if (substr[]([$]2, x + 1, length([$]2) - x) >= 11)
1702 { e = 0 } else { e = 1 } }
1703 END { exit e; }'; then
1704 krb5_cv_priocntl_hack=no
1706 krb5_cv_priocntl_hack=yes
1711 krb5_cv_priocntl_hack=no
1714 if test "$krb5_cv_priocntl_hack" = yes; then
1719 AC_SUBST(PRIOCNTL_HACK)])
1722 dnl KRB5_AC_GCC_ATTRS
1723 AC_DEFUN([KRB5_AC_GCC_ATTRS],
1724 [AC_CACHE_CHECK([for constructor/destructor attribute support],krb5_cv_attr_constructor_destructor,
1725 [rm -f conftest.1 conftest.2
1726 if test -r conftest.1 || test -r conftest.2 ; then
1727 AC_MSG_ERROR(write error in local file system?)
1731 if test -r conftest.1 && test -r conftest.2 ; then true ; else
1732 AC_MSG_ERROR(write error in local file system?)
1736 # blindly assume we have 'unlink'...
1737 AC_TRY_RUN([void foo1() __attribute__((constructor));
1738 void foo1() { unlink("conftest.1"); }
1739 void foo2() __attribute__((destructor));
1740 void foo2() { unlink("conftest.2"); }
1741 int main () { return 0; }],
1742 [test -r conftest.1 || a=yes
1743 test -r conftest.2 || b=yes], , AC_MSG_ERROR(Cannot test for constructor/destructor support when cross compiling))
1744 case $krb5_cv_host in
1746 # Under AIX 4.3.3, at least, shared library destructor functions
1747 # appear to get executed in reverse link order (right to left),
1748 # so that a library's destructor function may run after that of
1749 # libraries it depends on, and may still have to access in the
1752 # That counts as "not working", for me, but it's a much more
1753 # complicated test case to set up.
1757 krb5_cv_attr_constructor_destructor="$a,$b"
1759 # Okay, krb5_cv_... should be set now.
1760 case $krb5_cv_attr_constructor_destructor in
1762 AC_DEFINE(CONSTRUCTOR_ATTR_WORKS,1,[Define if __attribute__((constructor)) works]) ;;
1764 case $krb5_cv_attr_constructor_destructor in
1766 AC_DEFINE(DESTRUCTOR_ATTR_WORKS,1,[Define if __attribute__((destructor)) works]) ;;
1768 dnl End of attributes we care about right now.
1772 dnl KRB5_AC_PRAGMA_WEAK_REF
1773 AC_DEFUN([KRB5_AC_PRAGMA_WEAK_REF],
1774 [AC_CACHE_CHECK([whether pragma weak references are supported],
1775 krb5_cv_pragma_weak_ref,
1776 [AC_TRY_LINK([#pragma weak flurbl
1777 extern int flurbl(void);],[if (&flurbl != 0) return flurbl();],
1778 krb5_cv_pragma_weak_ref=yes,krb5_cv_pragma_weak_ref=no)])
1779 if test $krb5_cv_pragma_weak_ref = yes ; then
1780 AC_DEFINE(HAVE_PRAGMA_WEAK_REF,1,[Define if #pragma weak references work])
1784 m4_include(config/ac-archive/acx_pthread.m4)
1788 # Check for libutil, for NetBSD, et al.; needed for openpty() and
1789 # logwtmp() on some platforms.
1791 AC_DEFUN([KRB5_AC_LIBUTIL],
1792 [AC_CHECK_LIB(util, main,
1793 [AC_DEFINE(HAVE_LIBUTIL)
1794 UTIL_LIB=-lutil])dnl