Blame m4/socketlib.m4

Packit 33f14e
# socketlib.m4 serial 1
Packit 33f14e
dnl Copyright (C) 2008-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 gl_SOCKETLIB
Packit 33f14e
dnl Determines the library to use for socket functions.
Packit 33f14e
dnl Sets and AC_SUBSTs LIBSOCKET.
Packit 33f14e
Packit 33f14e
AC_DEFUN([gl_SOCKETLIB],
Packit 33f14e
[
Packit 33f14e
  gl_PREREQ_SYS_H_WINSOCK2 dnl for HAVE_WINSOCK2_H
Packit 33f14e
  LIBSOCKET=
Packit 33f14e
  if test $HAVE_WINSOCK2_H = 1; then
Packit 33f14e
    dnl Native Windows API (not Cygwin).
Packit 33f14e
    AC_CACHE_CHECK([if we need to call WSAStartup in winsock2.h and -lws2_32],
Packit 33f14e
                   [gl_cv_func_wsastartup], [
Packit 33f14e
      gl_save_LIBS="$LIBS"
Packit 33f14e
      LIBS="$LIBS -lws2_32"
Packit 33f14e
      AC_LINK_IFELSE([AC_LANG_PROGRAM([[
Packit 33f14e
#ifdef HAVE_WINSOCK2_H
Packit 33f14e
# include <winsock2.h>
Packit 33f14e
#endif]], [[
Packit 33f14e
          WORD wVersionRequested = MAKEWORD(1, 1);
Packit 33f14e
          WSADATA wsaData;
Packit 33f14e
          int err = WSAStartup(wVersionRequested, &wsaData);
Packit 33f14e
          WSACleanup ();]])],
Packit 33f14e
        gl_cv_func_wsastartup=yes, gl_cv_func_wsastartup=no)
Packit 33f14e
      LIBS="$gl_save_LIBS"
Packit 33f14e
    ])
Packit 33f14e
    if test "$gl_cv_func_wsastartup" = "yes"; then
Packit 33f14e
      AC_DEFINE([WINDOWS_SOCKETS], [1], [Define if WSAStartup is needed.])
Packit 33f14e
      LIBSOCKET='-lws2_32'
Packit 33f14e
    fi
Packit 33f14e
  else
Packit 33f14e
    dnl Unix API.
Packit 33f14e
    dnl Solaris has most socket functions in libsocket.
Packit 33f14e
    dnl Haiku has most socket functions in libnetwork.
Packit 33f14e
    dnl BeOS has most socket functions in libnet.
Packit 33f14e
    AC_CACHE_CHECK([for library containing setsockopt], [gl_cv_lib_socket], [
Packit 33f14e
      gl_cv_lib_socket=
Packit 33f14e
      AC_LINK_IFELSE([AC_LANG_PROGRAM([[extern
Packit 33f14e
#ifdef __cplusplus
Packit 33f14e
"C"
Packit 33f14e
#endif
Packit 33f14e
char setsockopt();]], [[setsockopt();]])],
Packit 33f14e
        [],
Packit 33f14e
        [gl_save_LIBS="$LIBS"
Packit 33f14e
         LIBS="$gl_save_LIBS -lsocket"
Packit 33f14e
         AC_LINK_IFELSE([AC_LANG_PROGRAM([[extern
Packit 33f14e
#ifdef __cplusplus
Packit 33f14e
"C"
Packit 33f14e
#endif
Packit 33f14e
char setsockopt();]], [[setsockopt();]])],
Packit 33f14e
           [gl_cv_lib_socket="-lsocket"])
Packit 33f14e
         if test -z "$gl_cv_lib_socket"; then
Packit 33f14e
           LIBS="$gl_save_LIBS -lnetwork"
Packit 33f14e
           AC_LINK_IFELSE([AC_LANG_PROGRAM([[extern
Packit 33f14e
#ifdef __cplusplus
Packit 33f14e
"C"
Packit 33f14e
#endif
Packit 33f14e
char setsockopt();]], [[setsockopt();]])],
Packit 33f14e
             [gl_cv_lib_socket="-lnetwork"])
Packit 33f14e
           if test -z "$gl_cv_lib_socket"; then
Packit 33f14e
             LIBS="$gl_save_LIBS -lnet"
Packit 33f14e
             AC_LINK_IFELSE([AC_LANG_PROGRAM([[extern
Packit 33f14e
#ifdef __cplusplus
Packit 33f14e
"C"
Packit 33f14e
#endif
Packit 33f14e
char setsockopt();]], [[setsockopt();]])],
Packit 33f14e
               [gl_cv_lib_socket="-lnet"])
Packit 33f14e
           fi
Packit 33f14e
         fi
Packit 33f14e
         LIBS="$gl_save_LIBS"
Packit 33f14e
        ])
Packit 33f14e
      if test -z "$gl_cv_lib_socket"; then
Packit 33f14e
        gl_cv_lib_socket="none needed"
Packit 33f14e
      fi
Packit 33f14e
    ])
Packit 33f14e
    if test "$gl_cv_lib_socket" != "none needed"; then
Packit 33f14e
      LIBSOCKET="$gl_cv_lib_socket"
Packit 33f14e
    fi
Packit 33f14e
  fi
Packit 33f14e
  AC_SUBST([LIBSOCKET])
Packit 33f14e
])