configure: fix a bashism
[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_NET_PTON
536
537 dnl CARES_CHECK_FUNC_INET_NTOP
538
539 CARES_CHECK_FUNC_INET_PTON
540 CARES_CHECK_FUNC_IOCTL
541 CARES_CHECK_FUNC_IOCTLSOCKET
542 CARES_CHECK_FUNC_IOCTLSOCKET_CAMEL
543 CARES_CHECK_FUNC_SETSOCKOPT
544 CARES_CHECK_FUNC_SOCKET
545 CARES_CHECK_FUNC_STRCASECMP
546 CARES_CHECK_FUNC_STRCMPI
547 CARES_CHECK_FUNC_STRDUP
548 CARES_CHECK_FUNC_STRICMP
549 CARES_CHECK_FUNC_STRNCASECMP
550 CARES_CHECK_FUNC_STRNCMPI
551 CARES_CHECK_FUNC_STRNICMP
552 CARES_CHECK_FUNC_WRITEV
553
554
555 dnl check for AF_INET6
556 CARES_CHECK_CONSTANT(
557   [
558 #undef inline
559 #ifdef HAVE_WINDOWS_H
560 #ifndef WIN32_LEAN_AND_MEAN
561 #define WIN32_LEAN_AND_MEAN
562 #endif
563 #include <windows.h>
564 #ifdef HAVE_WINSOCK2_H
565 #include <winsock2.h>
566 #endif
567 #else
568 #ifdef HAVE_SYS_TYPES_H
569 #include <sys/types.h>
570 #endif
571 #ifdef HAVE_SYS_SOCKET_H
572 #include <sys/socket.h>
573 #endif
574 #endif
575   ], [PF_INET6], 
576      AC_DEFINE_UNQUOTED(HAVE_PF_INET6,1,[Define to 1 if you have PF_INET6.])
577 )
578
579 dnl check for PF_INET6
580 CARES_CHECK_CONSTANT(
581   [
582 #undef inline
583 #ifdef HAVE_WINDOWS_H
584 #ifndef WIN32_LEAN_AND_MEAN
585 #define WIN32_LEAN_AND_MEAN
586 #endif
587 #include <windows.h>
588 #ifdef HAVE_WINSOCK2_H
589 #include <winsock2.h>
590 #endif
591 #else
592 #ifdef HAVE_SYS_TYPES_H
593 #include <sys/types.h>
594 #endif
595 #ifdef HAVE_SYS_SOCKET_H
596 #include <sys/socket.h>
597 #endif
598 #endif
599   ], [AF_INET6], 
600      AC_DEFINE_UNQUOTED(HAVE_AF_INET6,1,[Define to 1 if you have AF_INET6.])
601 )
602
603
604 dnl check for the in6_addr structure
605 CARES_CHECK_STRUCT(
606   [
607 #undef inline
608 #ifdef HAVE_WINDOWS_H
609 #ifndef WIN32_LEAN_AND_MEAN
610 #define WIN32_LEAN_AND_MEAN
611 #endif
612 #include <windows.h>
613 #ifdef HAVE_WINSOCK2_H
614 #include <winsock2.h>
615 #ifdef HAVE_WS2TCPIP_H
616 #include <ws2tcpip.h>
617 #endif
618 #endif
619 #else
620 #ifdef HAVE_SYS_TYPES_H
621 #include <sys/types.h>
622 #endif
623 #ifdef HAVE_NETINET_IN_H
624 #include <netinet/in.h>
625 #endif
626 #endif
627   ], [in6_addr], 
628      AC_DEFINE_UNQUOTED(HAVE_STRUCT_IN6_ADDR,1,[Define to 1 if you have struct in6_addr.])
629 )
630
631 dnl check for the sockaddr_in6 structure
632 CARES_CHECK_STRUCT(
633   [
634 #undef inline
635 #ifdef HAVE_WINDOWS_H
636 #ifndef WIN32_LEAN_AND_MEAN
637 #define WIN32_LEAN_AND_MEAN
638 #endif
639 #include <windows.h>
640 #ifdef HAVE_WINSOCK2_H
641 #include <winsock2.h>
642 #ifdef HAVE_WS2TCPIP_H
643 #include <ws2tcpip.h>
644 #endif
645 #endif
646 #else
647 #ifdef HAVE_SYS_TYPES_H
648 #include <sys/types.h>
649 #endif
650 #ifdef HAVE_NETINET_IN_H
651 #include <netinet/in.h>
652 #endif
653 #endif
654   ], [sockaddr_in6], 
655      AC_DEFINE_UNQUOTED(HAVE_STRUCT_SOCKADDR_IN6,1,
656        [Define to 1 if you have struct sockaddr_in6.]) ac_have_sockaddr_in6=yes
657 )
658
659 AC_CHECK_MEMBER(struct sockaddr_in6.sin6_scope_id,
660     AC_DEFINE_UNQUOTED(HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID,1,
661       [Define to 1 if your struct sockaddr_in6 has sin6_scope_id.])
662    , ,
663   [
664 #undef inline
665 #ifdef HAVE_WINDOWS_H
666 #ifndef WIN32_LEAN_AND_MEAN
667 #define WIN32_LEAN_AND_MEAN
668 #endif
669 #include <windows.h>
670 #ifdef HAVE_WINSOCK2_H
671 #include <winsock2.h>
672 #ifdef HAVE_WS2TCPIP_H
673 #include <ws2tcpip.h>
674 #endif
675 #endif
676 #else
677 #ifdef HAVE_SYS_TYPES_H
678 #include <sys/types.h>
679 #endif
680 #ifdef HAVE_NETINET_IN_H
681 #include <netinet/in.h>
682 #endif
683 #endif
684   ])
685
686 dnl check for the addrinfo structure
687 AC_CHECK_MEMBER(struct addrinfo.ai_flags,
688      AC_DEFINE_UNQUOTED(HAVE_STRUCT_ADDRINFO,1,
689        [Define to 1 if you have struct addrinfo.]),,
690   [
691 #undef inline
692 #ifdef HAVE_WINDOWS_H
693 #ifndef WIN32_LEAN_AND_MEAN
694 #define WIN32_LEAN_AND_MEAN
695 #endif
696 #include <windows.h>
697 #ifdef HAVE_WINSOCK2_H
698 #include <winsock2.h>
699 #ifdef HAVE_WS2TCPIP_H
700 #include <ws2tcpip.h>
701 #endif
702 #endif
703 #else
704 #ifdef HAVE_SYS_TYPES_H
705 #include <sys/types.h>
706 #endif
707 #ifdef HAVE_NETINET_IN_H
708 #include <netinet/in.h>
709 #endif
710 #ifdef HAVE_SYS_SOCKET_H
711 #include <sys/socket.h>
712 #endif
713 #ifdef HAVE_NETDB_H
714 #include <netdb.h>
715 #endif
716 #endif
717   ]
718 )
719
720
721 AC_CHECK_FUNCS([bitncmp \
722   gettimeofday \
723   if_indextoname
724 ],[
725 ],[
726   func="$ac_func"
727   AC_MSG_CHECKING([deeper for $func])
728   AC_LINK_IFELSE([
729     AC_LANG_PROGRAM([[
730     ]],[[
731       $func ();
732     ]])
733   ],[
734     AC_MSG_RESULT([yes])
735     eval "ac_cv_func_$func=yes"
736     AC_DEFINE_UNQUOTED(AS_TR_CPP([HAVE_$func]), [1],
737       [Define to 1 if you have the $func function.])
738   ],[
739     AC_MSG_RESULT([but still no])
740   ])
741 ])
742
743
744 AC_CHECK_SIZEOF(struct in6_addr, ,
745 [
746 #undef inline
747 #ifdef HAVE_WINDOWS_H
748 #ifndef WIN32_LEAN_AND_MEAN
749 #define WIN32_LEAN_AND_MEAN
750 #endif
751 #include <windows.h>
752 #ifdef HAVE_WINSOCK2_H
753 #include <winsock2.h>
754 #ifdef HAVE_WS2TCPIP_H
755 #include <ws2tcpip.h>
756 #endif
757 #endif
758 #else
759 #ifdef HAVE_SYS_TYPES_H
760 #include <sys/types.h>
761 #endif
762 #ifdef HAVE_SYS_SOCKET_H
763 #include <sys/socket.h>
764 #endif
765 #ifdef HAVE_NETINET_IN_H
766 #include <netinet/in.h>
767 #endif
768 #endif
769 ]
770 )
771
772 AC_CHECK_SIZEOF(struct in_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
801 dnl Check if the getnameinfo function is available
802 dnl and get the types of five of its arguments.
803 CURL_CHECK_FUNC_GETNAMEINFO
804
805
806 AC_C_BIGENDIAN(
807     [AC_DEFINE(ARES_BIG_ENDIAN, 1,
808       [define this if ares is built for a big endian system])],
809     ,
810     [AC_MSG_WARN([couldn't figure out endianess, assuming little endian!])]
811 )
812
813 dnl Check for user-specified random device
814 AC_ARG_WITH(random,
815 AC_HELP_STRING([--with-random=FILE],
816                [read randomness from FILE (default=/dev/urandom)]),
817     [ RANDOM_FILE="$withval" ],
818     [
819         dnl Check for random device.  If we're cross compiling, we can't
820         dnl check, and it's better to assume it doesn't exist than it is
821         dnl to fail on AC_CHECK_FILE or later.
822         if test "$cross_compiling" = "no"; then
823           AC_CHECK_FILE("/dev/urandom", [ RANDOM_FILE="/dev/urandom"] )
824         else
825           AC_MSG_WARN([cannot check for /dev/urandom while cross compiling; assuming none])
826         fi
827         
828     ]
829 )
830 if test -n "$RANDOM_FILE" && test X"$RANDOM_FILE" != Xno ; then
831         AC_SUBST(RANDOM_FILE)
832         AC_DEFINE_UNQUOTED(RANDOM_FILE, "$RANDOM_FILE",
833         [a suitable file/device to read random data from])
834 fi
835
836 CARES_CHECK_OPTION_NONBLOCKING
837 CARES_CHECK_NONBLOCKING_SOCKET
838
839 CARES_CONFIGURE_SYMBOL_HIDING
840
841 CARES_PRIVATE_LIBS="$LIBS"
842 AC_SUBST(CARES_PRIVATE_LIBS)
843
844 CARES_CFLAG_EXTRAS=""
845 if test X"$want_werror" = Xyes; then
846   CARES_CFLAG_EXTRAS="-Werror"
847 fi
848 AC_SUBST(CARES_CFLAG_EXTRAS)
849
850 dnl squeeze whitespace out of some variables
851
852 squeeze CFLAGS
853 squeeze CPPFLAGS
854 squeeze DEFS
855 squeeze LDFLAGS
856 squeeze LIBS
857
858 squeeze CARES_PRIVATE_LIBS
859
860 AC_CONFIG_FILES([Makefile libcares.pc])
861 AC_OUTPUT