pthread: fix pthread.h creation for srcdir != builddir
[gnulib.git] / m4 / sockets.m4
index c7bd664..aefb936 100644 (file)
@@ -1,11 +1,13 @@
-# sockets.m4 serial 2
-dnl Copyright (C) 2008 Free Software Foundation, Inc.
+# sockets.m4 serial 6
+dnl Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
 dnl with or without modifications, as long as this notice is preserved.
 
 AC_DEFUN([gl_SOCKETS],
 [
+  AC_REQUIRE([AC_C_INLINE])
+
   gl_PREREQ_SYS_H_WINSOCK2 dnl for HAVE_WINSOCK2_H
   LIBSOCKET=
   if test $HAVE_WINSOCK2_H = 1; then
@@ -14,45 +16,68 @@ AC_DEFUN([gl_SOCKETS],
                    [gl_cv_func_wsastartup], [
       gl_save_LIBS="$LIBS"
       LIBS="$LIBS -lws2_32"
-      AC_TRY_LINK([
+      AC_LINK_IFELSE([AC_LANG_PROGRAM([[
 #ifdef HAVE_WINSOCK2_H
 # include <winsock2.h>
-#endif][
-        WORD wVersionRequested = MAKEWORD(1, 1);
-        WSADATA wsaData;
-        int err = WSAStartup(wVersionRequested, &wsaData);
-        WSACleanup ();],
+#endif]], [[
+          WORD wVersionRequested = MAKEWORD(1, 1);
+          WSADATA wsaData;
+          int err = WSAStartup(wVersionRequested, &wsaData);
+          WSACleanup ();]])],
         gl_cv_func_wsastartup=yes, gl_cv_func_wsastartup=no)
       LIBS="$gl_save_LIBS"
     ])
     if test "$gl_cv_func_wsastartup" = "yes"; then
-      AC_DEFINE([WINDOWS_SOCKETS], 1, [Define if WSAStartup is needed.])
+      AC_DEFINE([WINDOWS_SOCKETS], [1], [Define if WSAStartup is needed.])
       LIBSOCKET='-lws2_32'
     fi
   else
     dnl Unix API.
     dnl Solaris has most socket functions in libsocket.
-    AC_CACHE_CHECK([whether setsockopt requires -lsocket], [gl_cv_lib_socket], [
-      gl_cv_lib_socket=no
-      AC_TRY_LINK([extern
+    dnl Haiku has most socket functions in libnetwork.
+    dnl BeOS has most socket functions in libnet.
+    AC_CACHE_CHECK([for library containing setsockopt], [gl_cv_lib_socket], [
+      gl_cv_lib_socket=
+      AC_LINK_IFELSE([AC_LANG_PROGRAM([[extern
 #ifdef __cplusplus
 "C"
 #endif
-char setsockopt();], [setsockopt();],
+char setsockopt();]], [[setsockopt();]])],
         [],
         [gl_save_LIBS="$LIBS"
-         LIBS="$LIBS -lsocket"
-         AC_TRY_LINK([extern
+         LIBS="$gl_save_LIBS -lsocket"
+         AC_LINK_IFELSE([AC_LANG_PROGRAM([[extern
+#ifdef __cplusplus
+"C"
+#endif
+char setsockopt();]], [[setsockopt();]])],
+           [gl_cv_lib_socket="-lsocket"])
+         if test -z "$gl_cv_lib_socket"; then
+           LIBS="$gl_save_LIBS -lnetwork"
+           AC_LINK_IFELSE([AC_LANG_PROGRAM([[extern
+#ifdef __cplusplus
+"C"
+#endif
+char setsockopt();]], [[setsockopt();]])],
+             [gl_cv_lib_socket="-lnetwork"])
+           if test -z "$gl_cv_lib_socket"; then
+             LIBS="$gl_save_LIBS -lnet"
+             AC_LINK_IFELSE([AC_LANG_PROGRAM([[extern
 #ifdef __cplusplus
 "C"
 #endif
-char setsockopt();], [setsockopt();],
-           [gl_cv_lib_socket=yes])
+char setsockopt();]], [[setsockopt();]])],
+               [gl_cv_lib_socket="-lnet"])
+           fi
+         fi
          LIBS="$gl_save_LIBS"
         ])
+      if test -z "$gl_cv_lib_socket"; then
+        gl_cv_lib_socket="none needed"
+      fi
     ])
-    if test $gl_cv_lib_socket = yes; then
-      LIBSOCKET='-lsocket'
+    if test "$gl_cv_lib_socket" != "none needed"; then
+      LIBSOCKET="$gl_cv_lib_socket"
     fi
   fi
   AC_SUBST([LIBSOCKET])