1AC_PREREQ(2.52)
2AC_COPYRIGHT([Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009
3Massachusetts Institute of Technology.
4])dnl
5dnl Maintainer mode, akin to what automake provides, 'cept we don't
6dnl want to use automake right now.
7AC_DEFUN([KRB5_AC_MAINTAINER_MODE],
8[AC_ARG_ENABLE([maintainer-mode],
9AC_HELP_STRING([--enable-maintainer-mode],[enable rebuilding of source files, Makefiles, etc]),
10USE_MAINTAINER_MODE=$enableval,
11USE_MAINTAINER_MODE=no)
12if test "$USE_MAINTAINER_MODE" = yes; then
13  MAINTAINER_MODE_TRUE=
14  MAINTAINER_MODE_FALSE='#'
15  AC_MSG_NOTICE(enabling maintainer mode)
16else
17  MAINTAINER_MODE_TRUE='#'
18  MAINTAINER_MODE_FALSE=
19fi
20MAINT=$MAINTAINER_MODE_TRUE
21AC_SUBST(MAINTAINER_MODE_TRUE)
22AC_SUBST(MAINTAINER_MODE_FALSE)
23AC_SUBST(MAINT)
24])dnl
25dnl
26dnl DECLARE_SYS_ERRLIST - check for sys_errlist in libc
27dnl
28AC_DEFUN([DECLARE_SYS_ERRLIST],
29[AC_CACHE_CHECK([for sys_errlist declaration], krb5_cv_decl_sys_errlist,
30[AC_TRY_COMPILE([#include <stdio.h>
31#include <errno.h>], [1+sys_nerr;],
32krb5_cv_decl_sys_errlist=yes, krb5_cv_decl_sys_errlist=no)])
33# assume sys_nerr won't be declared w/o being in libc
34if test $krb5_cv_decl_sys_errlist = yes; then
35  AC_DEFINE(SYS_ERRLIST_DECLARED,1,[Define if sys_errlist is defined in errno.h])
36  AC_DEFINE(HAVE_SYS_ERRLIST,1,[Define if sys_errlist in libc])
37else
38  # This means that sys_errlist is not declared in errno.h, but may still
39  # be in libc.
40  AC_CACHE_CHECK([for sys_errlist in libc], krb5_cv_var_sys_errlist,
41  [AC_TRY_LINK([extern int sys_nerr;], [if (1+sys_nerr < 0) return 1;],
42  krb5_cv_var_sys_errlist=yes, krb5_cv_var_sys_errlist=no;)])
43  if test $krb5_cv_var_sys_errlist = yes; then
44    AC_DEFINE(HAVE_SYS_ERRLIST,1,[Define if sys_errlist in libc])
45    # Do this cruft for backwards compatibility for now.
46    AC_DEFINE(NEED_SYS_ERRLIST,1,[Define if need to declare sys_errlist])
47  else
48    AC_MSG_WARN([sys_errlist is neither in errno.h nor in libc])
49  fi
50fi])dnl
51dnl
52dnl check for sigmask/sigprocmask -- CHECK_SIGPROCMASK
53dnl
54AC_DEFUN(CHECK_SIGPROCMASK,[
55AC_MSG_CHECKING([for use of sigprocmask])
56AC_CACHE_VAL(krb5_cv_func_sigprocmask_use,
57[AC_TRY_LINK([#include <signal.h>], [sigprocmask(SIG_SETMASK,0,0);],
58 krb5_cv_func_sigprocmask_use=yes,
59AC_TRY_LINK([#include <signal.h>], [sigmask(1);],
60 krb5_cv_func_sigprocmask_use=no, krb5_cv_func_sigprocmask_use=yes))])
61AC_MSG_RESULT($krb5_cv_func_sigprocmask_use)
62if test $krb5_cv_func_sigprocmask_use = yes; then
63 AC_DEFINE(USE_SIGPROCMASK,1,[Define if sigprocmask should be used])
64fi
65])dnl
66dnl
67AC_DEFUN(AC_PROG_ARCHIVE, [AC_CHECK_PROG(ARCHIVE, ar, ar cqv, false)])dnl
68AC_DEFUN(AC_PROG_ARCHIVE_ADD, [AC_CHECK_PROG(ARADD, ar, ar cruv, false)])dnl
69dnl
70dnl check for <dirent.h> -- CHECK_DIRENT
71dnl (may need to be more complex later)
72dnl
73AC_DEFUN(CHECK_DIRENT,[
74AC_CHECK_HEADER(dirent.h,AC_DEFINE(USE_DIRENT_H,1,[Define if you have dirent.h functionality]))])dnl
75dnl
76dnl check if union wait is defined, or if WAIT_USES_INT -- CHECK_WAIT_TYPE
77dnl
78AC_DEFUN(CHECK_WAIT_TYPE,[
79AC_MSG_CHECKING([if argument to wait is int *])
80AC_CACHE_VAL(krb5_cv_struct_wait,
81dnl Test for prototype clash - if there is none - then assume int * works
82[AC_TRY_COMPILE([#include <sys/types.h>
83#include <sys/wait.h>
84extern pid_t wait(int *);],[], krb5_cv_struct_wait=no,dnl
85dnl Else fallback on old stuff
86[AC_TRY_COMPILE(
87[#include <sys/wait.h>], [union wait i;
88#ifdef WEXITSTATUS
89  WEXITSTATUS (i);
90#endif
91],
92	krb5_cv_struct_wait=yes, krb5_cv_struct_wait=no)])])
93AC_MSG_RESULT($krb5_cv_struct_wait)
94if test $krb5_cv_struct_wait = no; then
95	AC_DEFINE(WAIT_USES_INT,1,[Define if wait takes int as a argument])
96fi
97])dnl
98dnl
99dnl check for POSIX signal handling -- CHECK_SIGNALS
100dnl
101AC_DEFUN(CHECK_SIGNALS,[
102AC_CHECK_FUNC(sigprocmask,
103AC_MSG_CHECKING(for sigset_t and POSIX_SIGNALS)
104AC_CACHE_VAL(krb5_cv_type_sigset_t,
105[AC_TRY_COMPILE(
106[#include <signal.h>],
107[sigset_t x],
108krb5_cv_type_sigset_t=yes, krb5_cv_type_sigset_t=no)])
109AC_MSG_RESULT($krb5_cv_type_sigset_t)
110if test $krb5_cv_type_sigset_t = yes; then
111  AC_DEFINE(POSIX_SIGNALS,1,[Define if POSIX signal handling is used])
112fi
113)])dnl
114dnl
115dnl check for signal type
116dnl
117dnl AC_RETSIGTYPE isn't quite right, but almost.
118AC_DEFUN(KRB5_SIGTYPE,[
119AC_MSG_CHECKING([POSIX signal handlers])
120AC_CACHE_VAL(krb5_cv_has_posix_signals,
121[AC_TRY_COMPILE(
122[#include <sys/types.h>
123#include <signal.h>
124#ifdef signal
125#undef signal
126#endif
127extern void (*signal ()) ();], [],
128krb5_cv_has_posix_signals=yes, krb5_cv_has_posix_signals=no)])
129AC_MSG_RESULT($krb5_cv_has_posix_signals)
130if test $krb5_cv_has_posix_signals = yes; then
131   stype=void
132   AC_DEFINE(POSIX_SIGTYPE, 1, [Define if POSIX signal handlers are used])
133else
134  if test $ac_cv_type_signal = void; then
135     stype=void
136  else
137     stype=int
138  fi
139fi
140AC_DEFINE_UNQUOTED(krb5_sigtype, $stype, [Define krb5_sigtype to type of signal handler])dnl
141])dnl
142dnl
143dnl check for POSIX setjmp/longjmp -- CHECK_SETJMP
144dnl
145AC_DEFUN(CHECK_SETJMP,[
146AC_CHECK_FUNC(sigsetjmp,
147AC_MSG_CHECKING(for sigjmp_buf)
148AC_CACHE_VAL(krb5_cv_struct_sigjmp_buf,
149[AC_TRY_COMPILE(
150[#include <setjmp.h>],[sigjmp_buf x],
151krb5_cv_struct_sigjmp_buf=yes,krb5_cv_struct_sigjmp_buf=no)])
152AC_MSG_RESULT($krb5_cv_struct_sigjmp_buf)
153if test $krb5_cv_struct_sigjmp_buf = yes; then
154  AC_DEFINE(POSIX_SETJMP,1,[Define if setjmp indicates POSIX interface])
155fi
156)])dnl
157dnl
158dnl Check for IPv6 compile-time support.
159dnl
160AC_DEFUN(KRB5_AC_INET6,[
161AC_CHECK_HEADERS(sys/types.h sys/socket.h netinet/in.h netdb.h)
162AC_CHECK_FUNCS(inet_ntop inet_pton getnameinfo)
163dnl getaddrinfo test needs netdb.h, for proper compilation on alpha
164dnl under OSF/1^H^H^H^H^HDigital^H^H^H^H^H^H^HTru64 UNIX, where it's
165dnl a macro
166AC_MSG_CHECKING(for getaddrinfo)
167AC_CACHE_VAL(ac_cv_func_getaddrinfo,
168[AC_TRY_LINK([#ifdef HAVE_NETDB_H
169#include <netdb.h>
170#endif],[
171struct addrinfo *ai;
172getaddrinfo("kerberos.mit.edu", "echo", 0, &ai);
173], ac_cv_func_getaddrinfo=yes, ac_cv_func_getaddrinfo=no)])
174AC_MSG_RESULT($ac_cv_func_getaddrinfo)
175if test $ac_cv_func_getaddrinfo = yes; then
176  AC_DEFINE(HAVE_GETADDRINFO,1,[Define if you have the getaddrinfo function])
177fi
178dnl
179AC_REQUIRE([KRB5_SOCKADDR_SA_LEN])dnl
180AC_MSG_CHECKING(for IPv6 compile-time support)
181AC_CACHE_VAL(krb5_cv_inet6,[
182if test "$ac_cv_func_inet_ntop" != "yes" ; then
183  krb5_cv_inet6=no
184else
185AC_TRY_COMPILE([
186#ifdef HAVE_SYS_TYPES_H
187#include <sys/types.h>
188#endif
189#include <sys/socket.h>
190#include <netinet/in.h>
191#include <netdb.h>
192],[
193  struct sockaddr_in6 in;
194  AF_INET6;
195  IN6_IS_ADDR_LINKLOCAL (&in.sin6_addr);
196],krb5_cv_inet6=yes,krb5_cv_inet6=no)])
197fi
198AC_MSG_RESULT($krb5_cv_inet6)
199if test "$krb5_cv_inet6" = no && test "$ac_cv_func_inet_ntop" = yes; then
200AC_MSG_CHECKING(for IPv6 compile-time support with -DINET6)
201AC_CACHE_VAL(krb5_cv_inet6_with_dinet6,[
202old_CC="$CC"
203CC="$CC -DINET6"
204AC_TRY_COMPILE([
205#ifdef HAVE_SYS_TYPES_H
206#include <sys/types.h>
207#endif
208#include <sys/socket.h>
209#include <netinet/in.h>
210#include <netdb.h>
211],[
212  struct sockaddr_in6 in;
213  AF_INET6;
214  IN6_IS_ADDR_LINKLOCAL (&in.sin6_addr);
215],krb5_cv_inet6_with_dinet6=yes,krb5_cv_inet6_with_dinet6=no)
216CC="$old_CC"])
217AC_MSG_RESULT($krb5_cv_inet6_with_dinet6)
218fi
219if test $krb5_cv_inet6 = yes || test "$krb5_cv_inet6_with_dinet6" = yes; then
220  if test "$krb5_cv_inet6_with_dinet6" = yes; then
221    AC_DEFINE(INET6,1,[May need to be defined to enable IPv6 support, for example on IRIX])
222  fi
223  AC_DEFINE(KRB5_USE_INET6,1,[Define if we should compile in IPv6 support (even if we can't use it at run time)])
224fi
225])dnl
226dnl
227AC_DEFUN(KRB5_AC_CHECK_FOR_CFLAGS,[
228AC_BEFORE([$0],[AC_PROG_CC])
229krb5_ac_cflags_set=${CFLAGS+set}
230krb5_ac_warn_cflags_set=${WARN_CFLAGS+set}
231])
232dnl
233AC_DEFUN(TRY_WARN_CC_FLAG,[dnl
234  cachevar=`echo "krb5_cv_cc_flag_$1" | sed s/[[^a-zA-Z0-9_]]/_/g`
235  AC_CACHE_CHECK([if C compiler supports $1], [$cachevar],
236  [# first try without, then with
237  AC_TRY_COMPILE([], 1;,
238    [old_cflags="$CFLAGS"
239     CFLAGS="$CFLAGS $1"
240     AC_TRY_COMPILE([], 1;, eval $cachevar=yes, eval $cachevar=no)
241     CFLAGS="$old_cflags"],
242    [AC_MSG_ERROR(compiling simple test program with $CFLAGS failed)])])
243  if eval test '"${'$cachevar'}"' = yes; then
244    WARN_CFLAGS="$WARN_CFLAGS $1"
245  fi
246  eval flag_supported='${'$cachevar'}'
247])dnl
248dnl
249AC_DEFUN(WITH_CC,[dnl
250AC_REQUIRE([KRB5_AC_CHECK_FOR_CFLAGS])dnl
251AC_REQUIRE([AC_PROG_CC])dnl
252AC_REQUIRE([AC_PROG_CXX])dnl
253if test $ac_cv_c_compiler_gnu = yes ; then
254     HAVE_GCC=yes
255     else HAVE_GCC=
256fi
257AC_SUBST(HAVE_GCC)
258AC_CACHE_CHECK([for GNU linker], krb5_cv_prog_gnu_ld,
259[krb5_cv_prog_gnu_ld=no
260if test "$GCC" = yes; then
261  if AC_TRY_COMMAND([$CC -Wl,-v 2>&1 dnl
262			| grep "GNU ld" > /dev/null]); then
263    krb5_cv_prog_gnu_ld=yes
264  fi
265fi])
266# -Wno-long-long, if needed, for k5-platform.h without inttypes.h etc.
267extra_gcc_warn_opts="-Wall -Wcast-qual -Wcast-align -Wshadow"
268# -Wmissing-prototypes
269if test "$GCC" = yes ; then
270  if test "x$krb5_ac_warn_cflags_set" = xset ; then
271    AC_MSG_NOTICE(not adding extra gcc warning flags because WARN_CFLAGS was set)
272  else
273    AC_MSG_NOTICE(adding extra warning flags for gcc)
274    WARN_CFLAGS="$WARN_CFLAGS $extra_gcc_warn_opts -Wmissing-prototypes"
275    if test "`uname -s`" = Darwin ; then
276      AC_MSG_NOTICE(skipping pedantic warnings on Darwin)
277    elif test "`uname -s`" = Linux ; then
278      AC_MSG_NOTICE(skipping pedantic warnings on Linux)
279    else
280      WARN_CFLAGS="$WARN_CFLAGS -pedantic"
281    fi
282    # Currently, G++ does not support -Wno-format-zero-length.
283    TRY_WARN_CC_FLAG(-Wno-format-zero-length)
284    # Other flags here may not be supported on some versions of
285    # gcc that people want to use.
286    for flag in overflow strict-overflow missing-format-attribute missing-prototypes return-type missing-braces parentheses switch unused-function unused-label unused-variable unused-value unknown-pragmas sign-compare newline-eof ; do
287      TRY_WARN_CC_FLAG(-W$flag)
288    done
289    #  old-style-definition? generates many, many warnings
290    #
291    # Warnings that we'd like to turn into errors on versions of gcc
292    # that support promoting only specific warnings to errors, but
293    # we'll take as warnings on older compilers.  (If such a warning
294    # is added after the -Werror=foo feature, you can just put
295    # error=foo in the above list, and skip the test for the
296    # warning-only form.)  At least in some versions, -Werror= doesn't
297    # seem to make the conditions actual errors, but still issues
298    # warnings; I guess we'll take what we can get.
299    #
300    # We're currently targeting C89+, not C99, so disallow some
301    # constructs.
302    for flag in declaration-after-statement variadic-macros ; do
303      TRY_WARN_CC_FLAG(-Werror=$flag)
304      if test "$flag_supported" = no; then
305        TRY_WARN_CC_FLAG(-W$flag)
306      fi
307    done
308    #  missing-prototypes? maybe someday
309    #
310  fi
311  if test "`uname -s`" = Darwin ; then
312    # Someday this should be a feature test.
313    # One current (Jaguar = OS 10.2) problem:
314    # Archive library with foo.o undef sym X and bar.o common sym X,
315    # if foo.o is pulled in at link time, bar.o may not be, causing
316    # the linker to complain.
317    # Dynamic library problems too?
318    case "$CC $CFLAGS" in
319    *-fcommon*) ;; # why someone would do this, I don't know
320    *-fno-common*) ;; # okay, they're already doing the right thing
321    *)
322      AC_MSG_NOTICE(disabling the use of common storage on Darwin)
323      CFLAGS="$CFLAGS -fno-common"
324      ;;
325    esac
326    case "$LD $LDFLAGS" in
327    *-Wl,-search_paths_first*) ;;
328    *) LDFLAGS="${LDFLAGS} -Wl,-search_paths_first" ;;
329    esac
330  fi
331else
332  if test "`uname -s`" = AIX ; then
333    # Using AIX but not GCC, assume native compiler.
334    # The native compiler appears not to give a nonzero exit
335    # status for certain classes of errors, like missing arguments
336    # in function calls.  Let's try to fix that with -qhalt=e.
337    case "$CC $CFLAGS" in
338      *-qhalt=*) ;;
339      *)
340	CFLAGS="$CFLAGS -qhalt=e"
341	AC_MSG_NOTICE(adding -qhalt=e for better error reporting)
342	;;
343    esac
344    # Also, the optimizer isn't turned on by default, which means
345    # the static inline functions get left in random object files,
346    # leading to references to pthread_mutex_lock from anything that
347    # includes k5-int.h whether it uses threads or not.
348    case "$CC $CFLAGS" in
349      *-O*) ;;
350      *)
351	CFLAGS="$CFLAGS -O"
352	AC_MSG_NOTICE(adding -O for inline thread-support function elimination)
353	;;
354    esac
355  fi
356  if test "`uname -s`" = SunOS ; then
357    # Using Solaris but not GCC, assume Sunsoft compiler.
358    # We have some error-out-on-warning options available.
359    # Sunsoft 12 compiler defaults to -xc99=all, it appears, so "inline"
360    # works, but it also means that declaration-in-code warnings won't
361    # be issued.
362    # -v -fd -errwarn=E_DECLARATION_IN_CODE ...
363    WARN_CFLAGS="-errtags=yes -errwarn=E_BAD_PTR_INT_COMBINATION,E_BAD_PTR_INT_COMB_ARG,E_PTR_TO_VOID_IN_ARITHMETIC,E_NO_IMPLICIT_DECL_ALLOWED,E_ATTRIBUTE_PARAM_UNDEFINED"
364  fi
365fi
366AC_SUBST(WARN_CFLAGS)
367])dnl
368dnl
369dnl V5_AC_OUTPUT_MAKEFILE
370dnl
371AC_DEFUN(V5_AC_OUTPUT_MAKEFILE,
372[ifelse($1, , [_V5_AC_OUTPUT_MAKEFILE(.,$2)],[_V5_AC_OUTPUT_MAKEFILE($1,$2)])])
373dnl
374define(_V5_AC_OUTPUT_MAKEFILE,
375[ifelse($2, , ,AC_CONFIG_FILES($2))
376AC_FOREACH([DIR], [$1],dnl
377 [AC_CONFIG_FILES(DIR[/Makefile:$srcdir/pre.in:]DIR[/Makefile.in:]DIR[/deps:$srcdir/post.in])])
378AC_OUTPUT])dnl
379dnl
380dnl
381dnl KRB5_SOCKADDR_SA_LEN: define HAVE_SA_LEN if sockaddr contains the sa_len
382dnl component
383dnl
384AC_DEFUN([KRB5_SOCKADDR_SA_LEN],[ dnl
385AC_CHECK_MEMBER(struct sockaddr.sa_len,
386  AC_DEFINE(HAVE_SA_LEN,1,[Define if struct sockaddr contains sa_len])
387,,[#include <sys/types.h>
388#include <sys/socket.h>])])
389dnl
390dnl Check if stdarg or varargs is available *and compiles*; prefer stdarg.
391dnl (This was sent to djm for incorporation into autoconf 3/12/1996.  KR)
392dnl
393AC_DEFUN(AC_HEADER_STDARG, [
394
395AC_MSG_CHECKING([for stdarg.h])
396AC_CACHE_VAL(ac_cv_header_stdarg_h,
397[AC_TRY_COMPILE([#include <stdarg.h>], [
398  } /* ac_try_compile will have started a function body */
399  int aoeu (char *format, ...) {
400    va_list v;
401    int i;
402    va_start (v, format);
403    i = va_arg (v, int);
404    va_end (v);
405],ac_cv_header_stdarg_h=yes,ac_cv_header_stdarg_h=no)])dnl
406AC_MSG_RESULT($ac_cv_header_stdarg_h)
407if test $ac_cv_header_stdarg_h = yes; then
408  AC_DEFINE(HAVE_STDARG_H, 1, [Define if stdarg available and compiles])
409else
410
411AC_MSG_CHECKING([for varargs.h])
412AC_CACHE_VAL(ac_cv_header_varargs_h,
413[AC_TRY_COMPILE([#include <varargs.h>],[
414  } /* ac_try_compile will have started a function body */
415  int aoeu (va_alist) va_dcl {
416    va_list v;
417    int i;
418    va_start (v);
419    i = va_arg (v, int);
420    va_end (v);
421],ac_cv_header_varargs_h=yes,ac_cv_header_varargs_h=no)])dnl
422AC_MSG_RESULT($ac_cv_header_varargs_h)
423if test $ac_cv_header_varargs_h = yes; then
424  AC_DEFINE(HAVE_VARARGS_H, 1, [Define if varargs available and compiles])
425else
426  AC_MSG_ERROR(Neither stdarg nor varargs compile?)
427fi
428
429fi dnl stdarg test failure
430
431])dnl
432dnl
433dnl =============================================================
434dnl Internal function for testing for getsockname arguments
435dnl
436AC_DEFUN([TRY_GETSOCK_INT],[
437krb5_lib_var=`echo "$1 $2" | sed 'y% ./+-*%___p_p%'`
438AC_MSG_CHECKING([if getsockname() takes arguments $1 and $2])
439AC_CACHE_VAL(krb5_cv_getsockname_proto_$krb5_lib_var,
440[
441AC_TRY_COMPILE([#include <sys/types.h>
442#include <sys/socket.h>
443extern int getsockname(int, $1, $2);
444],,eval "krb5_cv_getsockname_proto_$krb5_lib_var=yes",
445    eval "krb5_cv_getsockname_proto_$krb5_lib_var=no")])
446if eval "test \"`echo '$krb5_cv_getsockname_proto_'$krb5_lib_var`\" = yes"; then
447	AC_MSG_RESULT(yes)
448	sock_set=yes; res1="$1"; res2="$2"
449else
450	AC_MSG_RESULT(no)
451fi
452])dnl
453dnl
454dnl Determines the types of the second and third arguments to getsockname().
455dnl
456AC_DEFUN([KRB5_GETSOCKNAME_ARGS],[
457sock_set=no
458for sock_arg1 in "struct sockaddr *" "void *"
459do
460  for sock_arg2 in "size_t *" "int *" "socklen_t *"
461  do
462	if test $sock_set = no; then
463	  TRY_GETSOCK_INT($sock_arg1, $sock_arg2)
464	fi
465  done
466done
467if test "$sock_set" = no; then
468  AC_MSG_NOTICE(assuming struct sockaddr and socklen_t for getsockname args)
469  res1="struct sockaddr *"
470  res2="socklen_t *"
471fi
472res1=`echo "$res1" | tr -d '*' | sed -e 's/ *$//'`
473res2=`echo "$res2" | tr -d '*' | sed -e 's/ *$//'`
474AC_DEFINE_UNQUOTED([GETSOCKNAME_ARG2_TYPE],$res1,[Type of pointer target for argument 2 to getsockname])
475AC_DEFINE_UNQUOTED([GETSOCKNAME_ARG3_TYPE],$res2,[Type of pointer target for argument 3 to getsockname])
476])dnl
477dnl
478dnl KRB5_AC_LIBUTIL
479dnl
480dnl Check for libutil, for NetBSD, et al.; needed for openpty() and
481dnl logwtmp() on some platforms.
482dnl
483AC_DEFUN([KRB5_AC_LIBUTIL],
484	[AC_CHECK_LIB(util, main,
485		[AC_DEFINE(HAVE_LIBUTIL,1,[Define if util library is available with openpty, logwtmp, etc])
486  UTIL_LIB=-lutil])dnl
487AC_SUBST(UTIL_LIB)
488])dnl
489