1dnl @(#) $Header: /tcpdump/master/libpcap/aclocal.m4,v 1.93 2008-11-18 07:29:48 guy Exp $ (LBL) 2dnl 3dnl Copyright (c) 1995, 1996, 1997, 1998 4dnl The Regents of the University of California. All rights reserved. 5dnl 6dnl Redistribution and use in source and binary forms, with or without 7dnl modification, are permitted provided that: (1) source code distributions 8dnl retain the above copyright notice and this paragraph in its entirety, (2) 9dnl distributions including binary code include the above copyright notice and 10dnl this paragraph in its entirety in the documentation or other materials 11dnl provided with the distribution, and (3) all advertising materials mentioning 12dnl features or use of this software display the following acknowledgement: 13dnl ``This product includes software developed by the University of California, 14dnl Lawrence Berkeley Laboratory and its contributors.'' Neither the name of 15dnl the University nor the names of its contributors may be used to endorse 16dnl or promote products derived from this software without specific prior 17dnl written permission. 18dnl THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED 19dnl WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF 20dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. 21dnl 22dnl LBL autoconf macros 23dnl 24 25dnl 26dnl Do whatever AC_LBL_C_INIT work is necessary before using AC_PROG_CC. 27dnl 28dnl It appears that newer versions of autoconf (2.64 and later) will, 29dnl if you use AC_TRY_COMPILE in a macro, stick AC_PROG_CC at the 30dnl beginning of the macro, even if the macro itself calls AC_PROG_CC. 31dnl See the "Prerequisite Macros" and "Expanded Before Required" sections 32dnl in the Autoconf documentation. 33dnl 34dnl This causes a steaming heap of fail in our case, as we were, in 35dnl AC_LBL_C_INIT, doing the tests we now do in AC_LBL_C_INIT_BEFORE_CC, 36dnl calling AC_PROG_CC, and then doing the tests we now do in 37dnl AC_LBL_C_INIT. Now, we run AC_LBL_C_INIT_BEFORE_CC, AC_PROG_CC, 38dnl and AC_LBL_C_INIT at the top level. 39dnl 40AC_DEFUN(AC_LBL_C_INIT_BEFORE_CC, 41 [AC_PREREQ(2.50) 42 AC_BEFORE([$0], [AC_LBL_C_INIT]) 43 AC_BEFORE([$0], [AC_PROG_CC]) 44 AC_BEFORE([$0], [AC_LBL_FIXINCLUDES]) 45 AC_BEFORE([$0], [AC_LBL_DEVEL]) 46 AC_ARG_WITH(gcc, [ --without-gcc don't use gcc]) 47 $1="-O" 48 $2="" 49 if test "${srcdir}" != "." ; then 50 $2="-I\$(srcdir)" 51 fi 52 if test "${CFLAGS+set}" = set; then 53 LBL_CFLAGS="$CFLAGS" 54 fi 55 if test -z "$CC" ; then 56 case "$host_os" in 57 58 bsdi*) 59 AC_CHECK_PROG(SHLICC2, shlicc2, yes, no) 60 if test $SHLICC2 = yes ; then 61 CC=shlicc2 62 export CC 63 fi 64 ;; 65 esac 66 fi 67 if test -z "$CC" -a "$with_gcc" = no ; then 68 CC=cc 69 export CC 70 fi 71]) 72 73dnl 74dnl Determine which compiler we're using (cc or gcc) 75dnl If using gcc, determine the version number 76dnl If using cc, require that it support ansi prototypes 77dnl If using gcc, use -O2 (otherwise use -O) 78dnl If using cc, explicitly specify /usr/local/include 79dnl 80dnl usage: 81dnl 82dnl AC_LBL_C_INIT(copt, incls) 83dnl 84dnl results: 85dnl 86dnl $1 (copt set) 87dnl $2 (incls set) 88dnl CC 89dnl LDFLAGS 90dnl ac_cv_lbl_gcc_vers 91dnl LBL_CFLAGS 92dnl 93AC_DEFUN(AC_LBL_C_INIT, 94 [AC_PREREQ(2.50) 95 AC_BEFORE([$0], [AC_LBL_FIXINCLUDES]) 96 AC_BEFORE([$0], [AC_LBL_DEVEL]) 97 AC_BEFORE([$0], [AC_LBL_SHLIBS_INIT]) 98 if test "$GCC" = yes ; then 99 if test "$SHLICC2" = yes ; then 100 ac_cv_lbl_gcc_vers=2 101 $1="-O2" 102 else 103 AC_MSG_CHECKING(gcc version) 104 AC_CACHE_VAL(ac_cv_lbl_gcc_vers, 105 ac_cv_lbl_gcc_vers=`$CC -v 2>&1 | \ 106 sed -e '/^gcc version /!d' \ 107 -e 's/^gcc version //' \ 108 -e 's/ .*//' -e 's/^[[[^0-9]]]*//' \ 109 -e 's/\..*//'`) 110 AC_MSG_RESULT($ac_cv_lbl_gcc_vers) 111 if test $ac_cv_lbl_gcc_vers -gt 1 ; then 112 $1="-O2" 113 fi 114 fi 115 else 116 AC_MSG_CHECKING(that $CC handles ansi prototypes) 117 AC_CACHE_VAL(ac_cv_lbl_cc_ansi_prototypes, 118 AC_TRY_COMPILE( 119 [#include <sys/types.h>], 120 [int frob(int, char *)], 121 ac_cv_lbl_cc_ansi_prototypes=yes, 122 ac_cv_lbl_cc_ansi_prototypes=no)) 123 AC_MSG_RESULT($ac_cv_lbl_cc_ansi_prototypes) 124 if test $ac_cv_lbl_cc_ansi_prototypes = no ; then 125 case "$host_os" in 126 127 hpux*) 128 AC_MSG_CHECKING(for HP-UX ansi compiler ($CC -Aa -D_HPUX_SOURCE)) 129 savedcflags="$CFLAGS" 130 CFLAGS="-Aa -D_HPUX_SOURCE $CFLAGS" 131 AC_CACHE_VAL(ac_cv_lbl_cc_hpux_cc_aa, 132 AC_TRY_COMPILE( 133 [#include <sys/types.h>], 134 [int frob(int, char *)], 135 ac_cv_lbl_cc_hpux_cc_aa=yes, 136 ac_cv_lbl_cc_hpux_cc_aa=no)) 137 AC_MSG_RESULT($ac_cv_lbl_cc_hpux_cc_aa) 138 if test $ac_cv_lbl_cc_hpux_cc_aa = no ; then 139 AC_MSG_ERROR(see the INSTALL doc for more info) 140 fi 141 CFLAGS="$savedcflags" 142 $1="-Aa $$1" 143 AC_DEFINE(_HPUX_SOURCE,1,[needed on HP-UX]) 144 ;; 145 146 osf*) 147 AC_MSG_CHECKING(for ansi mode in DEC compiler ($CC -std1)) 148 savedcflags="$CFLAGS" 149 CFLAGS="-std1" 150 AC_CACHE_VAL(ac_cv_lbl_cc_osf1_cc_std1, 151 AC_TRY_COMPILE( 152 [#include <sys/types.h>], 153 [int frob(int, char *)], 154 ac_cv_lbl_cc_osf1_cc_std1=yes, 155 ac_cv_lbl_cc_osf1_cc_std1=no)) 156 AC_MSG_RESULT($ac_cv_lbl_cc_osf1_cc_std1) 157 if test $ac_cv_lbl_cc_osf1_cc_std1 = no ; then 158 AC_MSG_ERROR(see the INSTALL doc for more info) 159 fi 160 CFLAGS="$savedcflags" 161 $1="-std1 $$1" 162 ;; 163 164 *) 165 AC_MSG_ERROR(see the INSTALL doc for more info) 166 ;; 167 esac 168 fi 169 $2="$$2 -I/usr/local/include" 170 LDFLAGS="$LDFLAGS -L/usr/local/lib" 171 172 case "$host_os" in 173 174 irix*) 175 $1="$$1 -xansi -signed -g3" 176 ;; 177 178 osf*) 179 # 180 # Presumed to be DEC OSF/1, Digital UNIX, or 181 # Tru64 UNIX. 182 # 183 $1="$$1 -g3" 184 ;; 185 186 ultrix*) 187 AC_MSG_CHECKING(that Ultrix $CC hacks const in prototypes) 188 AC_CACHE_VAL(ac_cv_lbl_cc_const_proto, 189 AC_TRY_COMPILE( 190 [#include <sys/types.h>], 191 [struct a { int b; }; 192 void c(const struct a *)], 193 ac_cv_lbl_cc_const_proto=yes, 194 ac_cv_lbl_cc_const_proto=no)) 195 AC_MSG_RESULT($ac_cv_lbl_cc_const_proto) 196 if test $ac_cv_lbl_cc_const_proto = no ; then 197 AC_DEFINE(const,[], 198 [to handle Ultrix compilers that don't support const in prototypes]) 199 fi 200 ;; 201 esac 202 fi 203]) 204 205dnl 206dnl Determine what options are needed to build a shared library 207dnl 208dnl usage: 209dnl 210dnl AC_LBL_SHLIBS_INIT 211dnl 212dnl results: 213dnl 214dnl V_CCOPT (modified to build position-independent code) 215dnl V_SHLIB_CMD 216dnl V_SHLIB_OPT 217dnl V_SONAME_OPT 218dnl V_RPATH_OPT 219dnl 220AC_DEFUN(AC_LBL_SHLIBS_INIT, 221 [AC_PREREQ(2.50) 222 if test "$GCC" = yes ; then 223 # 224 # On platforms where we build a shared library: 225 # 226 # add options to generate position-independent code, 227 # if necessary (it's the default in AIX and Darwin/OS X); 228 # 229 # define option to set the soname of the shared library, 230 # if the OS supports that; 231 # 232 # add options to specify, at link time, a directory to 233 # add to the run-time search path, if that's necessary. 234 # 235 V_SHLIB_CMD="\$(CC)" 236 V_SHLIB_OPT="-shared" 237 case "$host_os" in 238 239 aix*) 240 ;; 241 242 freebsd*|netbsd*|openbsd*|dragonfly*|linux*|osf*) 243 # 244 # Platforms where the linker is the GNU linker 245 # or accepts command-line arguments like 246 # those the GNU linker accepts. 247 # 248 # Some instruction sets require -fPIC on some 249 # operating systems. Check for them. If you 250 # have a combination that requires it, add it 251 # here. 252 # 253 PIC_OPT=-fpic 254 case "$host_cpu" in 255 256 sparc64*) 257 case "$host_os" in 258 259 freebsd*) 260 PIC_OPT=-fPIC 261 ;; 262 esac 263 ;; 264 esac 265 V_CCOPT="$V_CCOPT $PIC_OPT" 266 V_SONAME_OPT="-Wl,-soname," 267 V_RPATH_OPT="-Wl,-rpath," 268 ;; 269 270 hpux*) 271 V_CCOPT="$V_CCOPT -fpic" 272 # 273 # XXX - this assumes GCC is using the HP linker, 274 # rather than the GNU linker, and that the "+h" 275 # option is used on all HP-UX platforms, both .sl 276 # and .so. 277 # 278 V_SONAME_OPT="-Wl,+h," 279 # 280 # By default, directories specifed with -L 281 # are added to the run-time search path, so 282 # we don't add them in pcap-config. 283 # 284 ;; 285 286 solaris*) 287 V_CCOPT="$V_CCOPT -fpic" 288 # 289 # XXX - this assumes GCC is using the Sun linker, 290 # rather than the GNU linker. 291 # 292 V_SONAME_OPT="-Wl,-h," 293 V_RPATH_OPT="-Wl,-R," 294 ;; 295 esac 296 else 297 # 298 # Set the appropriate compiler flags and, on platforms 299 # where we build a shared library: 300 # 301 # add options to generate position-independent code, 302 # if necessary (it's the default in Darwin/OS X); 303 # 304 # if we generate ".so" shared libraries, define the 305 # appropriate options for building the shared library; 306 # 307 # add options to specify, at link time, a directory to 308 # add to the run-time search path, if that's necessary. 309 # 310 # Note: spaces after V_SONAME_OPT are significant; on 311 # some platforms the soname is passed with a GCC-like 312 # "-Wl,-soname,{soname}" option, with the soname part 313 # of the option, while on other platforms the C compiler 314 # driver takes it as a regular option with the soname 315 # following the option. The same applies to V_RPATH_OPT. 316 # 317 case "$host_os" in 318 319 aix*) 320 V_SHLIB_CMD="\$(CC)" 321 V_SHLIB_OPT="-G -bnoentry -bexpall" 322 ;; 323 324 freebsd*|netbsd*|openbsd*|dragonfly*|linux*) 325 # 326 # "cc" is GCC. 327 # 328 V_CCOPT="$V_CCOPT -fpic" 329 V_SHLIB_CMD="\$(CC)" 330 V_SHLIB_OPT="-shared" 331 V_SONAME_OPT="-Wl,-soname," 332 V_RPATH_OPT="-Wl,-rpath," 333 ;; 334 335 hpux*) 336 V_CCOPT="$V_CCOPT +z" 337 V_SHLIB_CMD="\$(LD)" 338 V_SHLIB_OPT="-b" 339 V_SONAME_OPT="+h " 340 # 341 # By default, directories specifed with -L 342 # are added to the run-time search path, so 343 # we don't add them in pcap-config. 344 # 345 ;; 346 347 osf*) 348 # 349 # Presumed to be DEC OSF/1, Digital UNIX, or 350 # Tru64 UNIX. 351 # 352 V_SHLIB_CMD="\$(CC)" 353 V_SHLIB_OPT="-shared" 354 V_SONAME_OPT="-soname " 355 V_RPATH_OPT="-rpath " 356 ;; 357 358 solaris*) 359 V_CCOPT="$V_CCOPT -Kpic" 360 V_SHLIB_CMD="\$(CC)" 361 V_SHLIB_OPT="-G" 362 V_SONAME_OPT="-h " 363 V_RPATH_OPT="-R" 364 ;; 365 esac 366 fi 367]) 368 369# 370# Try compiling a sample of the type of code that appears in 371# gencode.c with "inline", "__inline__", and "__inline". 372# 373# Autoconf's AC_C_INLINE, at least in autoconf 2.13, isn't good enough, 374# as it just tests whether a function returning "int" can be inlined; 375# at least some versions of HP's C compiler can inline that, but can't 376# inline a function that returns a struct pointer. 377# 378# Make sure we use the V_CCOPT flags, because some of those might 379# disable inlining. 380# 381AC_DEFUN(AC_LBL_C_INLINE, 382 [AC_MSG_CHECKING(for inline) 383 save_CFLAGS="$CFLAGS" 384 CFLAGS="$V_CCOPT" 385 AC_CACHE_VAL(ac_cv_lbl_inline, [ 386 ac_cv_lbl_inline="" 387 ac_lbl_cc_inline=no 388 for ac_lbl_inline in inline __inline__ __inline 389 do 390 AC_TRY_COMPILE( 391 [#define inline $ac_lbl_inline 392 static inline struct iltest *foo(void); 393 struct iltest { 394 int iltest1; 395 int iltest2; 396 }; 397 398 static inline struct iltest * 399 foo() 400 { 401 static struct iltest xxx; 402 403 return &xxx; 404 }],,ac_lbl_cc_inline=yes,) 405 if test "$ac_lbl_cc_inline" = yes ; then 406 break; 407 fi 408 done 409 if test "$ac_lbl_cc_inline" = yes ; then 410 ac_cv_lbl_inline=$ac_lbl_inline 411 fi]) 412 CFLAGS="$save_CFLAGS" 413 if test ! -z "$ac_cv_lbl_inline" ; then 414 AC_MSG_RESULT($ac_cv_lbl_inline) 415 else 416 AC_MSG_RESULT(no) 417 fi 418 AC_DEFINE_UNQUOTED(inline, $ac_cv_lbl_inline, [Define as token for inline if inlining supported])]) 419 420dnl 421dnl If using gcc, make sure we have ANSI ioctl definitions 422dnl 423dnl usage: 424dnl 425dnl AC_LBL_FIXINCLUDES 426dnl 427AC_DEFUN(AC_LBL_FIXINCLUDES, 428 [if test "$GCC" = yes ; then 429 AC_MSG_CHECKING(for ANSI ioctl definitions) 430 AC_CACHE_VAL(ac_cv_lbl_gcc_fixincludes, 431 AC_TRY_COMPILE( 432 [/* 433 * This generates a "duplicate case value" when fixincludes 434 * has not be run. 435 */ 436# include <sys/types.h> 437# include <sys/time.h> 438# include <sys/ioctl.h> 439# ifdef HAVE_SYS_IOCCOM_H 440# include <sys/ioccom.h> 441# endif], 442 [switch (0) { 443 case _IO('A', 1):; 444 case _IO('B', 1):; 445 }], 446 ac_cv_lbl_gcc_fixincludes=yes, 447 ac_cv_lbl_gcc_fixincludes=no)) 448 AC_MSG_RESULT($ac_cv_lbl_gcc_fixincludes) 449 if test $ac_cv_lbl_gcc_fixincludes = no ; then 450 # Don't cache failure 451 unset ac_cv_lbl_gcc_fixincludes 452 AC_MSG_ERROR(see the INSTALL for more info) 453 fi 454 fi]) 455 456dnl 457dnl Check for flex, default to lex 458dnl Require flex 2.4 or higher 459dnl Check for bison, default to yacc 460dnl Default to lex/yacc if both flex and bison are not available 461dnl Define the yy prefix string if using flex and bison 462dnl 463dnl usage: 464dnl 465dnl AC_LBL_LEX_AND_YACC(lex, yacc, yyprefix) 466dnl 467dnl results: 468dnl 469dnl $1 (lex set) 470dnl $2 (yacc appended) 471dnl $3 (optional flex and bison -P prefix) 472dnl 473AC_DEFUN(AC_LBL_LEX_AND_YACC, 474 [AC_ARG_WITH(flex, [ --without-flex don't use flex]) 475 AC_ARG_WITH(bison, [ --without-bison don't use bison]) 476 if test "$with_flex" = no ; then 477 $1=lex 478 else 479 AC_CHECK_PROGS($1, flex, lex) 480 fi 481 if test "$$1" = flex ; then 482 # The -V flag was added in 2.4 483 AC_MSG_CHECKING(for flex 2.4 or higher) 484 AC_CACHE_VAL(ac_cv_lbl_flex_v24, 485 if flex -V >/dev/null 2>&1; then 486 ac_cv_lbl_flex_v24=yes 487 else 488 ac_cv_lbl_flex_v24=no 489 fi) 490 AC_MSG_RESULT($ac_cv_lbl_flex_v24) 491 if test $ac_cv_lbl_flex_v24 = no ; then 492 s="2.4 or higher required" 493 AC_MSG_WARN(ignoring obsolete flex executable ($s)) 494 $1=lex 495 fi 496 fi 497 if test "$with_bison" = no ; then 498 $2=yacc 499 else 500 AC_CHECK_PROGS($2, bison, yacc) 501 fi 502 if test "$$2" = bison ; then 503 $2="$$2 -y" 504 fi 505 if test "$$1" != lex -a "$$2" = yacc -o "$$1" = lex -a "$$2" != yacc ; then 506 AC_MSG_WARN(don't have both flex and bison; reverting to lex/yacc) 507 $1=lex 508 $2=yacc 509 fi 510 if test "$$1" = flex -a -n "$3" ; then 511 $1="$$1 -P$3" 512 $2="$$2 -p $3" 513 fi]) 514 515dnl 516dnl Checks to see if union wait is used with WEXITSTATUS() 517dnl 518dnl usage: 519dnl 520dnl AC_LBL_UNION_WAIT 521dnl 522dnl results: 523dnl 524dnl DECLWAITSTATUS (defined) 525dnl 526AC_DEFUN(AC_LBL_UNION_WAIT, 527 [AC_MSG_CHECKING(if union wait is used) 528 AC_CACHE_VAL(ac_cv_lbl_union_wait, 529 AC_TRY_COMPILE([ 530# include <sys/types.h> 531# include <sys/wait.h>], 532 [int status; 533 u_int i = WEXITSTATUS(status); 534 u_int j = waitpid(0, &status, 0);], 535 ac_cv_lbl_union_wait=no, 536 ac_cv_lbl_union_wait=yes)) 537 AC_MSG_RESULT($ac_cv_lbl_union_wait) 538 if test $ac_cv_lbl_union_wait = yes ; then 539 AC_DEFINE(DECLWAITSTATUS,union wait,[type for wait]) 540 else 541 AC_DEFINE(DECLWAITSTATUS,int,[type for wait]) 542 fi]) 543 544dnl 545dnl Checks to see if the sockaddr struct has the 4.4 BSD sa_len member 546dnl 547dnl usage: 548dnl 549dnl AC_LBL_SOCKADDR_SA_LEN 550dnl 551dnl results: 552dnl 553dnl HAVE_SOCKADDR_SA_LEN (defined) 554dnl 555AC_DEFUN(AC_LBL_SOCKADDR_SA_LEN, 556 [AC_MSG_CHECKING(if sockaddr struct has the sa_len member) 557 AC_CACHE_VAL(ac_cv_lbl_sockaddr_has_sa_len, 558 AC_TRY_COMPILE([ 559# include <sys/types.h> 560# include <sys/socket.h>], 561 [u_int i = sizeof(((struct sockaddr *)0)->sa_len)], 562 ac_cv_lbl_sockaddr_has_sa_len=yes, 563 ac_cv_lbl_sockaddr_has_sa_len=no)) 564 AC_MSG_RESULT($ac_cv_lbl_sockaddr_has_sa_len) 565 if test $ac_cv_lbl_sockaddr_has_sa_len = yes ; then 566 AC_DEFINE(HAVE_SOCKADDR_SA_LEN,1,[if struct sockaddr has the sa_len member]) 567 fi]) 568 569dnl 570dnl Checks to see if there's a sockaddr_storage structure 571dnl 572dnl usage: 573dnl 574dnl AC_LBL_SOCKADDR_STORAGE 575dnl 576dnl results: 577dnl 578dnl HAVE_SOCKADDR_STORAGE (defined) 579dnl 580AC_DEFUN(AC_LBL_SOCKADDR_STORAGE, 581 [AC_MSG_CHECKING(if sockaddr_storage struct exists) 582 AC_CACHE_VAL(ac_cv_lbl_has_sockaddr_storage, 583 AC_TRY_COMPILE([ 584# include <sys/types.h> 585# include <sys/socket.h>], 586 [u_int i = sizeof (struct sockaddr_storage)], 587 ac_cv_lbl_has_sockaddr_storage=yes, 588 ac_cv_lbl_has_sockaddr_storage=no)) 589 AC_MSG_RESULT($ac_cv_lbl_has_sockaddr_storage) 590 if test $ac_cv_lbl_has_sockaddr_storage = yes ; then 591 AC_DEFINE(HAVE_SOCKADDR_STORAGE,1,[if struct sockaddr_storage exists]) 592 fi]) 593 594dnl 595dnl Checks to see if the dl_hp_ppa_info_t struct has the HP-UX 11.00 596dnl dl_module_id_1 member 597dnl 598dnl usage: 599dnl 600dnl AC_LBL_HP_PPA_INFO_T_DL_MODULE_ID_1 601dnl 602dnl results: 603dnl 604dnl HAVE_HP_PPA_INFO_T_DL_MODULE_ID_1 (defined) 605dnl 606dnl NOTE: any compile failure means we conclude that it doesn't have 607dnl that member, so if we don't have DLPI, don't have a <sys/dlpi_ext.h> 608dnl header, or have one that doesn't declare a dl_hp_ppa_info_t type, 609dnl we conclude it doesn't have that member (which is OK, as either we 610dnl won't be using code that would use that member, or we wouldn't 611dnl compile in any case). 612dnl 613AC_DEFUN(AC_LBL_HP_PPA_INFO_T_DL_MODULE_ID_1, 614 [AC_MSG_CHECKING(if dl_hp_ppa_info_t struct has dl_module_id_1 member) 615 AC_CACHE_VAL(ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1, 616 AC_TRY_COMPILE([ 617# include <sys/types.h> 618# include <sys/dlpi.h> 619# include <sys/dlpi_ext.h>], 620 [u_int i = sizeof(((dl_hp_ppa_info_t *)0)->dl_module_id_1)], 621 ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1=yes, 622 ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1=no)) 623 AC_MSG_RESULT($ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1) 624 if test $ac_cv_lbl_dl_hp_ppa_info_t_has_dl_module_id_1 = yes ; then 625 AC_DEFINE(HAVE_HP_PPA_INFO_T_DL_MODULE_ID_1,1,[if ppa_info_t_dl_module_id exists]) 626 fi]) 627 628dnl 629dnl Checks to see if -R is used 630dnl 631dnl usage: 632dnl 633dnl AC_LBL_HAVE_RUN_PATH 634dnl 635dnl results: 636dnl 637dnl ac_cv_lbl_have_run_path (yes or no) 638dnl 639AC_DEFUN(AC_LBL_HAVE_RUN_PATH, 640 [AC_MSG_CHECKING(for ${CC-cc} -R) 641 AC_CACHE_VAL(ac_cv_lbl_have_run_path, 642 [echo 'main(){}' > conftest.c 643 ${CC-cc} -o conftest conftest.c -R/a1/b2/c3 >conftest.out 2>&1 644 if test ! -s conftest.out ; then 645 ac_cv_lbl_have_run_path=yes 646 else 647 ac_cv_lbl_have_run_path=no 648 fi 649 rm -f -r conftest*]) 650 AC_MSG_RESULT($ac_cv_lbl_have_run_path) 651 ]) 652 653dnl 654dnl Checks to see if unaligned memory accesses fail 655dnl 656dnl usage: 657dnl 658dnl AC_LBL_UNALIGNED_ACCESS 659dnl 660dnl results: 661dnl 662dnl LBL_ALIGN (DEFINED) 663dnl 664AC_DEFUN(AC_LBL_UNALIGNED_ACCESS, 665 [AC_MSG_CHECKING(if unaligned accesses fail) 666 AC_CACHE_VAL(ac_cv_lbl_unaligned_fail, 667 [case "$host_cpu" in 668 669 # 670 # These are CPU types where: 671 # 672 # the CPU faults on an unaligned access, but at least some 673 # OSes that support that CPU catch the fault and simulate 674 # the unaligned access (e.g., Alpha/{Digital,Tru64} UNIX) - 675 # the simulation is slow, so we don't want to use it; 676 # 677 # the CPU, I infer (from the old 678 # 679 # XXX: should also check that they don't do weird things (like on arm) 680 # 681 # comment) doesn't fault on unaligned accesses, but doesn't 682 # do a normal unaligned fetch, either (e.g., presumably, ARM); 683 # 684 # for whatever reason, the test program doesn't work 685 # (this has been claimed to be the case for several of those 686 # CPUs - I don't know what the problem is; the problem 687 # was reported as "the test program dumps core" for SuperH, 688 # but that's what the test program is *supposed* to do - 689 # it dumps core before it writes anything, so the test 690 # for an empty output file should find an empty output 691 # file and conclude that unaligned accesses don't work). 692 # 693 # This run-time test won't work if you're cross-compiling, so 694 # in order to support cross-compiling for a particular CPU, 695 # we have to wire in the list of CPU types anyway, as far as 696 # I know, so perhaps we should just have a set of CPUs on 697 # which we know it doesn't work, a set of CPUs on which we 698 # know it does work, and have the script just fail on other 699 # cpu types and update it when such a failure occurs. 700 # 701 alpha*|arm*|bfin*|hp*|mips*|sh*|sparc*|ia64|nv1) 702 ac_cv_lbl_unaligned_fail=yes 703 ;; 704 705 *) 706 cat >conftest.c <<EOF 707# include <sys/types.h> 708# include <sys/wait.h> 709# include <stdio.h> 710 unsigned char a[[5]] = { 1, 2, 3, 4, 5 }; 711 main() { 712 unsigned int i; 713 pid_t pid; 714 int status; 715 /* avoid "core dumped" message */ 716 pid = fork(); 717 if (pid < 0) 718 exit(2); 719 if (pid > 0) { 720 /* parent */ 721 pid = waitpid(pid, &status, 0); 722 if (pid < 0) 723 exit(3); 724 exit(!WIFEXITED(status)); 725 } 726 /* child */ 727 i = *(unsigned int *)&a[[1]]; 728 printf("%d\n", i); 729 exit(0); 730 } 731EOF 732 ${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS \ 733 conftest.c $LIBS >/dev/null 2>&1 734 if test ! -x conftest ; then 735 dnl failed to compile for some reason 736 ac_cv_lbl_unaligned_fail=yes 737 else 738 ./conftest >conftest.out 739 if test ! -s conftest.out ; then 740 ac_cv_lbl_unaligned_fail=yes 741 else 742 ac_cv_lbl_unaligned_fail=no 743 fi 744 fi 745 rm -f -r conftest* core core.conftest 746 ;; 747 esac]) 748 AC_MSG_RESULT($ac_cv_lbl_unaligned_fail) 749 if test $ac_cv_lbl_unaligned_fail = yes ; then 750 AC_DEFINE(LBL_ALIGN,1,[if unaligned access fails]) 751 fi]) 752 753dnl 754dnl If using gcc and the file .devel exists: 755dnl Compile with -g (if supported) and -Wall 756dnl If using gcc 2 or later, do extra prototype checking 757dnl If an os prototype include exists, symlink os-proto.h to it 758dnl 759dnl usage: 760dnl 761dnl AC_LBL_DEVEL(copt) 762dnl 763dnl results: 764dnl 765dnl $1 (copt appended) 766dnl HAVE_OS_PROTO_H (defined) 767dnl os-proto.h (symlinked) 768dnl 769AC_DEFUN(AC_LBL_DEVEL, 770 [rm -f os-proto.h 771 if test "${LBL_CFLAGS+set}" = set; then 772 $1="$$1 ${LBL_CFLAGS}" 773 fi 774 if test -f .devel ; then 775 if test "$GCC" = yes ; then 776 if test "${LBL_CFLAGS+set}" != set; then 777 if test "$ac_cv_prog_cc_g" = yes ; then 778 $1="-g $$1" 779 fi 780 $1="$$1 -Wall" 781 if test $ac_cv_lbl_gcc_vers -gt 1 ; then 782 $1="$$1 -Wmissing-prototypes -Wstrict-prototypes" 783 fi 784 fi 785 else 786 case "$host_os" in 787 788 irix6*) 789 V_CCOPT="$V_CCOPT -n32" 790 ;; 791 792 *) 793 ;; 794 esac 795 fi 796 os=`echo $host_os | sed -e 's/\([[0-9]][[0-9]]*\)[[^0-9]].*$/\1/'` 797 name="lbl/os-$os.h" 798 if test -f $name ; then 799 ln -s $name os-proto.h 800 AC_DEFINE(HAVE_OS_PROTO_H, 1, 801 [if there's an os_proto.h for this platform, to use additional prototypes]) 802 else 803 AC_MSG_WARN(can't find $name) 804 fi 805 fi]) 806 807dnl 808dnl Improved version of AC_CHECK_LIB 809dnl 810dnl Thanks to John Hawkinson (jhawk@mit.edu) 811dnl 812dnl usage: 813dnl 814dnl AC_LBL_CHECK_LIB(LIBRARY, FUNCTION [, ACTION-IF-FOUND [, 815dnl ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]]) 816dnl 817dnl results: 818dnl 819dnl LIBS 820dnl 821dnl XXX - "AC_LBL_LIBRARY_NET" was redone to use "AC_SEARCH_LIBS" 822dnl rather than "AC_LBL_CHECK_LIB", so this isn't used any more. 823dnl We keep it around for reference purposes in case it's ever 824dnl useful in the future. 825dnl 826 827define(AC_LBL_CHECK_LIB, 828[AC_MSG_CHECKING([for $2 in -l$1]) 829dnl Use a cache variable name containing the library, function 830dnl name, and extra libraries to link with, because the test really is 831dnl for library $1 defining function $2, when linked with potinal 832dnl library $5, not just for library $1. Separate tests with the same 833dnl $1 and different $2's or $5's may have different results. 834ac_lib_var=`echo $1['_']$2['_']$5 | sed 'y%./+- %__p__%'` 835AC_CACHE_VAL(ac_cv_lbl_lib_$ac_lib_var, 836[ac_save_LIBS="$LIBS" 837LIBS="-l$1 $5 $LIBS" 838AC_TRY_LINK(dnl 839ifelse([$2], [main], , dnl Avoid conflicting decl of main. 840[/* Override any gcc2 internal prototype to avoid an error. */ 841]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus 842extern "C" 843#endif 844])dnl 845[/* We use char because int might match the return type of a gcc2 846 builtin and then its argument prototype would still apply. */ 847char $2(); 848]), 849 [$2()], 850 eval "ac_cv_lbl_lib_$ac_lib_var=yes", 851 eval "ac_cv_lbl_lib_$ac_lib_var=no") 852LIBS="$ac_save_LIBS" 853])dnl 854if eval "test \"`echo '$ac_cv_lbl_lib_'$ac_lib_var`\" = yes"; then 855 AC_MSG_RESULT(yes) 856 ifelse([$3], , 857[changequote(, )dnl 858 ac_tr_lib=HAVE_LIB`echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g' \ 859 -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'` 860changequote([, ])dnl 861 AC_DEFINE_UNQUOTED($ac_tr_lib) 862 LIBS="-l$1 $LIBS" 863], [$3]) 864else 865 AC_MSG_RESULT(no) 866ifelse([$4], , , [$4 867])dnl 868fi 869]) 870 871dnl 872dnl AC_LBL_LIBRARY_NET 873dnl 874dnl This test is for network applications that need socket() and 875dnl gethostbyname() -ish functions. Under Solaris, those applications 876dnl need to link with "-lsocket -lnsl". Under IRIX, they need to link 877dnl with "-lnsl" but should *not* link with "-lsocket" because 878dnl libsocket.a breaks a number of things (for instance: 879dnl gethostbyname() under IRIX 5.2, and snoop sockets under most 880dnl versions of IRIX). 881dnl 882dnl Unfortunately, many application developers are not aware of this, 883dnl and mistakenly write tests that cause -lsocket to be used under 884dnl IRIX. It is also easy to write tests that cause -lnsl to be used 885dnl under operating systems where neither are necessary (or useful), 886dnl such as SunOS 4.1.4, which uses -lnsl for TLI. 887dnl 888dnl This test exists so that every application developer does not test 889dnl this in a different, and subtly broken fashion. 890 891dnl It has been argued that this test should be broken up into two 892dnl seperate tests, one for the resolver libraries, and one for the 893dnl libraries necessary for using Sockets API. Unfortunately, the two 894dnl are carefully intertwined and allowing the autoconf user to use 895dnl them independantly potentially results in unfortunate ordering 896dnl dependancies -- as such, such component macros would have to 897dnl carefully use indirection and be aware if the other components were 898dnl executed. Since other autoconf macros do not go to this trouble, 899dnl and almost no applications use sockets without the resolver, this 900dnl complexity has not been implemented. 901dnl 902dnl The check for libresolv is in case you are attempting to link 903dnl statically and happen to have a libresolv.a lying around (and no 904dnl libnsl.a). 905dnl 906AC_DEFUN(AC_LBL_LIBRARY_NET, [ 907 # Most operating systems have gethostbyname() in the default searched 908 # libraries (i.e. libc): 909 # Some OSes (eg. Solaris) place it in libnsl 910 # Some strange OSes (SINIX) have it in libsocket: 911 AC_SEARCH_LIBS(gethostbyname, nsl socket resolv) 912 # Unfortunately libsocket sometimes depends on libnsl and 913 # AC_SEARCH_LIBS isn't up to the task of handling dependencies like this. 914 if test "$ac_cv_search_gethostbyname" = "no" 915 then 916 AC_CHECK_LIB(socket, gethostbyname, 917 LIBS="-lsocket -lnsl $LIBS", , -lnsl) 918 fi 919 AC_SEARCH_LIBS(socket, socket, , 920 AC_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", , -lnsl)) 921 # DLPI needs putmsg under HPUX so test for -lstr while we're at it 922 AC_SEARCH_LIBS(putmsg, str) 923 ]) 924 925dnl 926dnl Test for __attribute__ 927dnl 928 929AC_DEFUN(AC_C___ATTRIBUTE__, [ 930AC_MSG_CHECKING(for __attribute__) 931AC_CACHE_VAL(ac_cv___attribute__, [ 932AC_COMPILE_IFELSE( 933 AC_LANG_SOURCE([[ 934#include <stdlib.h> 935 936static void foo(void) __attribute__ ((noreturn)); 937 938static void 939foo(void) 940{ 941 exit(1); 942} 943 944int 945main(int argc, char **argv) 946{ 947 foo(); 948} 949 ]]), 950ac_cv___attribute__=yes, 951ac_cv___attribute__=no)]) 952if test "$ac_cv___attribute__" = "yes"; then 953 AC_DEFINE(HAVE___ATTRIBUTE__, 1, [define if your compiler has __attribute__]) 954 V_DEFS="$V_DEFS -D_U_=\"__attribute__((unused))\"" 955else 956 V_DEFS="$V_DEFS -D_U_=\"\"" 957fi 958AC_MSG_RESULT($ac_cv___attribute__) 959]) 960 961dnl 962dnl Checks to see if tpacket_stats is defined in linux/if_packet.h 963dnl If so then pcap-linux.c can use this to report proper statistics. 964dnl 965dnl -Scott Barron 966dnl 967AC_DEFUN(AC_LBL_TPACKET_STATS, 968 [AC_MSG_CHECKING(if if_packet.h has tpacket_stats defined) 969 AC_CACHE_VAL(ac_cv_lbl_tpacket_stats, 970 AC_TRY_COMPILE([ 971# include <linux/if_packet.h>], 972 [struct tpacket_stats stats], 973 ac_cv_lbl_tpacket_stats=yes, 974 ac_cv_lbl_tpacket_stats=no)) 975 AC_MSG_RESULT($ac_cv_lbl_tpacket_stats) 976 if test $ac_cv_lbl_tpacket_stats = yes; then 977 AC_DEFINE(HAVE_TPACKET_STATS,1,[if if_packet.h has tpacket_stats defined]) 978 fi]) 979 980dnl 981dnl Checks to see if the tpacket_auxdata struct has a tp_vlan_tci member. 982dnl 983dnl usage: 984dnl 985dnl AC_LBL_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI 986dnl 987dnl results: 988dnl 989dnl HAVE_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI (defined) 990dnl 991dnl NOTE: any compile failure means we conclude that it doesn't have 992dnl that member, so if we don't have tpacket_auxdata, we conclude it 993dnl doesn't have that member (which is OK, as either we won't be using 994dnl code that would use that member, or we wouldn't compile in any case). 995dnl 996AC_DEFUN(AC_LBL_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI, 997 [AC_MSG_CHECKING(if tpacket_auxdata struct has tp_vlan_tci member) 998 AC_CACHE_VAL(ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci, 999 AC_TRY_COMPILE([ 1000# include <sys/types.h> 1001# include <linux/if_packet.h>], 1002 [u_int i = sizeof(((struct tpacket_auxdata *)0)->tp_vlan_tci)], 1003 ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci=yes, 1004 ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci=no)) 1005 AC_MSG_RESULT($ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci) 1006 if test $ac_cv_lbl_linux_tpacket_auxdata_tp_vlan_tci = yes ; then 1007 HAVE_LINUX_TPACKET_AUXDATA=tp_vlan_tci 1008 AC_SUBST(HAVE_LINUX_TPACKET_AUXDATA) 1009 AC_DEFINE(HAVE_LINUX_TPACKET_AUXDATA_TP_VLAN_TCI,1,[if tp_vlan_tci exists]) 1010 fi]) 1011 1012dnl 1013dnl Checks to see if Solaris has the dl_passive_req_t struct defined 1014dnl in <sys/dlpi.h>. 1015dnl 1016dnl usage: 1017dnl 1018dnl AC_LBL_DL_PASSIVE_REQ_T 1019dnl 1020dnl results: 1021dnl 1022dnl HAVE_DLPI_PASSIVE (defined) 1023dnl 1024AC_DEFUN(AC_LBL_DL_PASSIVE_REQ_T, 1025 [AC_MSG_CHECKING(if dl_passive_req_t struct exists) 1026 AC_CACHE_VAL(ac_cv_lbl_has_dl_passive_req_t, 1027 AC_TRY_COMPILE([ 1028# include <sys/types.h> 1029# include <sys/dlpi.h>], 1030 [u_int i = sizeof(dl_passive_req_t)], 1031 ac_cv_lbl_has_dl_passive_req_t=yes, 1032 ac_cv_lbl_has_dl_passive_req_t=no)) 1033 AC_MSG_RESULT($ac_cv_lbl_has_dl_passive_req_t) 1034 if test $ac_cv_lbl_has_dl_passive_req_t = yes ; then 1035 AC_DEFINE(HAVE_DLPI_PASSIVE,1,[if passive_req_t primitive 1036 exists]) 1037 fi]) 1038