configure: r-enable temporarily disabled detection of system's inet_ntop()
[platform/upstream/c-ares.git] / configure.ac
1 AC_PREREQ(2.57)
2
3 dnl Version not hardcoded here. Fetched later from ares_version.h
4 AC_INIT([c-ares], [-],
5   [c-ares mailing list: http://cool.haxx.se/mailman/listinfo/c-ares])
6
7 CARES_OVERRIDE_AUTOCONF
8
9 AC_CONFIG_SRCDIR([ares_ipv6.h])
10 AM_CONFIG_HEADER([ares_config.h ares_build.h])
11 AM_MAINTAINER_MODE
12
13 CARES_CHECK_OPTION_DEBUG
14 CARES_CHECK_OPTION_OPTIMIZE
15 CARES_CHECK_OPTION_WARNINGS
16 CARES_CHECK_OPTION_WERROR
17 CARES_CHECK_OPTION_CURLDEBUG
18 CARES_CHECK_OPTION_SYMBOL_HIDING
19
20 CARES_CHECK_PATH_SEPARATOR_REQUIRED
21
22 dnl SED is mandatory for configure process and libtool.
23 dnl Set it now, allowing it to be changed later.
24 AC_PATH_PROG([SED], [sed], [not_found],
25   [$PATH:/usr/bin:/usr/local/bin])
26 if test -z "$SED" || test "$SED" = "not_found"; then
27   AC_MSG_ERROR([sed not found in PATH. Cannot continue without sed.])
28 fi
29 AC_SUBST([SED])
30
31 dnl GREP is mandatory for configure process and libtool.
32 dnl Set it now, allowing it to be changed later.
33 AC_PATH_PROG([GREP], [grep], [not_found],
34   [$PATH:/usr/bin:/usr/local/bin])
35 if test -z "$GREP" || test "$GREP" = "not_found"; then
36   AC_MSG_ERROR([grep not found in PATH. Cannot continue without grep.])
37 fi
38 AC_SUBST([GREP])
39
40 dnl EGREP is mandatory for configure process and libtool.
41 dnl Set it now, allowing it to be changed later.
42 if echo a | ($GREP -E '(a|b)') >/dev/null 2>&1; then
43   AC_MSG_CHECKING([for egrep])
44   EGREP="$GREP -E"
45   AC_MSG_RESULT([$EGREP])
46 else
47   AC_PATH_PROG([EGREP], [egrep], [not_found],
48     [$PATH:/usr/bin:/usr/local/bin])
49 fi
50 if test -z "$EGREP" || test "$EGREP" = "not_found"; then
51   AC_MSG_ERROR([egrep not found in PATH. Cannot continue without egrep.])
52 fi
53 AC_SUBST([EGREP])
54
55 dnl AR is mandatory for configure process and libtool.
56 dnl This is target dependent, so check it as a tool.
57 AC_PATH_TOOL([AR], [ar], [not_found],
58   [$PATH:/usr/bin:/usr/local/bin])
59 if test -z "$AR" || test "$AR" = "not_found"; then
60   AC_MSG_ERROR([ar not found in PATH. Cannot continue without ar.])
61 fi
62 AC_SUBST([AR])
63
64 dnl Remove non-configure distributed ares_build.h
65 if test -f ${srcdir}/ares_build.h; then
66   rm -f ${srcdir}/ares_build.h
67 fi
68
69 AM_INIT_AUTOMAKE
70
71 dnl
72 dnl Detect the canonical host and target build environment
73 dnl
74
75 AC_CANONICAL_HOST
76 dnl Get system canonical name
77 AC_DEFINE_UNQUOTED(OS, "${host}", [cpu-machine-OS])
78
79 CARES_CHECK_PROG_CC
80 AM_PROG_CC_C_O
81 AC_PROG_INSTALL
82
83 dnl This defines _ALL_SOURCE for AIX
84 CARES_CHECK_AIX_ALL_SOURCE
85
86 dnl Our configure and build reentrant settings
87 CARES_CONFIGURE_THREAD_SAFE
88 CARES_CONFIGURE_REENTRANT
89
90 dnl check for how to do large files
91 AC_SYS_LARGEFILE
92
93 case $host_os in
94   solaris*)
95     AC_DEFINE(ETC_INET, 1, [if a /etc/inet dir is being used])
96     ;;
97 esac
98
99 dnl support building of Windows DLLs
100 AC_LIBTOOL_WIN32_DLL
101
102 dnl force libtool to build static libraries with PIC on AMD64-Linux & FreeBSD
103 AC_MSG_CHECKING([if arch-OS host is AMD64-Linux/FreeBSD (to build static libraries with PIC)])
104 case $host in
105   x86_64*linux*|amd64*freebsd*|ia64*freebsd*)
106     AC_MSG_RESULT([yes])
107     with_pic=yes
108     ;;
109   *)
110     AC_MSG_RESULT([no])
111     ;;
112 esac
113
114 AC_MSG_CHECKING([if compiler is icc (to build with PIC)])
115 case $CC in
116   icc | */icc)
117     AC_MSG_RESULT([yes])
118     with_pic=yes
119     ;;
120   *)
121     AC_MSG_RESULT([no])
122     ;;
123 esac
124
125 dnl libtool setup
126 AC_PROG_LIBTOOL
127
128 AC_MSG_CHECKING([if we need CARES_BUILDING_LIBRARY])
129 case $host in
130   *-*-mingw*)
131     AC_DEFINE(CARES_BUILDING_LIBRARY, 1, [when building c-ares library])
132     AC_MSG_RESULT(yes)
133     AC_MSG_CHECKING([if we need CARES_STATICLIB])
134     if test "X$enable_shared" = "Xno"
135     then
136       AC_DEFINE(CARES_STATICLIB, 1, [when not building a shared library])
137       AC_MSG_RESULT(yes)
138     else
139       AC_MSG_RESULT(no)
140     fi
141     ;;
142   *)
143     AC_MSG_RESULT(no)
144     ;;
145 esac
146
147 dnl **********************************************************************
148 dnl platform/compiler/architecture specific checks/flags
149 dnl **********************************************************************
150
151 CARES_CHECK_COMPILER
152 CARES_SET_COMPILER_BASIC_OPTS
153 CARES_SET_COMPILER_DEBUG_OPTS
154 CARES_SET_COMPILER_OPTIMIZE_OPTS
155 CARES_SET_COMPILER_WARNING_OPTS
156
157 if test "$compiler_id" = "INTEL_UNIX_C"; then
158   #
159   if test "$compiler_num" -ge "1000"; then
160     dnl icc 10.X or later
161     CFLAGS="$CFLAGS -shared-intel"
162   elif test "$compiler_num" -ge "900"; then
163     dnl icc 9.X specific
164     CFLAGS="$CFLAGS -i-dynamic"
165   fi
166   #
167 fi
168
169 CARES_CHECK_COMPILER_HALT_ON_ERROR
170 CARES_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE
171 CARES_CHECK_COMPILER_SYMBOL_HIDING
172
173 CARES_CHECK_NO_UNDEFINED
174 AM_CONDITIONAL(NO_UNDEFINED, test x$need_no_undefined = xyes)
175
176 CARES_CHECK_CURLDEBUG
177 AM_CONDITIONAL(CURLDEBUG, test x$want_curldebug = xyes)
178
179 dnl **********************************************************************
180 dnl Compilation based checks should not be done before this point.
181 dnl **********************************************************************
182
183 dnl **********************************************************************
184 dnl Make sure that our checks for headers windows.h winsock.h winsock2.h 
185 dnl and ws2tcpip.h take precedence over any other further checks which 
186 dnl could be done later using AC_CHECK_HEADER or AC_CHECK_HEADERS for
187 dnl this specific header files. And do them before its results are used.
188 dnl **********************************************************************
189
190 CURL_CHECK_HEADER_WINDOWS
191 CURL_CHECK_NATIVE_WINDOWS
192 case X-"$ac_cv_native_windows" in
193   X-yes)
194     CURL_CHECK_HEADER_WINSOCK
195     CURL_CHECK_HEADER_WINSOCK2
196     CURL_CHECK_HEADER_WS2TCPIP
197     ;;
198   *)
199     ac_cv_header_winsock_h="no"
200     ac_cv_header_winsock2_h="no"
201     ac_cv_header_ws2tcpip_h="no"
202     ;;
203 esac
204
205 dnl **********************************************************************
206 dnl Checks for libraries.
207 dnl **********************************************************************
208
209 CARES_CHECK_LIB_XNET
210
211 dnl gethostbyname without lib or in the nsl lib?
212 AC_CHECK_FUNC(gethostbyname,
213               [HAVE_GETHOSTBYNAME="1"
214               ],
215               [ AC_CHECK_LIB(nsl, gethostbyname,
216                              [HAVE_GETHOSTBYNAME="1"
217                              LIBS="$LIBS -lnsl"
218                              ])
219               ])
220
221 if test "$HAVE_GETHOSTBYNAME" != "1"
222 then
223   dnl gethostbyname in the socket lib?
224   AC_CHECK_LIB(socket, gethostbyname,
225                [HAVE_GETHOSTBYNAME="1"
226                LIBS="$LIBS -lsocket"
227                ])
228 fi
229
230 dnl At least one system has been identified to require BOTH nsl and socket
231 dnl libs at the same time to link properly.
232 if test "$HAVE_GETHOSTBYNAME" != "1"
233 then
234   AC_MSG_CHECKING([for gethostbyname with both nsl and socket libs])
235   my_ac_save_LIBS=$LIBS
236   LIBS="-lnsl -lsocket $LIBS"
237   AC_LINK_IFELSE([
238     AC_LANG_PROGRAM([[
239     ]],[[
240       gethostbyname();
241     ]])
242   ],[
243     AC_MSG_RESULT([yes])
244     HAVE_GETHOSTBYNAME="1"
245   ],[
246     AC_MSG_RESULT([no])
247     LIBS=$my_ac_save_LIBS
248   ])
249 fi
250
251 if test "$HAVE_GETHOSTBYNAME" != "1"
252 then
253   dnl This is for winsock systems
254   if test "$ac_cv_header_windows_h" = "yes"; then
255     if test "$ac_cv_header_winsock_h" = "yes"; then
256       case $host in
257         *-*-mingw32ce*)
258           winsock_LIB="-lwinsock"
259           ;;
260         *)
261           winsock_LIB="-lwsock32"
262           ;;
263       esac
264     fi
265     if test "$ac_cv_header_winsock2_h" = "yes"; then
266       winsock_LIB="-lws2_32"
267     fi
268     if test ! -z "$winsock_LIB"; then
269       my_ac_save_LIBS=$LIBS
270       LIBS="$winsock_LIB $LIBS"
271       AC_MSG_CHECKING([for gethostbyname in $winsock_LIB])
272       AC_LINK_IFELSE([
273         AC_LANG_PROGRAM([[
274 #ifdef HAVE_WINDOWS_H
275 #ifndef WIN32_LEAN_AND_MEAN
276 #define WIN32_LEAN_AND_MEAN
277 #endif
278 #include <windows.h>
279 #ifdef HAVE_WINSOCK2_H
280 #include <winsock2.h>
281 #else
282 #ifdef HAVE_WINSOCK_H
283 #include <winsock.h>
284 #endif
285 #endif
286 #endif
287         ]],[[
288           gethostbyname("www.dummysite.com");
289         ]])
290       ],[
291         AC_MSG_RESULT([yes])
292         HAVE_GETHOSTBYNAME="1"
293       ],[
294         AC_MSG_RESULT([no])
295         winsock_LIB=""
296         LIBS=$my_ac_save_LIBS
297       ])
298     fi
299   fi
300 fi
301
302 if test "$HAVE_GETHOSTBYNAME" != "1"
303 then
304   dnl This is for Minix 3.1
305   AC_MSG_CHECKING([for gethostbyname for Minix 3])
306   AC_LINK_IFELSE([
307     AC_LANG_PROGRAM([[
308 /* Older Minix versions may need <net/gen/netdb.h> here instead */
309 #include <netdb.h>
310     ]],[[
311       gethostbyname("www.dummysite.com");
312     ]])
313   ],[
314     AC_MSG_RESULT([yes])
315     HAVE_GETHOSTBYNAME="1"
316   ],[
317     AC_MSG_RESULT([no])
318   ])
319 fi
320
321 if test "$HAVE_GETHOSTBYNAME" != "1"
322 then
323   dnl This is for eCos with a stubbed DNS implementation
324   AC_MSG_CHECKING([for gethostbyname for eCos])
325   AC_LINK_IFELSE([
326     AC_LANG_PROGRAM([[
327 #include <stdio.h>
328 #include <netdb.h>
329     ]],[[
330       gethostbyname("www.dummysite.com");
331     ]])
332   ],[
333     AC_MSG_RESULT([yes])
334     HAVE_GETHOSTBYNAME="1"
335   ],[
336     AC_MSG_RESULT([no])
337   ])
338 fi
339
340 if test "$HAVE_GETHOSTBYNAME" != "1"
341 then
342   dnl gethostbyname in the net lib - for BeOS
343   AC_CHECK_LIB(net, gethostbyname,
344                [HAVE_GETHOSTBYNAME="1"
345                LIBS="$LIBS -lnet"
346                ])
347 fi
348
349
350 if test "$HAVE_GETHOSTBYNAME" != "1"; then
351   AC_MSG_ERROR([couldn't find libraries for gethostbyname()])
352 fi
353
354 dnl resolve lib?
355 AC_CHECK_FUNC(strcasecmp, , [ AC_CHECK_LIB(resolve, strcasecmp) ])
356
357 if test "$ac_cv_lib_resolve_strcasecmp" = "$ac_cv_func_strcasecmp"; then
358   AC_CHECK_LIB(resolve, strcasecmp,
359               [LIBS="-lresolve $LIBS"],
360                ,
361                -lnsl)
362 fi
363 ac_cv_func_strcasecmp="no"
364
365 CARES_CHECK_LIBS_CONNECT
366
367 dnl **********************************************************************
368 dnl In case that function clock_gettime with monotonic timer is available,
369 dnl check for additional required libraries.
370 dnl **********************************************************************
371 CURL_CHECK_LIBS_CLOCK_GETTIME_MONOTONIC
372
373 AC_MSG_CHECKING([whether to use libgcc])
374 AC_ARG_ENABLE(libgcc,
375 AC_HELP_STRING([--enable-libgcc],[use libgcc when linking]),
376 [ case "$enableval" in
377   yes)
378         LIBS="$LIBS -lgcc"
379        AC_MSG_RESULT(yes)
380        ;;
381   *)   AC_MSG_RESULT(no)
382        ;;
383   esac ],
384        AC_MSG_RESULT(no)
385 )
386
387
388 dnl Let's hope this split URL remains working:
389 dnl http://publibn.boulder.ibm.com/doc_link/en_US/a_doc_lib/aixprggd/ \
390 dnl genprogc/thread_quick_ref.htm
391
392
393 dnl **********************************************************************
394 dnl Back to "normal" configuring
395 dnl **********************************************************************
396
397 dnl Checks for header files.
398 AC_HEADER_STDC
399
400 CURL_CHECK_HEADER_MALLOC
401 CURL_CHECK_HEADER_MEMORY
402
403 dnl check for a few basic system headers we need
404 AC_CHECK_HEADERS(
405        sys/types.h \
406        sys/time.h \
407        sys/select.h \
408        sys/socket.h \
409        sys/ioctl.h \
410        sys/param.h \
411        sys/uio.h \
412        assert.h \
413        netdb.h \
414        netinet/in.h \
415        netinet/tcp.h \
416        net/if.h \
417        errno.h \
418        socket.h \
419        strings.h \
420        stdbool.h \
421        time.h \
422        limits.h \
423        arpa/nameser.h \
424        arpa/nameser_compat.h \
425        arpa/inet.h,
426 dnl to do if not found
427 [],
428 dnl to do if found
429 [],
430 dnl default includes
431 [
432 #ifdef HAVE_SYS_TYPES_H
433 #include <sys/types.h>
434 #endif
435 #ifdef HAVE_SYS_TIME_H
436 #include <sys/time.h>
437 #endif
438 dnl We do this default-include simply to make sure that the nameser_compat.h
439 dnl header *REALLY* can be include after the new nameser.h. It seems AIX 5.1
440 dnl (and others?) is not designed to allow this.
441 #ifdef HAVE_ARPA_NAMESER_H
442 #include <arpa/nameser.h>
443 #endif
444
445 dnl *Sigh* these are needed in order for net/if.h to get properly detected.
446 #ifdef HAVE_SYS_SOCKET_H
447 #include <sys/socket.h>
448 #endif
449 #ifdef HAVE_NETINET_IN_H
450 #include <netinet/in.h>
451 #endif
452 ]
453 )
454
455 dnl Checks for typedefs, structures, and compiler characteristics.
456 AC_C_CONST
457 AC_TYPE_SIZE_T
458 AC_HEADER_TIME
459 CURL_CHECK_STRUCT_TIMEVAL
460
461 AC_CHECK_SIZEOF(size_t)
462 AC_CHECK_SIZEOF(int)
463 AC_CHECK_SIZEOF(long)
464 CARES_CONFIGURE_LONG
465 AC_CHECK_SIZEOF(time_t)
466
467 AC_CHECK_TYPE(long long,
468    [AC_DEFINE(HAVE_LONGLONG, 1,
469      [Define to 1 if the compiler supports the 'long long' data type.])]
470    longlong="yes"  
471 )
472
473 if test "xyes" = "x$longlong"; then
474   AC_MSG_CHECKING([if numberLL works])
475   AC_COMPILE_IFELSE([
476     AC_LANG_PROGRAM([[
477     ]],[[
478       long long val = 1000LL;
479     ]])
480   ],[
481     AC_MSG_RESULT([yes])
482     AC_DEFINE(HAVE_LL, 1, [if your compiler supports LL])
483   ],[
484     AC_MSG_RESULT([no])
485   ])
486 fi
487
488
489 # check for ssize_t
490 AC_CHECK_TYPE(ssize_t, ,
491    AC_DEFINE(ssize_t, int, [the signed version of size_t]))
492
493 # check for bool type
494 AC_CHECK_TYPE([bool],[
495   AC_DEFINE(HAVE_BOOL_T, 1,
496     [Define to 1 if bool is an available type.])
497 ], ,[
498 #ifdef HAVE_SYS_TYPES_H
499 #include <sys/types.h>
500 #endif
501 #ifdef HAVE_STDBOOL_H
502 #include <stdbool.h>
503 #endif
504 ])
505
506 CARES_CONFIGURE_ARES_SOCKLEN_T
507
508 TYPE_IN_ADDR_T
509
510 TYPE_SOCKADDR_STORAGE
511
512 TYPE_SIG_ATOMIC_T
513
514 AC_TYPE_SIGNAL
515
516 CURL_CHECK_FUNC_RECV
517 CURL_CHECK_FUNC_RECVFROM
518 CURL_CHECK_FUNC_SEND
519 CURL_CHECK_MSG_NOSIGNAL
520
521 CARES_CHECK_FUNC_CLOSESOCKET
522 CARES_CHECK_FUNC_CLOSESOCKET_CAMEL
523 CARES_CHECK_FUNC_CONNECT
524 CARES_CHECK_FUNC_FCNTL
525 CARES_CHECK_FUNC_FREEADDRINFO
526 CARES_CHECK_FUNC_GETADDRINFO
527 CARES_CHECK_FUNC_GETHOSTBYADDR
528 CARES_CHECK_FUNC_GETHOSTBYNAME
529 CARES_CHECK_FUNC_GETHOSTNAME
530 CARES_CHECK_FUNC_GETSERVBYPORT_R
531 CARES_CHECK_FUNC_INET_NET_PTON
532 CARES_CHECK_FUNC_INET_NTOP
533 CARES_CHECK_FUNC_INET_PTON
534 CARES_CHECK_FUNC_IOCTL
535 CARES_CHECK_FUNC_IOCTLSOCKET
536 CARES_CHECK_FUNC_IOCTLSOCKET_CAMEL
537 CARES_CHECK_FUNC_SETSOCKOPT
538 CARES_CHECK_FUNC_SOCKET
539 CARES_CHECK_FUNC_STRCASECMP
540 CARES_CHECK_FUNC_STRCMPI
541 CARES_CHECK_FUNC_STRDUP
542 CARES_CHECK_FUNC_STRICMP
543 CARES_CHECK_FUNC_STRNCASECMP
544 CARES_CHECK_FUNC_STRNCMPI
545 CARES_CHECK_FUNC_STRNICMP
546 CARES_CHECK_FUNC_WRITEV
547
548
549 dnl check for AF_INET6
550 CARES_CHECK_CONSTANT(
551   [
552 #undef inline
553 #ifdef HAVE_WINDOWS_H
554 #ifndef WIN32_LEAN_AND_MEAN
555 #define WIN32_LEAN_AND_MEAN
556 #endif
557 #include <windows.h>
558 #ifdef HAVE_WINSOCK2_H
559 #include <winsock2.h>
560 #endif
561 #else
562 #ifdef HAVE_SYS_TYPES_H
563 #include <sys/types.h>
564 #endif
565 #ifdef HAVE_SYS_SOCKET_H
566 #include <sys/socket.h>
567 #endif
568 #endif
569   ], [PF_INET6], 
570      AC_DEFINE_UNQUOTED(HAVE_PF_INET6,1,[Define to 1 if you have PF_INET6.])
571 )
572
573 dnl check for PF_INET6
574 CARES_CHECK_CONSTANT(
575   [
576 #undef inline
577 #ifdef HAVE_WINDOWS_H
578 #ifndef WIN32_LEAN_AND_MEAN
579 #define WIN32_LEAN_AND_MEAN
580 #endif
581 #include <windows.h>
582 #ifdef HAVE_WINSOCK2_H
583 #include <winsock2.h>
584 #endif
585 #else
586 #ifdef HAVE_SYS_TYPES_H
587 #include <sys/types.h>
588 #endif
589 #ifdef HAVE_SYS_SOCKET_H
590 #include <sys/socket.h>
591 #endif
592 #endif
593   ], [AF_INET6], 
594      AC_DEFINE_UNQUOTED(HAVE_AF_INET6,1,[Define to 1 if you have AF_INET6.])
595 )
596
597
598 dnl check for the in6_addr structure
599 CARES_CHECK_STRUCT(
600   [
601 #undef inline
602 #ifdef HAVE_WINDOWS_H
603 #ifndef WIN32_LEAN_AND_MEAN
604 #define WIN32_LEAN_AND_MEAN
605 #endif
606 #include <windows.h>
607 #ifdef HAVE_WINSOCK2_H
608 #include <winsock2.h>
609 #ifdef HAVE_WS2TCPIP_H
610 #include <ws2tcpip.h>
611 #endif
612 #endif
613 #else
614 #ifdef HAVE_SYS_TYPES_H
615 #include <sys/types.h>
616 #endif
617 #ifdef HAVE_NETINET_IN_H
618 #include <netinet/in.h>
619 #endif
620 #endif
621   ], [in6_addr], 
622      AC_DEFINE_UNQUOTED(HAVE_STRUCT_IN6_ADDR,1,[Define to 1 if you have struct in6_addr.])
623 )
624
625 dnl check for the sockaddr_in6 structure
626 CARES_CHECK_STRUCT(
627   [
628 #undef inline
629 #ifdef HAVE_WINDOWS_H
630 #ifndef WIN32_LEAN_AND_MEAN
631 #define WIN32_LEAN_AND_MEAN
632 #endif
633 #include <windows.h>
634 #ifdef HAVE_WINSOCK2_H
635 #include <winsock2.h>
636 #ifdef HAVE_WS2TCPIP_H
637 #include <ws2tcpip.h>
638 #endif
639 #endif
640 #else
641 #ifdef HAVE_SYS_TYPES_H
642 #include <sys/types.h>
643 #endif
644 #ifdef HAVE_NETINET_IN_H
645 #include <netinet/in.h>
646 #endif
647 #endif
648   ], [sockaddr_in6], 
649      AC_DEFINE_UNQUOTED(HAVE_STRUCT_SOCKADDR_IN6,1,
650        [Define to 1 if you have struct sockaddr_in6.]) ac_have_sockaddr_in6=yes
651 )
652
653 AC_CHECK_MEMBER(struct sockaddr_in6.sin6_scope_id,
654     AC_DEFINE_UNQUOTED(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID,1,
655       [Define to 1 if your struct sockaddr_in6 has sin6_scope_id.])
656    , ,
657   [
658 #undef inline
659 #ifdef HAVE_WINDOWS_H
660 #ifndef WIN32_LEAN_AND_MEAN
661 #define WIN32_LEAN_AND_MEAN
662 #endif
663 #include <windows.h>
664 #ifdef HAVE_WINSOCK2_H
665 #include <winsock2.h>
666 #ifdef HAVE_WS2TCPIP_H
667 #include <ws2tcpip.h>
668 #endif
669 #endif
670 #else
671 #ifdef HAVE_SYS_TYPES_H
672 #include <sys/types.h>
673 #endif
674 #ifdef HAVE_NETINET_IN_H
675 #include <netinet/in.h>
676 #endif
677 #endif
678   ])
679
680 dnl check for the addrinfo structure
681 AC_CHECK_MEMBER(struct addrinfo.ai_flags,
682      AC_DEFINE_UNQUOTED(HAVE_STRUCT_ADDRINFO,1,
683        [Define to 1 if you have struct addrinfo.]),,
684   [
685 #undef inline
686 #ifdef HAVE_WINDOWS_H
687 #ifndef WIN32_LEAN_AND_MEAN
688 #define WIN32_LEAN_AND_MEAN
689 #endif
690 #include <windows.h>
691 #ifdef HAVE_WINSOCK2_H
692 #include <winsock2.h>
693 #ifdef HAVE_WS2TCPIP_H
694 #include <ws2tcpip.h>
695 #endif
696 #endif
697 #else
698 #ifdef HAVE_SYS_TYPES_H
699 #include <sys/types.h>
700 #endif
701 #ifdef HAVE_NETINET_IN_H
702 #include <netinet/in.h>
703 #endif
704 #ifdef HAVE_SYS_SOCKET_H
705 #include <sys/socket.h>
706 #endif
707 #ifdef HAVE_NETDB_H
708 #include <netdb.h>
709 #endif
710 #endif
711   ]
712 )
713
714
715 AC_CHECK_FUNCS([bitncmp \
716   gettimeofday \
717   if_indextoname
718 ],[
719 ],[
720   func="$ac_func"
721   AC_MSG_CHECKING([deeper for $func])
722   AC_LINK_IFELSE([
723     AC_LANG_PROGRAM([[
724     ]],[[
725       $func ();
726     ]])
727   ],[
728     AC_MSG_RESULT([yes])
729     eval "ac_cv_func_$func=yes"
730     AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$func]), [1],
731       [Define to 1 if you have the $func function.])
732   ],[
733     AC_MSG_RESULT([but still no])
734   ])
735 ])
736
737
738 AC_CHECK_SIZEOF(struct in6_addr, ,
739 [
740 #undef inline
741 #ifdef HAVE_WINDOWS_H
742 #ifndef WIN32_LEAN_AND_MEAN
743 #define WIN32_LEAN_AND_MEAN
744 #endif
745 #include <windows.h>
746 #ifdef HAVE_WINSOCK2_H
747 #include <winsock2.h>
748 #ifdef HAVE_WS2TCPIP_H
749 #include <ws2tcpip.h>
750 #endif
751 #endif
752 #else
753 #ifdef HAVE_SYS_TYPES_H
754 #include <sys/types.h>
755 #endif
756 #ifdef HAVE_SYS_SOCKET_H
757 #include <sys/socket.h>
758 #endif
759 #ifdef HAVE_NETINET_IN_H
760 #include <netinet/in.h>
761 #endif
762 #endif
763 ]
764 )
765
766 AC_CHECK_SIZEOF(struct in_addr, ,
767 [
768 #undef inline
769 #ifdef HAVE_WINDOWS_H
770 #ifndef WIN32_LEAN_AND_MEAN
771 #define WIN32_LEAN_AND_MEAN
772 #endif
773 #include <windows.h>
774 #ifdef HAVE_WINSOCK2_H
775 #include <winsock2.h>
776 #ifdef HAVE_WS2TCPIP_H
777 #include <ws2tcpip.h>
778 #endif
779 #endif
780 #else
781 #ifdef HAVE_SYS_TYPES_H
782 #include <sys/types.h>
783 #endif
784 #ifdef HAVE_SYS_SOCKET_H
785 #include <sys/socket.h>
786 #endif
787 #ifdef HAVE_NETINET_IN_H
788 #include <netinet/in.h>
789 #endif
790 #endif
791 ]
792 )
793
794
795 dnl Check if the getnameinfo function is available
796 dnl and get the types of five of its arguments.
797 CURL_CHECK_FUNC_GETNAMEINFO
798
799
800 AC_C_BIGENDIAN(
801     [AC_DEFINE(ARES_BIG_ENDIAN, 1,
802       [define this if ares is built for a big endian system])],
803     ,
804     [AC_MSG_WARN([couldn't figure out endianess, assuming little endian!])]
805 )
806
807 dnl Check for user-specified random device
808 AC_ARG_WITH(random,
809 AC_HELP_STRING([--with-random=FILE],
810                [read randomness from FILE (default=/dev/urandom)]),
811     [ RANDOM_FILE="$withval" ],
812     [
813         dnl Check for random device.  If we're cross compiling, we can't
814         dnl check, and it's better to assume it doesn't exist than it is
815         dnl to fail on AC_CHECK_FILE or later.
816         if test "$cross_compiling" = "no"; then
817           AC_CHECK_FILE("/dev/urandom", [ RANDOM_FILE="/dev/urandom"] )
818         else
819           AC_MSG_WARN([cannot check for /dev/urandom while cross compiling; assuming none])
820         fi
821         
822     ]
823 )
824 if test -n "$RANDOM_FILE" && test X"$RANDOM_FILE" != Xno ; then
825         AC_SUBST(RANDOM_FILE)
826         AC_DEFINE_UNQUOTED(RANDOM_FILE, "$RANDOM_FILE",
827         [a suitable file/device to read random data from])
828 fi
829
830 CARES_CHECK_OPTION_NONBLOCKING
831 CARES_CHECK_NONBLOCKING_SOCKET
832
833 CARES_CONFIGURE_SYMBOL_HIDING
834
835 CARES_PRIVATE_LIBS="$LIBS"
836 AC_SUBST(CARES_PRIVATE_LIBS)
837
838 CARES_CFLAG_EXTRAS=""
839 if test X"$want_werror" = Xyes; then
840   CARES_CFLAG_EXTRAS="-Werror"
841 fi
842 AC_SUBST(CARES_CFLAG_EXTRAS)
843
844 dnl squeeze whitespace out of some variables
845
846 squeeze CFLAGS
847 squeeze CPPFLAGS
848 squeeze DEFS
849 squeeze LDFLAGS
850 squeeze LIBS
851
852 squeeze CARES_PRIVATE_LIBS
853
854 AC_CONFIG_FILES([Makefile libcares.pc])
855 AC_OUTPUT