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>