Set LIBSOCKET instead of augmenting LIBS. Also handle Solaris -lsocket.
authorBruno Haible <bruno@clisp.org>
Mon, 29 Sep 2008 09:34:31 +0000 (11:34 +0200)
committerBruno Haible <bruno@clisp.org>
Mon, 29 Sep 2008 09:34:31 +0000 (11:34 +0200)
ChangeLog
m4/sockets.m4
modules/poll-tests
modules/sockets
modules/sockets-tests
modules/sys_select-tests

index 9167e34..08a77bf 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
 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.
        * m4/inet_ntop.m4 (gl_INET_NTOP): Invoke it instead of assigning
        ARPA_INET_H directly.
index 615b6e8..c7bd664 100644 (file)
@@ -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 @@ dnl with or without modifications, as long as this notice is preserved.
 
 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
 ])
 
index 1fa37bf..94cca23 100644 (file)
@@ -18,3 +18,4 @@ AC_CHECK_HEADERS_ONCE([unistd.h sys/wait.h])
 Makefile.am:
 TESTS += test-poll
 check_PROGRAMS += test-poll
+test_poll_LDADD = $(LDADD) @LIBSOCKET@
index a11789b..3dca001 100644 (file)
@@ -1,5 +1,5 @@
 Description:
-Wrappers for Windows socket functions
+General facilities for using sockets
 
 Files:
 lib/sockets.c
@@ -18,6 +18,9 @@ lib_SOURCES += sockets.h sockets.c
 Include:
 "sockets.h"
 
+Link:
+$(LIBSOCKET)
+
 License:
 LGPL
 
index b1a1c69..22524e4 100644 (file)
@@ -8,3 +8,4 @@ configure.ac:
 Makefile.am:
 TESTS += test-sockets
 check_PROGRAMS += test-sockets
+test_sockets_LDADD = $(LDADD) @LIBSOCKET@
index ab9e59e..7520ee3 100644 (file)
@@ -16,6 +16,7 @@ configure.ac:
 Makefile.am:
 TESTS += test-sys_select
 check_PROGRAMS += test-sys_select
+test_sys_select_LDADD = $(LDADD) @LIBSOCKET@
 
 License:
 LGPL