etc/services - sync with NetBSD-8
[minix.git] / external / bsd / bind / dist / contrib / nslint-3.0a2 / aclocal.m4
blob1d855bd6d95a6e45965f4c1b4e52b736cce6e795
1 dnl @(#) Id: aclocal.m4 616 2009-10-10 00:08:08Z leres  (LBL)
2 dnl
3 dnl Copyright (c) 2008, 2009
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
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 -O3 (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 set
42 dnl
43 AC_DEFUN(AC_LBL_C_INIT,
44     [AC_PREREQ(2.12)
45     AC_ARG_ENABLE([optimization],
46         [AS_HELP_STRING([--disable-optimization],
47             [turn off gcc optimization])],
48         ac_cv_without_optimization=${withval})
49     AC_BEFORE([$0], [AC_PROG_CC])
50     AC_BEFORE([$0], [AC_LBL_FIXINCLUDES])
51     AC_BEFORE([$0], [AC_LBL_DEVEL])
52     AC_ARG_WITH(gcc, [  --without-gcc           don't use gcc])
53     AC_USE_SYSTEM_EXTENSIONS
54     $1=""
55     if test "${ac_cv_without_optimization+set}" != set; then
56             $1="-O"
57     fi
58     $2=""
59     if test "${srcdir}" != "." ; then
60             $2="-I\$\(srcdir\)"
61     fi
62     if test -z "$CC" ; then
63             case "$target_os" in
65             bsdi*)
66                     AC_CHECK_PROG(SHLICC2, shlicc2, yes, no)
67                     if test $SHLICC2 = yes ; then
68                             CC=shlicc2
69                             export CC
70                     fi
71                     ;;
72             esac
73     fi
74     if test -z "$CC" -a "$with_gcc" = no ; then
75             CC=cc
76             export CC
77     fi
78     AC_PROG_CC
79     AC_SYS_LARGEFILE
80     if test "$GCC" != yes ; then
81             AC_MSG_CHECKING(that $CC handles ansi prototypes)
82             AC_CACHE_VAL(ac_cv_lbl_cc_ansi_prototypes,
83                 AC_TRY_COMPILE(
84                     [#include <sys/types.h>],
85                     [int frob(int, char *)],
86                     ac_cv_lbl_cc_ansi_prototypes=yes,
87                     ac_cv_lbl_cc_ansi_prototypes=no))
88             AC_MSG_RESULT($ac_cv_lbl_cc_ansi_prototypes)
89             if test $ac_cv_lbl_cc_ansi_prototypes = no ; then
90                     case "$target_os" in
92                     hpux*)
93                             AC_MSG_CHECKING(for HP-UX ansi compiler ($CC -Aa -D_HPUX_SOURCE))
94                             savedcflags="$CFLAGS"
95                             CFLAGS="-Aa -D_HPUX_SOURCE $CFLAGS"
96                             AC_CACHE_VAL(ac_cv_lbl_cc_hpux_cc_aa,
97                                 AC_TRY_COMPILE(
98                                     [#include <sys/types.h>],
99                                     [int frob(int, char *)],
100                                     ac_cv_lbl_cc_hpux_cc_aa=yes,
101                                     ac_cv_lbl_cc_hpux_cc_aa=no))
102                             AC_MSG_RESULT($ac_cv_lbl_cc_hpux_cc_aa)
103                             if test $ac_cv_lbl_cc_hpux_cc_aa = no ; then
104                                     AC_MSG_ERROR(see the INSTALL doc for more info)
105                             fi
106                             CFLAGS="$savedcflags"
107                             $1="-Aa $$1"
108                             AC_DEFINE(_HPUX_SOURCE,,[HP-UX ansi compiler])
109                             ;;
111                     *)
112                             AC_MSG_ERROR(see the INSTALL doc for more info)
113                             ;;
114                     esac
115             fi
116             $2="$$2 -I/usr/local/include"
117             LDFLAGS="$LDFLAGS -L/usr/local/lib"
119             case "$target_os" in
121             irix*)
122                     $1="$$1 -xansi -signed -g3"
123                     ;;
125             osf*)
126                     $1="$$1 -std1 -g3"
127                     ;;
129             ultrix*)
130                     AC_MSG_CHECKING(that Ultrix $CC hacks const in prototypes)
131                     AC_CACHE_VAL(ac_cv_lbl_cc_const_proto,
132                         AC_TRY_COMPILE(
133                             [#include <sys/types.h>],
134                             [struct a { int b; };
135                             void c(const struct a *)],
136                             ac_cv_lbl_cc_const_proto=yes,
137                             ac_cv_lbl_cc_const_proto=no))
138                     AC_MSG_RESULT($ac_cv_lbl_cc_const_proto)
139                     if test $ac_cv_lbl_cc_const_proto = no ; then
140                             AC_DEFINE(const,,[ultrix can't hack const])
141                     fi
142                     ;;
143             esac
144     fi
147 AC_LBL_ENABLE_CHECK(brov6 activemapping expire-dfa-states)
149 dnl This allows us to check for bogus configure enable/disable
150 dnl command line options
152 dnl usage:
154 dnl     AC_LBL_ENABLE_CHECK(opt ...)
156 AC_DEFUN(AC_LBL_ENABLE_CHECK,
157     [set |
158         sed -n -e 's/^enable_\([[^=]]*\)=[[^=]]*$/\1/p' |
159         while read var; do
160             ok=0
161             for o in $1; do
162                     if test "${o}" = "${var}" ; then
163                             ok=1
164                             break
165                     fi
166             done
167             if test ${ok} -eq 0 ; then
168                     # It's hard to kill configure script from subshell!
169                     AC_MSG_ERROR(unknown enable option: ${var})
170                     exit 1
171             fi
172         done
173         if test $? -ne 0 ; then
174                 exit 1
175         fi])
178 dnl Use pfopen.c if available and pfopen() not in standard libraries
179 dnl Require libpcap
180 dnl Look for libpcap in ..
181 dnl Use the installed libpcap if there is no local version
183 dnl usage:
185 dnl     AC_LBL_LIBPCAP(pcapdep, incls)
187 dnl results:
189 dnl     $1 (pcapdep set)
190 dnl     $2 (incls appended)
191 dnl     LIBS
192 dnl     LDFLAGS
193 dnl     LBL_LIBS
195 AC_DEFUN(AC_LBL_LIBPCAP,
196     [AC_REQUIRE([AC_LBL_LIBRARY_NET])
197     dnl
198     dnl save a copy before locating libpcap.a
199     dnl
200     LBL_LIBS="$LIBS"
201     pfopen=/usr/examples/packetfilter/pfopen.c
202     if test -f $pfopen ; then
203             AC_CHECK_FUNCS(pfopen)
204             if test $ac_cv_func_pfopen = "no" ; then
205                     AC_MSG_RESULT(Using $pfopen)
206                     LIBS="$LIBS $pfopen"
207             fi
208     fi
209     AC_MSG_CHECKING(for local pcap library)
210     libpcap=FAIL
211     lastdir=FAIL
212     places=`ls .. | sed -e 's,/$,,' -e 's,^,../,' | \
213         egrep '/libpcap-[[0-9]]*\.[[0-9]]*(\.[[0-9]]*)?([[ab]][[0-9]]*)?$'`
214     for dir in $places ../libpcap libpcap ; do
215             basedir=`echo $dir | sed -e 's/[[ab]][[0-9]]*$//'`
216             if test $lastdir = $basedir ; then
217                     dnl skip alphas when an actual release is present
218                     continue;
219             fi
220             lastdir=$dir
221             if test -r $dir/pcap.c ; then
222                     libpcap=$dir/libpcap.a
223                     d=$dir
224                     dnl continue and select the last one that exists
225             fi
226     done
227     if test "x$libpcap" = xFAIL ; then
228             AC_MSG_RESULT(not found)
229             AC_CHECK_LIB(pcap, pcap_open_live, libpcap="-lpcap")
230             unset ac_cv_lib_pcap_pcap_open_live
231             if test "x$libpcap" = xFAIL ; then
232                     CFLAGS="$CFLAGS -I/usr/local/include"
233                     LIBS="$LIBS -L/usr/local/lib"
234                     AC_CHECK_LIB(pcap, pcap_open_live, libpcap="-lpcap")
235                     unset ac_cv_lib_pcap_pcap_open_live
236                     if test "x$libpcap" = xFAIL ; then
237                             AC_MSG_ERROR(see the INSTALL doc for more info)
238                     fi
239                     $2="$$2 -I/usr/local/include"
240             fi
241             LIBS="$LIBS -lpcap"
242     else
243             $1=$libpcap
244             $2="-I$d $$2"
245             AC_MSG_RESULT($libpcap)
246     fi
247     if test "x$libpcap" != "x-lpcap" ; then
248             LIBS="$libpcap $LIBS"
249     fi
250     case "$target_os" in
252     aix*)
253             pseexe="/lib/pse.exp"
254             AC_MSG_CHECKING(for $pseexe)
255             if test -f $pseexe ; then
256                     AC_MSG_RESULT(yes)
257                     LIBS="$LIBS -I:$pseexe"
258             fi
259             ;;
260     esac])
263 dnl Define RETSIGTYPE and RETSIGVAL
265 dnl usage:
267 dnl     AC_LBL_TYPE_SIGNAL
269 dnl results:
271 dnl     RETSIGTYPE (defined)
272 dnl     RETSIGVAL (defined)
274 AC_DEFUN(AC_LBL_TYPE_SIGNAL,
275     [AC_BEFORE([$0], [AC_LBL_LIBPCAP])
276     AC_TYPE_SIGNAL
277     if test "$ac_cv_type_signal" = void ; then
278             AC_DEFINE(RETSIGVAL,,[signal function return value])
279     else
280             AC_DEFINE(RETSIGVAL,(0))
281     fi
282     case "$target_os" in
284     irix*)
285             AC_DEFINE(_BSD_SIGNALS,,[irix's BSD style signals])
286             ;;
288     *)
289             dnl prefer sigset() to sigaction()
290             AC_CHECK_FUNCS(sigset)
291             if test $ac_cv_func_sigset = yes ; then
292                     AC_DEFINE(signal,sigset,[use sigset() instead of signal()])
293             else
294                     AC_CHECK_FUNCS(sigaction)
295             fi
296             ;;
297     esac])
300 dnl If using gcc, make sure we have ANSI ioctl definitions
302 dnl usage:
304 dnl     AC_LBL_FIXINCLUDES
306 AC_DEFUN(AC_LBL_FIXINCLUDES,
307     [if test "$GCC" = yes ; then
308             AC_MSG_CHECKING(for ANSI ioctl definitions)
309             AC_CACHE_VAL(ac_cv_lbl_gcc_fixincludes,
310                 AC_TRY_COMPILE(
311                     [/*
312                      * This generates a "duplicate case value" when fixincludes
313                      * has not be run.
314                      */
315 #               include <sys/types.h>
316 #               include <sys/time.h>
317 #               include <sys/ioctl.h>
318 #               ifdef HAVE_SYS_IOCCOM_H
319 #               include <sys/ioccom.h>
320 #               endif],
321                     [switch (0) {
322                     case _IO('A', 1):;
323                     case _IO('B', 1):;
324                     }],
325                     ac_cv_lbl_gcc_fixincludes=yes,
326                     ac_cv_lbl_gcc_fixincludes=no))
327             AC_MSG_RESULT($ac_cv_lbl_gcc_fixincludes)
328             if test $ac_cv_lbl_gcc_fixincludes = no ; then
329                     # Don't cache failure
330                     unset ac_cv_lbl_gcc_fixincludes
331                     AC_MSG_ERROR(see the INSTALL for more info)
332             fi
333     fi])
336 dnl Check for flex, default to lex
337 dnl Require flex 2.4 or higher
338 dnl Check for bison, default to yacc
339 dnl Default to lex/yacc if both flex and bison are not available
340 dnl Define the yy prefix string if using flex and bison
342 dnl usage:
344 dnl     AC_LBL_LEX_AND_YACC(lex, yacc, yyprefix)
346 dnl results:
348 dnl     $1 (lex set)
349 dnl     $2 (yacc appended)
350 dnl     $3 (optional flex and bison -P prefix)
352 AC_DEFUN(AC_LBL_LEX_AND_YACC,
353     [AC_ARG_WITH(flex, [  --without-flex          don't use flex])
354     AC_ARG_WITH(bison, [  --without-bison         don't use bison])
355     if test "$with_flex" = no ; then
356             $1=lex
357     else
358             AC_CHECK_PROGS($1, flex, lex)
359     fi
360     if test "$$1" = flex ; then
361             # The -V flag was added in 2.4
362             AC_MSG_CHECKING(for flex 2.4 or higher)
363             AC_CACHE_VAL(ac_cv_lbl_flex_v24,
364                 if flex -V >/dev/null 2>&1; then
365                         ac_cv_lbl_flex_v24=yes
366                 else
367                         ac_cv_lbl_flex_v24=no
368                 fi)
369             AC_MSG_RESULT($ac_cv_lbl_flex_v24)
370             if test $ac_cv_lbl_flex_v24 = no ; then
371                     s="2.4 or higher required"
372                     AC_MSG_WARN(ignoring obsolete flex executable ($s))
373                     $1=lex
374             fi
375     fi
376     if test "$with_bison" = no ; then
377             $2=yacc
378     else
379             AC_CHECK_PROGS($2, bison, yacc)
380     fi
381     if test "$$2" = bison ; then
382             $2="$$2 -y"
383     fi
384     if test "$$1" != lex -a "$$2" = yacc -o "$$1" = lex -a "$$2" != yacc ; then
385             AC_MSG_WARN(don't have both flex and bison; reverting to lex/yacc)
386             $1=lex
387             $2=yacc
388     fi
389     if test "$$1" = flex -a -n "$3" ; then
390             $1="$$1 -P$3"
391             $2="$$2 -p $3"
392     fi])
395 dnl Checks to see if union wait is used with WEXITSTATUS()
397 dnl usage:
399 dnl     AC_LBL_UNION_WAIT
401 dnl results:
403 dnl     DECLWAITSTATUS (defined)
405 AC_DEFUN(AC_LBL_UNION_WAIT,
406     [AC_MSG_CHECKING(if union wait is used)
407     AC_CACHE_VAL(ac_cv_lbl_union_wait,
408         AC_TRY_COMPILE([
409 #       include <sys/types.h>
410 #       include <sys/wait.h>],
411             [int status;
412             u_int i = WEXITSTATUS(status);
413             u_int j = waitpid(0, &status, 0);],
414             ac_cv_lbl_union_wait=no,
415             ac_cv_lbl_union_wait=yes))
416     AC_MSG_RESULT($ac_cv_lbl_union_wait)
417     if test $ac_cv_lbl_union_wait = yes ; then
418             AC_DEFINE(DECLWAITSTATUS,union wait)
419     else
420             AC_DEFINE(DECLWAITSTATUS,int)
421     fi])
424 dnl Checks to see if the sockaddr struct has the 4.4 BSD sa_len member
426 dnl usage:
428 dnl     AC_LBL_SOCKADDR_SA_LEN
430 dnl results:
432 dnl     HAVE_SOCKADDR_SA_LEN (defined)
434 AC_DEFUN(AC_LBL_SOCKADDR_SA_LEN,
435     [AC_CHECK_MEMBERS(struct sockaddr.sa_len,,,[
436 #       include <sys/types.h>
437 #       include <sys/socket.h>])])
440 dnl Makes sure socklen_t is defined
442 dnl usage:
444 dnl     AC_LBL_SOCKLEN_T
446 dnl results:
448 dnl     socklen_t (defined if missing)
450 AC_DEFUN(AC_LBL_SOCKLEN_T,
451     [AC_MSG_CHECKING(for socklen_t in sys/socket.h using $CC)
452     AC_CACHE_VAL(ac_cv_lbl_socklen_t,
453         AC_TRY_COMPILE([
454 #       include "confdefs.h"
455 #       include <sys/types.h>
456 #       include <sys/socket.h>
457 #       if STDC_HEADERS
458 #       include <stdlib.h>
459 #       include <stddef.h>
460 #       endif],
461         [socklen_t i],
462         ac_cv_lbl_socklen_t=yes,
463         ac_cv_lbl_socklen_t=no))
464     AC_MSG_RESULT($ac_cv_lbl_socklen_t)
465     if test $ac_cv_lbl_socklen_t = no ; then
466             AC_DEFINE(socklen_t, int, [Define socklen_t if missing])
467     fi])
470 dnl Checks to see if the IFF_LOOPBACK exists as a define or enum
472 dnl   (stupidly some versions of linux use an enum...)
474 dnl usage:
476 dnl     AC_LBL_IFF_LOOPBACK
478 dnl results:
480 dnl     HAVE_IFF_LOOPBACK (defined)
482 AC_DEFUN(AC_LBL_IFF_LOOPBACK,
483     [AC_MSG_CHECKING(for IFF_LOOPBACK define/enum)
484     AC_CACHE_VAL(ac_cv_lbl_have_iff_loopback,
485         AC_TRY_COMPILE([
486 #       include <sys/param.h>
487 #       include <sys/file.h>
488 #       include <sys/ioctl.h>
489 #       include <sys/socket.h>
490 #       ifdef HAVE_SYS_SOCKIO_H
491 #       include <sys/sockio.h>
492 #       endif
493 #       include <sys/time.h>
494 #       include <net/if.h>
495 #       include <netinet/in.h>],
496         [int i = IFF_LOOPBACK],
497         ac_cv_lbl_have_iff_loopback=yes,
498         ac_cv_lbl_have_iff_loopback=no))
499     AC_MSG_RESULT($ac_cv_lbl_have_iff_loopback)
500     if test $ac_cv_lbl_have_iff_loopback = yes ; then
501             AC_DEFINE(HAVE_IFF_LOOPBACK,, [Have IFF_LOOPBACK define/enum])
502     fi])
505 dnl Due to the stupid way it's implemented, AC_CHECK_TYPE is nearly useless.
507 dnl usage:
509 dnl     AC_LBL_CHECK_TYPE
511 dnl results:
513 dnl     int32_t (defined)
514 dnl     u_int32_t (defined)
516 AC_DEFUN(AC_LBL_CHECK_TYPE,
517     [AC_MSG_CHECKING(for $1 using $CC)
518     AC_CACHE_VAL(ac_cv_lbl_have_$1,
519         AC_TRY_COMPILE([
520 #       include "confdefs.h"
521 #       include <sys/types.h>
522 #       if STDC_HEADERS
523 #       include <stdlib.h>
524 #       include <stddef.h>
525 #       endif],
526         [$1 i],
527         ac_cv_lbl_have_$1=yes,
528         ac_cv_lbl_have_$1=no))
529     AC_MSG_RESULT($ac_cv_lbl_have_$1)
530     if test $ac_cv_lbl_have_$1 = no ; then
531             AC_DEFINE($1, $2, Define $1)
532     fi])
535 dnl Checks to see if unaligned memory accesses fail
537 dnl usage:
539 dnl     AC_LBL_UNALIGNED_ACCESS
541 dnl results:
543 dnl     LBL_ALIGN (DEFINED)
545 AC_DEFUN(AC_LBL_UNALIGNED_ACCESS,
546     [AC_MSG_CHECKING(if unaligned accesses fail)
547     AC_CACHE_VAL(ac_cv_lbl_unaligned_fail,
548         [case "$target_cpu" in
550         alpha|hp*|mips|sparc)
551                 ac_cv_lbl_unaligned_fail=yes
552                 ;;
554         *)
555                 cat >conftest.c <<EOF
556 #               include <sys/types.h>
557 #               include <sys/wait.h>
558 #               include <stdio.h>
559                 unsigned char a[[5]] = { 1, 2, 3, 4, 5 };
560                 main() {
561                 unsigned int i;
562                 pid_t pid;
563                 int status;
564                 /* avoid "core dumped" message */
565                 pid = fork();
566                 if (pid <  0)
567                         exit(2);
568                 if (pid > 0) {
569                         /* parent */
570                         pid = waitpid(pid, &status, 0);
571                         if (pid < 0)
572                                 exit(3);
573                         exit(!WIFEXITED(status));
574                 }
575                 /* child */
576                 i = *(unsigned int *)&a[[1]];
577                 printf("%d\n", i);
578                 exit(0);
579                 }
581                 ${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS \
582                     conftest.c $LIBS >/dev/null 2>&1
583                 if test ! -x conftest ; then
584                         dnl failed to compile for some reason
585                         ac_cv_lbl_unaligned_fail=yes
586                 else
587                         ./conftest >conftest.out
588                         if test ! -s conftest.out ; then
589                                 ac_cv_lbl_unaligned_fail=yes
590                         else
591                                 ac_cv_lbl_unaligned_fail=no
592                         fi
593                 fi
594                 rm -f conftest* core core.conftest
595                 ;;
596         esac])
597     AC_MSG_RESULT($ac_cv_lbl_unaligned_fail)
598     if test $ac_cv_lbl_unaligned_fail = yes ; then
599             AC_DEFINE(LBL_ALIGN)
600     fi])
603 dnl add all warning option to CFLAGS
605 dnl usage:
607 dnl     AC_LBL_CHECK_WALL(copt)
609 dnl results:
611 dnl     $1 (copt appended)
612 dnl     ac_cv_lbl_gcc_vers
614 AC_DEFUN(AC_LBL_CHECK_WALL,
615     [ if test "$GCC" = yes ; then
616             if test "$SHLICC2" = yes ; then
617                     ac_cv_lbl_gcc_vers=2
618                     $1="`echo $$1 | sed -e 's/-O/-O3/'`"
619             else
620                     AC_MSG_CHECKING(gcc version)
621                     AC_CACHE_VAL(ac_cv_lbl_gcc_vers,
622                         # Gag, the gcc folks keep changing the output...
623                         # try to grab N.N.N
624                         ac_cv_lbl_gcc_vers=`$CC --version 2>&1 |
625                             sed -e '1!d' -e 's/[[[^0-9]]]*\([[[0-9]]][[[0-9]]]*\)\.[[[0-9\]]][[[0-9]]]*\.[[[0-9]]][[[0-9]]]*.*/\1/'`)
626                     AC_MSG_RESULT($ac_cv_lbl_gcc_vers)
627                     if test "$ac_cv_lbl_gcc_vers" -gt 1 ; then
628                             $1="`echo $$1 | sed -e 's/-O/-O3/'`"
629                     fi
630             fi
631             if test "$ac_cv_prog_cc_g" = yes ; then
632                     $1="-g $$1"
633             fi
634             $1="$$1 -Wall"
635             if test "$ac_cv_lbl_gcc_vers" -gt 1 ; then
636                     $1="$$1 -Wmissing-prototypes -Wstrict-prototypes"
637                     if [[ "`uname -s`" = "FreeBSD" ]]; then
638                             $1="$$1 -Werror"
639                     fi
640             fi
641     else
642             case "$target_os" in
644             irix6*)
645                     $1="$$1 -fullwarn -n32"
646                     ;;
648             *)
649                     ;;
650             esac
651     fi])
654 dnl If using gcc and the file .devel exists:
655 dnl     Compile with -g (if supported) and -Wall
656 dnl     If using gcc 2, do extra prototype checking
657 dnl     If an os prototype include exists, symlink os-proto.h to it
659 dnl usage:
661 dnl     AC_LBL_DEVEL(copt)
663 dnl results:
665 dnl     $1 (copt appended)
666 dnl     HAVE_OS_PROTO_H (defined)
667 dnl     os-proto.h (symlinked)
669 AC_DEFUN(AC_LBL_DEVEL,[
670     AC_BEFORE([$0], [AC_LBL_LD_RUN_PATH])
671     rm -f os-proto.h
672     if test -f .devel ; then
673             AC_LBL_CHECK_WALL($1)
674             os=`echo $target_os | sed -e 's/\([[0-9]][[0-9]]*\)[[^0-9]].*$/\1/'`
675             name="lbl/os-$os.h"
676             if test -f $name ; then
677                     ln -s $name os-proto.h
678                     AC_DEFINE(HAVE_OS_PROTO_H,,[have os-proto.h])
679             else
680                     AC_MSG_WARN(can't find $name)
681             fi
682     fi])
685 dnl Improved version of AC_CHECK_LIB
687 dnl Thanks to John Hawkinson (jhawk@mit.edu)
689 dnl usage:
691 dnl     AC_LBL_CHECK_LIB(LIBRARY, FUNCTION [, ACTION-IF-FOUND [,
692 dnl         ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
694 dnl results:
696 dnl     LIBS
699 define(AC_LBL_CHECK_LIB,
700 [AC_MSG_CHECKING([for $2 in -l$1])
701 dnl Use a cache variable name containing both the library and function name,
702 dnl because the test really is for library $1 defining function $2, not
703 dnl just for library $1.  Separate tests with the same $1 and different $2's
704 dnl may have different results.
705 ac_lib_var=`echo $1['_']$2['_']$5 | sed 'y%./+- %__p__%'`
706 AC_CACHE_VAL(ac_cv_lbl_lib_$ac_lib_var,
707 [ac_save_LIBS="$LIBS"
708 LIBS="-l$1 $5 $LIBS"
709 AC_TRY_LINK(dnl
710 ifelse([$2], [main], , dnl Avoid conflicting decl of main.
711 [/* Override any gcc2 internal prototype to avoid an error.  */
712 ]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus
713 extern "C"
714 #endif
715 ])dnl
716 [/* We use char because int might match the return type of a gcc2
717     builtin and then its argument prototype would still apply.  */
718 char $2();
720             [$2()],
721             eval "ac_cv_lbl_lib_$ac_lib_var=yes",
722             eval "ac_cv_lbl_lib_$ac_lib_var=no")
723 LIBS="$ac_save_LIBS"
724 ])dnl
725 if eval "test \"`echo '$ac_cv_lbl_lib_'$ac_lib_var`\" = yes"; then
726   AC_MSG_RESULT(yes)
727   ifelse([$3], ,
728 [changequote(, )dnl
729   ac_tr_lib=HAVE_LIB`echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g' \
730     -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
731 changequote([, ])dnl
732   AC_DEFINE_UNQUOTED($ac_tr_lib)
733   LIBS="-l$1 $LIBS"
734 ], [$3])
735 else
736   AC_MSG_RESULT(no)
737 ifelse([$4], , , [$4
738 ])dnl
743 dnl AC_LBL_LIBRARY_NET
745 dnl This test is for network applications that need socket() and
746 dnl gethostbyname() -ish functions.  Under Solaris, those applications
747 dnl need to link with "-lsocket -lnsl".  Under IRIX, they need to link
748 dnl with "-lnsl" but should *not* link with "-lsocket" because
749 dnl libsocket.a breaks a number of things (for instance:
750 dnl gethostbyname() under IRIX 5.2, and snoop sockets under most
751 dnl versions of IRIX).
753 dnl Unfortunately, many application developers are not aware of this,
754 dnl and mistakenly write tests that cause -lsocket to be used under
755 dnl IRIX.  It is also easy to write tests that cause -lnsl to be used
756 dnl under operating systems where neither are necessary (or useful),
757 dnl such as SunOS 4.1.4, which uses -lnsl for TLI.
759 dnl This test exists so that every application developer does not test
760 dnl this in a different, and subtly broken fashion.
762 dnl It has been argued that this test should be broken up into two
763 dnl seperate tests, one for the resolver libraries, and one for the
764 dnl libraries necessary for using Sockets API. Unfortunately, the two
765 dnl are carefully intertwined and allowing the autoconf user to use
766 dnl them independantly potentially results in unfortunate ordering
767 dnl dependancies -- as such, such component macros would have to
768 dnl carefully use indirection and be aware if the other components were
769 dnl executed. Since other autoconf macros do not go to this trouble,
770 dnl and almost no applications use sockets without the resolver, this
771 dnl complexity has not been implemented.
773 dnl The check for libresolv is in case you are attempting to link
774 dnl statically and happen to have a libresolv.a lying around (and no
775 dnl libnsl.a).
777 AC_DEFUN(AC_LBL_LIBRARY_NET, [
778     # Most operating systems have gethostbyname() in the default searched
779     # libraries (i.e. libc):
780     AC_CHECK_FUNC(gethostbyname, ,
781         # Some OSes (eg. Solaris) place it in libnsl:
782         AC_CHECK_LIB(nsl, gethostbyname, ,
783             # Some strange OSes (SINIX) have it in libsocket:
784             AC_CHECK_LIB(socket, gethostbyname, ,
785                 # Unfortunately libsocket sometimes depends on libnsl.
786                 # AC_CHECK_LIB's API is essentially broken so the
787                 # following ugliness is necessary:
788                 AC_CHECK_LIB(socket, gethostbyname,
789                     LIBS="-lsocket -lnsl $LIBS",
790                     AC_CHECK_LIB(resolv, gethostbyname),
791                     -lnsl))))
792     AC_CHECK_FUNC(socket, , AC_CHECK_LIB(socket, socket, ,
793         AC_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", ,
794             -lnsl)))
795     # DLPI needs putmsg under HPUX so test for -lstr while we're at it
796     AC_CHECK_LIB(str, putmsg)
797     ])
800 dnl AC_LBL_RUN_PATH
802 dnl Extracts -L directories from LIBS; if any are found they are
803 dnl converted to a LD_RUN_PATH and put in V_ENVIRONMENT
805 dnl usage:
807 dnl     AC_LBL_RUN_PATH
809 dnl results:
811 dnl     V_ENVIRONMENT
813 AC_DEFUN(AC_LBL_LD_RUN_PATH, [
814         AC_MSG_CHECKING(LD_RUN_PATH)
815         AC_SUBST(V_ENVIRONMENT)
816         dnl
817         dnl Split out -L directories
818         dnl
819         ldirs=""
820         for x in ${LIBS}; do
821                 case x${x} in
823                 x-L*)
824                         ldirs="${ldirs} ${x}"
825                         ;;
827                 *)
828                         ;;
829                 esac
830         done
832         dnl
833         dnl Build LD_RUN_PATH
834         dnl
835         if test -n "${ldirs}"; then
836                 V_ENVIRONMENT="LD_RUN_PATH=\"`echo \"${ldirs}\" | sed -e 's,-L,,g' -e 's,^ *,,' -e 's, ,:,g'`\""
837                 AC_MSG_RESULT(${V_ENVIRONMENT})
838         else
839                 AC_MSG_RESULT(empty)
840         fi])
843 dnl AC_LBL_BROCCOLI
845 dnl Include Broccoli support
847 dnl usage:
849 dnl     AC_LBL_BROCCOLI(copt, incls, [min-vers])
851 dnl results:
853 dnl     $1 (copt variable appended)
854 dnl     $2 (incls variable appended)
855 dnl     $3 minimum version (optional)
857 AC_DEFUN(AC_LBL_BROCCOLI, [
858     AC_BEFORE([$0], [AC_LBL_LD_RUN_PATH])
859     dnl
860     dnl configure flags
861     dnl
862     AC_ARG_WITH([broccoli],
863         [AS_HELP_STRING([--without-broccoli],
864             [disable Broccoli support @<:@default=check@:>@])],
865         ac_cv_with_broccoli=${withval})
866     dnl
867     dnl Network application libraries
868     dnl
869     AC_LBL_LIBRARY_NET
871     AC_MSG_CHECKING(for broccoli)
872     if test "${ac_cv_with_broccoli}" = "" -o \
873         "${ac_cv_with_broccoli}" = yes ; then
874             cflags=""
875             libs=""
876             dnl
877             dnl Our entire path
878             dnl
879             dirs="`echo ${PATH} | sed -e 's/:/ /g'`"
880             dnl
881             dnl Add in default Bro install bin directory
882             dnl
883             dirs="${dirs} /usr/local/bro/bin"
884             for d in ${dirs}; do
885                     if test -x ${d}/broccoli-config ; then
886                             broccoli_config_path="${d}/broccoli-config"
887                             cflags="`${broccoli_config_path} --cflags`"
888                             libs="`${broccoli_config_path} --libs`"
889                             break
890                     fi
891             done
892             if test -n "${cflags}" ; then
893                     ac_cv_have_broccoli=yes
894             else
895                     ac_cv_have_broccoli=no
896             fi
897             AC_MSG_RESULT($ac_cv_have_broccoli)
898             if test "${ac_cv_with_broccoli}" = yes -a \
899                 ${ac_cv_have_broccoli} = "no" ; then
900                     AC_MSG_ERROR(Broccoli explicitly enabled but not supported)
901             fi
902     else
903             AC_MSG_RESULT([disabled])
904     fi
906     dnl
907     dnl Optionally check for minimum Broccoli version
908     dnl
909     if test "$ac_cv_have_broccoli" = yes -a -n "$3"; then
910             AC_MSG_CHECKING(Broccoli >= $3)
911             BROCCOLI_VERSION="`${broccoli_config_path} --version`"
912             AC_MSG_RESULT(${BROCCOLI_VERSION})
913             dnl
914             dnl Sort the two versions; the desired version should
915             dnl appear first (or perhaps 1st and 2nd)
916             dnl
917             tvers="`(echo "$3" ; echo ${BROCCOLI_VERSION}) |
918                 sort -t. +0 -1n +1 -2n +2 -3n +3 -4n |
919                 head -1`"
920             if test "${tvers}" != "$3"; then
921                     if test "${ac_cv_with_broccoli}" = yes; then
922                             AC_MSG_ERROR(Broccoli $3 or higher is required)
923                     fi
924                     AC_MSG_NOTICE(Broccoli support disabled)
925                     ac_cv_have_broccoli="no"
926             fi
927     fi
929     dnl
930     dnl Broccoli ho!
931     dnl
932     if test "$ac_cv_have_broccoli" = yes ; then
933             AC_DEFINE(HAVE_BROCCOLI)
934             dnl
935             dnl Split out -I directories
936             dnl
937             for x in ${cflags}; do
938                     case x${x} in
940                     x-I*)
941                             eval "$2=\"\$$2 ${x}\""
942                             ;;
944                     *)
945                             eval "$1=\"\$$1 ${x}\""
946                             ;;
947                     esac
948             done
950             dnl
951             dnl Add in Broccoli libs
952             dnl
953             LIBS="$LIBS ${libs}"
955             dnl
956             dnl Look for the libs in DIR or DIR/lib
957             dnl
958             AC_ARG_WITH([openssl],
959                 [AS_HELP_STRING([--with-openssl=DIR],
960                 [Use OpenSSL installation in DIR])],
961                 [eval "$2=\"-I${withval}/include \$$2\""
962                 for x in ${withval}/lib ${withval}; do
963                         if test -r ${x}/libssl.a; then
964                                 LIBS="-L${x} ${LIBS}"
965                                 break
966                         fi
967                 done])
969             dnl
970             dnl -lssl needs to come first on some systems!
971             dnl
972             AC_CHECK_LIB(ssl, OPENSSL_add_all_algorithms_conf,
973                 [LIBS="${LIBS} -lssl -lcrypto"],,-lcrypto)
974             dnl
975             dnl Newer versions of 1.4.0 and anything higher needs bro_init()
976             dnl
977             AC_CHECK_LIB(broccoli, bro_init, [AC_DEFINE(HAVE_BRO_INIT)])
978     fi])