1# inet_ntop.m4 serial 19
2dnl Copyright (C) 2005-2006, 2008-2014 Free Software Foundation, Inc.
3dnl This file is free software; the Free Software Foundation
4dnl gives unlimited permission to copy and/or distribute it,
5dnl with or without modifications, as long as this notice is preserved.
6
7AC_DEFUN([gl_FUNC_INET_NTOP],
8[
9  AC_REQUIRE([gl_ARPA_INET_H_DEFAULTS])
10
11  dnl Persuade Solaris <arpa/inet.h> to declare inet_ntop.
12  AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
13
14  AC_REQUIRE([AC_C_RESTRICT])
15
16  dnl Most platforms that provide inet_ntop define it in libc.
17  dnl Solaris 8..10 provide inet_ntop in libnsl instead.
18  dnl Solaris 2.6..7 provide inet_ntop in libresolv instead.
19  dnl Native Windows provides it in -lws2_32 instead, with a declaration in
20  dnl <ws2tcpip.h>, and it uses stdcall calling convention, not cdecl
21  dnl (hence we cannot use AC_CHECK_FUNCS, AC_SEARCH_LIBS to find it).
22  HAVE_INET_NTOP=1
23  INET_NTOP_LIB=
24  gl_PREREQ_SYS_H_WINSOCK2
25  if test $HAVE_WINSOCK2_H = 1; then
26    AC_CHECK_DECLS([inet_ntop],,, [[#include <ws2tcpip.h>]])
27    if test $ac_cv_have_decl_inet_ntop = yes; then
28      dnl It needs to be overridden, because the stdcall calling convention
29      dnl is not compliant with POSIX.
30      REPLACE_INET_NTOP=1
31      INET_NTOP_LIB="-lws2_32"
32    else
33      HAVE_DECL_INET_NTOP=0
34      HAVE_INET_NTOP=0
35    fi
36  else
37    gl_save_LIBS=$LIBS
38    AC_SEARCH_LIBS([inet_ntop], [nsl resolv], [],
39      [AC_CHECK_FUNCS([inet_ntop])
40       if test $ac_cv_func_inet_ntop = no; then
41         HAVE_INET_NTOP=0
42       fi
43      ])
44    LIBS=$gl_save_LIBS
45
46    if test "$ac_cv_search_inet_ntop" != "no" \
47       && test "$ac_cv_search_inet_ntop" != "none required"; then
48      INET_NTOP_LIB="$ac_cv_search_inet_ntop"
49    fi
50
51    AC_CHECK_HEADERS_ONCE([netdb.h])
52    AC_CHECK_DECLS([inet_ntop],,,
53      [[#include <arpa/inet.h>
54        #if HAVE_NETDB_H
55        # include <netdb.h>
56        #endif
57      ]])
58    if test $ac_cv_have_decl_inet_ntop = no; then
59      HAVE_DECL_INET_NTOP=0
60    fi
61  fi
62  AC_SUBST([INET_NTOP_LIB])
63])
64
65# Prerequisites of lib/inet_ntop.c.
66AC_DEFUN([gl_PREREQ_INET_NTOP], [
67  AC_REQUIRE([gl_SOCKET_FAMILIES])
68])
69