1 # sys_socket_h.m4 serial 7
2 dnl Copyright (C) 2005-2008 Free Software Foundation, Inc.
3 dnl This file is free software; the Free Software Foundation
4 dnl gives unlimited permission to copy and/or distribute it,
5 dnl with or without modifications, as long as this notice is preserved.
7 dnl From Simon Josefsson.
9 AC_DEFUN([gl_HEADER_SYS_SOCKET],
11 AC_REQUIRE([AC_C_INLINE])
13 AC_CACHE_CHECK([whether <sys/socket.h> is self-contained],
14 [gl_cv_header_sys_socket_h_selfcontained],
16 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]], [[]])],
17 [gl_cv_header_sys_socket_h_selfcontained=yes],
18 [gl_cv_header_sys_socket_h_selfcontained=no])
20 if test $gl_cv_header_sys_socket_h_selfcontained = yes; then
22 dnl If the shutdown function exists, <sys/socket.h> should define
23 dnl SHUT_RD, SHUT_WR, SHUT_RDWR.
24 AC_CHECK_FUNCS([shutdown])
25 if test $ac_cv_func_shutdown = yes; then
26 AC_CACHE_CHECK([whether <sys/socket.h> defines the SHUT_* macros],
27 [gl_cv_header_sys_socket_h_shut],
30 [AC_LANG_PROGRAM([[#include <sys/socket.h>]],
31 [[int a[] = { SHUT_RD, SHUT_WR, SHUT_RDWR };]])],
32 [gl_cv_header_sys_socket_h_shut=yes],
33 [gl_cv_header_sys_socket_h_shut=no])
35 if test $gl_cv_header_sys_socket_h_shut = no; then
36 SYS_SOCKET_H='sys/socket.h'
40 SYS_SOCKET_H='sys/socket.h'
42 if test -n "$SYS_SOCKET_H"; then
43 dnl Check prerequisites of the <sys/socket.h> replacement.
44 gl_CHECK_NEXT_HEADERS([sys/socket.h])
45 if test $ac_cv_header_sys_socket_h = yes; then
50 dnl We cannot use AC_CHECK_HEADERS_ONCE here, because that would make
51 dnl the check for those headers unconditional; yet cygwin reports
52 dnl that the headers are present but cannot be compiled (since on
53 dnl cygwin, all socket information should come from sys/socket.h).
54 AC_CHECK_HEADERS([ws2tcpip.h])
55 if test $ac_cv_header_ws2tcpip_h = yes; then
61 gl_PREREQ_SYS_H_WINSOCK2
62 if test x$ac_cv_header_winsock2_h = xyes; then
65 AC_SUBST([HAVE_SYS_SOCKET_H])
66 AC_SUBST([HAVE_WS2TCPIP_H])
68 AC_SUBST([SYS_SOCKET_H])
71 # Common prerequisites of of the <sys/socket.h> replacement and of the
72 # <sys/select.h> replacement.
73 # Sets and substitutes HAVE_WINSOCK2_H.
74 AC_DEFUN([gl_PREREQ_SYS_H_WINSOCK2],
76 AC_CHECK_HEADERS_ONCE([sys/socket.h])
77 if test $ac_cv_header_sys_socket_h != yes; then
78 dnl We cannot use AC_CHECK_HEADERS_ONCE here, because that would make
79 dnl the check for those headers unconditional; yet cygwin reports
80 dnl that the headers are present but cannot be compiled (since on
81 dnl cygwin, all socket information should come from sys/socket.h).
82 AC_CHECK_HEADERS([winsock2.h])
84 if test "$ac_cv_header_winsock2_h" = yes; then
89 AC_SUBST([HAVE_WINSOCK2_H])