Annotation of embedaddon/thttpd/aclocal.m4, revision 1.1
1.1 ! misho 1: dnl
! 2: dnl Improved version of AC_CHECK_LIB
! 3: dnl
! 4: dnl Thanks to John Hawkinson (jhawk@mit.edu)
! 5: dnl
! 6: dnl usage:
! 7: dnl
! 8: dnl AC_LBL_CHECK_LIB(LIBRARY, FUNCTION [, ACTION-IF-FOUND [,
! 9: dnl ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
! 10: dnl
! 11: dnl results:
! 12: dnl
! 13: dnl LIBS
! 14: dnl
! 15:
! 16: define(AC_LBL_CHECK_LIB,
! 17: [AC_MSG_CHECKING([for $2 in -l$1])
! 18: dnl Use a cache variable name containing both the library and function name,
! 19: dnl because the test really is for library $1 defining function $2, not
! 20: dnl just for library $1. Separate tests with the same $1 and different $2's
! 21: dnl may have different results.
! 22: ac_lib_var=`echo $1['_']$2['_']$5 | sed 'y%./+- %__p__%'`
! 23: AC_CACHE_VAL(ac_cv_lbl_lib_$ac_lib_var,
! 24: [ac_save_LIBS="$LIBS"
! 25: LIBS="-l$1 $5 $LIBS"
! 26: AC_TRY_LINK(dnl
! 27: ifelse([$2], [main], , dnl Avoid conflicting decl of main.
! 28: [/* Override any gcc2 internal prototype to avoid an error. */
! 29: ]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus
! 30: extern "C"
! 31: #endif
! 32: ])dnl
! 33: [/* We use char because int might match the return type of a gcc2
! 34: builtin and then its argument prototype would still apply. */
! 35: char $2();
! 36: ]),
! 37: [$2()],
! 38: eval "ac_cv_lbl_lib_$ac_lib_var=yes",
! 39: eval "ac_cv_lbl_lib_$ac_lib_var=no")
! 40: LIBS="$ac_save_LIBS"
! 41: ])dnl
! 42: if eval "test \"`echo '$ac_cv_lbl_lib_'$ac_lib_var`\" = yes"; then
! 43: AC_MSG_RESULT(yes)
! 44: ifelse([$3], ,
! 45: [changequote(, )dnl
! 46: ac_tr_lib=HAVE_LIB`echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g' \
! 47: -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
! 48: changequote([, ])dnl
! 49: AC_DEFINE_UNQUOTED($ac_tr_lib)
! 50: LIBS="-l$1 $LIBS"
! 51: ], [$3])
! 52: else
! 53: AC_MSG_RESULT(no)
! 54: ifelse([$4], , , [$4
! 55: ])dnl
! 56: fi
! 57: ])
! 58:
! 59: dnl
! 60: dnl AC_LBL_LIBRARY_NET
! 61: dnl
! 62: dnl This test is for network applications that need socket() and
! 63: dnl gethostbyname() -ish functions. Under Solaris, those applications
! 64: dnl need to link with "-lsocket -lnsl". Under IRIX, they need to link
! 65: dnl with "-lnsl" but should *not* link with "-lsocket" because
! 66: dnl libsocket.a breaks a number of things (for instance:
! 67: dnl gethostbyname() under IRIX 5.2, and snoop sockets under most
! 68: dnl versions of IRIX).
! 69: dnl
! 70: dnl Unfortunately, many application developers are not aware of this,
! 71: dnl and mistakenly write tests that cause -lsocket to be used under
! 72: dnl IRIX. It is also easy to write tests that cause -lnsl to be used
! 73: dnl under operating systems where neither are necessary (or useful),
! 74: dnl such as SunOS 4.1.4, which uses -lnsl for TLI.
! 75: dnl
! 76: dnl This test exists so that every application developer does not test
! 77: dnl this in a different, and subtly broken fashion.
! 78:
! 79: dnl It has been argued that this test should be broken up into two
! 80: dnl seperate tests, one for the resolver libraries, and one for the
! 81: dnl libraries necessary for using Sockets API. Unfortunately, the two
! 82: dnl are carefully intertwined and allowing the autoconf user to use
! 83: dnl them independantly potentially results in unfortunate ordering
! 84: dnl dependancies -- as such, such component macros would have to
! 85: dnl carefully use indirection and be aware if the other components were
! 86: dnl executed. Since other autoconf macros do not go to this trouble,
! 87: dnl and almost no applications use sockets without the resolver, this
! 88: dnl complexity has not been implemented.
! 89: dnl
! 90: dnl The check for libresolv is in case you are attempting to link
! 91: dnl statically and happen to have a libresolv.a lying around (and no
! 92: dnl libnsl.a).
! 93: dnl
! 94: AC_DEFUN(AC_LBL_LIBRARY_NET, [
! 95: # Most operating systems have gethostbyname() in the default searched
! 96: # libraries (i.e. libc):
! 97: AC_CHECK_FUNC(gethostbyname, ,
! 98: # Some OSes (eg. Solaris) place it in libnsl:
! 99: AC_LBL_CHECK_LIB(nsl, gethostbyname, ,
! 100: # Some strange OSes (SINIX) have it in libsocket:
! 101: AC_LBL_CHECK_LIB(socket, gethostbyname, ,
! 102: # Unfortunately libsocket sometimes depends on libnsl.
! 103: # AC_CHECK_LIB's API is essentially broken so the
! 104: # following ugliness is necessary:
! 105: AC_LBL_CHECK_LIB(socket, gethostbyname,
! 106: LIBS="-lsocket -lnsl $LIBS",
! 107: AC_CHECK_LIB(resolv, gethostbyname),
! 108: -lnsl))))
! 109: AC_CHECK_FUNC(socket, , AC_CHECK_LIB(socket, socket, ,
! 110: AC_LBL_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", ,
! 111: -lnsl)))
! 112: # DLPI needs putmsg under HPUX so test for -lstr while we're at it
! 113: AC_CHECK_LIB(str, putmsg)
! 114: ])
! 115:
! 116: dnl
! 117: dnl Checks to see if struct tm has the BSD tm_gmtoff member
! 118: dnl
! 119: dnl usage:
! 120: dnl
! 121: dnl AC_ACME_TM_GMTOFF
! 122: dnl
! 123: dnl results:
! 124: dnl
! 125: dnl HAVE_TM_GMTOFF (defined)
! 126: dnl
! 127: AC_DEFUN(AC_ACME_TM_GMTOFF,
! 128: [AC_MSG_CHECKING(if struct tm has tm_gmtoff member)
! 129: AC_CACHE_VAL(ac_cv_acme_tm_has_tm_gmtoff,
! 130: AC_TRY_COMPILE([
! 131: # include <sys/types.h>
! 132: # include <time.h>],
! 133: [u_int i = sizeof(((struct tm *)0)->tm_gmtoff)],
! 134: ac_cv_acme_tm_has_tm_gmtoff=yes,
! 135: ac_cv_acme_tm_has_tm_gmtoff=no))
! 136: AC_MSG_RESULT($ac_cv_acme_tm_has_tm_gmtoff)
! 137: if test $ac_cv_acme_tm_has_tm_gmtoff = yes ; then
! 138: AC_DEFINE(HAVE_TM_GMTOFF)
! 139: fi])
! 140:
! 141: dnl
! 142: dnl Checks to see if int64_t exists
! 143: dnl
! 144: dnl usage:
! 145: dnl
! 146: dnl AC_ACME_INT64T
! 147: dnl
! 148: dnl results:
! 149: dnl
! 150: dnl HAVE_INT64T (defined)
! 151: dnl
! 152: AC_DEFUN(AC_ACME_INT64T,
! 153: [AC_MSG_CHECKING(if int64_t exists)
! 154: AC_CACHE_VAL(ac_cv_acme_int64_t,
! 155: AC_TRY_COMPILE([
! 156: # include <sys/types.h>],
! 157: [int64_t i64],
! 158: ac_cv_acme_int64_t=yes,
! 159: ac_cv_acme_int64_t=no))
! 160: AC_MSG_RESULT($ac_cv_acme_int64_t)
! 161: if test $ac_cv_acme_int64_t = yes ; then
! 162: AC_DEFINE(HAVE_INT64T)
! 163: fi])
! 164:
! 165: dnl
! 166: dnl Checks to see if socklen_t exists
! 167: dnl
! 168: dnl usage:
! 169: dnl
! 170: dnl AC_ACME_SOCKLENT
! 171: dnl
! 172: dnl results:
! 173: dnl
! 174: dnl HAVE_SOCKLENT (defined)
! 175: dnl
! 176: AC_DEFUN(AC_ACME_SOCKLENT,
! 177: [AC_MSG_CHECKING(if socklen_t exists)
! 178: AC_CACHE_VAL(ac_cv_acme_socklen_t,
! 179: AC_TRY_COMPILE([
! 180: # include <sys/types.h>
! 181: # include <sys/socket.h>],
! 182: [socklen_t slen],
! 183: ac_cv_acme_socklen_t=yes,
! 184: ac_cv_acme_socklen_t=no))
! 185: AC_MSG_RESULT($ac_cv_acme_socklen_t)
! 186: if test $ac_cv_acme_socklen_t = yes ; then
! 187: AC_DEFINE(HAVE_SOCKLENT)
! 188: fi])
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>