File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / thttpd / aclocal.m4
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 17:21:13 2012 UTC (12 years, 3 months ago) by misho
Branches: thttpd, MAIN
CVS tags: v2_25b, HEAD
thttpd

    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>