2 AC_COPYRIGHT([Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
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 AC_DEFUN(V5_SET_TOPDIR,[dnl
11 ifdef([AC_LOCALDIR], [dnl AC_LOCALDIR exists in 2.13, but not newer autoconfs.
12 ac_reltopdir=AC_LOCALDIR
13 case "$ac_reltopdir" in
15 echo "Configure script built with absolute localdir pathname"
24 for x in . .. ../.. ../../.. ../../../..; do
25 if test "x$ac_reltopdir" = "x" -a -r "$srcdir/$x/aclocal.m4" ; then
29 if test "x$ac_reltopdir" = "x"; then
30 echo "Configure could not determine the relative topdir"
34 ac_topdir=$srcdir/$ac_reltopdir
35 ac_config_fragdir=$ac_reltopdir/config
36 krb5_pre_in=$ac_config_fragdir/pre.in
37 krb5_post_in=$ac_config_fragdir/post.in
38 # echo "Looking for $srcdir/$ac_config_fragdir"
39 if test -d "$srcdir/$ac_config_fragdir"; then
40 AC_CONFIG_AUX_DIR($ac_config_fragdir)
42 AC_MSG_ERROR([can not find config/ directory in $ac_reltopdir])
46 dnl drop in standard rules for all configure files -- CONFIG_RULES
48 AC_DEFUN(CONFIG_RULES,[dnl
49 AC_REQUIRE([V5_SET_TOPDIR]) dnl
54 if test -z "$LD" ; then LD=$CC; fi
55 AC_ARG_VAR(LD,[linker command [CC]])
61 dnl allow stuff in tree to access deprecated/private stuff for now
62 AC_DEFINE([KRB5_PRIVATE], 1, [Define only if building in-tree])
63 AC_DEFINE([KRB5_DEPRECATED], 1, [Define only if building in-tree])
67 KRB5_AC_MAINTAINER_MODE dnl
70 dnl This identifies the top of the source tree relative to the directory
71 dnl in which the configure file lives.
73 CONFIG_RELTOPDIR=$ac_reltopdir
74 AC_SUBST(CONFIG_RELTOPDIR)
76 lib_frag=$srcdir/$ac_config_fragdir/lib.in
77 AC_SUBST_FILE(lib_frag)
78 libobj_frag=$srcdir/$ac_config_fragdir/libobj.in
79 AC_SUBST_FILE(libobj_frag)
81 KRB5_AC_PRAGMA_WEAK_REF
84 KRB5_AC_ENABLE_THREADS
87 dnl Maintainer mode, akin to what automake provides, 'cept we don't
88 dnl want to use automake right now.
89 AC_DEFUN([KRB5_AC_MAINTAINER_MODE],
90 [AC_ARG_ENABLE([maintainer-mode],
91 AC_HELP_STRING([--enable-maintainer-mode],[enable rebuilding of source files, Makefiles, etc]),
92 USE_MAINTAINER_MODE=$enableval,
93 USE_MAINTAINER_MODE=no)
94 if test "$USE_MAINTAINER_MODE" = yes; then
96 MAINTAINER_MODE_FALSE='#'
97 AC_MSG_NOTICE(enabling maintainer mode)
99 MAINTAINER_MODE_TRUE='#'
100 MAINTAINER_MODE_FALSE=
102 MAINT=$MAINTAINER_MODE_TRUE
103 AC_SUBST(MAINTAINER_MODE_TRUE)
104 AC_SUBST(MAINTAINER_MODE_FALSE)
109 AC_DEFUN([KRB5_AC_INITFINI],[
110 dnl Do we want initialization at load time?
111 AC_ARG_ENABLE([delayed-initialization],
112 AC_HELP_STRING([--disable-delayed-initialization],initialize library code when loaded @<:@delay until first use@:>@), , enable_delayed_initialization=yes)
113 case "$enable_delayed_initialization" in
115 AC_DEFINE(DELAY_INITIALIZER,1,[Define if library initialization should be delayed until first use]) ;;
117 *) AC_MSG_ERROR(invalid option $enable_delayed_initialization for delayed-initialization) ;;
119 dnl We always want finalization at unload time.
121 dnl Can we do things through gcc?
123 dnl How about with the linker?
124 if test -z "$use_linker_init_option" ; then
125 AC_MSG_ERROR(ran INITFINI before checking shlib.conf?)
127 if test "$use_linker_init_option" = yes; then
128 AC_DEFINE(USE_LINKER_INIT_OPTION,1,[Define if link-time options for library initialization will be used])
130 if test "$use_linker_fini_option" = yes; then
131 AC_DEFINE(USE_LINKER_FINI_OPTION,1,[Define if link-time options for library finalization will be used])
136 AC_DEFUN([KRB5_AC_ENABLE_THREADS],[
137 AC_ARG_ENABLE([thread-support],
138 AC_HELP_STRING([--disable-thread-support],don't enable thread support @<:@enabled@:>@), , enable_thread_support=yes)
139 if test "$enable_thread_support" = yes ; then
140 AC_MSG_NOTICE(enabling thread support)
141 AC_DEFINE(ENABLE_THREADS,1,[Define if thread support enabled])
143 dnl Maybe this should be inside the conditional above? Doesn't cache....
144 if test "$enable_thread_support" = yes; then
145 ACX_PTHREAD(,[AC_MSG_ERROR([cannot determine options for enabling thread support])])
146 AC_MSG_NOTICE(PTHREAD_CC = $PTHREAD_CC)
147 AC_MSG_NOTICE(PTHREAD_CFLAGS = $PTHREAD_CFLAGS)
148 AC_MSG_NOTICE(PTHREAD_LIBS = $PTHREAD_LIBS)
149 dnl Not really needed -- if pthread.h isn't found, ACX_PTHREAD will fail.
150 dnl AC_CHECK_HEADERS(pthread.h)
151 # AIX and Tru64 don't support weak references, and don't have
152 # stub versions of the pthread code in libc.
155 # On these platforms, we'll always pull in the thread support.
156 LIBS="$LIBS $PTHREAD_LIBS"
157 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
158 # We don't need to sometimes add the flags we've just folded in...
164 dnl We want to know where these routines live, so on systems with weak
165 dnl reference support we can figure out whether or not the pthread library
166 dnl has been linked in.
167 dnl If we don't add any libraries for thread support, don't bother.
168 AC_CHECK_FUNCS(pthread_once pthread_mutexattr_setrobust_np)
170 test "$PTHREAD_CC" != "" && test "$ac_cv_c_compiler_gnu" = no && CC=$PTHREAD_CC
172 # On Solaris, -pthreads is added to CFLAGS, no extra explicit libraries.
173 CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
174 AC_SUBST(PTHREAD_CFLAGS)
176 LIBS="$PTHREAD_LIBS $LIBS"
177 AC_MSG_NOTICE(rechecking with PTHREAD_... options)
178 AC_CHECK_LIB(c, pthread_mutexattr_setrobust_np,
179 [AC_DEFINE(HAVE_PTHREAD_MUTEXATTR_SETROBUST_NP_IN_THREAD_LIB,1,[Define if pthread_mutexattr_setrobust_np is provided in the thread library.])])
185 dnl This is somewhat gross and should go away when the build system
186 dnl is revamped. -- tlyu
187 dnl DECLARE_SYS_ERRLIST - check for sys_errlist in libc
189 AC_DEFUN([DECLARE_SYS_ERRLIST],
190 [AC_CACHE_CHECK([for sys_errlist declaration], krb5_cv_decl_sys_errlist,
191 [AC_TRY_COMPILE([#include <stdio.h>
192 #include <errno.h>], [1+sys_nerr;],
193 krb5_cv_decl_sys_errlist=yes, krb5_cv_decl_sys_errlist=no)])
194 # assume sys_nerr won't be declared w/o being in libc
195 if test $krb5_cv_decl_sys_errlist = yes; then
196 AC_DEFINE(SYS_ERRLIST_DECLARED,1,[Define if sys_errlist is defined in errno.h])
197 AC_DEFINE(HAVE_SYS_ERRLIST,1,[Define if sys_errlist in libc])
199 # This means that sys_errlist is not declared in errno.h, but may still
201 AC_CACHE_CHECK([for sys_errlist in libc], krb5_cv_var_sys_errlist,
202 [AC_TRY_LINK([extern int sys_nerr;], [if (1+sys_nerr < 0) return 1;],
203 krb5_cv_var_sys_errlist=yes, krb5_cv_var_sys_errlist=no;)])
204 if test $krb5_cv_var_sys_errlist = yes; then
205 AC_DEFINE(HAVE_SYS_ERRLIST,1,[Define if sys_errlist in libc])
206 # Do this cruft for backwards compatibility for now.
207 AC_DEFINE(NEED_SYS_ERRLIST,1,[Define if need to declare sys_errlist])
209 AC_MSG_WARN([sys_errlist is neither in errno.h nor in libc])
214 dnl check for sigmask/sigprocmask -- CHECK_SIGPROCMASK
216 AC_DEFUN(CHECK_SIGPROCMASK,[
217 AC_MSG_CHECKING([for use of sigprocmask])
218 AC_CACHE_VAL(krb5_cv_func_sigprocmask_use,
219 [AC_TRY_LINK([#include <signal.h>], [sigprocmask(SIG_SETMASK,0,0);],
220 krb5_cv_func_sigprocmask_use=yes,
221 AC_TRY_LINK([#include <signal.h>], [sigmask(1);],
222 krb5_cv_func_sigprocmask_use=no, krb5_cv_func_sigprocmask_use=yes))])
223 AC_MSG_RESULT($krb5_cv_func_sigprocmask_use)
224 if test $krb5_cv_func_sigprocmask_use = yes; then
225 AC_DEFINE(USE_SIGPROCMASK)
229 AC_DEFUN(AC_PROG_ARCHIVE, [AC_CHECK_PROG(ARCHIVE, ar, ar cqv, false)])dnl
230 AC_DEFUN(AC_PROG_ARCHIVE_ADD, [AC_CHECK_PROG(ARADD, ar, ar cruv, false)])dnl
232 dnl check for <dirent.h> -- CHECK_DIRENT
233 dnl (may need to be more complex later)
235 AC_DEFUN(CHECK_DIRENT,[
236 AC_CHECK_HEADER(dirent.h,AC_DEFINE(USE_DIRENT_H,1,[Define if you have dirent.h functionality]))])dnl
238 dnl check if union wait is defined, or if WAIT_USES_INT -- CHECK_WAIT_TYPE
240 AC_DEFUN(CHECK_WAIT_TYPE,[
241 AC_MSG_CHECKING([if argument to wait is int *])
242 AC_CACHE_VAL(krb5_cv_struct_wait,
243 dnl Test for prototype clash - if there is none - then assume int * works
244 [AC_TRY_COMPILE([#include <sys/types.h>
245 #include <sys/wait.h>
246 extern pid_t wait(int *);],[], krb5_cv_struct_wait=no,dnl
247 dnl Else fallback on old stuff
249 [#include <sys/wait.h>], [union wait i;
254 krb5_cv_struct_wait=yes, krb5_cv_struct_wait=no)])])
255 AC_MSG_RESULT($krb5_cv_struct_wait)
256 if test $krb5_cv_struct_wait = no; then
257 AC_DEFINE(WAIT_USES_INT,1,[Define if wait takes int as a argument])
261 dnl check for POSIX signal handling -- CHECK_SIGNALS
263 AC_DEFUN(CHECK_SIGNALS,[
264 AC_CHECK_FUNC(sigprocmask,
265 AC_MSG_CHECKING(for sigset_t and POSIX_SIGNALS)
266 AC_CACHE_VAL(krb5_cv_type_sigset_t,
268 [#include <signal.h>],
270 krb5_cv_type_sigset_t=yes, krb5_cv_type_sigset_t=no)])
271 AC_MSG_RESULT($krb5_cv_type_sigset_t)
272 if test $krb5_cv_type_sigset_t = yes; then
273 AC_DEFINE(POSIX_SIGNALS,1,[Define if POSIX signal handling is used])
277 dnl check for signal type
279 dnl AC_RETSIGTYPE isn't quite right, but almost.
280 AC_DEFUN(KRB5_SIGTYPE,[
281 AC_MSG_CHECKING([POSIX signal handlers])
282 AC_CACHE_VAL(krb5_cv_has_posix_signals,
284 [#include <sys/types.h>
289 extern void (*signal ()) ();], [],
290 krb5_cv_has_posix_signals=yes, krb5_cv_has_posix_signals=no)])
291 AC_MSG_RESULT($krb5_cv_has_posix_signals)
292 if test $krb5_cv_has_posix_signals = yes; then
294 AC_DEFINE(POSIX_SIGTYPE, 1, [Define if POSIX signal handlers are used])
296 if test $ac_cv_type_signal = void; then
302 AC_DEFINE_UNQUOTED(krb5_sigtype, $stype, [Define krb5_sigtype to type of signal handler])dnl
305 dnl check for POSIX setjmp/longjmp -- CHECK_SETJMP
307 AC_DEFUN(CHECK_SETJMP,[
308 AC_CHECK_FUNC(sigsetjmp,
309 AC_MSG_CHECKING(for sigjmp_buf)
310 AC_CACHE_VAL(krb5_cv_struct_sigjmp_buf,
312 [#include <setjmp.h>],[sigjmp_buf x],
313 krb5_cv_struct_sigjmp_buf=yes,krb5_cv_struct_sigjmp_buf=no)])
314 AC_MSG_RESULT($krb5_cv_struct_sigjmp_buf)
315 if test $krb5_cv_struct_sigjmp_buf = yes; then
316 AC_DEFINE(POSIX_SETJMP)
320 dnl Check for IPv6 compile-time support.
322 AC_DEFUN(KRB5_AC_INET6,[
323 AC_CHECK_HEADERS(sys/types.h sys/socket.h netinet/in.h netdb.h)
324 AC_CHECK_FUNCS(inet_ntop inet_pton getnameinfo)
325 dnl getaddrinfo test needs netdb.h, for proper compilation on alpha
326 dnl under OSF/1^H^H^H^H^HDigital^H^H^H^H^H^H^HTru64 UNIX, where it's
328 AC_MSG_CHECKING(for getaddrinfo)
329 AC_CACHE_VAL(ac_cv_func_getaddrinfo,
330 [AC_TRY_LINK([#ifdef HAVE_NETDB_H
334 getaddrinfo("kerberos.mit.edu", "echo", 0, &ai);
335 ], ac_cv_func_getaddrinfo=yes, ac_cv_func_getaddrinfo=no)])
336 AC_MSG_RESULT($ac_cv_func_getaddrinfo)
337 if test $ac_cv_func_getaddrinfo = yes; then
338 AC_DEFINE(HAVE_GETADDRINFO,1,[Define if you have the getaddrinfo function])
341 AC_REQUIRE([KRB5_SOCKADDR_SA_LEN])dnl
342 AC_ARG_ENABLE([ipv6],
343 AC_HELP_STRING([--enable-ipv6],[turn on IPv6 support])
344 AC_HELP_STRING([--disable-ipv6],[turn off IPv6 support @<:@enabled if available@:>@]), ,enableval=try)dnl
348 if test "$enableval/$krb5_cv_inet6" = yes/no ; then
349 AC_MSG_ERROR(IPv6 support does not appear to be available)
352 *) AC_MSG_ERROR(bad value "$enableval" for enable-ipv6 option) ;;
356 AC_DEFUN(KRB5_AC_CHECK_TYPE_WITH_HEADERS,[
357 AC_MSG_CHECKING(for type $1)
358 changequote(<<,>>)dnl
359 varname=`echo $1 | sed 's,[ -],_,g'`
361 AC_CACHE_VAL(krb5_cv_$varname,[
362 AC_TRY_COMPILE([$2],[ $1 foo; ], eval krb5_cv_$varname=yes, eval krb5_cv_$varname=no)])
363 eval x="\$krb5_cv_$varname"
365 if eval test "$x" = yes ; then
366 AC_DEFINE_UNQUOTED(HAVE_`echo $varname | tr [[[a-z]]] [[[A-Z]]]`)
370 AC_DEFUN(KRB5_AC_CHECK_SOCKADDR_STORAGE,[
371 KRB5_AC_CHECK_TYPE_WITH_HEADERS(struct sockaddr_storage, [
372 #ifdef HAVE_SYS_TYPES_H
373 #include <sys/types.h>
375 #include <sys/socket.h>
376 #include <netinet/in.h>
380 AC_DEFUN(KRB5_AC_CHECK_INET6,[
381 AC_REQUIRE([KRB5_AC_CHECK_SOCKADDR_STORAGE])dnl
382 AC_MSG_CHECKING(for IPv6 compile-time support)
383 AC_CACHE_VAL(krb5_cv_inet6,[
384 if test "$ac_cv_func_inet_ntop" != "yes" ; then
388 #ifdef HAVE_SYS_TYPES_H
389 #include <sys/types.h>
391 #include <sys/socket.h>
392 #include <netinet/in.h>
395 struct sockaddr_in6 in;
397 IN6_IS_ADDR_LINKLOCAL (&in.sin6_addr);
398 ],krb5_cv_inet6=yes,krb5_cv_inet6=no)])
400 AC_MSG_RESULT($krb5_cv_inet6)
401 if test "$krb5_cv_inet6" = no && test "$ac_cv_func_inet_ntop" = yes; then
402 AC_MSG_CHECKING(for IPv6 compile-time support with -DINET6)
403 AC_CACHE_VAL(krb5_cv_inet6_with_dinet6,[
407 #ifdef HAVE_SYS_TYPES_H
408 #include <sys/types.h>
410 #include <sys/socket.h>
411 #include <netinet/in.h>
414 struct sockaddr_in6 in;
416 IN6_IS_ADDR_LINKLOCAL (&in.sin6_addr);
417 ],krb5_cv_inet6_with_dinet6=yes,krb5_cv_inet6_with_dinet6=no)
419 AC_MSG_RESULT($krb5_cv_inet6_with_dinet6)
421 if test $krb5_cv_inet6 = yes || test "$krb5_cv_inet6_with_dinet6" = yes; then
422 if test "$krb5_cv_inet6_with_dinet6" = yes; then
423 AC_DEFINE(INET6,1,[May need to be defined to enable IPv6 support, for example on IRIX])
425 AC_DEFINE(KRB5_USE_INET6,1,[Define if we should compile in IPv6 support (even if we can't use it at run time)])
429 dnl Generic File existence tests
431 dnl K5_AC_CHECK_FILE(FILE, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
433 AC_DEFUN(K5_AC_CHECK_FILE,
434 [AC_REQUIRE([AC_PROG_CC])dnl
435 dnl Do the transliteration at runtime so arg 1 can be a shell variable.
436 ac_safe=`echo "$1" | sed 'y%./+-%__p_%'`
437 AC_MSG_CHECKING([for $1])
438 AC_CACHE_VAL(ac_cv_file_$ac_safe,
439 [if test "$cross_compiling" = yes; then
440 errprint(__file__:__line__: warning: Cannot check for file existence when cross compiling
442 AC_MSG_ERROR(Cannot check for file existence when cross compiling)
445 eval "ac_cv_file_$ac_safe=yes"
447 eval "ac_cv_file_$ac_safe=no"
450 if eval "test \"`echo '$ac_cv_file_'$ac_safe`\" = yes"; then
452 ifelse([$2], , :, [$2])
460 dnl K5_AC_CHECK_FILES(FILE... [, ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]])
462 AC_DEFUN(K5_AC_CHECK_FILES,
463 [AC_REQUIRE([AC_PROG_CC])dnl
466 K5_AC_CHECK_FILE($ac_file,
468 ac_tr_file=HAVE`echo $ac_file | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
470 AC_DEFINE_UNQUOTED($ac_tr_file) $2], $3)dnl
474 dnl set $(KRB4) from --with-krb4=value -- WITH_KRB4
478 [ --without-krb4 don't include Kerberos V4 backwards compatibility
479 --with-krb4 use V4 libraries included with V5 (default)
480 --with-krb4=KRB4DIR use preinstalled V4 libraries],
484 if test $withval = no; then
485 AC_MSG_NOTICE(no krb4 support)
491 krb5_cv_build_krb4_libs=no
494 AC_DEFINE([KRB5_KRB4_COMPAT], 1, [Define this if building with krb4 compat])
495 if test $withval = yes; then
496 AC_MSG_NOTICE(enabling built in krb4 support)
497 KRB4_DEPLIB='$(TOPLIBD)/libkrb4$(DEPLIBEXT)'
499 KRB4_INCLUDES='-I$(SRCTOP)/include/kerberosIV -I$(BUILDTOP)/include/kerberosIV'
501 KRB_ERR_H_DEP='$(BUILDTOP)/include/kerberosIV/krb_err.h'
502 krb5_cv_build_krb4_libs=yes
505 AC_MSG_NOTICE(using preinstalled krb4 in $withval)
507 dnl DEPKRB4_LIB="$withval/lib/libkrb.a"
508 KRB4_INCLUDES="-I$withval/include"
509 KRB4_LIBPATH="-L$withval/lib"
511 krb5_cv_build_krb4_libs=no
512 krb5_cv_krb4_libdir="$withval/lib"
515 AC_SUBST(KRB4_INCLUDES)
516 AC_SUBST(KRB4_LIBPATH)
518 AC_SUBST(KRB4_DEPLIB)
519 AC_SUBST(KRB_ERR_H_DEP)
520 dnl We always compile the des425 library
521 DES425_DEPLIB='$(TOPLIBD)/libdes425$(DEPLIBEXT)'
523 AC_SUBST(DES425_DEPLIB)
528 AC_DEFUN(KRB5_AC_CHECK_FOR_CFLAGS,[
529 AC_BEFORE([$0],[AC_PROG_CC])
530 krb5_ac_cflags_set=${CFLAGS+set}
533 AC_DEFUN(WITH_CC,[dnl
534 AC_REQUIRE([KRB5_AC_CHECK_FOR_CFLAGS])dnl
535 AC_REQUIRE([AC_PROG_CC])dnl
536 krb5_cv_prog_gcc=$ac_cv_c_compiler_gnu
537 if test $ac_cv_c_compiler_gnu = yes ; then
542 # maybe add -Waggregate-return, or can we assume that actually works by now?
543 # -Wno-comment used to be used for SunOS system header <sys/stream.h>
544 # -Wno-long-long, if needed, for k5-platform.h without inttypes.h etc.
545 extra_gcc_warn_opts="-Wall -Wmissing-prototypes -Wcast-qual \
546 -Wcast-align -Wconversion -Wshadow"
547 if test "$GCC" = yes ; then
548 if test "x$krb5_ac_cflags_set" = xset ; then
549 AC_MSG_NOTICE(not adding extra gcc warning flags because CFLAGS was set)
551 AC_MSG_NOTICE(adding extra warning flags for gcc)
552 CFLAGS="$CFLAGS $extra_gcc_warn_opts"
553 if test "`uname -s`" = Darwin ; then
554 AC_MSG_NOTICE(skipping pedantic warnings on Darwin)
556 CFLAGS="$CFLAGS -pedantic"
559 if test "`uname -s`" = Darwin ; then
560 # Someday this should be a feature test.
561 # One current (Jaguar = OS 10.2) problem:
562 # Archive library with foo.o undef sym X and bar.o common sym X,
563 # if foo.o is pulled in at link time, bar.o may not be, causing
564 # the linker to complain.
565 # Dynamic library problems too?
566 case "$CC $CFLAGS" in
567 *-fcommon*) ;; # why someone would do this, I don't know
568 *-fno-common*) ;; # okay, they're already doing the right thing
570 AC_MSG_NOTICE(disabling the use of common storage on Darwin)
571 CFLAGS="$CFLAGS -fno-common"
574 case "$LD $LDFLAGS" in
575 *-Wl,-search_paths_first*) ;;
576 *) LDFLAGS="${LDFLAGS} -Wl,-search_paths_first" ;;
580 if test "`uname -s`" = AIX ; then
581 # Using AIX but not GCC, assume native compiler.
582 # The native compiler appears not to give a nonzero exit
583 # status for certain classes of errors, like missing arguments
584 # in function calls. Let's try to fix that with -qhalt=e.
585 case "$CC $CFLAGS" in
587 *) CFLAGS="$CFLAGS -qhalt=e" ;;
589 # Also, the optimizer isn't turned on by default, which means
590 # the static inline functions get left in random object files,
591 # leading to references to pthread_mutex_lock from anything that
592 # includes k5-int.h whether it uses threads or not.
593 case "$CC $CFLAGS" in
595 *) CFLAGS="$CFLAGS -O" ;;
602 dnl check for yylineno -- HAVE_YYLINENO
604 AC_DEFUN(HAVE_YYLINENO,[dnl
605 AC_REQUIRE_CPP()AC_REQUIRE([AC_PROG_LEX])dnl
606 AC_MSG_CHECKING([for yylineno declaration])
607 AC_CACHE_VAL(krb5_cv_type_yylineno,
608 # some systems have yylineno, others don't...
610 %%' | ${LEX} -t > conftest.out
611 if egrep yylineno conftest.out >/dev/null 2>&1; then
612 krb5_cv_type_yylineno=yes
614 krb5_cv_type_yylineno=no
617 AC_MSG_RESULT($krb5_cv_type_yylineno)
618 if test $krb5_cv_type_yylineno = no; then
619 AC_DEFINE(NO_YYLINENO, 1, [Define if lex produes code with yylineno])
623 dnl K5_GEN_MAKEFILE([dir, [frags]])
625 AC_DEFUN(K5_GEN_MAKEFILE,[dnl
626 ifelse($1, ,[_K5_GEN_MAKEFILE(.,$2)],[_K5_GEN_MAKEFILE($1,$2)])
629 dnl _K5_GEN_MAKEFILE(dir, [frags])
630 dnl dir must be present in this case
631 dnl Note: Be careful in quoting.
632 dnl The ac_foreach generates the list of fragments to include
633 dnl or "" if $2 is empty
634 AC_DEFUN(_K5_GEN_MAKEFILE,[dnl
635 AC_CONFIG_FILES([$1/Makefile:$krb5_pre_in:$1/Makefile.in:$krb5_post_in])
638 dnl K5_GEN_FILE( <ac_output arguments> )
640 AC_DEFUN(K5_GEN_FILE,[AC_CONFIG_FILES($1)])dnl
643 dnl Note: Adds the variables to config.status for individual
644 dnl Makefile generation from config.statsu
645 AC_DEFUN(K5_AC_OUTPUT,[dnl
646 AC_CONFIG_COMMANDS([krb5_config_prefix], [], dnl
647 [krb5_pre_in=$krb5_pre_in
648 ac_config_fragdir=$ac_config_fragdir
649 krb5_post_in=$krb5_post_in])
652 dnl V5_AC_OUTPUT_MAKEFILE
654 AC_DEFUN(V5_AC_OUTPUT_MAKEFILE,
655 [ifelse($1, , [_V5_AC_OUTPUT_MAKEFILE(.,$2)],[_V5_AC_OUTPUT_MAKEFILE($1,$2)])])
657 define(_V5_AC_OUTPUT_MAKEFILE,
658 [ifelse($2, , ,AC_CONFIG_FILES($2))
659 AC_FOREACH([DIR], [$1],dnl
660 [AC_CONFIG_FILES(DIR[/Makefile:$krb5_pre_in:]DIR[/Makefile.in:$krb5_post_in])])
664 dnl KRB5_SOCKADDR_SA_LEN: define HAVE_SA_LEN if sockaddr contains the sa_len
667 AC_DEFUN([KRB5_SOCKADDR_SA_LEN],[ dnl
668 AC_MSG_CHECKING(whether struct sockaddr contains sa_len)
669 AC_CACHE_VAL(krb5_cv_sockaddr_sa_len,
670 [AC_TRY_COMPILE([#include <sys/types.h>
671 #include <sys/socket.h>
675 krb5_cv_sockaddr_sa_len=yes,krb5_cv_sockaddr_sa_len=no)])
676 AC_MSG_RESULT([$]krb5_cv_sockaddr_sa_len)
677 if test $krb5_cv_sockaddr_sa_len = yes; then
678 AC_DEFINE_UNQUOTED(HAVE_SA_LEN,1,[Define if struct sockaddr contains sa_len])
683 dnl CHECK_UTMP: check utmp structure and functions
685 AC_DEFUN(CHECK_UTMP,[
686 AC_MSG_CHECKING([ut_pid in struct utmp])
687 AC_CACHE_VAL(krb5_cv_struct_ut_pid,
689 [#include <sys/types.h>
691 [struct utmp ut; ut.ut_pid;],
692 krb5_cv_struct_ut_pid=yes, krb5_cv_struct_ut_pid=no)])
693 AC_MSG_RESULT($krb5_cv_struct_ut_pid)
694 if test $krb5_cv_struct_ut_pid = no; then
697 AC_MSG_CHECKING([ut_type in struct utmp])
698 AC_CACHE_VAL(krb5_cv_struct_ut_type,
700 [#include <sys/types.h>
702 [struct utmp ut; ut.ut_type;],
703 krb5_cv_struct_ut_type=yes, krb5_cv_struct_ut_type=no)])
704 AC_MSG_RESULT($krb5_cv_struct_ut_type)
705 if test $krb5_cv_struct_ut_type = no; then
706 AC_DEFINE(NO_UT_TYPE)
708 AC_MSG_CHECKING([ut_host in struct utmp])
709 AC_CACHE_VAL(krb5_cv_struct_ut_host,
711 [#include <sys/types.h>
713 [struct utmp ut; ut.ut_host;],
714 krb5_cv_struct_ut_host=yes, krb5_cv_struct_ut_host=no)])
715 AC_MSG_RESULT($krb5_cv_struct_ut_host)
716 if test $krb5_cv_struct_ut_host = no; then
717 AC_DEFINE(NO_UT_HOST)
719 AC_MSG_CHECKING([ut_exit in struct utmp])
720 AC_CACHE_VAL(krb5_cv_struct_ut_exit,
722 [#include <sys/types.h>
724 [struct utmp ut; ut.ut_exit;],
725 krb5_cv_struct_ut_exit=yes, krb5_cv_struct_ut_exit=no)])
726 AC_MSG_RESULT($krb5_cv_struct_ut_exit)
727 if test $krb5_cv_struct_ut_exit = no; then
728 AC_DEFINE(NO_UT_EXIT)
730 AC_CHECK_FUNC(setutent,AC_DEFINE(HAVE_SETUTENT))
731 AC_CHECK_FUNC(setutxent,AC_DEFINE(HAVE_SETUTXENT))
732 AC_CHECK_FUNC(updwtmp,AC_DEFINE(HAVE_UPDWTMP))
733 AC_CHECK_FUNC(updwtmpx,AC_DEFINE(HAVE_UPDWTMPX))
739 AC_DEFUN(WITH_NETLIB,[
740 AC_ARG_WITH([netlib],
741 AC_HELP_STRING([--with-netlib=LIBS], use user defined resolver library),
742 [ if test "$withval" = yes -o "$withval" = no ; then
743 AC_MSG_RESULT("netlib will link with C library resolver only")
745 LIBS="$LIBS $withval"
746 AC_MSG_RESULT("netlib will use \'$withval\'")
753 AC_DEFUN(KRB5_AC_NEED_DAEMON, [
754 KRB5_NEED_PROTO([#ifdef HAVE_UNISTD_H
756 #endif],daemon,1)])dnl
758 dnl Check if stdarg or varargs is available *and compiles*; prefer stdarg.
759 dnl (This was sent to djm for incorporation into autoconf 3/12/1996. KR)
761 AC_DEFUN(AC_HEADER_STDARG, [
763 AC_MSG_CHECKING([for stdarg.h])
764 AC_CACHE_VAL(ac_cv_header_stdarg_h,
765 [AC_TRY_COMPILE([#include <stdarg.h>], [
766 } /* ac_try_compile will have started a function body */
767 int aoeu (char *format, ...) {
770 va_start (v, format);
773 ],ac_cv_header_stdarg_h=yes,ac_cv_header_stdarg_h=no)])dnl
774 AC_MSG_RESULT($ac_cv_header_stdarg_h)
775 if test $ac_cv_header_stdarg_h = yes; then
776 AC_DEFINE(HAVE_STDARG_H, 1, [Define if stdarg available and compiles])
779 AC_MSG_CHECKING([for varargs.h])
780 AC_CACHE_VAL(ac_cv_header_varargs_h,
781 [AC_TRY_COMPILE([#include <varargs.h>],[
782 } /* ac_try_compile will have started a function body */
783 int aoeu (va_alist) va_dcl {
789 ],ac_cv_header_varargs_h=yes,ac_cv_header_varargs_h=no)])dnl
790 AC_MSG_RESULT($ac_cv_header_varargs_h)
791 if test $ac_cv_header_varargs_h = yes; then
792 AC_DEFINE(HAVE_VARARGS_H, 1, [Define if varargs available and compiles])
794 AC_MSG_ERROR(Neither stdarg nor varargs compile?)
797 fi dnl stdarg test failure
802 dnl KRB5_AC_NEED_LIBGEN --- check if libgen needs to be linked in for
806 AC_DEFUN(KRB5_AC_NEED_LIBGEN,[
807 AC_REQUIRE([AC_PROG_CC])dnl
809 dnl regcomp is present but non-functional on Solaris 2.4
811 AC_MSG_CHECKING(for working regcomp)
812 AC_CACHE_VAL(ac_cv_func_regcomp,[
814 #include <sys/types.h>
816 regex_t x; regmatch_t m;
817 int main() { return regcomp(&x,"pat.*",0) || regexec(&x,"pattern",1,&m,0); }
818 ], ac_cv_func_regcomp=yes, ac_cv_func_regcomp=no, AC_MSG_ERROR([Cannot test regcomp when cross compiling]))])
819 AC_MSG_RESULT($ac_cv_func_regcomp)
820 test $ac_cv_func_regcomp = yes && AC_DEFINE(HAVE_REGCOMP,1,[Define if regcomp exists and functions])
822 dnl Check for the compile and step functions - only if regcomp is not available
824 if test $ac_cv_func_regcomp = no; then
827 dnl this will fail if there's no compile/step in -lgen, or if there's
828 dnl no -lgen. This is fine.
829 AC_CHECK_FUNCS(compile step)
832 dnl Set GEN_LIB if necessary
834 AC_CHECK_LIB(gen, compile, GEN_LIB=-lgen, GEN_LIB=)
839 dnl KRB5_AC_REGEX_FUNCS --- check for different regular expression
840 dnl support functions
842 AC_DEFUN(KRB5_AC_REGEX_FUNCS,[
843 AC_CHECK_FUNCS(re_comp re_exec regexec)
844 AC_REQUIRE([KRB5_AC_NEED_LIBGEN])dnl
847 dnl AC_KRB5_TCL_FIND_CONFIG (uses tcl_dir)
849 AC_DEFUN(AC_KRB5_TCL_FIND_CONFIG,[
850 AC_REQUIRE([KRB5_LIB_AUX])dnl
851 AC_MSG_CHECKING(for tclConfig.sh)
852 if test -r "$tcl_dir/lib/tclConfig.sh" ; then
853 tcl_conf="$tcl_dir/lib/tclConfig.sh"
854 elif test -r "$tcl_dir/tclConfig.sh" ; then
855 tcl_conf="$tcl_dir/tclConfig.sh"
859 changequote(<<,>>)dnl
860 for d in "$lib" "$lib"/tcl7.[0-9] "$lib"/tcl8.[0-9] ; do
861 if test -r "$d/tclConfig.sh" ; then
862 tcl_conf="$tcl_conf $d/tclConfig.sh"
867 if test -n "$tcl_conf" ; then
868 AC_MSG_RESULT($tcl_conf)
870 AC_MSG_RESULT(not found)
875 old_CPPFLAGS=$CPPFLAGS
878 if test -n "$tcl_conf" ; then
879 for file in $tcl_conf ; do
880 TCL_MAJOR_VERSION=x ; TCL_MINOR_VERSION=x
881 AC_MSG_CHECKING(Tcl info in $file)
883 v=$TCL_MAJOR_VERSION.$TCL_MINOR_VERSION
884 if test -z "$tcl_vers_maj" \
885 || test "$tcl_vers_maj" -lt "$TCL_MAJOR_VERSION" \
886 || test "$tcl_vers_maj" = "$TCL_MAJOR_VERSION" -a "$tcl_vers_min" -lt "$TCL_MINOR_VERSION" ; then
887 for incdir in "$TCL_PREFIX/include/tcl$v" "$TCL_PREFIX/include" ; do
888 if test -r "$incdir/tcl.h" -o -r "$incdir/tcl/tcl.h" ; then
889 CPPFLAGS="$old_CPPFLAGS -I$incdir"
893 LIBS="$old_LIBS `eval echo x $TCL_LIB_SPEC $TCL_LIBS | sed 's/^x//'`"
894 LDFLAGS="$old_LDFLAGS $TCL_LD_FLAGS"
895 AC_TRY_LINK( , [Tcl_CreateInterp ();],
897 tcl_vers_maj=$TCL_MAJOR_VERSION
898 tcl_vers_min=$TCL_MINOR_VERSION
899 AC_MSG_RESULT($v - working),
900 AC_MSG_RESULT($v - compilation failed)
903 AC_MSG_RESULT(older version $v)
907 CPPFLAGS=$old_CPPFLAGS
912 if test -n "$tcl_ok_conf" ; then
915 for incdir in "$TCL_PREFIX/include/tcl$v" "$TCL_PREFIX/include" ; do
916 if test -r "$incdir/tcl.h" -o -r "$incdir/tcl/tcl.h" ; then
917 if test "$incdir" != "/usr/include" ; then
918 TCL_INCLUDES=-I$incdir
923 # Need eval because the first-level expansion could reference
924 # variables like ${TCL_DBGX}.
925 eval TCL_LIBS='"'$TCL_LIB_SPEC $TCL_LIBS $TCL_DL_LIBS'"'
926 TCL_LIBPATH="-L$TCL_EXEC_PREFIX/lib"
927 TCL_RPATH=":$TCL_EXEC_PREFIX/lib"
928 if test "$DEPLIBEXT" != "$SHLIBEXT" && test -n "$RPATH_FLAG"; then
929 TCL_MAYBE_RPATH='$(RPATH_FLAG)'"$TCL_EXEC_PREFIX/lib$RPATH_TAIL"
933 CPPFLAGS="$old_CPPFLAGS $TCL_INCLUDES"
934 AC_CHECK_HEADER(tcl.h,AC_DEFINE(HAVE_TCL_H) tcl_header=yes)
935 if test $tcl_header=no; then
936 AC_CHECK_HEADER(tcl/tcl.h,AC_DEFINE(HAVE_TCL_TCL_H) tcl_header=yes)
938 CPPFLAGS="$old_CPPFLAGS"
941 AC_SUBST(TCL_INCLUDES)
943 AC_SUBST(TCL_LIBPATH)
945 AC_SUBST(TCL_MAYBE_RPATH)
948 dnl AC_KRB5_TCL_TRYOLD
949 dnl attempt to use old search algorithm for locating tcl
951 AC_DEFUN(AC_KRB5_TCL_TRYOLD, [
952 AC_MSG_WARN([trying old tcl search code])
953 if test "$with_tcl" != yes -a "$with_tcl" != no; then
954 TCL_INCLUDES=-I$with_tcl/include
955 TCL_LIBPATH=-L$with_tcl/lib
956 TCL_RPATH=:$with_tcl/lib
958 if test "$with_tcl" != no ; then
959 AC_CHECK_LIB(dl, dlopen, DL_LIB=-ldl)
960 AC_CHECK_LIB(ld, main, DL_LIB=-lld)
961 krb5_save_CPPFLAGS="$CPPFLAGS"
962 krb5_save_LDFLAGS="$LDFLAGS"
963 CPPFLAGS="$CPPFLAGS $TCL_INCLUDES"
964 LDFLAGS="$LDFLAGS $TCL_LIBPATH"
966 AC_CHECK_HEADER(tcl.h,AC_DEFINE(HAVE_TCL_H) tcl_header=yes)
967 if test $tcl_header=no; then
968 AC_CHECK_HEADER(tcl/tcl.h,AC_DEFINE(HAVE_TCL_TCL_H) tcl_header=yes)
971 if test $tcl_header = yes ; then
974 if test $tcl_lib = no; then
975 AC_CHECK_LIB(tcl8.0, Tcl_CreateCommand,
976 TCL_LIBS="$TCL_LIBS -ltcl8.0 -lm $DL_LIB"
977 tcl_lib=yes,,-lm $DL_LIB)
979 if test $tcl_lib = no; then
980 AC_CHECK_LIB(tcl7.6, Tcl_CreateCommand,
981 TCL_LIBS="$TCL_LIBS -ltcl7.6 -lm $DL_LIB"
982 tcl_lib=yes,,-lm $DL_LIB)
984 if test $tcl_lib = no; then
985 AC_CHECK_LIB(tcl7.5, Tcl_CreateCommand,
986 TCL_LIBS="$TCL_LIBS -ltcl7.5 -lm $DL_LIB"
987 tcl_lib=yes,,-lm $DL_LIB)
990 if test $tcl_lib = no ; then
991 AC_CHECK_LIB(tcl, Tcl_CreateCommand,
992 TCL_LIBS="$TCL_LIBS -ltcl -lm $DL_LIB"
993 tcl_lib=yes,,-lm $DL_LIB)
996 if test $tcl_lib = no ; then
997 AC_MSG_WARN("tcl.h found but not library")
1000 AC_MSG_WARN(Could not find Tcl which is needed for the kadm5 tests)
1003 CPPFLAGS="$krb5_save_CPPFLAGS"
1004 LDFLAGS="$krb5_save_LDFLAGS"
1005 AC_SUBST(TCL_INCLUDES)
1007 AC_SUBST(TCL_LIBPATH)
1010 AC_MSG_RESULT("Not looking for Tcl library")
1014 dnl AC_KRB5_TCL - determine if the TCL library is present on system
1016 AC_DEFUN(AC_KRB5_TCL,[
1024 [ --with-tcl=path where Tcl resides], , with_tcl=try)
1025 if test "$with_tcl" = no ; then
1027 elif test "$with_tcl" = yes -o "$with_tcl" = try ; then
1029 if test ! -r /usr/lib/tclConfig.sh; then
1030 cat >> conftest <<\EOF
1031 puts "tcl_dir=$tcl_library"
1033 if tclsh conftest >conftest.out 2>/dev/null; then
1034 if grep tcl_dir= conftest.out >/dev/null 2>&1; then
1035 t=`sed s/tcl_dir=// conftest.out`
1038 fi # tclsh ran script okay
1039 rm -f conftest conftest.out
1040 fi # no /usr/lib/tclConfig.sh
1044 if test "$with_tcl" != no ; then
1045 AC_KRB5_TCL_FIND_CONFIG
1046 if test $tcl_lib = no ; then
1047 if test "$with_tcl" != try ; then
1050 AC_MSG_WARN(Could not find Tcl which is needed for some tests)
1054 # If "yes" or pathname, error out if not found.
1055 if test "$with_tcl" != no -a "$with_tcl" != try ; then
1056 if test "$tcl_header $tcl_lib" != "yes yes" ; then
1057 AC_MSG_ERROR(Could not find Tcl)
1065 AC_DEFUN(WITH_HESIOD,
1066 [AC_ARG_WITH(hesiod, AC_HELP_STRING(--with-hesiod[=path], compile with hesiod support @<:@omitted@:>@),
1067 hesiod=$with_hesiod, with_hesiod=no)
1068 if test "$with_hesiod" != "no"; then
1069 HESIOD_DEFS=-DHESIOD
1070 AC_CHECK_LIB(resolv, res_send, res_lib=-lresolv)
1071 if test "$hesiod" != "yes"; then
1072 HESIOD_LIBS="-L${hesiod}/lib -lhesiod $res_lib"
1074 HESIOD_LIBS="-lhesiod $res_lib"
1080 AC_SUBST(HESIOD_DEFS)
1081 AC_SUBST(HESIOD_LIBS)])
1085 dnl KRB5_BUILD_LIBRARY
1087 dnl Pull in the necessary stuff to create the libraries.
1089 AC_DEFUN(KRB5_BUILD_LIBRARY,
1090 [KRB5_BUILD_LIBRARY_WITH_DEPS
1091 # null out SHLIB_EXPFLAGS because we lack any dependencies
1095 dnl KRB5_BUILD_LIBRARY_STATIC
1097 dnl Force static library build.
1099 AC_DEFUN(KRB5_AC_FORCE_STATIC,[dnl
1100 AC_BEFORE([$0],[KRB5_LIB_AUX])dnl
1101 krb5_force_static=yes])
1102 AC_DEFUN(KRB5_BUILD_LIBRARY_STATIC,
1103 dnl Use define rather than AC_DEFUN to avoid ordering problems.
1104 [AC_REQUIRE([KRB5_AC_FORCE_STATIC])dnl
1106 # If we're only building static libraries, they're for build-time use only,
1111 dnl KRB5_BUILD_LIBRARY_WITH_DEPS
1113 dnl Like KRB5_BUILD_LIBRARY, but adds in explicit dependencies in the
1114 dnl generated shared library.
1116 AC_DEFUN(KRB5_BUILD_LIBRARY_WITH_DEPS,
1117 [AC_REQUIRE([KRB5_LIB_AUX])dnl
1118 AC_REQUIRE([AC_PROG_LN_S])dnl
1119 AC_REQUIRE([AC_PROG_RANLIB])dnl
1120 AC_REQUIRE([AC_PROG_ARCHIVE])dnl
1121 AC_REQUIRE([AC_PROG_ARCHIVE_ADD])dnl
1122 AC_REQUIRE([AC_PROG_INSTALL])dnl
1123 AC_CHECK_PROG(AR, ar, ar, false)
1124 AC_CHECK_PROG(PERL, perl, perl, false)
1125 if test "$ac_cv_prog_PERL" = "false"; then
1126 AC_MSG_ERROR(Perl is now required for Kerberos builds.)
1130 AC_SUBST(MAKE_SHLIB_COMMAND)
1131 AC_SUBST(SHLIB_EXPFLAGS)
1132 AC_SUBST(INSTALL_SHLIB)
1139 AC_SUBST(LIBINSTLIST)])
1142 dnl KRB5_BUILD_LIBOBJS
1144 dnl Pull in the necessary stuff to build library objects.
1146 AC_DEFUN(KRB5_BUILD_LIBOBJS,
1147 [AC_REQUIRE([KRB5_LIB_AUX])dnl
1153 AC_SUBST(PROFFLAGS)])
1156 dnl KRB5_BUILD_PROGRAM
1158 dnl Set variables to build a program.
1160 AC_DEFUN(KRB5_BUILD_PROGRAM,
1161 [AC_REQUIRE([KRB5_LIB_AUX])dnl
1162 AC_REQUIRE([KRB5_AC_NEED_LIBGEN])dnl
1164 AC_SUBST(RPATH_FLAG)
1165 AC_SUBST(DEPLIBEXT)])
1170 dnl Set up environment for running dynamic executables out of build tree
1172 AC_DEFUN(KRB5_RUN_FLAGS,
1173 [AC_REQUIRE([KRB5_LIB_AUX])dnl
1174 KRB5_RUN_ENV="$RUN_ENV"
1175 AC_SUBST(KRB5_RUN_ENV)])
1180 dnl Parse configure options related to library building.
1182 AC_DEFUN(KRB5_LIB_AUX,
1183 [AC_REQUIRE([KRB5_LIB_PARAMS])dnl
1185 # Check whether to build static libraries.
1186 AC_ARG_ENABLE([static],
1187 AC_HELP_STRING([--enable-static],[build static libraries @<:@disabled for most platforms@:>@])
1188 AC_HELP_STRING([--disable-static],[don't build static libraries]), ,
1189 [enable_static=$default_static])
1191 if test "$enable_static" = no && test "$krb5_force_static" != yes; then
1192 AC_MSG_NOTICE([disabling static libraries])
1197 LIBLIST='lib$(LIBBASE)$(STLIBEXT)'
1198 LIBLINKS='$(TOPLIBD)/lib$(LIBBASE)$(STLIBEXT)'
1200 LIBINSTLIST=install-static
1204 # Check whether to build shared libraries.
1205 AC_ARG_ENABLE([shared],
1206 AC_HELP_STRING([--enable-shared],[build shared libraries @<:@enabled for most platforms@:>@])
1207 AC_HELP_STRING([--disable-shared],[don't build shared libraries]), ,
1208 [enable_shared=$default_shared])
1210 if test "$enable_shared" = yes; then
1213 AC_MSG_WARN([shared libraries not supported on this architecture])
1215 CC_LINK="$CC_LINK_STATIC"
1218 # set this now because some logic below may reset SHLIBEXT
1220 if test "$krb5_force_static" = "yes"; then
1221 AC_MSG_RESULT([Forcing static libraries.])
1222 # avoid duplicate rules generation for AIX and such
1223 SHLIBEXT=.so-nobuild
1224 SHLIBVEXT=.so.v-nobuild
1225 SHLIBSEXT=.so.s-nobuild
1227 AC_MSG_NOTICE([enabling shared libraries])
1228 # Clear some stuff in case of AIX, etc.
1229 if test "$STLIBEXT" = "$SHLIBEXT" ; then
1236 LIBLIST="$LIBLIST "'lib$(LIBBASE)$(SHLIBEXT)'
1237 LIBLINKS="$LIBLINKS "'$(TOPLIBD)/lib$(LIBBASE)$(SHLIBEXT) $(TOPLIBD)/lib$(LIBBASE)$(SHLIBVEXT)'
1238 case "$SHLIBSEXT" in
1240 LIBINSTLIST="$LIBINSTLIST install-shared"
1243 LIBLIST="$LIBLIST "'lib$(LIBBASE)$(SHLIBSEXT)'
1244 LIBLINKS="$LIBLINKS "'$(TOPLIBD)/lib$(LIBBASE)$(SHLIBSEXT)'
1245 LIBINSTLIST="$LIBINSTLIST install-shlib-soname"
1248 OBJLISTS="$OBJLISTS OBJS.SH"
1250 CC_LINK="$CC_LINK_SHARED"
1255 CC_LINK="$CC_LINK_STATIC"
1256 SHLIBEXT=.so-nobuild
1257 SHLIBVEXT=.so.v-nobuild
1258 SHLIBSEXT=.so.s-nobuild
1261 if test -z "$LIBLIST"; then
1262 AC_MSG_ERROR([must enable one of shared or static libraries])
1265 # Check whether to build profiled libraries.
1266 AC_ARG_ENABLE([profiled],
1267 [ --enable-profiled build profiled libraries @<:@disabled@:>@],
1268 [if test "$enableval" = yes; then
1271 AC_MSG_WARN([Profiled libraries not supported on this architecture.])
1274 AC_MSG_NOTICE([enabling profiled libraries])
1275 LIBLIST="$LIBLIST "'lib$(LIBBASE)$(PFLIBEXT)'
1276 LIBLINKS="$LIBLINKS "'$(TOPLIBD)/lib$(LIBBASE)$(PFLIBEXT)'
1277 OBJLISTS="$OBJLISTS OBJS.PF"
1278 LIBINSTLIST="$LIBINSTLIST install-profiled"
1286 dnl Determine parameters related to libraries, e.g. various extensions.
1288 AC_DEFUN(KRB5_LIB_PARAMS,
1289 [AC_REQUIRE([AC_CANONICAL_HOST])dnl
1291 AC_SUBST(krb5_cv_host)
1292 AC_REQUIRE([AC_PROG_CC])dnl
1293 AC_REQUIRE([V5_SET_TOPDIR])dnl
1294 . $ac_topdir/config/shlib.conf])
1296 dnl The following was written by jhawk@mit.edu
1298 dnl AC_LIBRARY_NET: Id: net.m4,v 1.4 1997/10/25 20:49:53 jhawk Exp
1300 dnl This test is for network applications that need socket() and
1301 dnl gethostbyname() -ish functions. Under Solaris, those applications need to
1302 dnl link with "-lsocket -lnsl". Under IRIX, they should *not* link with
1303 dnl "-lsocket" because libsocket.a breaks a number of things (for instance:
1304 dnl gethostbyname() under IRIX 5.2, and snoop sockets under most versions of
1307 dnl Unfortunately, many application developers are not aware of this, and
1308 dnl mistakenly write tests that cause -lsocket to be used under IRIX. It is
1309 dnl also easy to write tests that cause -lnsl to be used under operating
1310 dnl systems where neither are necessary (or useful), such as SunOS 4.1.4, which
1311 dnl uses -lnsl for TLI.
1313 dnl This test exists so that every application developer does not test this in
1314 dnl a different, and subtly broken fashion.
1316 dnl It has been argued that this test should be broken up into two seperate
1317 dnl tests, one for the resolver libraries, and one for the libraries necessary
1318 dnl for using Sockets API. Unfortunately, the two are carefully intertwined and
1319 dnl allowing the autoconf user to use them independantly potentially results in
1320 dnl unfortunate ordering dependancies -- as such, such component macros would
1321 dnl have to carefully use indirection and be aware if the other components were
1322 dnl executed. Since other autoconf macros do not go to this trouble, and almost
1323 dnl no applications use sockets without the resolver, this complexity has not
1324 dnl been implemented.
1326 dnl The check for libresolv is in case you are attempting to link statically
1327 dnl and happen to have a libresolv.a lying around (and no libnsl.a).
1329 AC_DEFUN(AC_LIBRARY_NET, [
1330 # Most operating systems have gethostbyname() in the default searched
1331 # libraries (i.e. libc):
1332 AC_CHECK_FUNC(gethostbyname, , [
1333 # Some OSes (eg. Solaris) place it in libnsl:
1334 AC_CHECK_LIB(nsl, gethostbyname, , [
1335 # Some strange OSes (SINIX) have it in libsocket:
1336 AC_CHECK_LIB(socket, gethostbyname, , [
1337 # Unfortunately libsocket sometimes depends on libnsl.
1338 # AC_CHECK_LIB's API is essentially broken so the following
1339 # ugliness is necessary:
1340 AC_CHECK_LIB(socket, gethostbyname,
1341 LIBS="-lsocket -lnsl $LIBS",
1342 [AC_CHECK_LIB(resolv, gethostbyname,
1343 LIBS="-lresolv $LIBS" ; RESOLV_LIB=-lresolv)],
1348 AC_CHECK_FUNC(socket, , AC_CHECK_LIB(socket, socket, ,
1349 AC_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", , -lnsl)))
1351 if test "$enable_dns" = yes ; then
1352 AC_CHECK_FUNC(res_nsearch, , [AC_CHECK_LIB(resolv, res_nsearch,
1353 [LIBS="$LIBS -lresolv" ; RESOLV_LIB=-lresolv
1354 AC_DEFINE(HAVE_RES_NSEARCH,1,[Define if BIND 8 routine res_nsearch is available])
1356 [AC_CHECK_FUNC(res_search, , AC_CHECK_LIB(resolv, res_search,
1357 LIBS="$LIBS -lresolv" ; RESOLV_LIB=-lresolv,
1358 AC_MSG_ERROR(Cannot find resolver support routine res_search in -lresolv.)
1361 AC_SUBST(RESOLV_LIB)
1365 dnl KRB5_AC_ENABLE_DNS
1367 AC_DEFUN(KRB5_AC_ENABLE_DNS, [
1369 enable_dns_for_kdc=yes
1370 AC_DEFINE(KRB5_DNS_LOOKUP_KDC,1,[Define to enable DNS lookups of Kerberos KDCs])
1372 AC_ARG_ENABLE([dns-for-realm],
1373 [ --enable-dns-for-realm enable DNS lookups of Kerberos realm names], ,
1374 [enable_dns_for_realm=no])
1375 if test "$enable_dns_for_realm" = yes; then
1376 AC_DEFINE(KRB5_DNS_LOOKUP_REALM,1,[Define to enable DNS lookups of Kerberos realm names])
1379 AC_DEFINE(KRB5_DNS_LOOKUP, 1,[Define for DNS support of locating realms and KDCs])
1384 dnl Check if we need the prototype for a function - we give it a bogus
1385 dnl prototype and if it complains - then a valid prototype exists on the
1388 dnl KRB5_NEED_PROTO(includes, function, [bypass])
1389 dnl if $3 set, don't see if library defined.
1390 dnl Useful for case where we will define in libkrb5 the function if need be
1391 dnl but want to know if a prototype exists in either case on system.
1393 AC_DEFUN([KRB5_NEED_PROTO], [
1394 ifelse([$3], ,[if test "x$ac_cv_func_$2" = xyes; then])
1395 AC_CACHE_CHECK([if $2 needs a prototype provided], krb5_cv_func_$2_noproto,
1396 AC_TRY_COMPILE([$1],
1397 [struct k5foo {int foo; } xx;
1398 extern int $2 (struct k5foo*);
1401 krb5_cv_func_$2_noproto=yes,krb5_cv_func_$2_noproto=no))
1402 if test $krb5_cv_func_$2_noproto = yes; then
1403 AC_DEFINE([NEED_]translit($2, [a-z], [A-Z])[_PROTO], 1, dnl
1404 [define if the system header files are missing prototype for $2()])
1409 dnl =============================================================
1410 dnl Internal function for testing for getpeername prototype
1412 AC_DEFUN([KRB5_GETPEERNAME_ARGS],[
1413 AC_DEFINE([GETPEERNAME_ARG2_TYPE],GETSOCKNAME_ARG2_TYPE)
1414 AC_DEFINE([GETPEERNAME_ARG3_TYPE],GETSOCKNAME_ARG3_TYPE)
1417 dnl =============================================================
1418 dnl Internal function for testing for getsockname arguments
1420 AC_DEFUN([TRY_GETSOCK_INT],[
1421 krb5_lib_var=`echo "$1 $2" | sed 'y% ./+-*%___p_p%'`
1422 AC_MSG_CHECKING([if getsockname() takes arguments $1 and $2])
1423 AC_CACHE_VAL(krb5_cv_getsockname_proto_$krb5_lib_var,
1425 AC_TRY_COMPILE([#include <sys/types.h>
1426 #include <sys/socket.h>
1427 extern int getsockname(int, $1, $2);
1428 ],,eval "krb5_cv_getsockname_proto_$krb5_lib_var=yes",
1429 eval "krb5_cv_getsockname_proto_$krb5_lib_var=no")])
1430 if eval "test \"`echo '$krb5_cv_getsockname_proto_'$krb5_lib_var`\" = yes"; then
1433 res1=`echo "$1" | tr -d '*' | sed -e 's/ *$//'`
1434 res2=`echo "$2" | tr -d '*' | sed -e 's/ *$//'`
1435 AC_DEFINE_UNQUOTED([GETSOCKNAME_ARG2_TYPE],$res1)
1436 AC_DEFINE_UNQUOTED([GETSOCKNAME_ARG3_TYPE],$res2)
1442 dnl Determines the types of the second and third arguments to getsockname().
1444 AC_DEFUN([KRB5_GETSOCKNAME_ARGS],[
1446 for sock_arg1 in "struct sockaddr *" "void *"
1448 for sock_arg2 in "size_t *" "int *" "socklen_t *"
1450 if test $sock_set = no; then
1451 TRY_GETSOCK_INT($sock_arg1, $sock_arg2)
1455 if test "$sock_set" = no; then
1456 AC_MSG_NOTICE(assuming struct sockaddr and socklen_t for getsockname args)
1457 res1=`echo "struct sockaddr *" | tr -d '*' | sed -e 's/ *$//'`
1458 AC_DEFINE_UNQUOTED([GETSOCKNAME_ARG2_TYPE],$res1)
1459 res2=`echo "socklen_t *" | tr -d '*' | sed -e 's/ *$//'`
1460 AC_DEFINE_UNQUOTED([GETSOCKNAME_ARG3_TYPE],$res2)
1465 AC_DEFUN([KRB5_AC_CHOOSE_ET],[
1466 AC_ARG_WITH([system-et],
1467 AC_HELP_STRING(--with-system-et,use system compile_et and -lcom_err @<:@default: build and install a local version@:>@))
1468 AC_MSG_CHECKING(which version of com_err to use)
1469 if test "x$with_system_et" = xyes ; then
1471 AC_MSG_RESULT(system)
1476 if test $COM_ERR_VERSION = sys; then
1477 # check for various functions we need
1478 AC_CHECK_LIB(com_err, add_error_table, :, AC_MSG_ERROR(cannot find add_error_table in com_err library))
1479 AC_CHECK_LIB(com_err, remove_error_table, :, AC_MSG_ERROR(cannot find remove_error_table in com_err library))
1480 # make sure compile_et provides "et_foo" name
1481 cat >> conf$$e.et <<EOF
1483 error_code ERR_FOO, "foo"
1486 AC_CHECK_PROGS(compile_et,compile_et,false)
1487 if test "$compile_et" = false; then
1488 AC_MSG_ERROR(cannot find compile_et)
1490 AC_CACHE_CHECK(whether compile_et is useful,krb5_cv_compile_et_useful,[
1491 if compile_et conf$$e.et >/dev/null 2>&1 ; then true ; else
1492 AC_MSG_ERROR(execution failed)
1494 AC_TRY_COMPILE([#include "conf$$e.h"
1495 ],[ et_foo_error_table; ],:,
1496 [AC_MSG_ERROR(cannot use et_foo_error_table)])
1497 # Anything else we need to test for?
1498 rm -f conf$$e.et conf$$e.c conf$$e.h
1499 krb5_cv_compile_et_useful=yes
1502 AC_SUBST(COM_ERR_VERSION)
1504 AC_DEFUN([KRB5_AC_CHOOSE_SS],[
1505 AC_ARG_WITH(system-ss,
1506 AC_HELP_STRING(--with-system-ss,use system -lss and mk_cmds @<:@private version@:>@))
1507 AC_ARG_VAR(SS_LIB,[system libraries for 'ss' package [-lss]])
1508 AC_MSG_CHECKING(which version of subsystem package to use)
1509 if test "x$with_system_ss" = xyes ; then
1511 AC_MSG_RESULT(system)
1512 # todo: check for various libraries we might need
1513 # in the meantime...
1514 test "x${SS_LIB+set}" = xset || SS_LIB=-lss
1516 LIBS="$LIBS $SS_LIB"
1517 AC_CACHE_CHECK(whether system ss package works, krb5_cv_system_ss_okay,[
1520 int main(int argc, char *argv[]) {
1523 i = ss_create_invocation("foo","foo","",0,&err);
1527 }], krb5_cv_system_ss_okay=yes, AC_MSG_ERROR(cannot run test program),
1528 krb5_cv_system_ss_okay="assumed")])
1535 AC_SUBST(SS_VERSION)
1538 AC_DEFUN([KRB5_AC_CHOOSE_DB],[
1539 AC_ARG_WITH(system-db,
1540 AC_HELP_STRING(--with-system-db,use system Berkeley db @<:@private version@:>@))
1541 AC_ARG_VAR(DB_HEADER,[header file for system Berkeley db package [db.h]])
1542 AC_ARG_VAR(DB_LIB,[library for system Berkeley db package [-ldb]])
1543 if test "x$with_system_db" = xyes ; then
1545 # TODO: Do we have specific routines we should check for?
1546 # How about known, easily recognizable bugs?
1547 # We want to use bt_rseq in some cases, but no other version but
1548 # ours has it right now.
1550 # Okay, check the variables.
1551 test "x${DB_HEADER+set}" = xset || DB_HEADER=db.h
1552 test "x${DB_LIB+set}" = xset || DB_LIB=-ldb
1554 if test "x${DB_HEADER}" = xdb.h ; then
1555 DB_HEADER_VERSION=sys
1557 DB_HEADER_VERSION=redirect
1559 KDB5_DB_LIB="$DB_LIB"
1562 AC_DEFINE(HAVE_BT_RSEQ,1,[Define if bt_rseq is available, for recursive btree traversal.])
1564 DB_HEADER_VERSION=k5
1565 # libdb gets sucked into libkdb
1567 # needed for a couple of things that need libdb for its own sake
1570 AC_SUBST(DB_VERSION)
1572 AC_SUBST(DB_HEADER_VERSION)
1574 AC_SUBST(KDB5_DB_LIB)
1578 dnl KRB5_AC_NEED_BIND_8_COMPAT --- check to see if we are on a bind 9 system
1581 AC_DEFUN(KRB5_AC_NEED_BIND_8_COMPAT,[
1582 AC_REQUIRE([AC_PROG_CC])dnl
1584 dnl On a bind 9 system, we need to define BIND_8_COMPAT
1586 AC_MSG_CHECKING(for bind 9 or higher)
1587 AC_CACHE_VAL(krb5_cv_need_bind_8_compat,[
1588 AC_TRY_COMPILE([#include <arpa/nameser.h>], [HEADER hdr;],
1589 krb5_cv_need_bind_8_compat=no,
1590 [AC_TRY_COMPILE([#define BIND_8_COMPAT
1591 #include <arpa/nameser.h>], [HEADER hdr;],
1592 krb5_cv_need_bind_8_compat=yes, krb5_cv_need_bind_8_compat=no)])])
1593 AC_MSG_RESULT($krb5_cv_need_bind_8_compat)
1594 test $krb5_cv_need_bind_8_compat = yes && AC_DEFINE(BIND_8_COMPAT,1,[Define if OS has bind 9])
1597 dnl KRB5_AC_PRIOCNTL_HACK
1600 AC_DEFUN([KRB5_AC_PRIOCNTL_HACK],
1601 [case $krb5_cv_host in
1609 AC_SUBST(PRIOCNTL_HACK)])
1612 dnl KRB5_AC_GCC_ATTRS
1613 AC_DEFUN([KRB5_AC_GCC_ATTRS],
1614 [AC_CACHE_CHECK([for constructor/destructor attribute support],krb5_cv_attr_constructor_destructor,
1615 [rm -f conftest.1 conftest.2
1616 if test -r conftest.1 || test -r conftest.2 ; then
1617 AC_MSG_ERROR(write error in local file system?)
1621 if test -r conftest.1 && test -r conftest.2 ; then true ; else
1622 AC_MSG_ERROR(write error in local file system?)
1626 # blindly assume we have 'unlink'...
1627 AC_TRY_RUN([void foo1() __attribute__((constructor));
1628 void foo1() { unlink("conftest.1"); }
1629 void foo2() __attribute__((destructor));
1630 void foo2() { unlink("conftest.2"); }
1631 int main () { return 0; }],
1632 [test -r conftest.1 || a=yes
1633 test -r conftest.2 || b=yes], , AC_MSG_ERROR(Cannot test for constructor/destructor support when cross compiling))
1634 case $krb5_cv_host in
1636 # Under AIX 4.3.3, at least, shared library destructor functions
1637 # appear to get executed in reverse link order (right to left),
1638 # so that a library's destructor function may run after that of
1639 # libraries it depends on, and may still have to access in the
1642 # That counts as "not working", for me, but it's a much more
1643 # complicated test case to set up.
1647 krb5_cv_attr_constructor_destructor="$a,$b"
1649 # Okay, krb5_cv_... should be set now.
1650 case $krb5_cv_attr_constructor_destructor in
1652 AC_DEFINE(CONSTRUCTOR_ATTR_WORKS,1,[Define if __attribute__((constructor)) works]) ;;
1654 case $krb5_cv_attr_constructor_destructor in
1656 AC_DEFINE(DESTRUCTOR_ATTR_WORKS,1,[Define if __attribute__((destructor)) works]) ;;
1658 dnl End of attributes we care about right now.
1662 dnl KRB5_AC_PRAGMA_WEAK_REF
1663 AC_DEFUN([KRB5_AC_PRAGMA_WEAK_REF],
1664 [AC_CACHE_CHECK([whether pragma weak references are supported],
1665 krb5_cv_pragma_weak_ref,
1666 [AC_TRY_LINK([#pragma weak flurbl
1667 extern int flurbl(void);],[if (&flurbl != 0) return 1;],
1668 krb5_cv_pragma_weak_ref=yes,krb5_cv_pragma_weak_ref=no)])
1669 if test $krb5_cv_pragma_weak_ref = yes ; then
1670 AC_DEFINE(HAVE_PRAGMA_WEAK_REF,1,[Define if #pragma weak references work])
1674 m4_include(config/ac-archive/acx_pthread.m4)