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