Blame m4/socketlib.m4

Packit Service 4684c1
# socketlib.m4 serial 2
Packit Service 4684c1
dnl Copyright (C) 2008-2020 Free Software Foundation, Inc.
Packit Service 4684c1
dnl This file is free software; the Free Software Foundation
Packit Service 4684c1
dnl gives unlimited permission to copy and/or distribute it,
Packit Service 4684c1
dnl with or without modifications, as long as this notice is preserved.
Packit Service 4684c1
Packit Service 4684c1
dnl gl_SOCKETLIB
Packit Service 4684c1
dnl Determines the library to use for socket functions.
Packit Service 4684c1
dnl Sets and AC_SUBSTs LIBSOCKET.
Packit Service 4684c1
Packit Service 4684c1
AC_DEFUN([gl_SOCKETLIB],
Packit Service 4684c1
[
Packit Service 4684c1
  gl_PREREQ_SYS_H_WINSOCK2 dnl for HAVE_WINSOCK2_H
Packit Service 4684c1
  LIBSOCKET=
Packit Service 4684c1
  if test $HAVE_WINSOCK2_H = 1; then
Packit Service 4684c1
    dnl Native Windows API (not Cygwin).
Packit Service 4684c1
    AC_CACHE_CHECK([if we need to call WSAStartup in winsock2.h and -lws2_32],
Packit Service 4684c1
                   [gl_cv_func_wsastartup], [
Packit Service 4684c1
      gl_save_LIBS="$LIBS"
Packit Service 4684c1
      LIBS="$LIBS -lws2_32"
Packit Service 4684c1
      AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Packit Service 4684c1
#ifdef HAVE_WINSOCK2_H
Packit Service 4684c1
# include <winsock2.h>
Packit Service 4684c1
#endif]], [[
Packit Service 4684c1
          WORD wVersionRequested = MAKEWORD(1, 1);
Packit Service 4684c1
          WSADATA wsaData;
Packit Service 4684c1
          int err = WSAStartup(wVersionRequested, &wsaData);
Packit Service 4684c1
          WSACleanup ();]])],
Packit Service 4684c1
        gl_cv_func_wsastartup=yes, gl_cv_func_wsastartup=no)
Packit Service 4684c1
      LIBS="$gl_save_LIBS"
Packit Service 4684c1
    ])
Packit Service 4684c1
    if test "$gl_cv_func_wsastartup" = "yes"; then
Packit Service 4684c1
      AC_DEFINE([WINDOWS_SOCKETS], [1], [Define if WSAStartup is needed.])
Packit Service 4684c1
      LIBSOCKET='-lws2_32'
Packit Service 4684c1
    fi
Packit Service 4684c1
  else
Packit Service 4684c1
    dnl Unix API.
Packit Service 4684c1
    dnl Solaris has most socket functions in libsocket.
Packit Service 4684c1
    dnl Haiku has most socket functions in libnetwork.
Packit Service 4684c1
    dnl BeOS has most socket functions in libnet.
Packit Service 4684c1
    dnl On HP-UX, do NOT link with libxnet, because in 64-bit mode this would
Packit Service 4684c1
    dnl break code (e.g. in libraries) that invokes accept(), getpeername(),
Packit Service 4684c1
    dnl getsockname(), getsockopt(), or recvfrom() with a 32-bit addrlen. See
Packit Service 4684c1
    dnl "man xopen_networking" for details.
Packit Service 4684c1
    AC_CACHE_CHECK([for library containing setsockopt], [gl_cv_lib_socket], [
Packit Service 4684c1
      gl_cv_lib_socket=
Packit Service 4684c1
      AC_LINK_IFELSE([AC_LANG_PROGRAM([[extern
Packit Service 4684c1
#ifdef __cplusplus
Packit Service 4684c1
"C"
Packit Service 4684c1
#endif
Packit Service 4684c1
char setsockopt();]], [[setsockopt();]])],
Packit Service 4684c1
        [],
Packit Service 4684c1
        [gl_save_LIBS="$LIBS"
Packit Service 4684c1
         LIBS="$gl_save_LIBS -lsocket"
Packit Service 4684c1
         AC_LINK_IFELSE([AC_LANG_PROGRAM([[extern
Packit Service 4684c1
#ifdef __cplusplus
Packit Service 4684c1
"C"
Packit Service 4684c1
#endif
Packit Service 4684c1
char setsockopt();]], [[setsockopt();]])],
Packit Service 4684c1
           [gl_cv_lib_socket="-lsocket"])
Packit Service 4684c1
         if test -z "$gl_cv_lib_socket"; then
Packit Service 4684c1
           LIBS="$gl_save_LIBS -lnetwork"
Packit Service 4684c1
           AC_LINK_IFELSE([AC_LANG_PROGRAM([[extern
Packit Service 4684c1
#ifdef __cplusplus
Packit Service 4684c1
"C"
Packit Service 4684c1
#endif
Packit Service 4684c1
char setsockopt();]], [[setsockopt();]])],
Packit Service 4684c1
             [gl_cv_lib_socket="-lnetwork"])
Packit Service 4684c1
           if test -z "$gl_cv_lib_socket"; then
Packit Service 4684c1
             LIBS="$gl_save_LIBS -lnet"
Packit Service 4684c1
             AC_LINK_IFELSE([AC_LANG_PROGRAM([[extern
Packit Service 4684c1
#ifdef __cplusplus
Packit Service 4684c1
"C"
Packit Service 4684c1
#endif
Packit Service 4684c1
char setsockopt();]], [[setsockopt();]])],
Packit Service 4684c1
               [gl_cv_lib_socket="-lnet"])
Packit Service 4684c1
           fi
Packit Service 4684c1
         fi
Packit Service 4684c1
         LIBS="$gl_save_LIBS"
Packit Service 4684c1
        ])
Packit Service 4684c1
      if test -z "$gl_cv_lib_socket"; then
Packit Service 4684c1
        gl_cv_lib_socket="none needed"
Packit Service 4684c1
      fi
Packit Service 4684c1
    ])
Packit Service 4684c1
    if test "$gl_cv_lib_socket" != "none needed"; then
Packit Service 4684c1
      LIBSOCKET="$gl_cv_lib_socket"
Packit Service 4684c1
    fi
Packit Service 4684c1
  fi
Packit Service 4684c1
  AC_SUBST([LIBSOCKET])
Packit Service 4684c1
])