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