--- a/configure.ac +++ b/configure.ac @@ -51,10 +51,10 @@ forking use the REALLY SUCKY forking resolver. guess run experiments to guess a reasonable value. Only works if you - aren't cross-compiling. This + are not cross-compiling. This is the default. guess will either select netdb or netdb_1thread. - none don't do name resolution.], + none do not do name resolution.], [resolver=$withval], [resolver=guess]) @@ -98,45 +98,14 @@ AC_CHECK_FUNCS(inet_aton inet_pton) dnl -dnl Find integers of known physical size. This is a pain in the arse because -dnl we can't use AC_CHECK_SIZEOF to find the original variables, since that -dnl function doesn't permit us to include a header file. Sigh. -dnl - -for type in u_int8_t u_int16_t u_int32_t ; do - AC_MSG_CHECKING([size of $type]) - AC_RUN_IFELSE([AC_LANG_SOURCE([ -#include -#include -int main() { - $type dummy; - FILE *f=fopen("conftestval", "w"); - if (!f) exit(1); - fprintf(f, "%d\n", sizeof($1)); - exit(0); -} - ])], [ - x=`cat conftestval` - eval "size_$type=$x" - AC_MSG_RESULT([$x]) - ], [ - eval "size_$type=0" - AC_MSG_RESULT([unknown type]) - ], [ - eval "size_$type=0" - AC_MSG_RESULT([can't determine when cross-compiling]) - ]) -done - -dnl Groan. Have to do things this way so that autoheader can do its thing.... -AC_DEFINE_UNQUOTED(SIZEOF_U_INT8_T, [$size_u_int8_t], [size of u_int8_t]) -AC_DEFINE_UNQUOTED(SIZEOF_U_INT16_T, [$size_u_int16_t], [size of u_int16_t]) -AC_DEFINE_UNQUOTED(SIZEOF_U_INT32_T, [$size_u_int32_t], [size of u_int32_t]) +dnl Find integers of known physical size. +dnl -dnl If we already have these types, don't piss about any more.... +AC_CHECK_SIZEOF([u_int8_t]) +AC_CHECK_SIZEOF([u_int16_t]) +AC_CHECK_SIZEOF([u_int32_t]) -if test $size_u_int8_t != 1 || test $size_u_int16_t != 2 || test $size_u_int32_t != 4 ; then -dnl XXXif test $size_u_int8_t != 1 -o $size_u_int16_t != 2 -o $size_u_int32_t != 4 ; then +if test $ac_cv_sizeof_u_int8_t = 0 || test $ac_cv_sizeof_u_int16_t = 0 || test $ac_cv_sizeof_u_int32_t = 0; then do_int_types=1 AC_CHECK_HEADERS( stdint.h dnl C99 @@ -154,12 +123,16 @@ fi fi +AC_DEFINE_UNQUOTED([SIZEOF_U_INT8_T],[$ac_cv_sizeof_u_int8_t],[size of u_int8_t]) +AC_DEFINE_UNQUOTED([SIZEOF_U_INT16_T],[$ac_cv_sizeof_u_int16_t],[size of u_int16_t]) +AC_DEFINE_UNQUOTED([SIZEOF_U_INT32_T],[$ac_cv_sizeof_u_int32_t],[size of u_int32_t]) + dnl dnl Name resolution. dnl dnl This is complicated because we need some sort of reentrant mechanism for dnl name resolution. Naturally, UNIX vendors have come up with a variety of -dnl incompatible schemes for this, many of which don't work at all. +dnl incompatible schemes for this, many of which do not work at all. dnl dnl First, the default resolver, which uses getnameinfo or gethostbyaddr_r. If @@ -175,7 +148,7 @@ use_getnameinfo=0 AC_SEARCH_LIBS(getnameinfo, [nsl], [use_getnameinfo=1]) - dnl XXX For the moment, don't use getnameinfo, since it isn't actually + dnl XXX For the moment, do not use getnameinfo, since it is not actually dnl thread safe on, e.g., NetBSD. use_getnameinfo=0 @@ -192,7 +165,7 @@ dnl Can use gethostbyaddr_r? AC_SEARCH_LIBS(gethostbyaddr_r, [nsl], , [resolver=guess]) if test x$resolver = xguess && test x$specified_resolver != xguess ; then - dnl They wanted gethostbyaddr_r, but they can't have it, so stop. + dnl They wanted gethostbyaddr_r, but they cannot have it, so stop. AC_MSG_ERROR([no library defines gethostbyaddr_r]) fi fi @@ -216,15 +189,15 @@ AC_DEFINE(GETHOSTBYADDR_R_RETURNS_INT, 1, [8-argument gethostbyaddr_r returns int])], [ dnl Neither. - AC_MSG_RESULT([don't know how]) + AC_MSG_RESULT([do not know how]) resolver=guess])]) if test x$resolver = xguess && test x$specified_resolver != xguess ; then - dnl They wanted gethostbyaddr_r, but they can't have it, so stop. + dnl They wanted gethostbyaddr_r, but they cannot have it, so stop. AC_MSG_ERROR([gethostbyaddr_r has no known calling convention]) fi fi -dnl If we still want to do gethostbyaddr_r, and we aren't +dnl If we still want to do gethostbyaddr_r, and we are not dnl cross-compiling, test it. if test x$resolver = xnetdb ; then if test x$ghba_args = x8 ; then @@ -237,13 +210,13 @@ [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]) resolver=guess], - [AC_MSG_RESULT([can't test because we are cross-compiling])]) + [AC_MSG_RESULT([cannot test because we are cross-compiling])]) if test x$resolver = xguess ; then if test x$specified_resolver = xguess ; then - AC_MSG_RESULT([gethostbyaddr_r doesn't work, so we'll try something else]) + AC_MSG_RESULT([gethostbyaddr_r does not work, so we will try something else]) else - dnl They wanted gethostbyaddr_r, but it doesn't work, so stop. - AC_MSG_ERROR([gethostbyaddr_r doesn't work]) + dnl They wanted gethostbyaddr_r, but it does not work, so stop. + AC_MSG_ERROR([gethostbyaddr_r does not work]) fi fi fi @@ -260,11 +233,11 @@ AC_SEARCH_LIBS(ares_init, [ares], [ AC_DEFINE(USE_ARES, 1, [use ARES for name resolution]) ], [ - dnl They asked for ares, but we can't give it to them, so stop. - AC_MSG_ERROR([can't find ARES. Re-run configure and ask for a different resolver.])]) + dnl They asked for ares, but we cannot give it to them, so stop. + AC_MSG_ERROR([cannot find ARES. Re-run configure and ask for a different resolver.])]) fi -dnl Last thing to try if we haven't decided yet is netdb_1thread. +dnl Last thing to try if we have not decided yet is netdb_1thread. if test x$resolver = xguess ; then resolver=netdb_1thread fi @@ -317,16 +290,16 @@ if test $foundpcaph = 0 ; then AC_MSG_RESULT([no idea]) - AC_MSG_ERROR([can't find pcap.h - You're not going to get very far without libpcap.]) + AC_MSG_ERROR([cannot find pcap.h + You are not going to get very far without libpcap.]) else dnl assume that -lpcap is under $test_prefix/lib if test x$test_prefix != x ; then LDFLAGS="$LDFLAGS -L$test_prefix/lib" fi AC_CHECK_LIB(pcap, pcap_open_live, , [ - AC_MSG_ERROR([can't find libpcap - You're not going to get very far without libpcap.]) + AC_MSG_ERROR([cannot find libpcap + You are not going to get very far without libpcap.]) ]) fi @@ -337,79 +310,50 @@ ]) if test $foundpcap = 0 ; then - AC_MSG_ERROR([can't find pcap.h - You're not going to get very far without libpcap.]) + AC_MSG_ERROR([cannot find pcap.h + You are not going to get very far without libpcap.]) fi dnl dnl Curses. Really, we need ncurses or something similarly advanced, since dnl we use the (apparently obscure) mvchgat function. Unfortunately, there's -dnl a solid chance that mvchgat is a macro, so we can't just use +dnl a solid chance that mvchgat is a macro, so we cannot just use dnl AC_SEARCH_LIBS.... dnl -AC_MSG_CHECKING([for a curses library containing mvchgat]) -oldLIBS=$LIBS -for curseslib in ncursesw curses ncurses ; do - LIBS="$oldLIBS -l$curseslib" - AC_TRY_LINK([ +PKG_PROG_PKG_CONFIG() + +PKG_CHECK_MODULES([ncurses], [ncursesw], [foundcurseslib="$ncurses_LIBS"], [ + PKG_CHECK_MODULES([ncurses], [ncurses], [foundcurseslib="$ncurses_LIBS"], [ + AC_MSG_CHECKING([for a curses library containing mvchgat]) + oldLIBS=$LIBS + for curseslib in ncursesw curses ncurses ; do + LIBS="$oldLIBS -l$curseslib" + AC_TRY_LINK([ #include <$curseslib.h> ], [ mvchgat(0, 0, 1, A_REVERSE, 0, NULL) ], [ - foundcurseslib=$curseslib + foundcurseslib=-l$curseslib break ]) -done - -if test x$foundcurseslib = x ; then - AC_MSG_RESULT([none found]) + done + ], AC_MSG_ERROR([Curses! Foiled again! - (Can't find a curses library supporting mvchgat.) + (Cannot find a curses library supporting mvchgat.) Consider installing ncurses.]) -else - AC_MSG_RESULT([-l$foundcurseslib]) -fi - + ) +]) dnl dnl POSIX threads. Different systems like different combinations of flags, dnl libraries, etc. We use a test program to figure this stuff out. dnl -AC_MSG_CHECKING([POSIX threads compilation]) -thrfail=1 -oldCFLAGS=$CFLAGS -oldLIBS=$LIBS -for flag in "" -mt -pthread -thread ; do - CFLAGS="$oldCFLAGS $flag" - for lib in "" -lpthread "-lpthread -lposix4" ; do - LIBS="$oldLIBS $lib" - AC_LINK_IFELSE([AC_LANG_SOURCE([`cat config/pthread.c`])], [ - foundthrlib=$lib - foundthrflag=$flag - thrfail=0 - break - ]) - done - if test $thrfail = 0 ; then - break - fi -done - -if test $thrfail = 1 ; then - AC_MSG_RESULT([no idea]) - AC_MSG_ERROR([can't figure out how to compile with POSIX threads - If your system actually supports POSIX threads, this means we've messed up.]) -fi - -AC_MSG_RESULT([CFLAGS=$foundthrflag and LIBS=$foundthrlib]) -AC_MSG_CHECKING([POSIX threads usability]) -AC_RUN_IFELSE([AC_LANG_SOURCE([`cat config/pthread.c`])], - [AC_MSG_RESULT([yes])], - [AC_MSG_ERROR( - [it fails. We probably guessed the wrong CFLAGS.])], - [AC_MSG_RESULT([can't test because we are cross-compiling])]) +AX_PTHREAD( + [LIBS="$PTHREAD_LIBS $LIBS" + CFLAGS="$CFLAGS $PTHREAD_CFLAGS"], + AC_MSG_ERROR([Could not find out how to enable POSIX threads])) dnl dnl Are we on a system (like Solaris) that requires promiscuous mode in order to