Blame m4/sockpfaf.m4

Packit 33f14e
# sockpfaf.m4 serial 8
Packit 33f14e
dnl Copyright (C) 2004, 2006, 2009-2017 Free Software Foundation, Inc.
Packit 33f14e
dnl This file is free software; the Free Software Foundation
Packit 33f14e
dnl gives unlimited permission to copy and/or distribute it,
Packit 33f14e
dnl with or without modifications, as long as this notice is preserved.
Packit 33f14e
Packit 33f14e
dnl Test for some common socket protocol families (PF_INET, PF_INET6, ...)
Packit 33f14e
dnl and some common address families (AF_INET, AF_INET6, ...).
Packit 33f14e
dnl This test assumes that a system supports an address family if and only if
Packit 33f14e
dnl it supports the corresponding protocol family.
Packit 33f14e
Packit 33f14e
dnl From Bruno Haible.
Packit 33f14e
Packit 33f14e
AC_DEFUN([gl_SOCKET_FAMILIES],
Packit 33f14e
[
Packit 33f14e
  AC_REQUIRE([gl_HEADER_SYS_SOCKET])
Packit 33f14e
  AC_CHECK_HEADERS_ONCE([netinet/in.h])
Packit 33f14e
Packit 33f14e
  AC_MSG_CHECKING([for IPv4 sockets])
Packit 33f14e
  AC_CACHE_VAL([gl_cv_socket_ipv4],
Packit 33f14e
    [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
Packit 33f14e
#ifdef HAVE_SYS_SOCKET_H
Packit 33f14e
#include <sys/socket.h>
Packit 33f14e
#endif
Packit 33f14e
#ifdef HAVE_NETINET_IN_H
Packit 33f14e
#include <netinet/in.h>
Packit 33f14e
#endif
Packit 33f14e
#ifdef HAVE_WINSOCK2_H
Packit 33f14e
#include <winsock2.h>
Packit 33f14e
#endif]],
Packit 33f14e
[[int x = AF_INET; struct in_addr y; struct sockaddr_in z;
Packit 33f14e
 if (&x && &y && &z) return 0;]])],
Packit 33f14e
       gl_cv_socket_ipv4=yes, gl_cv_socket_ipv4=no)])
Packit 33f14e
  AC_MSG_RESULT([$gl_cv_socket_ipv4])
Packit 33f14e
  if test $gl_cv_socket_ipv4 = yes; then
Packit 33f14e
    AC_DEFINE([HAVE_IPV4], [1], [Define to 1 if <sys/socket.h> defines AF_INET.])
Packit 33f14e
  fi
Packit 33f14e
Packit 33f14e
  AC_MSG_CHECKING([for IPv6 sockets])
Packit 33f14e
  AC_CACHE_VAL([gl_cv_socket_ipv6],
Packit 33f14e
    [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
Packit 33f14e
#ifdef HAVE_SYS_SOCKET_H
Packit 33f14e
#include <sys/socket.h>
Packit 33f14e
#endif
Packit 33f14e
#ifdef HAVE_NETINET_IN_H
Packit 33f14e
#include <netinet/in.h>
Packit 33f14e
#endif
Packit 33f14e
#ifdef HAVE_WINSOCK2_H
Packit 33f14e
#include <winsock2.h>
Packit 33f14e
#endif
Packit 33f14e
#ifdef HAVE_WS2TCPIP_H
Packit 33f14e
#include <ws2tcpip.h>
Packit 33f14e
#endif]],
Packit 33f14e
[[int x = AF_INET6; struct in6_addr y; struct sockaddr_in6 z;
Packit 33f14e
 if (&x && &y && &z) return 0;]])],
Packit 33f14e
       gl_cv_socket_ipv6=yes, gl_cv_socket_ipv6=no)])
Packit 33f14e
  AC_MSG_RESULT([$gl_cv_socket_ipv6])
Packit 33f14e
  if test $gl_cv_socket_ipv6 = yes; then
Packit 33f14e
    AC_DEFINE([HAVE_IPV6], [1], [Define to 1 if <sys/socket.h> defines AF_INET6.])
Packit 33f14e
  fi
Packit 33f14e
])
Packit 33f14e
Packit 33f14e
AC_DEFUN([gl_SOCKET_FAMILY_UNIX],
Packit 33f14e
[
Packit 33f14e
  AC_REQUIRE([gl_HEADER_SYS_SOCKET])
Packit 33f14e
  AC_CHECK_HEADERS_ONCE([sys/un.h])
Packit 33f14e
Packit 33f14e
  AC_MSG_CHECKING([for UNIX domain sockets])
Packit 33f14e
  AC_CACHE_VAL([gl_cv_socket_unix],
Packit 33f14e
    [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/types.h>
Packit 33f14e
#ifdef HAVE_SYS_SOCKET_H
Packit 33f14e
#include <sys/socket.h>
Packit 33f14e
#endif
Packit 33f14e
#ifdef HAVE_SYS_UN_H
Packit 33f14e
#include <sys/un.h>
Packit 33f14e
#endif
Packit 33f14e
#ifdef HAVE_WINSOCK2_H
Packit 33f14e
#include <winsock2.h>
Packit 33f14e
#endif]],
Packit 33f14e
[[int x = AF_UNIX; struct sockaddr_un y;
Packit 33f14e
 if (&x && &y) return 0;]])],
Packit 33f14e
       gl_cv_socket_unix=yes, gl_cv_socket_unix=no)])
Packit 33f14e
  AC_MSG_RESULT([$gl_cv_socket_unix])
Packit 33f14e
  if test $gl_cv_socket_unix = yes; then
Packit 33f14e
    AC_DEFINE([HAVE_UNIXSOCKET], [1], [Define to 1 if <sys/socket.h> defines AF_UNIX.])
Packit 33f14e
  fi
Packit 33f14e
])