1 dnl Copyright (c) 1995, 1996, 1997, 1998
2 dnl The Regents of the University of California. All rights reserved.
4 dnl Redistribution and use in source and binary forms, with or without
5 dnl modification, are permitted provided that: (1) source code distributions
6 dnl retain the above copyright notice and this paragraph in its entirety, (2)
7 dnl distributions including binary code include the above copyright notice and
8 dnl this paragraph in its entirety in the documentation or other materials
9 dnl provided with the distribution, and (3) all advertising materials mentioning
10 dnl features or use of this software display the following acknowledgement:
11 dnl ``This product includes software developed by the University of California,
12 dnl Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
13 dnl the University nor the names of its contributors may be used to endorse
14 dnl or promote products derived from this software without specific prior
15 dnl written permission.
16 dnl THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
17 dnl WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
18 dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
20 dnl LBL autoconf macros
24 dnl Do whatever AC_LBL_C_INIT work is necessary before using AC_PROG_CC.
26 dnl It appears that newer versions of autoconf (2.64 and later) will,
27 dnl if you use AC_TRY_COMPILE in a macro, stick AC_PROG_CC at the
28 dnl beginning of the macro, even if the macro itself calls AC_PROG_CC.
29 dnl See the "Prerequisite Macros" and "Expanded Before Required" sections
30 dnl in the Autoconf documentation.
32 dnl This causes a steaming heap of fail in our case, as we were, in
33 dnl AC_LBL_C_INIT, doing the tests we now do in AC_LBL_C_INIT_BEFORE_CC,
34 dnl calling AC_PROG_CC, and then doing the tests we now do in
35 dnl AC_LBL_C_INIT. Now, we run AC_LBL_C_INIT_BEFORE_CC, AC_PROG_CC,
36 dnl and AC_LBL_C_INIT at the top level.
38 AC_DEFUN(AC_LBL_C_INIT_BEFORE_CC,
40 AC_BEFORE([$0], [AC_LBL_C_INIT])
41 AC_BEFORE([$0], [AC_PROG_CC])
42 AC_BEFORE([$0], [AC_LBL_FIXINCLUDES])
43 AC_BEFORE([$0], [AC_LBL_DEVEL])
44 AC_ARG_WITH(gcc, [ --without-gcc don't use gcc])
46 if test "${srcdir}" != "." ; then
49 if test "${CFLAGS+set}" = set; then
52 if test -z "$CC" ; then
56 AC_CHECK_PROG(SHLICC2, shlicc2, yes, no)
57 if test $SHLICC2 = yes ; then
64 if test -z "$CC" -a "$with_gcc" = no ; then
71 dnl Determine which compiler we're using (cc or gcc)
72 dnl If using gcc, determine the version number
74 dnl require that it support ansi prototypes
75 dnl use -O (AC_PROG_CC will use -g -O2 on gcc, so we don't need to
76 dnl do that ourselves for gcc)
77 dnl add -g flags, as appropriate
78 dnl explicitly specify /usr/local/include
80 dnl NOTE WELL: with newer versions of autoconf, "gcc" means any compiler
81 dnl that defines __GNUC__, which means clang, for example, counts as "gcc".
85 dnl AC_LBL_C_INIT(copt, incls)
95 AC_DEFUN(AC_LBL_C_INIT,
97 AC_BEFORE([$0], [AC_LBL_FIXINCLUDES])
98 AC_BEFORE([$0], [AC_LBL_DEVEL])
99 AC_BEFORE([$0], [AC_LBL_SHLIBS_INIT])
100 if test "$GCC" = yes ; then
102 # -Werror forces warnings to be errors.
104 ac_lbl_cc_force_warning_errors=-Werror
107 # Try to have the compiler default to hiding symbols,
108 # so that only symbols explicitly exported with
109 # PCAP_API will be visible outside (shared) libraries.
111 AC_LBL_CHECK_COMPILER_OPT($1, -fvisibility=hidden)
113 $2="$$2 -I/usr/local/include"
114 LDFLAGS="$LDFLAGS -L/usr/local/lib"
120 # This is assumed either to be GCC or clang, both
121 # of which use -Werror to force warnings to be errors.
123 ac_lbl_cc_force_warning_errors=-Werror
126 # Try to have the compiler default to hiding symbols,
127 # so that only symbols explicitly exported with
128 # PCAP_API will be visible outside (shared) libraries.
130 AC_LBL_CHECK_COMPILER_OPT($1, -fvisibility=hidden)
135 # HP C, which is what we presume we're using, doesn't
136 # exit with a non-zero exit status if we hand it an
137 # invalid -W flag, can't be forced to do so even with
138 # +We, and doesn't handle GCC-style -W flags, so we
139 # don't want to try using GCC-style -W flags.
141 ac_lbl_cc_dont_try_gcc_dashW=yes
146 # MIPS C, which is what we presume we're using, doesn't
147 # necessarily exit with a non-zero exit status if we
148 # hand it an invalid -W flag, can't be forced to do
149 # so, and doesn't handle GCC-style -W flags, so we
150 # don't want to try using GCC-style -W flags.
152 ac_lbl_cc_dont_try_gcc_dashW=yes
154 # It also, apparently, defaults to "char" being
155 # unsigned, unlike most other C implementations;
156 # I suppose we could say "signed char" whenever
157 # we want to guarantee a signed "char", but let's
158 # just force signed chars.
160 # -xansi is normally the default, but the
161 # configure script was setting it; perhaps -cckr
162 # was the default in the Old Days. (Then again,
163 # that would probably be for backwards compatibility
164 # in the days when ANSI C was Shiny and New, i.e.
165 # 1989 and the early '90's, so maybe we can just
166 # drop support for those compilers.)
168 # -g is equivalent to -g2, which turns off
169 # optimization; we choose -g3, which generates
170 # debugging information but doesn't turn off
171 # optimization (even if the optimization would
172 # cause inaccuracies in debugging).
174 $1="$$1 -xansi -signed -g3"
179 # Presumed to be DEC OSF/1, Digital UNIX, or
182 # The DEC C compiler, which is what we presume we're
183 # using, doesn't exit with a non-zero exit status if we
184 # hand it an invalid -W flag, can't be forced to do
185 # so, and doesn't handle GCC-style -W flags, so we
186 # don't want to try using GCC-style -W flags.
188 ac_lbl_cc_dont_try_gcc_dashW=yes
190 # -g is equivalent to -g2, which turns off
191 # optimization; we choose -g3, which generates
192 # debugging information but doesn't turn off
193 # optimization (even if the optimization would
194 # cause inaccuracies in debugging).
201 # Assumed to be Sun C, which requires -errwarn to force
202 # warnings to be treated as errors.
204 ac_lbl_cc_force_warning_errors=-errwarn
207 # Try to have the compiler default to hiding symbols,
208 # so that only symbols explicitly exported with
209 # PCAP_API will be visible outside (shared) libraries.
211 AC_LBL_CHECK_COMPILER_OPT($1, -xldscope=hidden)
215 AC_MSG_CHECKING(that Ultrix $CC hacks const in prototypes)
216 AC_CACHE_VAL(ac_cv_lbl_cc_const_proto,
218 [#include <sys/types.h>],
219 [struct a { int b; };
220 void c(const struct a *)],
221 ac_cv_lbl_cc_const_proto=yes,
222 ac_cv_lbl_cc_const_proto=no))
223 AC_MSG_RESULT($ac_cv_lbl_cc_const_proto)
224 if test $ac_cv_lbl_cc_const_proto = no ; then
226 [to handle Ultrix compilers that don't support const in prototypes])
235 dnl Check whether the compiler option specified as the second argument
236 dnl is supported by the compiler and, if so, add it to the macro
237 dnl specified as the first argument
239 dnl If a third argument is supplied, treat it as C code to be compiled
240 dnl with the flag in question, and the "treat warnings as errors" flag
241 dnl set, and don't add the flag to the first argument if the compile
242 dnl fails; this is for warning options cause problems that can't be
243 dnl worked around. If a third argument is supplied, a fourth argument
244 dnl should also be supplied; it's a message describing what the test
245 dnl program is checking.
247 AC_DEFUN(AC_LBL_CHECK_COMPILER_OPT,
249 AC_MSG_CHECKING([whether the compiler supports the $2 option])
250 save_CFLAGS="$CFLAGS"
253 # XXX - yes, this depends on the way AC_LANG_WERROR works,
254 # but no mechanism is provided to turn AC_LANG_WERROR on
255 # *and then turn it back off*, so that we *only* do it when
256 # testing compiler options - 15 years after somebody asked
259 # https://autoconf.gnu.narkive.com/gTAVmfKD/how-to-cancel-flags-set-by-ac-lang-werror
261 save_ac_c_werror_flag="$ac_c_werror_flag"
264 # We use AC_LANG_SOURCE() so that we can control the complete
265 # content of the program being compiled. We do not, for example,
266 # want the default "int main()" that AC_LANG_PROGRAM() generates,
267 # as it will generate a warning with -Wold-style-definition, meaning
268 # that we would treat it as not working, as the test will fail if
269 # *any* error output, including a warning due to the flag we're
270 # testing, is generated; see
272 # https://www.postgresql.org/message-id/2192993.1591682589%40sss.pgh.pa.us
273 # https://www.postgresql.org/message-id/2192993.1591682589%40sss.pgh.pa.us
275 # This may, as per those two messages, be fixed in autoonf 2.70,
276 # but we only require 2.64 or newer for now.
279 [AC_LANG_SOURCE([[int main(void) { return 0; }]])],
282 can_add_to_cflags=yes
284 # The compile supports this; do we have some C code for
285 # which the warning should *not* appear?
286 # We test the fourth argument because the third argument
287 # could contain quotes, breaking the test.
291 CFLAGS="$CFLAGS $ac_lbl_cc_force_warning_errors"
292 AC_MSG_CHECKING(whether $2 $4)
294 [AC_LANG_SOURCE($3)],
309 CFLAGS="$save_CFLAGS"
310 if test x"$can_add_to_cflags" = "xyes"
317 CFLAGS="$save_CFLAGS"
319 ac_c_werror_flag="$save_ac_c_werror_flag"
323 dnl Check whether the compiler supports an option to generate
324 dnl Makefile-style dependency lines
326 dnl GCC uses -M for this. Non-GCC compilers that support this
327 dnl use a variety of flags, including but not limited to -M.
329 dnl We test whether the flag in question is supported, as older
330 dnl versions of compilers might not support it.
332 dnl We don't try all the possible flags, just in case some flag means
333 dnl "generate dependencies" on one compiler but means something else
334 dnl on another compiler.
336 dnl Most compilers that support this send the output to the standard
337 dnl output by default. IBM's XLC, however, supports -M but sends
338 dnl the output to {sourcefile-basename}.u, and AIX has no /dev/stdout
339 dnl to work around that, so we don't bother with XLC.
341 AC_DEFUN(AC_LBL_CHECK_DEPENDENCY_GENERATION_OPT,
343 AC_MSG_CHECKING([whether the compiler supports generating dependencies])
344 if test "$GCC" = yes ; then
346 # GCC, or a compiler deemed to be GCC by AC_PROG_CC (even
347 # though it's not); we assume that, in this case, the flag
350 ac_lbl_dependency_flag="-M"
353 # Not GCC or a compiler deemed to be GCC; what platform is
354 # this? (We're assuming that if the compiler isn't GCC
355 # it's the compiler from the vendor of the OS; that won't
356 # necessarily be true for x86 platforms, where it might be
357 # the Intel C compiler.)
363 # MIPS C for IRIX, DEC C, and clang all use -M.
365 ac_lbl_dependency_flag="-M"
372 ac_lbl_dependency_flag="-xM"
377 # HP's older C compilers don't support this.
378 # HP's newer C compilers support this with
379 # either +M or +Make; the older compilers
380 # interpret +M as something completely
381 # different, so we use +Make so we don't
382 # think it works with the older compilers.
384 ac_lbl_dependency_flag="+Make"
389 # Not one of the above; assume no support for
390 # generating dependencies.
392 ac_lbl_dependency_flag=""
398 # Is ac_lbl_dependency_flag defined and, if so, does the compiler
401 # Note: clang doesn't seem to exit with an error status when handed
402 # an unknown non-warning error, even if you pass it
403 # -Werror=unknown-warning-option. However, it always supports
404 # -M, so the fact that this test always succeeds with clang
407 if test ! -z "$ac_lbl_dependency_flag"; then
409 [AC_LANG_SOURCE([[int main(void) { return 0; }]])])
410 if AC_RUN_LOG([eval "$CC $ac_lbl_dependency_flag conftest.c >/dev/null 2>&1"]); then
411 AC_MSG_RESULT([yes, with $ac_lbl_dependency_flag])
412 DEPENDENCY_CFLAG="$ac_lbl_dependency_flag"
413 MKDEP='${top_srcdir}/mkdep'
417 # We can't run mkdep, so have "make depend" do
420 MKDEP='${top_srcdir}/nomkdep'
426 # We can't run mkdep, so have "make depend" do
429 MKDEP='${top_srcdir}/nomkdep'
431 AC_SUBST(DEPENDENCY_CFLAG)
436 dnl Determine what options are needed to build a shared library
440 dnl AC_LBL_SHLIBS_INIT
444 dnl V_SHLIB_CCOPT (modified to build position-independent code)
450 AC_DEFUN(AC_LBL_SHLIBS_INIT,
452 if test "$GCC" = yes ; then
454 # On platforms where we build a shared library:
456 # add options to generate position-independent code,
457 # if necessary (it's the default in AIX and Darwin/macOS);
459 # define option to set the soname of the shared library,
460 # if the OS supports that;
462 # add options to specify, at link time, a directory to
463 # add to the run-time search path, if that's necessary.
466 V_SHLIB_OPT="-shared"
472 freebsd*|netbsd*|openbsd*|dragonfly*|linux*|osf*|haiku*|midipix*)
474 # Platforms where the linker is the GNU linker
475 # or accepts command-line arguments like
476 # those the GNU linker accepts.
478 # Some instruction sets require -fPIC on some
479 # operating systems. Check for them. If you
480 # have a combination that requires it, add it
489 freebsd*|openbsd*|linux*)
495 V_SHLIB_CCOPT="$V_SHLIB_CCOPT $PIC_OPT"
496 V_SONAME_OPT="-Wl,-soname,"
497 V_RPATH_OPT="-Wl,-rpath,"
501 V_SHLIB_CCOPT="$V_SHLIB_CCOPT -fpic"
503 # XXX - this assumes GCC is using the HP linker,
504 # rather than the GNU linker, and that the "+h"
505 # option is used on all HP-UX platforms, both .sl
508 V_SONAME_OPT="-Wl,+h,"
510 # By default, directories specified with -L
511 # are added to the run-time search path, so
512 # we don't add them in pcap-config.
517 V_SHLIB_CCOPT="$V_SHLIB_CCOPT -fpic"
519 # XXX - this assumes GCC is using the Sun linker,
520 # rather than the GNU linker.
522 V_SONAME_OPT="-Wl,-h,"
523 V_RPATH_OPT="-Wl,-R,"
528 # Set the appropriate compiler flags and, on platforms
529 # where we build a shared library:
531 # add options to generate position-independent code,
532 # if necessary (it's the default in Darwin/macOS);
534 # if we generate ".so" shared libraries, define the
535 # appropriate options for building the shared library;
537 # add options to specify, at link time, a directory to
538 # add to the run-time search path, if that's necessary.
540 # Note: spaces after V_SONAME_OPT are significant; on
541 # some platforms the soname is passed with a GCC-like
542 # "-Wl,-soname,{soname}" option, with the soname part
543 # of the option, while on other platforms the C compiler
544 # driver takes it as a regular option with the soname
545 # following the option. The same applies to V_RPATH_OPT.
551 V_SHLIB_OPT="-G -bnoentry -bexpall"
554 freebsd*|netbsd*|openbsd*|dragonfly*|linux*)
558 V_SHLIB_CCOPT="$V_SHLIB_CCOPT -fpic"
560 V_SHLIB_OPT="-shared"
561 V_SONAME_OPT="-Wl,-soname,"
562 V_RPATH_OPT="-Wl,-rpath,"
566 V_SHLIB_CCOPT="$V_SHLIB_CCOPT +z"
571 # By default, directories specified with -L
572 # are added to the run-time search path, so
573 # we don't add them in pcap-config.
579 # Presumed to be DEC OSF/1, Digital UNIX, or
583 V_SHLIB_OPT="-shared"
584 V_SONAME_OPT="-soname "
585 V_RPATH_OPT="-rpath "
589 V_SHLIB_CCOPT="$V_SHLIB_CCOPT -Kpic"
600 # Try compiling a sample of the type of code that appears in
601 # gencode.c with "inline", "__inline__", and "__inline".
603 # Autoconf's AC_C_INLINE, at least in autoconf 2.13, isn't good enough,
604 # as it just tests whether a function returning "int" can be inlined;
605 # at least some versions of HP's C compiler can inline that, but can't
606 # inline a function that returns a struct pointer.
608 # Make sure we use the V_CCOPT flags, because some of those might
611 AC_DEFUN(AC_LBL_C_INLINE,
612 [AC_MSG_CHECKING(for inline)
613 save_CFLAGS="$CFLAGS"
615 AC_CACHE_VAL(ac_cv_lbl_inline, [
618 for ac_lbl_inline in inline __inline__ __inline
621 [#define inline $ac_lbl_inline
622 static inline struct iltest *foo(void);
628 static inline struct iltest *
631 static struct iltest xxx;
634 }],,ac_lbl_cc_inline=yes,)
635 if test "$ac_lbl_cc_inline" = yes ; then
639 if test "$ac_lbl_cc_inline" = yes ; then
640 ac_cv_lbl_inline=$ac_lbl_inline
642 CFLAGS="$save_CFLAGS"
643 if test ! -z "$ac_cv_lbl_inline" ; then
644 AC_MSG_RESULT($ac_cv_lbl_inline)
648 AC_DEFINE_UNQUOTED(inline, $ac_cv_lbl_inline, [Define as token for inline if inlining supported])])
651 # Test whether we have __atomic_load_n() and __atomic_store_n().
653 # We use AC_TRY_LINK because AC_TRY_COMPILE will succeed, as the
654 # compiler will just think that those functions are undefined,
655 # and perhaps warn about that, but not fail to compile.
657 AC_DEFUN(AC_PCAP_C___ATOMICS,
659 AC_MSG_CHECKING(for __atomic_load_n)
660 AC_CACHE_VAL(ac_cv_have___atomic_load_n,
665 j = __atomic_load_n(&i, __ATOMIC_RELAXED);
667 ac_have___atomic_load_n=yes,
668 ac_have___atomic_load_n=no))
669 AC_MSG_RESULT($ac_have___atomic_load_n)
670 if test $ac_have___atomic_load_n = yes ; then
671 AC_DEFINE(HAVE___ATOMIC_LOAD_N, 1,
672 [define if __atomic_load_n is supported by the compiler])
675 AC_MSG_CHECKING(for __atomic_store_n)
676 AC_CACHE_VAL(ac_cv_have___atomic_store_n,
680 __atomic_store_n(&i, 17, __ATOMIC_RELAXED);
682 ac_have___atomic_store_n=yes,
683 ac_have___atomic_store_n=no))
684 AC_MSG_RESULT($ac_have___atomic_store_n)
685 if test $ac_have___atomic_store_n = yes ; then
686 AC_DEFINE(HAVE___ATOMIC_STORE_N, 1,
687 [define if __atomic_store_n is supported by the compiler])
691 dnl If using gcc, make sure we have ANSI ioctl definitions
695 dnl AC_LBL_FIXINCLUDES
697 AC_DEFUN(AC_LBL_FIXINCLUDES,
698 [if test "$GCC" = yes ; then
699 AC_MSG_CHECKING(for ANSI ioctl definitions)
700 AC_CACHE_VAL(ac_cv_lbl_gcc_fixincludes,
703 * This generates a "duplicate case value" when fixincludes
706 # include <sys/types.h>
707 # include <sys/time.h>
708 # include <sys/ioctl.h>
709 # ifdef HAVE_SYS_IOCCOM_H
710 # include <sys/ioccom.h>
716 ac_cv_lbl_gcc_fixincludes=yes,
717 ac_cv_lbl_gcc_fixincludes=no))
718 AC_MSG_RESULT($ac_cv_lbl_gcc_fixincludes)
719 if test $ac_cv_lbl_gcc_fixincludes = no ; then
720 # Don't cache failure
721 unset ac_cv_lbl_gcc_fixincludes
722 AC_MSG_ERROR(see the INSTALL for more info)
727 dnl Checks to see if union wait is used with WEXITSTATUS()
731 dnl AC_LBL_UNION_WAIT
735 dnl DECLWAITSTATUS (defined)
737 AC_DEFUN(AC_LBL_UNION_WAIT,
738 [AC_MSG_CHECKING(if union wait is used)
739 AC_CACHE_VAL(ac_cv_lbl_union_wait,
741 # include <sys/types.h>
742 # include <sys/wait.h>],
744 u_int i = WEXITSTATUS(status);
745 u_int j = waitpid(0, &status, 0);],
746 ac_cv_lbl_union_wait=no,
747 ac_cv_lbl_union_wait=yes))
748 AC_MSG_RESULT($ac_cv_lbl_union_wait)
749 if test $ac_cv_lbl_union_wait = yes ; then
750 AC_DEFINE(DECLWAITSTATUS,union wait,[type for wait])
752 AC_DEFINE(DECLWAITSTATUS,int,[type for wait])
756 dnl Checks to see if -R is used
760 dnl AC_LBL_HAVE_RUN_PATH
764 dnl ac_cv_lbl_have_run_path (yes or no)
766 AC_DEFUN(AC_LBL_HAVE_RUN_PATH,
767 [AC_MSG_CHECKING(for ${CC-cc} -R)
768 AC_CACHE_VAL(ac_cv_lbl_have_run_path,
769 [echo 'main(){}' > conftest.c
770 ${CC-cc} -o conftest conftest.c -R/a1/b2/c3 >conftest.out 2>&1
771 if test ! -s conftest.out ; then
772 ac_cv_lbl_have_run_path=yes
774 ac_cv_lbl_have_run_path=no
777 AC_MSG_RESULT($ac_cv_lbl_have_run_path)
781 dnl If the file .devel exists:
782 dnl Add some warning flags if the compiler supports them
783 dnl If an os prototype include exists, symlink os-proto.h to it
787 dnl AC_LBL_DEVEL(copt)
791 dnl $1 (copt appended)
792 dnl HAVE_OS_PROTO_H (defined)
793 dnl os-proto.h (symlinked)
795 AC_DEFUN(AC_LBL_DEVEL,
797 if test "${LBL_CFLAGS+set}" = set; then
798 $1="$$1 ${LBL_CFLAGS}"
800 if test -f .devel ; then
802 # Skip all the warning option stuff on some compilers.
804 if test "$ac_lbl_cc_dont_try_gcc_dashW" != yes; then
805 AC_LBL_CHECK_COMPILER_OPT($1, -W)
806 AC_LBL_CHECK_COMPILER_OPT($1, -Wall)
807 AC_LBL_CHECK_COMPILER_OPT($1, -Wcomma)
808 AC_LBL_CHECK_COMPILER_OPT($1, -Wdocumentation)
809 AC_LBL_CHECK_COMPILER_OPT($1, -Wformat-nonliteral)
810 AC_LBL_CHECK_COMPILER_OPT($1, -Wmissing-noreturn)
811 AC_LBL_CHECK_COMPILER_OPT($1, -Wmissing-prototypes)
812 AC_LBL_CHECK_COMPILER_OPT($1, -Wmissing-variable-declarations)
813 AC_LBL_CHECK_COMPILER_OPT($1, -Wpointer-arith)
814 AC_LBL_CHECK_COMPILER_OPT($1, -Wpointer-sign)
815 AC_LBL_CHECK_COMPILER_OPT($1, -Wshadow)
816 AC_LBL_CHECK_COMPILER_OPT($1, -Wsign-compare)
817 AC_LBL_CHECK_COMPILER_OPT($1, -Wstrict-prototypes)
818 AC_LBL_CHECK_COMPILER_OPT($1, -Wunused-parameter)
819 AC_LBL_CHECK_COMPILER_OPT($1, -Wused-but-marked-unused)
820 # Warns about safeguards added in case the enums are
822 # AC_LBL_CHECK_COMPILER_OPT($1, -Wcovered-switch-default)
824 # This can cause problems with ntohs(), ntohl(),
825 # htons(), and htonl() on some platforms, such
826 # as OpenBSD 6.3 with Clang 5.0.1. I guess the
827 # problem is that the macro that ultimately does
828 # the byte-swapping involves a conditional
829 # expression that tests whether the value being
830 # swapped is a compile-time constant or not,
831 # using __builtin_constant_p(), and, depending
832 # on whether it is, does a compile-time swap or
833 # a run-time swap; perhaps the compiler always
834 # considers one of the two results of the
835 # conditional expressin is never evaluated,
836 # because the conditional check is done at
837 # compile time, and thus always says "that
838 # expression is never executed".
840 # (Perhaps there should be a way of flagging
841 # an expression that you *want* evaluated at
842 # compile time, so that the compiler 1) warns
843 # if it *can't* be evaluated at compile time
844 # and 2) *doesn't* warn that the true or false
845 # branch will never be reached.)
847 AC_LBL_CHECK_COMPILER_OPT($1, -Wunreachable-code,
849 #include <arpa/inet.h>
852 testme(unsigned short a)
857 [generates warnings from ntohs()])
858 AC_LBL_CHECK_COMPILER_OPT($1, -Wshorten-64-to-32)
860 AC_LBL_CHECK_DEPENDENCY_GENERATION_OPT()
862 # We used to set -n32 for IRIX 6 when not using GCC (presumed
863 # to mean that we're using MIPS C or MIPSpro C); it specified
864 # the "new" faster 32-bit ABI, introduced in IRIX 6.2. I'm
865 # not sure why that would be something to do *only* with a
866 # .devel file; why should the ABI for which we produce code
869 os=`echo $host_os | sed -e 's/\([[0-9]][[0-9]]*\)[[^0-9]].*$/\1/'`
871 if test -f $name ; then
872 ln -s $name os-proto.h
873 AC_DEFINE(HAVE_OS_PROTO_H, 1,
874 [if there's an os_proto.h for this platform, to use additional prototypes])
876 AC_MSG_WARN(can't find $name)
881 dnl Improved version of AC_CHECK_LIB
883 dnl Thanks to John Hawkinson (jhawk@mit.edu)
887 dnl AC_LBL_CHECK_LIB(LIBRARY, FUNCTION [, ACTION-IF-FOUND [,
888 dnl ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
894 dnl XXX - "AC_LBL_LIBRARY_NET" was redone to use "AC_SEARCH_LIBS"
895 dnl rather than "AC_LBL_CHECK_LIB", so this isn't used any more.
896 dnl We keep it around for reference purposes in case it's ever
897 dnl useful in the future.
900 define(AC_LBL_CHECK_LIB,
901 [AC_MSG_CHECKING([for $2 in -l$1])
902 dnl Use a cache variable name containing the library, function
903 dnl name, and extra libraries to link with, because the test really is
904 dnl for library $1 defining function $2, when linked with potinal
905 dnl library $5, not just for library $1. Separate tests with the same
906 dnl $1 and different $2's or $5's may have different results.
907 ac_lib_var=`echo $1['_']$2['_']$5 | sed 'y%./+- %__p__%'`
908 AC_CACHE_VAL(ac_cv_lbl_lib_$ac_lib_var,
909 [ac_save_LIBS="$LIBS"
912 ifelse([$2], [main], , dnl Avoid conflicting decl of main.
913 [/* Override any gcc2 internal prototype to avoid an error. */
914 ]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus
918 [/* We use char because int might match the return type of a gcc2
919 builtin and then its argument prototype would still apply. */
923 eval "ac_cv_lbl_lib_$ac_lib_var=yes",
924 eval "ac_cv_lbl_lib_$ac_lib_var=no")
927 if eval "test \"`echo '$ac_cv_lbl_lib_'$ac_lib_var`\" = yes"; then
931 ac_tr_lib=HAVE_LIB`echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g' \
932 -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
934 AC_DEFINE_UNQUOTED($ac_tr_lib)
945 dnl AC_LBL_LIBRARY_NET
947 dnl This test is for network applications that need socket functions and
948 dnl getaddrinfo()/getnameinfo()-ish functions. We now require
949 dnl getaddrinfo() and getnameinfo(). We also prefer versions of
950 dnl recvmsg() that conform to the Single UNIX Specification, so that we
951 dnl can check whether a datagram received with recvmsg() was truncated
952 dnl when received due to the buffer being too small.
954 dnl On most operating systems, they're available in the system library.
956 dnl Under Solaris, we need to link with libsocket and libnsl to get
957 dnl getaddrinfo() and getnameinfo() and, if we have libxnet, we need to
958 dnl link with libxnet before libsocket to get a version of recvmsg()
959 dnl that conforms to the Single UNIX Specification.
961 dnl We use getaddrinfo() because we want a portable thread-safe way
962 dnl of getting information for a host name or port; there exist _r
963 dnl versions of gethostbyname() and getservbyname() on some platforms,
964 dnl but not on all platforms.
966 AC_DEFUN(AC_LBL_LIBRARY_NET, [
968 # Most operating systems have getaddrinfo() in the default searched
969 # libraries (i.e. libc). Check there first.
971 AC_CHECK_FUNC(getaddrinfo,,
974 # Not found in the standard system libraries.
975 # Try libsocket, which requires libnsl.
977 AC_CHECK_LIB(socket, getaddrinfo,
980 # OK, we found it in libsocket.
982 LIBS="-lsocket -lnsl $LIBS"
986 # Not found in libsocket; test for it in libnetwork, which
987 # is where it is in Haiku.
989 AC_CHECK_LIB(network, getaddrinfo,
992 # OK, we found it in libnetwork.
994 LIBS="-lnetwork $LIBS"
1000 AC_MSG_ERROR([getaddrinfo is required, but wasn't found])
1005 # OK, do we have recvmsg() in libxnet?
1006 # We also link with libsocket and libnsl.
1008 AC_CHECK_LIB(xnet, recvmsg,
1011 # Yes - link with it as well.
1014 ], , -lsocket -lnsl)
1016 # DLPI needs putmsg under HPUX so test for -lstr while we're at it
1017 AC_SEARCH_LIBS(putmsg, str)
1020 m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
1021 dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
1022 dnl serial 11 (pkg-config-0.29)
1024 dnl Copyright © 2004 Scott James Remnant <scott@netsplit.com>.
1025 dnl Copyright © 2012-2015 Dan Nicholson <dbn.lists@gmail.com>
1027 dnl This program is free software; you can redistribute it and/or modify
1028 dnl it under the terms of the GNU General Public License as published by
1029 dnl the Free Software Foundation; either version 2 of the License, or
1030 dnl (at your option) any later version.
1032 dnl This program is distributed in the hope that it will be useful, but
1033 dnl WITHOUT ANY WARRANTY; without even the implied warranty of
1034 dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1035 dnl General Public License for more details.
1037 dnl You should have received a copy of the GNU General Public License
1038 dnl along with this program; if not, write to the Free Software
1039 dnl Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
1040 dnl 02111-1307, USA.
1042 dnl As a special exception to the GNU General Public License, if you
1043 dnl distribute this file as part of a program that contains a
1044 dnl configuration script generated by Autoconf, you may include it under
1045 dnl the same distribution terms that you use for the rest of that
1048 dnl PKG_PREREQ(MIN-VERSION)
1049 dnl -----------------------
1052 dnl Verify that the version of the pkg-config macros are at least
1053 dnl MIN-VERSION. Unlike PKG_PROG_PKG_CONFIG, which checks the user's
1054 dnl installed version of pkg-config, this checks the developer's version
1055 dnl of pkg.m4 when generating configure.
1057 dnl To ensure that this macro is defined, also add:
1058 dnl m4_ifndef([PKG_PREREQ],
1059 dnl [m4_fatal([must install pkg-config 0.29 or later before running autoconf/autogen])])
1061 dnl See the "Since" comment for each macro you use to see what version
1062 dnl of the macros you require.
1063 m4_defun([PKG_PREREQ],
1064 [m4_define([PKG_MACROS_VERSION], [0.29])
1065 m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1,
1066 [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])])
1069 dnl PKG_PROG_PKG_CONFIG([MIN-VERSION])
1070 dnl ----------------------------------
1073 dnl Search for the pkg-config tool and set the PKG_CONFIG variable to
1074 dnl first found in the path. Checks that the version of pkg-config found
1075 dnl is at least MIN-VERSION. If MIN-VERSION is not specified, 0.9.0 is
1076 dnl used since that's the first version where most current features of
1077 dnl pkg-config existed.
1078 AC_DEFUN([PKG_PROG_PKG_CONFIG],
1079 [m4_pattern_forbid([^_?PKG_[A-Z_]+$])
1080 m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$])
1081 m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$])
1082 AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])
1083 AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path])
1084 AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path])
1086 if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then
1087 AC_PATH_TOOL([PKG_CONFIG], [pkg-config])
1089 if test -n "$PKG_CONFIG"; then
1090 _pkg_min_version=m4_default([$1], [0.9.0])
1091 AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version])
1092 if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
1093 AC_MSG_RESULT([yes])
1099 ])dnl PKG_PROG_PKG_CONFIG
1101 dnl PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
1102 dnl -------------------------------------------------------------------
1105 dnl Check to see whether a particular set of modules exists. Similar to
1106 dnl PKG_CHECK_MODULES(), but does not set variables or print errors.
1107 AC_DEFUN([PKG_CHECK_EXISTS],
1109 if test -n "$PKG_CONFIG" && \
1110 AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then
1111 m4_default([$2], [:])
1112 m4_ifvaln([$3], [else
1116 dnl _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
1117 dnl ---------------------------------------------
1118 dnl Internal wrapper calling pkg-config via PKG_CONFIG and setting
1119 dnl pkg_failed based on the result.
1120 m4_define([_PKG_CONFIG],
1121 [if test -n "$$1"; then
1123 elif test -n "$PKG_CONFIG"; then
1124 PKG_CHECK_EXISTS([$3],
1125 [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`
1126 test "x$?" != "x0" && pkg_failed=yes ],
1133 dnl _PKG_SHORT_ERRORS_SUPPORTED
1134 dnl ---------------------------
1135 dnl Internal check to see if pkg-config supports short errors.
1136 AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED],
1138 if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
1139 _pkg_short_errors_supported=yes
1141 _pkg_short_errors_supported=no
1143 ])dnl _PKG_SHORT_ERRORS_SUPPORTED
1146 dnl PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
1147 dnl [ACTION-IF-NOT-FOUND])
1148 dnl --------------------------------------------------------------
1150 AC_DEFUN([PKG_CHECK_MODULES],
1152 AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $2, overriding pkg-config])dnl
1153 AC_ARG_VAR([$1][_LIBS], [linker flags for $2, overriding pkg-config])dnl
1156 AC_MSG_CHECKING([for $2 with pkg-config])
1157 PKG_CHECK_EXISTS($2,
1160 # The package was found, so try to get its C flags and
1163 _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2])
1164 _PKG_CONFIG([$1][_LIBS], [libs], [$2])
1166 m4_define([_PKG_TEXT], [
1167 Alternatively, you may set the environment variables $1[]_CFLAGS
1168 and $1[]_LIBS to avoid the need to call pkg-config.
1169 See the pkg-config man page for more details.])
1171 if test $pkg_failed = yes; then
1173 # That failed - report an error.
1175 AC_MSG_RESULT([error])
1176 _PKG_SHORT_ERRORS_SUPPORTED
1177 if test $_pkg_short_errors_supported = yes; then
1178 $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1`
1180 $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1`
1182 # Put the nasty error message in config.log where it belongs
1183 echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
1185 m4_default([$4], [AC_MSG_ERROR(
1186 [Package requirements ($2) were not met:
1190 Consider adjusting the PKG_CONFIG_PATH environment variable if you
1191 installed software in a non-standard prefix.
1195 elif test $pkg_failed = untried; then
1197 # We don't have pkg-config, so it didn't work.
1199 AC_MSG_RESULT([not found (pkg-config not found)])
1202 # We found the package.
1204 $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
1205 $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
1206 AC_MSG_RESULT([found])
1212 # The package isn't present.
1214 AC_MSG_RESULT([not found])
1216 ])dnl PKG_CHECK_MODULES
1219 dnl PKG_CHECK_MODULES_STATIC(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND],
1220 dnl [ACTION-IF-NOT-FOUND])
1221 dnl ---------------------------------------------------------------------
1224 dnl Checks for existence of MODULES and gathers its build flags with
1225 dnl static libraries enabled. Sets VARIABLE-PREFIX_CFLAGS from --cflags
1226 dnl and VARIABLE-PREFIX_LIBS from --libs.
1227 AC_DEFUN([PKG_CHECK_MODULES_STATIC],
1229 _save_PKG_CONFIG=$PKG_CONFIG
1230 PKG_CONFIG="$PKG_CONFIG --static"
1231 PKG_CHECK_MODULES($@)
1232 PKG_CONFIG=$_save_PKG_CONFIG[]dnl
1233 ])dnl PKG_CHECK_MODULES_STATIC
1236 dnl PKG_INSTALLDIR([DIRECTORY])
1237 dnl -------------------------
1240 dnl Substitutes the variable pkgconfigdir as the location where a module
1241 dnl should install pkg-config .pc files. By default the directory is
1242 dnl $libdir/pkgconfig, but the default can be changed by passing
1243 dnl DIRECTORY. The user can override through the --with-pkgconfigdir
1245 AC_DEFUN([PKG_INSTALLDIR],
1246 [m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])])
1247 m4_pushdef([pkg_description],
1248 [pkg-config installation directory @<:@]pkg_default[@:>@])
1249 AC_ARG_WITH([pkgconfigdir],
1250 [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],,
1251 [with_pkgconfigdir=]pkg_default)
1252 AC_SUBST([pkgconfigdir], [$with_pkgconfigdir])
1253 m4_popdef([pkg_default])
1254 m4_popdef([pkg_description])
1255 ])dnl PKG_INSTALLDIR
1258 dnl PKG_NOARCH_INSTALLDIR([DIRECTORY])
1259 dnl --------------------------------
1262 dnl Substitutes the variable noarch_pkgconfigdir as the location where a
1263 dnl module should install arch-independent pkg-config .pc files. By
1264 dnl default the directory is $datadir/pkgconfig, but the default can be
1265 dnl changed by passing DIRECTORY. The user can override through the
1266 dnl --with-noarch-pkgconfigdir parameter.
1267 AC_DEFUN([PKG_NOARCH_INSTALLDIR],
1268 [m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])])
1269 m4_pushdef([pkg_description],
1270 [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@])
1271 AC_ARG_WITH([noarch-pkgconfigdir],
1272 [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],,
1273 [with_noarch_pkgconfigdir=]pkg_default)
1274 AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir])
1275 m4_popdef([pkg_default])
1276 m4_popdef([pkg_description])
1277 ])dnl PKG_NOARCH_INSTALLDIR
1280 dnl PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE,
1281 dnl [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND])
1282 dnl -------------------------------------------
1285 dnl Retrieves the value of the pkg-config variable for the given module.
1286 AC_DEFUN([PKG_CHECK_VAR],
1288 AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl
1290 _PKG_CONFIG([$1], [variable="][$3]["], [$2])
1291 AS_VAR_COPY([$1], [pkg_cv_][$1])
1293 AS_VAR_IF([$1], [""], [$5], [$4])dnl