]> The Tcpdump Group git mirrors - tcpdump/blob - aclocal.m4
In AC_LBL_C_INIT, don't explicitly set V_CCOPT, just set $1, as is done
[tcpdump] / aclocal.m4
1 dnl @(#) $Header: /tcpdump/master/tcpdump/aclocal.m4,v 1.116 2008-09-25 21:45:50 guy Exp $ (LBL)
2 dnl
3 dnl Copyright (c) 1995, 1996, 1997, 1998
4 dnl The Regents of the University of California. All rights reserved.
5 dnl
6 dnl Redistribution and use in source and binary forms, with or without
7 dnl modification, are permitted provided that: (1) source code distributions
8 dnl retain the above copyright notice and this paragraph in its entirety, (2)
9 dnl distributions including binary code include the above copyright notice and
10 dnl this paragraph in its entirety in the documentation or other materials
11 dnl provided with the distribution, and (3) all advertising materials mentioning
12 dnl features or use of this software display the following acknowledgement:
13 dnl ``This product includes software developed by the University of California,
14 dnl Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
15 dnl the University nor the names of its contributors may be used to endorse
16 dnl or promote products derived from this software without specific prior
17 dnl written permission.
18 dnl THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
19 dnl WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
20 dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
21 dnl
22 dnl LBL autoconf macros
23 dnl
24
25 dnl
26 dnl Determine which compiler we're using (cc or gcc)
27 dnl If using gcc, determine the version number
28 dnl If using cc, require that it support ansi prototypes
29 dnl If using gcc, use -O2 (otherwise use -O)
30 dnl If using cc, explicitly specify /usr/local/include
31 dnl
32 dnl usage:
33 dnl
34 dnl AC_LBL_C_INIT(copt, incls)
35 dnl
36 dnl results:
37 dnl
38 dnl $1 (copt set)
39 dnl $2 (incls set)
40 dnl CC
41 dnl LDFLAGS
42 dnl ac_cv_lbl_gcc_vers
43 dnl LBL_CFLAGS
44 dnl
45 AC_DEFUN(AC_LBL_C_INIT,
46 [AC_PREREQ(2.12)
47 AC_BEFORE([$0], [AC_PROG_CC])
48 AC_BEFORE([$0], [AC_LBL_FIXINCLUDES])
49 AC_BEFORE([$0], [AC_LBL_DEVEL])
50 AC_ARG_WITH(gcc, [ --without-gcc don't use gcc])
51 $1="-O"
52 $2=""
53 if test "${srcdir}" != "." ; then
54 $2="-I\$(srcdir)"
55 fi
56 if test "${CFLAGS+set}" = set; then
57 LBL_CFLAGS="$CFLAGS"
58 fi
59 if test -z "$CC" ; then
60 case "$host_os" in
61
62 bsdi*)
63 AC_CHECK_PROG(SHLICC2, shlicc2, yes, no)
64 if test $SHLICC2 = yes ; then
65 CC=shlicc2
66 export CC
67 fi
68 ;;
69 esac
70 fi
71 if test -z "$CC" -a "$with_gcc" = no ; then
72 CC=cc
73 export CC
74 fi
75 AC_PROG_CC
76 if test "$GCC" = yes ; then
77 if test "$SHLICC2" = yes ; then
78 ac_cv_lbl_gcc_vers=2
79 $1="-O2"
80 else
81 AC_MSG_CHECKING(gcc version)
82 AC_CACHE_VAL(ac_cv_lbl_gcc_vers,
83 ac_cv_lbl_gcc_vers=`$CC -v 2>&1 | \
84 sed -e '/^gcc version /!d' \
85 -e 's/^gcc version //' \
86 -e 's/ .*//' -e 's/^[[[^0-9]]]*//' \
87 -e 's/\..*//'`)
88 AC_MSG_RESULT($ac_cv_lbl_gcc_vers)
89 if test $ac_cv_lbl_gcc_vers -gt 1 ; then
90 $1="-O2"
91 fi
92 fi
93 else
94 AC_MSG_CHECKING(that $CC handles ansi prototypes)
95 AC_CACHE_VAL(ac_cv_lbl_cc_ansi_prototypes,
96 AC_TRY_COMPILE(
97 [#include <sys/types.h>],
98 [int frob(int, char *)],
99 ac_cv_lbl_cc_ansi_prototypes=yes,
100 ac_cv_lbl_cc_ansi_prototypes=no))
101 AC_MSG_RESULT($ac_cv_lbl_cc_ansi_prototypes)
102 if test $ac_cv_lbl_cc_ansi_prototypes = no ; then
103 case "$host_os" in
104
105 hpux*)
106 AC_MSG_CHECKING(for HP-UX ansi compiler ($CC -Aa -D_HPUX_SOURCE))
107 savedcflags="$CFLAGS"
108 CFLAGS="-Aa -D_HPUX_SOURCE $CFLAGS"
109 AC_CACHE_VAL(ac_cv_lbl_cc_hpux_cc_aa,
110 AC_TRY_COMPILE(
111 [#include <sys/types.h>],
112 [int frob(int, char *)],
113 ac_cv_lbl_cc_hpux_cc_aa=yes,
114 ac_cv_lbl_cc_hpux_cc_aa=no))
115 AC_MSG_RESULT($ac_cv_lbl_cc_hpux_cc_aa)
116 if test $ac_cv_lbl_cc_hpux_cc_aa = no ; then
117 AC_MSG_ERROR(see the INSTALL doc for more info)
118 fi
119 CFLAGS="$savedcflags"
120 $1="-Aa $$1"
121 AC_DEFINE(_HPUX_SOURCE,1,[needed on HP-UX])
122 ;;
123
124 osf*)
125 AC_MSG_CHECKING(for ansi mode in DEC compiler ($CC -std1))
126 savedcflags="$CFLAGS"
127 CFLAGS="-std1"
128 AC_CACHE_VAL(ac_cv_lbl_cc_osf1_cc_std1,
129 AC_TRY_COMPILE(
130 [#include <sys/types.h>],
131 [int frob(int, char *)],
132 ac_cv_lbl_cc_osf1_cc_std1=yes,
133 ac_cv_lbl_cc_osf1_cc_std1=no))
134 AC_MSG_RESULT($ac_cv_lbl_cc_osf1_cc_std1)
135 if test $ac_cv_lbl_cc_osf1_cc_std1 = no ; then
136 AC_MSG_ERROR(see the INSTALL doc for more info)
137 fi
138 CFLAGS="$savedcflags"
139 $1="-std1 $$1"
140 ;;
141
142 *)
143 AC_MSG_ERROR(see the INSTALL doc for more info)
144 ;;
145 esac
146 fi
147 $2="$$2 -I/usr/local/include"
148 LDFLAGS="$LDFLAGS -L/usr/local/lib"
149
150 case "$host_os" in
151
152 irix*)
153 $1="$$1 -xansi -signed -O"
154 ;;
155
156 osf*)
157 #
158 # Presumed to be DEC OSF/1, Digital UNIX, or
159 # Tru64 UNIX.
160 #
161 $1="$$1 -O"
162 ;;
163
164 ultrix*)
165 AC_MSG_CHECKING(that Ultrix $CC hacks const in prototypes)
166 AC_CACHE_VAL(ac_cv_lbl_cc_const_proto,
167 AC_TRY_COMPILE(
168 [#include <sys/types.h>],
169 [struct a { int b; };
170 void c(const struct a *)],
171 ac_cv_lbl_cc_const_proto=yes,
172 ac_cv_lbl_cc_const_proto=no))
173 AC_MSG_RESULT($ac_cv_lbl_cc_const_proto)
174 if test $ac_cv_lbl_cc_const_proto = no ; then
175 AC_DEFINE(const,[],
176 [to handle Ultrix compilers that don't support const in prototypes])
177 fi
178 ;;
179 esac
180 fi
181 ])
182
183
184 #
185 # Try compiling a sample of the type of code that appears in
186 # gencode.c with "inline", "__inline__", and "__inline".
187 #
188 # Autoconf's AC_C_INLINE, at least in autoconf 2.13, isn't good enough,
189 # as it just tests whether a function returning "int" can be inlined;
190 # at least some versions of HP's C compiler can inline that, but can't
191 # inline a function that returns a struct pointer.
192 #
193 # Make sure we use the V_CCOPT flags, because some of those might
194 # disable inlining.
195 #
196 AC_DEFUN(AC_LBL_C_INLINE,
197 [AC_MSG_CHECKING(for inline)
198 save_CFLAGS="$CFLAGS"
199 CFLAGS="$V_CCOPT"
200 AC_CACHE_VAL(ac_cv_lbl_inline, [
201 ac_cv_lbl_inline=""
202 ac_lbl_cc_inline=no
203 for ac_lbl_inline in inline __inline__ __inline
204 do
205 AC_TRY_COMPILE(
206 [#define inline $ac_lbl_inline
207 static inline struct iltest *foo(void);
208 struct iltest {
209 int iltest1;
210 int iltest2;
211 };
212
213 static inline struct iltest *
214 foo()
215 {
216 static struct iltest xxx;
217
218 return &xxx;
219 }],,ac_lbl_cc_inline=yes,)
220 if test "$ac_lbl_cc_inline" = yes ; then
221 break;
222 fi
223 done
224 if test "$ac_lbl_cc_inline" = yes ; then
225 ac_cv_lbl_inline=$ac_lbl_inline
226 fi])
227 CFLAGS="$save_CFLAGS"
228 if test ! -z "$ac_cv_lbl_inline" ; then
229 AC_MSG_RESULT($ac_cv_lbl_inline)
230 else
231 AC_MSG_RESULT(no)
232 fi
233 AC_DEFINE_UNQUOTED(inline, $ac_cv_lbl_inline, [Define as token for inline if inlining supported])])
234
235 dnl
236 dnl Use pfopen.c if available and pfopen() not in standard libraries
237 dnl Require libpcap
238 dnl Look for libpcap in ..
239 dnl Use the installed libpcap if there is no local version
240 dnl
241 dnl usage:
242 dnl
243 dnl AC_LBL_LIBPCAP(pcapdep, incls)
244 dnl
245 dnl results:
246 dnl
247 dnl $1 (pcapdep set)
248 dnl $2 (incls appended)
249 dnl LIBS
250 dnl LBL_LIBS
251 dnl
252 AC_DEFUN(AC_LBL_LIBPCAP,
253 [AC_REQUIRE([AC_LBL_LIBRARY_NET])
254 dnl
255 dnl save a copy before locating libpcap.a
256 dnl
257 LBL_LIBS="$LIBS"
258 pfopen=/usr/examples/packetfilter/pfopen.c
259 if test -f $pfopen ; then
260 AC_CHECK_FUNCS(pfopen)
261 if test $ac_cv_func_pfopen = "no" ; then
262 AC_MSG_RESULT(Using $pfopen)
263 LIBS="$LIBS $pfopen"
264 fi
265 fi
266 AC_MSG_CHECKING(for local pcap library)
267 libpcap=FAIL
268 lastdir=FAIL
269 places=`ls $srcdir/.. | sed -e 's,/$,,' -e "s,^,$srcdir/../," | \
270 egrep '/libpcap-[[0-9]]*.[[0-9]]*(.[[0-9]]*)?([[ab]][[0-9]]*)?$'`
271 for dir in $places $srcdir/../libpcap $srcdir/libpcap ; do
272 basedir=`echo $dir | sed -e 's/[[ab]][[0-9]]*$//'`
273 if test $lastdir = $basedir ; then
274 dnl skip alphas when an actual release is present
275 continue;
276 fi
277 lastdir=$dir
278 if test -r $dir/libpcap.a ; then
279 libpcap=$dir/libpcap.a
280 d=$dir
281 dnl continue and select the last one that exists
282 fi
283 done
284 if test $libpcap = FAIL ; then
285 AC_MSG_RESULT(not found)
286
287 #
288 # Look for pcap-config.
289 #
290 AC_PATH_PROG(PCAP_CONFIG, pcap-config)
291 if test -n "$PCAP_CONFIG" ; then
292 #
293 # Found - use it to get the include flags for
294 # libpcap and the flags to link with libpcap.
295 #
296 $2="`\"$PCAP_CONFIG\" --cflags` $$2"
297 libpcap="`\"$PCAP_CONFIG\" --libs`"
298 else
299 #
300 # Not found; look for pcap.
301 #
302 AC_CHECK_LIB(pcap, main, libpcap="-lpcap")
303 if test $libpcap = FAIL ; then
304 AC_MSG_ERROR(see the INSTALL doc for more info)
305 fi
306 dnl
307 dnl Some versions of Red Hat Linux put "pcap.h" in
308 dnl "/usr/include/pcap"; had the LBL folks done so,
309 dnl that would have been a good idea, but for
310 dnl the Red Hat folks to do so just breaks source
311 dnl compatibility with other systems.
312 dnl
313 dnl We work around this by assuming that, as we didn't
314 dnl find a local libpcap, libpcap is in /usr/lib or
315 dnl /usr/local/lib and that the corresponding header
316 dnl file is under one of those directories; if we don't
317 dnl find it in either of those directories, we check to
318 dnl see if it's in a "pcap" subdirectory of them and,
319 dnl if so, add that subdirectory to the "-I" list.
320 dnl
321 dnl (We now also put pcap.h in /usr/include/pcap, but we
322 dnl leave behind a /usr/include/pcap.h that includes it,
323 dnl so you can still just include <pcap.h>.)
324 dnl
325 AC_MSG_CHECKING(for extraneous pcap header directories)
326 if test \( ! -r /usr/local/include/pcap.h \) -a \
327 \( ! -r /usr/include/pcap.h \); then
328 if test -r /usr/local/include/pcap/pcap.h; then
329 d="/usr/local/include/pcap"
330 elif test -r /usr/include/pcap/pcap.h; then
331 d="/usr/include/pcap"
332 fi
333 fi
334 if test -z "$d" ; then
335 AC_MSG_RESULT(not found)
336 else
337 $2="-I$d $$2"
338 AC_MSG_RESULT(found -- -I$d added)
339 fi
340 fi
341 else
342 $1=$libpcap
343 places=`ls $srcdir/.. | sed -e 's,/$,,' -e "s,^,$srcdir/../," | \
344 egrep '/libpcap-[[0-9]]*.[[0-9]]*(.[[0-9]]*)?([[ab]][[0-9]]*)?$'`
345 if test -r $d/pcap.h; then
346 $2="-I$d $$2"
347 elif test -r $places/pcap.h; then
348 $2="-I$places $$2"
349 else
350 AC_MSG_ERROR(cannot find pcap.h, see INSTALL)
351 fi
352 AC_MSG_RESULT($libpcap)
353 AC_PATH_PROG(PCAP_CONFIG, pcap-config,, $d)
354 if test -n "$PCAP_CONFIG"; then
355 #
356 # The libpcap directory has a pcap-config script.
357 # Use it to get any additioal libraries needed
358 # to link with the libpcap archive library in
359 # that directory
360 #
361 libpcap="$libpcap `\"$PCAP_CONFIG\" --additional-libs --static`"
362 fi
363 fi
364 LIBS="$libpcap $LIBS"
365 if ! test -n "$PCAP_CONFIG" ; then
366 #
367 # We don't have pcap-config; find out any additional link flags
368 # we need. (If we have pcap-config, we assume it tells us what
369 # we need.)
370 #
371 case "$host_os" in
372
373 aix*)
374 #
375 # If libpcap is DLPI-based, we have to use /lib/pse.exp if
376 # present, as we use the STREAMS routines.
377 #
378 # (XXX - true only if we're linking with a static libpcap?)
379 #
380 pseexe="/lib/pse.exp"
381 AC_MSG_CHECKING(for $pseexe)
382 if test -f $pseexe ; then
383 AC_MSG_RESULT(yes)
384 LIBS="$LIBS -I:$pseexe"
385 fi
386
387 #
388 # If libpcap is BPF-based, we need "-lodm" and "-lcfg", as
389 # we use them to load the BPF module.
390 #
391 # (XXX - true only if we're linking with a static libpcap?)
392 #
393 LIBS="$LIBS -lodm -lcfg"
394 ;;
395 esac
396 fi
397
398 dnl
399 dnl Check for "pcap_list_datalinks()", "pcap_set_datalink()",
400 dnl and "pcap_datalink_name_to_val()", and use substitute versions
401 dnl if they're not present.
402 dnl
403 AC_CHECK_FUNC(pcap_list_datalinks,
404 AC_DEFINE(HAVE_PCAP_LIST_DATALINKS),
405 [
406 AC_LIBOBJ(datalinks)
407 ])
408 AC_CHECK_FUNC(pcap_set_datalink,
409 AC_DEFINE(HAVE_PCAP_SET_DATALINK))
410 AC_CHECK_FUNC(pcap_datalink_name_to_val,
411 [
412 AC_DEFINE(HAVE_PCAP_DATALINK_NAME_TO_VAL)
413 AC_CHECK_FUNC(pcap_datalink_val_to_description,
414 AC_DEFINE(HAVE_PCAP_DATALINK_VAL_TO_DESCRIPTION),
415 [
416 AC_LIBOBJ(dlnames)
417 ])
418 ],
419 [
420 AC_LIBOBJ(dlnames)
421 ])
422
423 dnl
424 dnl Check for "pcap_breakloop()"; you can't substitute for it if
425 dnl it's absent (it has hooks into the live capture routines),
426 dnl so just define the HAVE_ value if it's there.
427 dnl
428 AC_CHECK_FUNCS(pcap_breakloop)
429
430 dnl
431 dnl Check for "pcap_dump_ftell()" and use a substitute version
432 dnl if it's not present.
433 AC_CHECK_FUNC(pcap_dump_ftell,
434 AC_DEFINE(HAVE_PCAP_DUMP_FTELL),
435 [
436 AC_LIBOBJ(pcap_dump_ftell)
437 ])
438 ])
439
440 dnl
441 dnl Define RETSIGTYPE and RETSIGVAL
442 dnl
443 dnl usage:
444 dnl
445 dnl AC_LBL_TYPE_SIGNAL
446 dnl
447 dnl results:
448 dnl
449 dnl RETSIGTYPE (defined)
450 dnl RETSIGVAL (defined)
451 dnl
452 AC_DEFUN(AC_LBL_TYPE_SIGNAL,
453 [AC_BEFORE([$0], [AC_LBL_LIBPCAP])
454 AC_TYPE_SIGNAL
455 if test "$ac_cv_type_signal" = void ; then
456 AC_DEFINE(RETSIGVAL,[],[return value of signal handlers])
457 else
458 AC_DEFINE(RETSIGVAL,(0),[return value of signal handlers])
459 fi
460 case "$host_os" in
461
462 irix*)
463 AC_DEFINE(_BSD_SIGNALS,1,[get BSD semantics on Irix])
464 ;;
465
466 *)
467 dnl prefer sigaction() to sigset()
468 AC_CHECK_FUNCS(sigaction)
469 if test $ac_cv_func_sigaction = no ; then
470 AC_CHECK_FUNCS(sigset)
471 fi
472 ;;
473 esac])
474
475 dnl
476 dnl If using gcc, make sure we have ANSI ioctl definitions
477 dnl
478 dnl usage:
479 dnl
480 dnl AC_LBL_FIXINCLUDES
481 dnl
482 AC_DEFUN(AC_LBL_FIXINCLUDES,
483 [if test "$GCC" = yes ; then
484 AC_MSG_CHECKING(for ANSI ioctl definitions)
485 AC_CACHE_VAL(ac_cv_lbl_gcc_fixincludes,
486 AC_TRY_COMPILE(
487 [/*
488 * This generates a "duplicate case value" when fixincludes
489 * has not be run.
490 */
491 # include <sys/types.h>
492 # include <sys/time.h>
493 # include <sys/ioctl.h>
494 # ifdef HAVE_SYS_IOCCOM_H
495 # include <sys/ioccom.h>
496 # endif],
497 [switch (0) {
498 case _IO('A', 1):;
499 case _IO('B', 1):;
500 }],
501 ac_cv_lbl_gcc_fixincludes=yes,
502 ac_cv_lbl_gcc_fixincludes=no))
503 AC_MSG_RESULT($ac_cv_lbl_gcc_fixincludes)
504 if test $ac_cv_lbl_gcc_fixincludes = no ; then
505 # Don't cache failure
506 unset ac_cv_lbl_gcc_fixincludes
507 AC_MSG_ERROR(see the INSTALL for more info)
508 fi
509 fi])
510
511 dnl
512 dnl Check for flex, default to lex
513 dnl Require flex 2.4 or higher
514 dnl Check for bison, default to yacc
515 dnl Default to lex/yacc if both flex and bison are not available
516 dnl Define the yy prefix string if using flex and bison
517 dnl
518 dnl usage:
519 dnl
520 dnl AC_LBL_LEX_AND_YACC(lex, yacc, yyprefix)
521 dnl
522 dnl results:
523 dnl
524 dnl $1 (lex set)
525 dnl $2 (yacc appended)
526 dnl $3 (optional flex and bison -P prefix)
527 dnl
528 AC_DEFUN(AC_LBL_LEX_AND_YACC,
529 [AC_ARG_WITH(flex, [ --without-flex don't use flex])
530 AC_ARG_WITH(bison, [ --without-bison don't use bison])
531 if test "$with_flex" = no ; then
532 $1=lex
533 else
534 AC_CHECK_PROGS($1, flex, lex)
535 fi
536 if test "$$1" = flex ; then
537 # The -V flag was added in 2.4
538 AC_MSG_CHECKING(for flex 2.4 or higher)
539 AC_CACHE_VAL(ac_cv_lbl_flex_v24,
540 if flex -V >/dev/null 2>&1; then
541 ac_cv_lbl_flex_v24=yes
542 else
543 ac_cv_lbl_flex_v24=no
544 fi)
545 AC_MSG_RESULT($ac_cv_lbl_flex_v24)
546 if test $ac_cv_lbl_flex_v24 = no ; then
547 s="2.4 or higher required"
548 AC_MSG_WARN(ignoring obsolete flex executable ($s))
549 $1=lex
550 fi
551 fi
552 if test "$with_bison" = no ; then
553 $2=yacc
554 else
555 AC_CHECK_PROGS($2, bison, yacc)
556 fi
557 if test "$$2" = bison ; then
558 $2="$$2 -y"
559 fi
560 if test "$$1" != lex -a "$$2" = yacc -o "$$1" = lex -a "$$2" != yacc ; then
561 AC_MSG_WARN(don't have both flex and bison; reverting to lex/yacc)
562 $1=lex
563 $2=yacc
564 fi
565 if test "$$1" = flex -a -n "$3" ; then
566 $1="$$1 -P$3"
567 $2="$$2 -p $3"
568 fi])
569
570 dnl
571 dnl Checks to see if union wait is used with WEXITSTATUS()
572 dnl
573 dnl usage:
574 dnl
575 dnl AC_LBL_UNION_WAIT
576 dnl
577 dnl results:
578 dnl
579 dnl DECLWAITSTATUS (defined)
580 dnl
581 AC_DEFUN(AC_LBL_UNION_WAIT,
582 [AC_MSG_CHECKING(if union wait is used)
583 AC_CACHE_VAL(ac_cv_lbl_union_wait,
584 AC_TRY_COMPILE([
585 # include <sys/types.h>
586 # include <sys/wait.h>],
587 [int status;
588 u_int i = WEXITSTATUS(status);
589 u_int j = waitpid(0, &status, 0);],
590 ac_cv_lbl_union_wait=no,
591 ac_cv_lbl_union_wait=yes))
592 AC_MSG_RESULT($ac_cv_lbl_union_wait)
593 if test $ac_cv_lbl_union_wait = yes ; then
594 AC_DEFINE(DECLWAITSTATUS,union wait,[type for wait])
595 else
596 AC_DEFINE(DECLWAITSTATUS,int,[type for wait])
597 fi])
598
599 dnl
600 dnl Checks to see if the sockaddr struct has the 4.4 BSD sa_len member
601 dnl
602 dnl usage:
603 dnl
604 dnl AC_LBL_SOCKADDR_SA_LEN
605 dnl
606 dnl results:
607 dnl
608 dnl HAVE_SOCKADDR_SA_LEN (defined)
609 dnl
610 AC_DEFUN(AC_LBL_SOCKADDR_SA_LEN,
611 [AC_MSG_CHECKING(if sockaddr struct has the sa_len member)
612 AC_CACHE_VAL(ac_cv_lbl_sockaddr_has_sa_len,
613 AC_TRY_COMPILE([
614 # include <sys/types.h>
615 # include <sys/socket.h>],
616 [u_int i = sizeof(((struct sockaddr *)0)->sa_len)],
617 ac_cv_lbl_sockaddr_has_sa_len=yes,
618 ac_cv_lbl_sockaddr_has_sa_len=no))
619 AC_MSG_RESULT($ac_cv_lbl_sockaddr_has_sa_len)
620 if test $ac_cv_lbl_sockaddr_has_sa_len = yes ; then
621 AC_DEFINE(HAVE_SOCKADDR_SA_LEN,1,[if struct sockaddr has the sa_len member])
622 fi])
623
624 dnl
625 dnl Checks to see if -R is used
626 dnl
627 dnl usage:
628 dnl
629 dnl AC_LBL_HAVE_RUN_PATH
630 dnl
631 dnl results:
632 dnl
633 dnl ac_cv_lbl_have_run_path (yes or no)
634 dnl
635 AC_DEFUN(AC_LBL_HAVE_RUN_PATH,
636 [AC_MSG_CHECKING(for ${CC-cc} -R)
637 AC_CACHE_VAL(ac_cv_lbl_have_run_path,
638 [echo 'main(){}' > conftest.c
639 ${CC-cc} -o conftest conftest.c -R/a1/b2/c3 >conftest.out 2>&1
640 if test ! -s conftest.out ; then
641 ac_cv_lbl_have_run_path=yes
642 else
643 ac_cv_lbl_have_run_path=no
644 fi
645 rm -f conftest*])
646 AC_MSG_RESULT($ac_cv_lbl_have_run_path)
647 ])
648
649 dnl
650 dnl Check whether a given format can be used to print 64-bit integers
651 dnl
652 AC_DEFUN(AC_LBL_CHECK_64BIT_FORMAT,
653 [
654 AC_MSG_CHECKING([whether %$1x can be used to format 64-bit integers])
655 AC_RUN_IFELSE(
656 [
657 AC_LANG_SOURCE(
658 [[
659 # ifdef HAVE_INTTYPES_H
660 #include <inttypes.h>
661 # endif
662 # ifdef HAVE_SYS_BITYPES_H
663 #include <sys/bitypes.h>
664 # endif
665 #include <stdio.h>
666 #include <sys/types.h>
667
668 main()
669 {
670 u_int64_t t = 1;
671 char strbuf[16+1];
672 sprintf(strbuf, "%016$1x", t << 32);
673 if (strcmp(strbuf, "0000000100000000") == 0)
674 exit(0);
675 else
676 exit(1);
677 }
678 ]])
679 ],
680 [
681 AC_DEFINE(PRId64, "$1d")
682 AC_DEFINE(PRIo64, "$1o")
683 AC_DEFINE(PRIx64, "$1x")
684 AC_DEFINE(PRIu64, "$1u")
685 AC_MSG_RESULT(yes)
686 ],
687 [
688 AC_MSG_RESULT(no)
689 $2
690 ])
691 ])
692
693 dnl
694 dnl Checks to see if unaligned memory accesses fail
695 dnl
696 dnl usage:
697 dnl
698 dnl AC_LBL_UNALIGNED_ACCESS
699 dnl
700 dnl results:
701 dnl
702 dnl LBL_ALIGN (DEFINED)
703 dnl
704 AC_DEFUN(AC_LBL_UNALIGNED_ACCESS,
705 [AC_MSG_CHECKING(if unaligned accesses fail)
706 AC_CACHE_VAL(ac_cv_lbl_unaligned_fail,
707 [case "$host_cpu" in
708
709 #
710 # These are CPU types where:
711 #
712 # the CPU faults on an unaligned access, but at least some
713 # OSes that support that CPU catch the fault and simulate
714 # the unaligned access (e.g., Alpha/{Digital,Tru64} UNIX) -
715 # the simulation is slow, so we don't want to use it;
716 #
717 # the CPU, I infer (from the old
718 #
719 # XXX: should also check that they don't do weird things (like on arm)
720 #
721 # comment) doesn't fault on unaligned accesses, but doesn't
722 # do a normal unaligned fetch, either (e.g., presumably, ARM);
723 #
724 # for whatever reason, the test program doesn't work
725 # (this has been claimed to be the case for several of those
726 # CPUs - I don't know what the problem is; the problem
727 # was reported as "the test program dumps core" for SuperH,
728 # but that's what the test program is *supposed* to do -
729 # it dumps core before it writes anything, so the test
730 # for an empty output file should find an empty output
731 # file and conclude that unaligned accesses don't work).
732 #
733 # This run-time test won't work if you're cross-compiling, so
734 # in order to support cross-compiling for a particular CPU,
735 # we have to wire in the list of CPU types anyway, as far as
736 # I know, so perhaps we should just have a set of CPUs on
737 # which we know it doesn't work, a set of CPUs on which we
738 # know it does work, and have the script just fail on other
739 # cpu types and update it when such a failure occurs.
740 #
741 alpha*|arm*|bfin*|hp*|mips*|sh*|sparc*|ia64|nv1)
742 ac_cv_lbl_unaligned_fail=yes
743 ;;
744
745 *)
746 cat >conftest.c <<EOF
747 # include <sys/types.h>
748 # include <sys/wait.h>
749 # include <stdio.h>
750 unsigned char a[[5]] = { 1, 2, 3, 4, 5 };
751 main() {
752 unsigned int i;
753 pid_t pid;
754 int status;
755 /* avoid "core dumped" message */
756 pid = fork();
757 if (pid < 0)
758 exit(2);
759 if (pid > 0) {
760 /* parent */
761 pid = waitpid(pid, &status, 0);
762 if (pid < 0)
763 exit(3);
764 exit(!WIFEXITED(status));
765 }
766 /* child */
767 i = *(unsigned int *)&a[[1]];
768 printf("%d\n", i);
769 exit(0);
770 }
771 EOF
772 ${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS \
773 conftest.c $LIBS >/dev/null 2>&1
774 if test ! -x conftest ; then
775 dnl failed to compile for some reason
776 ac_cv_lbl_unaligned_fail=yes
777 else
778 ./conftest >conftest.out
779 if test ! -s conftest.out ; then
780 ac_cv_lbl_unaligned_fail=yes
781 else
782 ac_cv_lbl_unaligned_fail=no
783 fi
784 fi
785 rm -f conftest* core core.conftest
786 ;;
787 esac])
788 AC_MSG_RESULT($ac_cv_lbl_unaligned_fail)
789 if test $ac_cv_lbl_unaligned_fail = yes ; then
790 AC_DEFINE(LBL_ALIGN,1,[if unaligned access fails])
791 fi])
792
793 dnl
794 dnl If using gcc and the file .devel exists:
795 dnl Compile with -g (if supported) and -Wall
796 dnl If using gcc 2 or later, do extra prototype checking and some other
797 dnl checks
798 dnl If an os prototype include exists, symlink os-proto.h to it
799 dnl
800 dnl usage:
801 dnl
802 dnl AC_LBL_DEVEL(copt)
803 dnl
804 dnl results:
805 dnl
806 dnl $1 (copt appended)
807 dnl HAVE_OS_PROTO_H (defined)
808 dnl os-proto.h (symlinked)
809 dnl
810 AC_DEFUN(AC_LBL_DEVEL,
811 [rm -f os-proto.h
812 if test "${LBL_CFLAGS+set}" = set; then
813 $1="$$1 ${LBL_CFLAGS}"
814 fi
815 if test -f .devel ; then
816 if test "$GCC" = yes ; then
817 if test "${LBL_CFLAGS+set}" != set; then
818 if test "$ac_cv_prog_cc_g" = yes ; then
819 $1="-g $$1"
820 fi
821 $1="$$1 -Wall"
822 if test $ac_cv_lbl_gcc_vers -gt 1 ; then
823 $1="$$1 -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wpointer-arith -W"
824 fi
825 fi
826 else
827 case "$host_os" in
828
829 irix6*)
830 V_CCOPT="$V_CCOPT -n32"
831 ;;
832
833 *)
834 ;;
835 esac
836 fi
837 os=`echo $host_os | sed -e 's/\([[0-9]][[0-9]]*\)[[^0-9]].*$/\1/'`
838 name="lbl/os-$os.h"
839 if test -f $name ; then
840 ln -s $name os-proto.h
841 AC_DEFINE(HAVE_OS_PROTO_H, 1,
842 [if there's an os_proto.h for this platform, to use additional prototypes])
843 else
844 AC_MSG_WARN(can't find $name)
845 fi
846 fi])
847
848 dnl
849 dnl Improved version of AC_CHECK_LIB
850 dnl
851 dnl Thanks to John Hawkinson (jhawk@mit.edu)
852 dnl
853 dnl usage:
854 dnl
855 dnl AC_LBL_CHECK_LIB(LIBRARY, FUNCTION [, ACTION-IF-FOUND [,
856 dnl ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
857 dnl
858 dnl results:
859 dnl
860 dnl LIBS
861 dnl
862 dnl XXX - "AC_LBL_LIBRARY_NET" was redone to use "AC_SEARCH_LIBS"
863 dnl rather than "AC_LBL_CHECK_LIB", so this isn't used any more.
864 dnl We keep it around for reference purposes in case it's ever
865 dnl useful in the future.
866 dnl
867
868 define(AC_LBL_CHECK_LIB,
869 [AC_MSG_CHECKING([for $2 in -l$1])
870 dnl Use a cache variable name containing the library, function
871 dnl name, and extra libraries to link with, because the test really is
872 dnl for library $1 defining function $2, when linked with potinal
873 dnl library $5, not just for library $1. Separate tests with the same
874 dnl $1 and different $2's or $5's may have different results.
875 ac_lib_var=`echo $1['_']$2['_']$5 | sed 'y%./+- %__p__%'`
876 AC_CACHE_VAL(ac_cv_lbl_lib_$ac_lib_var,
877 [ac_save_LIBS="$LIBS"
878 LIBS="-l$1 $5 $LIBS"
879 AC_TRY_LINK(dnl
880 ifelse([$2], [main], , dnl Avoid conflicting decl of main.
881 [/* Override any gcc2 internal prototype to avoid an error. */
882 ]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus
883 extern "C"
884 #endif
885 ])dnl
886 [/* We use char because int might match the return type of a gcc2
887 builtin and then its argument prototype would still apply. */
888 char $2();
889 ]),
890 [$2()],
891 eval "ac_cv_lbl_lib_$ac_lib_var=yes",
892 eval "ac_cv_lbl_lib_$ac_lib_var=no")
893 LIBS="$ac_save_LIBS"
894 ])dnl
895 if eval "test \"`echo '$ac_cv_lbl_lib_'$ac_lib_var`\" = yes"; then
896 AC_MSG_RESULT(yes)
897 ifelse([$3], ,
898 [changequote(, )dnl
899 ac_tr_lib=HAVE_LIB`echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g' \
900 -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
901 changequote([, ])dnl
902 AC_DEFINE_UNQUOTED($ac_tr_lib)
903 LIBS="-l$1 $LIBS"
904 ], [$3])
905 else
906 AC_MSG_RESULT(no)
907 ifelse([$4], , , [$4
908 ])dnl
909 fi
910 ])
911
912 dnl
913 dnl AC_LBL_LIBRARY_NET
914 dnl
915 dnl This test is for network applications that need socket() and
916 dnl gethostbyname() -ish functions. Under Solaris, those applications
917 dnl need to link with "-lsocket -lnsl". Under IRIX, they need to link
918 dnl with "-lnsl" but should *not* link with "-lsocket" because
919 dnl libsocket.a breaks a number of things (for instance:
920 dnl gethostbyname() under IRIX 5.2, and snoop sockets under most
921 dnl versions of IRIX).
922 dnl
923 dnl Unfortunately, many application developers are not aware of this,
924 dnl and mistakenly write tests that cause -lsocket to be used under
925 dnl IRIX. It is also easy to write tests that cause -lnsl to be used
926 dnl under operating systems where neither are necessary (or useful),
927 dnl such as SunOS 4.1.4, which uses -lnsl for TLI.
928 dnl
929 dnl This test exists so that every application developer does not test
930 dnl this in a different, and subtly broken fashion.
931
932 dnl It has been argued that this test should be broken up into two
933 dnl seperate tests, one for the resolver libraries, and one for the
934 dnl libraries necessary for using Sockets API. Unfortunately, the two
935 dnl are carefully intertwined and allowing the autoconf user to use
936 dnl them independantly potentially results in unfortunate ordering
937 dnl dependancies -- as such, such component macros would have to
938 dnl carefully use indirection and be aware if the other components were
939 dnl executed. Since other autoconf macros do not go to this trouble,
940 dnl and almost no applications use sockets without the resolver, this
941 dnl complexity has not been implemented.
942 dnl
943 dnl The check for libresolv is in case you are attempting to link
944 dnl statically and happen to have a libresolv.a lying around (and no
945 dnl libnsl.a).
946 dnl
947 AC_DEFUN(AC_LBL_LIBRARY_NET, [
948 # Most operating systems have gethostbyname() in the default searched
949 # libraries (i.e. libc):
950 # Some OSes (eg. Solaris) place it in libnsl
951 # Some strange OSes (SINIX) have it in libsocket:
952 AC_SEARCH_LIBS(gethostbyname, nsl socket resolv)
953 # Unfortunately libsocket sometimes depends on libnsl and
954 # AC_SEARCH_LIBS isn't up to the task of handling dependencies like this.
955 if test "$ac_cv_search_gethostbyname" = "no"
956 then
957 AC_CHECK_LIB(socket, gethostbyname,
958 LIBS="-lsocket -lnsl $LIBS", , -lnsl)
959 fi
960 AC_SEARCH_LIBS(socket, socket, ,
961 AC_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", , -lnsl))
962 # DLPI needs putmsg under HPUX so test for -lstr while we're at it
963 AC_SEARCH_LIBS(putmsg, str)
964 ])
965
966 dnl Copyright (c) 1999 WIDE Project. All rights reserved.
967 dnl
968 dnl Redistribution and use in source and binary forms, with or without
969 dnl modification, are permitted provided that the following conditions
970 dnl are met:
971 dnl 1. Redistributions of source code must retain the above copyright
972 dnl notice, this list of conditions and the following disclaimer.
973 dnl 2. Redistributions in binary form must reproduce the above copyright
974 dnl notice, this list of conditions and the following disclaimer in the
975 dnl documentation and/or other materials provided with the distribution.
976 dnl 3. Neither the name of the project nor the names of its contributors
977 dnl may be used to endorse or promote products derived from this software
978 dnl without specific prior written permission.
979 dnl
980 dnl THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
981 dnl ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
982 dnl IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
983 dnl ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
984 dnl FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
985 dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
986 dnl OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
987 dnl HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
988 dnl LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
989 dnl OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
990 dnl SUCH DAMAGE.
991
992 dnl
993 dnl Checks to see if AF_INET6 is defined
994 AC_DEFUN(AC_CHECK_AF_INET6, [
995 AC_MSG_CHECKING(for AF_INET6)
996 AC_CACHE_VAL($1,
997 AC_TRY_COMPILE([
998 # include <sys/types.h>
999 # include <sys/socket.h>],
1000 [int a = AF_INET6],
1001 $1=yes,
1002 $1=no))
1003 AC_MSG_RESULT($$1)
1004 if test $$1 = yes ; then
1005 AC_DEFINE(HAVE_AF_INET6)
1006 fi
1007 ])
1008
1009 dnl
1010 dnl Checks to see if the sockaddr struct has the 4.4 BSD sa_len member
1011 dnl borrowed from LBL libpcap
1012 AC_DEFUN(AC_CHECK_SA_LEN, [
1013 AC_MSG_CHECKING(if sockaddr struct has sa_len member)
1014 AC_CACHE_VAL($1,
1015 AC_TRY_COMPILE([
1016 # include <sys/types.h>
1017 # include <sys/socket.h>],
1018 [u_int i = sizeof(((struct sockaddr *)0)->sa_len)],
1019 $1=yes,
1020 $1=no))
1021 AC_MSG_RESULT($$1)
1022 if test $$1 = yes ; then
1023 AC_DEFINE(HAVE_SOCKADDR_SA_LEN)
1024 fi
1025 ])
1026
1027 dnl
1028 dnl Checks for portable prototype declaration macro
1029 AC_DEFUN(AC_CHECK_PORTABLE_PROTO, [
1030 AC_MSG_CHECKING(for __P)
1031 AC_CACHE_VAL($1,
1032 AC_TRY_COMPILE([
1033 # include <unistd.h>],
1034 [int f __P(())],
1035 $1=yes,
1036 $1=no))
1037 AC_MSG_RESULT($$1)
1038 if test $$1 = yes; then
1039 AC_DEFINE(HAVE_PORTABLE_PROTOTYPE)
1040 fi
1041 ])
1042
1043 dnl checks for u_intXX_t
1044 AC_DEFUN(AC_CHECK_BITTYPES, [
1045 $1=yes
1046 dnl check for u_int8_t
1047 AC_MSG_CHECKING(for u_int8_t)
1048 AC_CACHE_VAL(ac_cv_u_int8_t,
1049 AC_TRY_COMPILE([
1050 # include <sys/types.h>],
1051 [u_int8_t i],
1052 ac_cv_u_int8_t=yes,
1053 ac_cv_u_int8_t=no))
1054 AC_MSG_RESULT($ac_cv_u_int8_t)
1055 if test $ac_cv_u_int8_t = yes; then
1056 AC_DEFINE(HAVE_U_INT8_T)
1057 else
1058 $1=no
1059 fi
1060 dnl check for u_int16_t
1061 AC_MSG_CHECKING(for u_int16_t)
1062 AC_CACHE_VAL(ac_cv_u_int16_t,
1063 AC_TRY_COMPILE([
1064 # include <sys/types.h>],
1065 [u_int16_t i],
1066 ac_cv_u_int16_t=yes,
1067 ac_cv_u_int16_t=no))
1068 AC_MSG_RESULT($ac_cv_u_int16_t)
1069 if test $ac_cv_u_int16_t = yes; then
1070 AC_DEFINE(HAVE_U_INT16_T)
1071 else
1072 $1=no
1073 fi
1074 dnl check for u_int32_t
1075 AC_MSG_CHECKING(for u_int32_t)
1076 AC_CACHE_VAL(ac_cv_u_int32_t,
1077 AC_TRY_COMPILE([
1078 # include <sys/types.h>],
1079 [u_int32_t i],
1080 ac_cv_u_int32_t=yes,
1081 ac_cv_u_int32_t=no))
1082 AC_MSG_RESULT($ac_cv_u_int32_t)
1083 if test $ac_cv_u_int32_t = yes; then
1084 AC_DEFINE(HAVE_U_INT32_T)
1085 else
1086 $1=no
1087 fi
1088 dnl check for u_int64_t
1089 AC_MSG_CHECKING(for u_int64_t)
1090 AC_CACHE_VAL(ac_cv_u_int64_t,
1091 AC_TRY_COMPILE([
1092 # include <sys/types.h>],
1093 [u_int64_t i],
1094 ac_cv_u_int64_t=yes,
1095 ac_cv_u_int64_t=no))
1096 AC_MSG_RESULT($ac_cv_u_int64_t)
1097 if test $ac_cv_u_int64_t = yes; then
1098 AC_DEFINE(HAVE_U_INT64_T)
1099 else
1100 $1=no
1101 fi
1102 ])
1103
1104 dnl
1105 dnl Checks for addrinfo structure
1106 AC_DEFUN(AC_STRUCT_ADDRINFO, [
1107 AC_MSG_CHECKING(for addrinfo)
1108 AC_CACHE_VAL($1,
1109 AC_TRY_COMPILE([
1110 # include <netdb.h>],
1111 [struct addrinfo a],
1112 $1=yes,
1113 $1=no))
1114 AC_MSG_RESULT($$1)
1115 if test $$1 = yes; then
1116 AC_DEFINE(HAVE_ADDRINFO)
1117 else
1118 AC_DEFINE(NEED_ADDRINFO_H)
1119 fi
1120 ])
1121
1122 dnl
1123 dnl Checks for NI_MAXSERV
1124 AC_DEFUN(AC_NI_MAXSERV, [
1125 AC_MSG_CHECKING(for NI_MAXSERV)
1126 AC_CACHE_VAL($1,
1127 AC_EGREP_CPP(yes, [#include <netdb.h>
1128 #ifdef NI_MAXSERV
1129 yes
1130 #endif],
1131 $1=yes,
1132 $1=no))
1133 AC_MSG_RESULT($$1)
1134 if test $$1 != yes; then
1135 AC_DEFINE(NEED_ADDRINFO_H)
1136 fi
1137 ])
1138
1139 dnl
1140 dnl Checks for NI_NAMEREQD
1141 AC_DEFUN(AC_NI_NAMEREQD, [
1142 AC_MSG_CHECKING(for NI_NAMEREQD)
1143 AC_CACHE_VAL($1,
1144 AC_EGREP_CPP(yes, [#include <netdb.h>
1145 #ifdef NI_NOFQDN
1146 yes
1147 #endif],
1148 $1=yes,
1149 $1=no))
1150 AC_MSG_RESULT($$1)
1151 if test $$1 != yes; then
1152 AC_DEFINE(NEED_ADDRINFO_H)
1153 fi
1154 ])
1155
1156 dnl
1157 dnl Checks for sockaddr_storage structure
1158 AC_DEFUN(AC_STRUCT_SA_STORAGE, [
1159 AC_MSG_CHECKING(for sockaddr_storage)
1160 AC_CACHE_VAL($1,
1161 AC_TRY_COMPILE([
1162 # include <sys/types.h>
1163 # include <sys/socket.h>],
1164 [struct sockaddr_storage s],
1165 $1=yes,
1166 $1=no))
1167 AC_MSG_RESULT($$1)
1168 if test $$1 = yes; then
1169 AC_DEFINE(HAVE_SOCKADDR_STORAGE)
1170 fi
1171 ])
1172
1173 dnl
1174 dnl Checks for macro of IP address size
1175 AC_DEFUN(AC_CHECK_ADDRSZ, [
1176 $1=yes
1177 dnl check for INADDRSZ
1178 AC_MSG_CHECKING(for INADDRSZ)
1179 AC_CACHE_VAL(ac_cv_inaddrsz,
1180 AC_TRY_COMPILE([
1181 # include <arpa/nameser.h>],
1182 [int a = INADDRSZ],
1183 ac_cv_inaddrsz=yes,
1184 ac_cv_inaddrsz=no))
1185 AC_MSG_RESULT($ac_cv_inaddrsz)
1186 if test $ac_cv_inaddrsz = yes; then
1187 AC_DEFINE(HAVE_INADDRSZ)
1188 else
1189 $1=no
1190 fi
1191 dnl check for IN6ADDRSZ
1192 AC_MSG_CHECKING(for IN6ADDRSZ)
1193 AC_CACHE_VAL(ac_cv_in6addrsz,
1194 AC_TRY_COMPILE([
1195 # include <arpa/nameser.h>],
1196 [int a = IN6ADDRSZ],
1197 ac_cv_in6addrsz=yes,
1198 ac_cv_in6addrsz=no))
1199 AC_MSG_RESULT($ac_cv_in6addrsz)
1200 if test $ac_cv_in6addrsz = yes; then
1201 AC_DEFINE(HAVE_IN6ADDRSZ)
1202 else
1203 $1=no
1204 fi
1205 ])
1206
1207 dnl
1208 dnl check for RES_USE_INET6
1209 AC_DEFUN(AC_CHECK_RES_USE_INET6, [
1210 AC_MSG_CHECKING(for RES_USE_INET6)
1211 AC_CACHE_VAL($1,
1212 AC_TRY_COMPILE([
1213 # include <sys/types.h>
1214 # include <netinet/in.h>
1215 # include <resolv.h>],
1216 [int a = RES_USE_INET6],
1217 $1=yes,
1218 $1=no))
1219 AC_MSG_RESULT($$1)
1220 if test $$1 = yes; then
1221 AC_DEFINE(HAVE_RES_USE_INET6)
1222 fi
1223 ])
1224
1225 dnl
1226 dnl check for AAAA
1227 AC_DEFUN(AC_CHECK_AAAA, [
1228 AC_MSG_CHECKING(for AAAA)
1229 AC_CACHE_VAL($1,
1230 AC_TRY_COMPILE([
1231 # include <sys/types.h>
1232 # include <arpa/nameser.h>],
1233 [int a = T_AAAA],
1234 $1=yes,
1235 $1=no))
1236 AC_MSG_RESULT($$1)
1237 if test $$1 = yes; then
1238 AC_DEFINE(HAVE_AAAA)
1239 fi
1240 ])
1241
1242 dnl
1243 dnl check for struct res_state_ext
1244 AC_DEFUN(AC_STRUCT_RES_STATE_EXT, [
1245 AC_MSG_CHECKING(for res_state_ext)
1246 AC_CACHE_VAL($1,
1247 AC_TRY_COMPILE([
1248 # include <sys/types.h>
1249 # include <netinet/in.h>
1250 # include <netinet6/in6.h>
1251 # include <resolv.h>],
1252 [struct __res_state_ext e],
1253 $1=yes,
1254 $1=no))
1255 AC_MSG_RESULT($$1)
1256 if test $$1 = yes; then
1257 AC_DEFINE(HAVE_RES_STATE_EXT)
1258 fi
1259 ])
1260
1261 dnl
1262 dnl check for struct res_state_ext
1263 AC_DEFUN(AC_STRUCT_RES_STATE, [
1264 AC_MSG_CHECKING(for nsort in res_state)
1265 AC_CACHE_VAL($1,
1266 AC_TRY_COMPILE([
1267 # include <sys/types.h>
1268 # include <netinet/in.h>
1269 # include <netinet6/in6.h>
1270 # include <resolv.h>],
1271 [struct __res_state e; e.nsort = 0],
1272 $1=yes,
1273 $1=no))
1274 AC_MSG_RESULT($$1)
1275 if test $$1 = yes; then
1276 AC_DEFINE(HAVE_NEW_RES_STATE)
1277 fi
1278 ])
1279
1280 dnl
1281 dnl check for h_errno
1282 AC_DEFUN(AC_VAR_H_ERRNO, [
1283 AC_MSG_CHECKING(for h_errno)
1284 AC_CACHE_VAL(ac_cv_var_h_errno,
1285 AC_TRY_COMPILE([
1286 # include <sys/types.h>
1287 # include <netdb.h>],
1288 [int foo = h_errno;],
1289 ac_cv_var_h_errno=yes,
1290 ac_cv_var_h_errno=no))
1291 AC_MSG_RESULT($ac_cv_var_h_errno)
1292 if test "$ac_cv_var_h_errno" = "yes"; then
1293 AC_DEFINE(HAVE_H_ERRNO)
1294 fi
1295 ])
1296
1297 dnl
1298 dnl Test for __attribute__
1299 dnl
1300
1301 AC_DEFUN(AC_C___ATTRIBUTE__, [
1302 AC_MSG_CHECKING(for __attribute__)
1303 AC_CACHE_VAL(ac_cv___attribute__, [
1304 AC_COMPILE_IFELSE(
1305 AC_LANG_SOURCE([[
1306 #include <stdlib.h>
1307
1308 static void foo(void) __attribute__ ((noreturn));
1309
1310 static void
1311 foo(void)
1312 {
1313 exit(1);
1314 }
1315
1316 int
1317 main(int argc, char **argv)
1318 {
1319 foo();
1320 }
1321 ]]),
1322 ac_cv___attribute__=yes,
1323 ac_cv___attribute__=no)])
1324 if test "$ac_cv___attribute__" = "yes"; then
1325 AC_DEFINE(HAVE___ATTRIBUTE__, 1, [define if your compiler has __attribute__])
1326 V_DEFS="$V_DEFS -D_U_=\"__attribute__((unused))\""
1327 else
1328 V_DEFS="$V_DEFS -D_U_=\"\""
1329 fi
1330 AC_MSG_RESULT($ac_cv___attribute__)
1331 ])
1332
1333 AC_DEFUN(AC_LBL_SSLEAY,
1334 [
1335 #
1336 # Find the last component of $libdir; it's not necessarily
1337 # "lib" - it might be "lib64" on, for example, x86-64
1338 # Linux systems.
1339 #
1340 # We assume the directory in which we're looking for
1341 # libcrypto has a subdirectory with that as its name.
1342 #
1343 tmplib=`echo "$libdir" | sed 's,.*/,,'`
1344
1345 #
1346 # XXX - is there a better way to check if a given library is
1347 # in a given directory than checking each of the possible
1348 # shared library suffixes?
1349 #
1350 # Are there any other suffixes we need to look for? Do we
1351 # have to worry about ".so.{version}"?
1352 #
1353 # Or should we just look for "libcrypto.*"?
1354 #
1355 if test -d "$1/$tmplib" -a \( -f "$1/$tmplib/libcrypto.a" -o \
1356 -f "$1/$tmplib/libcrypto.so" -o \
1357 -f "$1/$tmplib/libcrypto.sl" -o \
1358 -f "$1/$tmplib/libcrypto.dylib" \); then
1359 ac_cv_ssleay_path="$1"
1360 fi
1361
1362 #
1363 # Make sure we have the headers as well.
1364 #
1365 if test -d "$1/include/openssl" -a -f "$1/include/openssl/des.h"; then
1366 incdir="-I$1/include"
1367 fi
1368 ])