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