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