Annotation of embedaddon/libiconv/srcm4/sys_socket_h.m4, revision 1.1
1.1 ! misho 1: # sys_socket_h.m4 serial 22
! 2: dnl Copyright (C) 2005-2011 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.
! 6:
! 7: dnl From Simon Josefsson.
! 8:
! 9: AC_DEFUN([gl_HEADER_SYS_SOCKET],
! 10: [
! 11: AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS])
! 12: AC_REQUIRE([AC_CANONICAL_HOST])
! 13: AC_REQUIRE([AC_C_INLINE])
! 14:
! 15: dnl On OSF/1, the functions recv(), send(), recvfrom(), sendto() have
! 16: dnl old-style declarations (with return type 'int' instead of 'ssize_t')
! 17: dnl unless _POSIX_PII_SOCKET is defined.
! 18: case "$host_os" in
! 19: osf*)
! 20: AC_DEFINE([_POSIX_PII_SOCKET], [1],
! 21: [Define to 1 in order to get the POSIX compatible declarations
! 22: of socket functions.])
! 23: ;;
! 24: esac
! 25:
! 26: AC_CACHE_CHECK([whether <sys/socket.h> is self-contained],
! 27: [gl_cv_header_sys_socket_h_selfcontained],
! 28: [
! 29: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/socket.h>]], [[]])],
! 30: [gl_cv_header_sys_socket_h_selfcontained=yes],
! 31: [gl_cv_header_sys_socket_h_selfcontained=no])
! 32: ])
! 33: if test $gl_cv_header_sys_socket_h_selfcontained = yes; then
! 34: dnl If the shutdown function exists, <sys/socket.h> should define
! 35: dnl SHUT_RD, SHUT_WR, SHUT_RDWR.
! 36: AC_CHECK_FUNCS([shutdown])
! 37: if test $ac_cv_func_shutdown = yes; then
! 38: AC_CACHE_CHECK([whether <sys/socket.h> defines the SHUT_* macros],
! 39: [gl_cv_header_sys_socket_h_shut],
! 40: [
! 41: AC_COMPILE_IFELSE(
! 42: [AC_LANG_PROGRAM([[#include <sys/socket.h>]],
! 43: [[int a[] = { SHUT_RD, SHUT_WR, SHUT_RDWR };]])],
! 44: [gl_cv_header_sys_socket_h_shut=yes],
! 45: [gl_cv_header_sys_socket_h_shut=no])
! 46: ])
! 47: if test $gl_cv_header_sys_socket_h_shut = no; then
! 48: SYS_SOCKET_H='sys/socket.h'
! 49: fi
! 50: fi
! 51: fi
! 52: # We need to check for ws2tcpip.h now.
! 53: gl_PREREQ_SYS_H_SOCKET
! 54: AC_CHECK_TYPES([struct sockaddr_storage, sa_family_t],,,[
! 55: /* sys/types.h is not needed according to POSIX, but the
! 56: sys/socket.h in i386-unknown-freebsd4.10 and
! 57: powerpc-apple-darwin5.5 required it. */
! 58: #include <sys/types.h>
! 59: #ifdef HAVE_SYS_SOCKET_H
! 60: #include <sys/socket.h>
! 61: #endif
! 62: #ifdef HAVE_WS2TCPIP_H
! 63: #include <ws2tcpip.h>
! 64: #endif
! 65: ])
! 66: if test $ac_cv_type_struct_sockaddr_storage = no; then
! 67: HAVE_STRUCT_SOCKADDR_STORAGE=0
! 68: fi
! 69: if test $ac_cv_type_sa_family_t = no; then
! 70: HAVE_SA_FAMILY_T=0
! 71: fi
! 72: if test $ac_cv_type_struct_sockaddr_storage != no; then
! 73: AC_CHECK_MEMBERS([struct sockaddr_storage.ss_family],
! 74: [],
! 75: [HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY=0],
! 76: [#include <sys/types.h>
! 77: #ifdef HAVE_SYS_SOCKET_H
! 78: #include <sys/socket.h>
! 79: #endif
! 80: #ifdef HAVE_WS2TCPIP_H
! 81: #include <ws2tcpip.h>
! 82: #endif
! 83: ])
! 84: fi
! 85: if test $HAVE_STRUCT_SOCKADDR_STORAGE = 0 || test $HAVE_SA_FAMILY_T = 0 \
! 86: || test $HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY = 0; then
! 87: SYS_SOCKET_H='sys/socket.h'
! 88: fi
! 89: gl_PREREQ_SYS_H_WINSOCK2
! 90:
! 91: dnl Check for declarations of anything we want to poison if the
! 92: dnl corresponding gnulib module is not in use.
! 93: gl_WARN_ON_USE_PREPARE([[
! 94: /* Some systems require prerequisite headers. */
! 95: #include <sys/types.h>
! 96: #include <sys/socket.h>
! 97: ]], [socket connect accept bind getpeername getsockname getsockopt
! 98: listen recv send recvfrom sendto setsockopt shutdown accept4])
! 99: ])
! 100:
! 101: AC_DEFUN([gl_PREREQ_SYS_H_SOCKET],
! 102: [
! 103: dnl Check prerequisites of the <sys/socket.h> replacement.
! 104: AC_REQUIRE([gl_CHECK_SOCKET_HEADERS])
! 105: gl_CHECK_NEXT_HEADERS([sys/socket.h])
! 106: if test $ac_cv_header_sys_socket_h = yes; then
! 107: HAVE_SYS_SOCKET_H=1
! 108: HAVE_WS2TCPIP_H=0
! 109: else
! 110: HAVE_SYS_SOCKET_H=0
! 111: if test $ac_cv_header_ws2tcpip_h = yes; then
! 112: HAVE_WS2TCPIP_H=1
! 113: else
! 114: HAVE_WS2TCPIP_H=0
! 115: fi
! 116: fi
! 117: AC_SUBST([HAVE_SYS_SOCKET_H])
! 118: AC_SUBST([HAVE_WS2TCPIP_H])
! 119: ])
! 120:
! 121: # Common prerequisites of the <sys/socket.h> replacement and of the
! 122: # <sys/select.h> replacement.
! 123: # Sets and substitutes HAVE_WINSOCK2_H.
! 124: AC_DEFUN([gl_PREREQ_SYS_H_WINSOCK2],
! 125: [
! 126: m4_ifdef([gl_UNISTD_H_DEFAULTS], [AC_REQUIRE([gl_UNISTD_H_DEFAULTS])])
! 127: m4_ifdef([gl_SYS_IOCTL_H_DEFAULTS], [AC_REQUIRE([gl_SYS_IOCTL_H_DEFAULTS])])
! 128: AC_CHECK_HEADERS_ONCE([sys/socket.h])
! 129: if test $ac_cv_header_sys_socket_h != yes; then
! 130: dnl We cannot use AC_CHECK_HEADERS_ONCE here, because that would make
! 131: dnl the check for those headers unconditional; yet cygwin reports
! 132: dnl that the headers are present but cannot be compiled (since on
! 133: dnl cygwin, all socket information should come from sys/socket.h).
! 134: AC_CHECK_HEADERS([winsock2.h])
! 135: fi
! 136: if test "$ac_cv_header_winsock2_h" = yes; then
! 137: HAVE_WINSOCK2_H=1
! 138: UNISTD_H_HAVE_WINSOCK2_H=1
! 139: SYS_IOCTL_H_HAVE_WINSOCK2_H=1
! 140: else
! 141: HAVE_WINSOCK2_H=0
! 142: fi
! 143: AC_SUBST([HAVE_WINSOCK2_H])
! 144: ])
! 145:
! 146: AC_DEFUN([gl_SYS_SOCKET_MODULE_INDICATOR],
! 147: [
! 148: dnl Use AC_REQUIRE here, so that the default settings are expanded once only.
! 149: AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS])
! 150: gl_MODULE_INDICATOR_SET_VARIABLE([$1])
! 151: dnl Define it also as a C macro, for the benefit of the unit tests.
! 152: gl_MODULE_INDICATOR_FOR_TESTS([$1])
! 153: ])
! 154:
! 155: AC_DEFUN([gl_SYS_SOCKET_H_DEFAULTS],
! 156: [
! 157: GNULIB_SOCKET=0; AC_SUBST([GNULIB_SOCKET])
! 158: GNULIB_CONNECT=0; AC_SUBST([GNULIB_CONNECT])
! 159: GNULIB_ACCEPT=0; AC_SUBST([GNULIB_ACCEPT])
! 160: GNULIB_BIND=0; AC_SUBST([GNULIB_BIND])
! 161: GNULIB_GETPEERNAME=0; AC_SUBST([GNULIB_GETPEERNAME])
! 162: GNULIB_GETSOCKNAME=0; AC_SUBST([GNULIB_GETSOCKNAME])
! 163: GNULIB_GETSOCKOPT=0; AC_SUBST([GNULIB_GETSOCKOPT])
! 164: GNULIB_LISTEN=0; AC_SUBST([GNULIB_LISTEN])
! 165: GNULIB_RECV=0; AC_SUBST([GNULIB_RECV])
! 166: GNULIB_SEND=0; AC_SUBST([GNULIB_SEND])
! 167: GNULIB_RECVFROM=0; AC_SUBST([GNULIB_RECVFROM])
! 168: GNULIB_SENDTO=0; AC_SUBST([GNULIB_SENDTO])
! 169: GNULIB_SETSOCKOPT=0; AC_SUBST([GNULIB_SETSOCKOPT])
! 170: GNULIB_SHUTDOWN=0; AC_SUBST([GNULIB_SHUTDOWN])
! 171: GNULIB_ACCEPT4=0; AC_SUBST([GNULIB_ACCEPT4])
! 172: HAVE_STRUCT_SOCKADDR_STORAGE=1; AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE])
! 173: HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY=1;
! 174: AC_SUBST([HAVE_STRUCT_SOCKADDR_STORAGE_SS_FAMILY])
! 175: HAVE_SA_FAMILY_T=1; AC_SUBST([HAVE_SA_FAMILY_T])
! 176: HAVE_ACCEPT4=1; AC_SUBST([HAVE_ACCEPT4])
! 177: ])
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>