Annotation of embedaddon/thttpd/aclocal.m4, revision 1.1.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>