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