Blame m4/socketlib.m4

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