libreplace: add snprintf.c to test code for getifaddrs - needed on some systems.
[jelmer/samba4-debian.git] / source / lib / replace / getifaddrs.m4
1 AC_CHECK_HEADERS([ifaddrs.h])
2
3 dnl Used when getifaddrs is not available
4 AC_CHECK_MEMBERS([struct sockaddr.sa_len], 
5          [AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Whether struct sockaddr has a sa_len member])],
6          [],
7          [#include <sys/socket.h>])
8
9 dnl test for getifaddrs and freeifaddrs
10 AC_CACHE_CHECK([for getifaddrs and freeifaddrs],libreplace_cv_HAVE_GETIFADDRS,[
11 AC_TRY_COMPILE([
12 #include <sys/types.h>
13 #if STDC_HEADERS
14 #include <stdlib.h>
15 #include <stddef.h>
16 #endif
17 #include <sys/socket.h>
18 #include <netinet/in.h>
19 #include <arpa/inet.h>
20 #include <ifaddrs.h>
21 #include <netdb.h>],
22 [
23 struct ifaddrs *ifp = NULL;
24 int ret = getifaddrs (&ifp);
25 freeifaddrs(ifp);
26 ],
27 libreplace_cv_HAVE_GETIFADDRS=yes,libreplace_cv_HAVE_GETIFADDRS=no)])
28 if test x"$libreplace_cv_HAVE_GETIFADDRS" = x"yes"; then
29     AC_DEFINE(HAVE_GETIFADDRS,1,[Whether the system has getifaddrs])
30     AC_DEFINE(HAVE_FREEIFADDRS,1,[Whether the system has freeifaddrs])
31         AC_DEFINE(HAVE_STRUCT_IFADDRS,1,[Whether struct ifaddrs is available])
32 fi
33
34 ##################
35 # look for a method of finding the list of network interfaces
36 #
37 # This tests need LIBS="$NSL_LIBS $SOCKET_LIBS"
38 #
39 old_LIBS=$LIBS
40 LIBS="$NSL_LIBS $SOCKET_LIBS"
41 iface=no;
42 ##################
43 # look for a method of finding the list of network interfaces
44 iface=no;
45 AC_CACHE_CHECK([for iface getifaddrs],libreplace_cv_HAVE_IFACE_GETIFADDRS,[
46 AC_TRY_RUN([
47 #define HAVE_IFACE_GETIFADDRS 1
48 #define NO_CONFIG_H 1
49 #define AUTOCONF_TEST 1
50 #define SOCKET_WRAPPER_NOT_REPLACE
51 #include "$libreplacedir/replace.c"
52 #include "$libreplacedir/inet_ntop.c"
53 #include "$libreplacedir/snprintf.c"
54 #include "$libreplacedir/getifaddrs.c"
55 #define getifaddrs_test main
56 #include "$libreplacedir/test/getifaddrs.c"],
57            libreplace_cv_HAVE_IFACE_GETIFADDRS=yes,libreplace_cv_HAVE_IFACE_GETIFADDRS=no,libreplace_cv_HAVE_IFACE_GETIFADDRS=cross)])
58 if test x"$libreplace_cv_HAVE_IFACE_GETIFADDRS" = x"yes"; then
59     iface=yes;AC_DEFINE(HAVE_IFACE_GETIFADDRS,1,[Whether iface getifaddrs is available])
60 else
61         LIBREPLACEOBJ="${LIBREPLACEOBJ} getifaddrs.o"
62 fi
63
64
65 if test $iface = no; then
66 AC_CACHE_CHECK([for iface AIX],libreplace_cv_HAVE_IFACE_AIX,[
67 AC_TRY_RUN([
68 #define HAVE_IFACE_AIX 1
69 #define NO_CONFIG_H 1
70 #define AUTOCONF_TEST 1
71 #undef _XOPEN_SOURCE_EXTENDED
72 #define SOCKET_WRAPPER_NOT_REPLACE
73 #include "$libreplacedir/replace.c"
74 #include "$libreplacedir/inet_ntop.c"
75 #include "$libreplacedir/snprintf.c"
76 #include "$libreplacedir/getifaddrs.c"
77 #define getifaddrs_test main
78 #include "$libreplacedir/test/getifaddrs.c"],
79            libreplace_cv_HAVE_IFACE_AIX=yes,libreplace_cv_HAVE_IFACE_AIX=no,libreplace_cv_HAVE_IFACE_AIX=cross)])
80 if test x"$libreplace_cv_HAVE_IFACE_AIX" = x"yes"; then
81     iface=yes;AC_DEFINE(HAVE_IFACE_AIX,1,[Whether iface AIX is available])
82         old_LIBS="$old_LIBS $LIBS"
83 fi
84 fi
85
86
87 if test $iface = no; then
88 AC_CACHE_CHECK([for iface ifconf],libreplace_cv_HAVE_IFACE_IFCONF,[
89 AC_TRY_RUN([
90 #define HAVE_IFACE_IFCONF 1
91 #define NO_CONFIG_H 1
92 #define AUTOCONF_TEST 1
93 #define SOCKET_WRAPPER_NOT_REPLACE
94 #include "$libreplacedir/replace.c"
95 #include "$libreplacedir/inet_ntop.c"
96 #include "$libreplacedir/snprintf.c"
97 #include "$libreplacedir/getifaddrs.c"
98 #define getifaddrs_test main
99 #include "$libreplacedir/test/getifaddrs.c"],
100            libreplace_cv_HAVE_IFACE_IFCONF=yes,libreplace_cv_HAVE_IFACE_IFCONF=no,libreplace_cv_HAVE_IFACE_IFCONF=cross)])
101 if test x"$libreplace_cv_HAVE_IFACE_IFCONF" = x"yes"; then
102     iface=yes;AC_DEFINE(HAVE_IFACE_IFCONF,1,[Whether iface ifconf is available])
103         old_LIBS="$old_LIBS $LIBS"
104 fi
105 fi
106
107 if test $iface = no; then
108 AC_CACHE_CHECK([for iface ifreq],libreplace_cv_HAVE_IFACE_IFREQ,[
109 AC_TRY_RUN([
110 #define HAVE_IFACE_IFREQ 1
111 #define NO_CONFIG_H 1
112 #define AUTOCONF_TEST 1
113 #define SOCKET_WRAPPER_NOT_REPLACE
114 #include "$libreplacedir/replace.c"
115 #include "$libreplacedir/inet_ntop.c"
116 #include "$libreplacedir/snprintf.c"
117 #include "$libreplacedir/getifaddrs.c"
118 #define getifaddrs_test main
119 #include "$libreplacedir/test/getifaddrs.c"],
120            libreplace_cv_HAVE_IFACE_IFREQ=yes,libreplace_cv_HAVE_IFACE_IFREQ=no,libreplace_cv_HAVE_IFACE_IFREQ=cross)])
121 if test x"$libreplace_cv_HAVE_IFACE_IFREQ" = x"yes"; then
122     iface=yes;AC_DEFINE(HAVE_IFACE_IFREQ,1,[Whether iface ifreq is available])
123         old_LIBS="$old_LIBS $LIBS"
124 fi
125 fi
126
127 LIBS=$old_LIBS