changeset 30228:50a53b084871

Set LIBSOCKET instead of augmenting LIBS. Also handle Solaris -lsocket.
author Bruno Haible <bruno@clisp.org>
date Mon, 29 Sep 2008 11:34:31 +0200
parents b636c4338efc
children 7e9bec4f5cc2
files ChangeLog m4/sockets.m4 modules/poll-tests modules/sockets modules/sockets-tests modules/sys_select-tests
diffstat 6 files changed, 64 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Mon Sep 29 11:16:25 2008 +0200
+++ b/ChangeLog	Mon Sep 29 11:34:31 2008 +0200
@@ -1,3 +1,13 @@
+2008-09-29  Bruno Haible  <bruno@clisp.org>
+
+	* m4/sockets.m4 (gl_SOCKETS): Check also for the need to use -lsocket.
+	Set LIBSOCKET instead of augmenting LIBS.
+	* modules/sockets (Link): New section.
+	* modules/sockets-tests (test_sockets_LDADD): New variable.
+	* modules/sys_select-tests (test_sys_select_LDADD): New variable.
+	* modules/poll-tests (test_poll_LDADD): New variable.
+	* NEWS: Document the change.
+
 2008-09-29  Bruno Haible  <bruno@clisp.org>
 
 	* m4/arpa_inet_h.m4 (gl_REPLACE_ARPA_INET_H): New macro.
--- a/m4/sockets.m4	Mon Sep 29 11:16:25 2008 +0200
+++ b/m4/sockets.m4	Mon Sep 29 11:34:31 2008 +0200
@@ -1,4 +1,4 @@
-# sockets.m4 serial 1
+# sockets.m4 serial 2
 dnl Copyright (C) 2008 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -6,26 +6,56 @@
 
 AC_DEFUN([gl_SOCKETS],
 [
-  AC_REQUIRE([gl_HEADER_SYS_SOCKET])dnl for HAVE_SYS_SOCKET_H, HAVE_WINSOCK2_H
-
-  AC_CACHE_CHECK([if we need to call WSAStartup in winsock2.h and -lws2_32],
-                 [gl_cv_func_wsastartup], [
-    am_save_LIBS="$LIBS"
-    LIBS="$LIBS -lws2_32"
-    AC_TRY_LINK([
+  gl_PREREQ_SYS_H_WINSOCK2 dnl for HAVE_WINSOCK2_H
+  LIBSOCKET=
+  if test $HAVE_WINSOCK2_H = 1; then
+    dnl Native Windows API (not Cygwin).
+    AC_CACHE_CHECK([if we need to call WSAStartup in winsock2.h and -lws2_32],
+                   [gl_cv_func_wsastartup], [
+      gl_save_LIBS="$LIBS"
+      LIBS="$LIBS -lws2_32"
+      AC_TRY_LINK([
 #ifdef HAVE_WINSOCK2_H
 # include <winsock2.h>
 #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="$am_save_LIBS"])
-  if test "$gl_cv_func_wsastartup" = "yes"; then
-    AC_DEFINE([WINDOWS_SOCKETS], 1, [Define if WSAStartup is needed.])
-    LIBS="$LIBS -lws2_32"
+        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.])
+      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
+#ifdef __cplusplus
+"C"
+#endif
+char setsockopt();], [setsockopt();],
+        [],
+        [gl_save_LIBS="$LIBS"
+         LIBS="$LIBS -lsocket"
+         AC_TRY_LINK([extern
+#ifdef __cplusplus
+"C"
+#endif
+char setsockopt();], [setsockopt();],
+           [gl_cv_lib_socket=yes])
+         LIBS="$gl_save_LIBS"
+        ])
+    ])
+    if test $gl_cv_lib_socket = yes; then
+      LIBSOCKET='-lsocket'
+    fi
   fi
+  AC_SUBST([LIBSOCKET])
   gl_PREREQ_SOCKETS
 ])
 
--- a/modules/poll-tests	Mon Sep 29 11:16:25 2008 +0200
+++ b/modules/poll-tests	Mon Sep 29 11:34:31 2008 +0200
@@ -18,3 +18,4 @@
 Makefile.am:
 TESTS += test-poll
 check_PROGRAMS += test-poll
+test_poll_LDADD = $(LDADD) @LIBSOCKET@
--- a/modules/sockets	Mon Sep 29 11:16:25 2008 +0200
+++ b/modules/sockets	Mon Sep 29 11:34:31 2008 +0200
@@ -1,5 +1,5 @@
 Description:
-Wrappers for Windows socket functions
+General facilities for using sockets
 
 Files:
 lib/sockets.c
@@ -18,6 +18,9 @@
 Include:
 "sockets.h"
 
+Link:
+$(LIBSOCKET)
+
 License:
 LGPL
 
--- a/modules/sockets-tests	Mon Sep 29 11:16:25 2008 +0200
+++ b/modules/sockets-tests	Mon Sep 29 11:34:31 2008 +0200
@@ -8,3 +8,4 @@
 Makefile.am:
 TESTS += test-sockets
 check_PROGRAMS += test-sockets
+test_sockets_LDADD = $(LDADD) @LIBSOCKET@
--- a/modules/sys_select-tests	Mon Sep 29 11:16:25 2008 +0200
+++ b/modules/sys_select-tests	Mon Sep 29 11:34:31 2008 +0200
@@ -16,6 +16,7 @@
 Makefile.am:
 TESTS += test-sys_select
 check_PROGRAMS += test-sys_select
+test_sys_select_LDADD = $(LDADD) @LIBSOCKET@
 
 License:
 LGPL