]> pilppa.org Git - familiar-h63xx-build.git/blob - org.handhelds.familiar/packages/thttpd/files/acinclude.m4
OE tree imported from monotone branch org.openembedded.oz354fam083 at revision 8b12e3...
[familiar-h63xx-build.git] / org.handhelds.familiar / packages / thttpd / files / acinclude.m4
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 ]AC_LANG_CASE(c++, [#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])