changeset 15742:13505a7899dc

select: Avoid link errors on MSVC. * m4/select.m4 (gl_FUNC_SELECT): Determine LIB_SELECT. * modules/select (Link): Replace $(LIBSOCKET) with $(LIB_SELECT). * modules/pselect (Link): Likewise. * NEWS: Mention the change. * modules/select-tests (Makefile.am): Link test-select, test-select-fd, test-select-stdin against $(LIB_SELECT). * modules/pselect-tests (Makefile.am): Link test-pselect against $(LIB_SELECT).
author Bruno Haible <bruno@clisp.org>
date Thu, 22 Sep 2011 23:45:06 +0200
parents 4a8092c21b94
children 4611f15ea1e8
files ChangeLog NEWS m4/select.m4 modules/pselect modules/pselect-tests modules/select modules/select-tests
diffstat 7 files changed, 47 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2011-09-22  Bruno Haible  <bruno@clisp.org>
+
+	select: Avoid link errors on MSVC.
+	* m4/select.m4 (gl_FUNC_SELECT): Determine LIB_SELECT.
+	* modules/select (Link): Replace $(LIBSOCKET) with $(LIB_SELECT).
+	* modules/pselect (Link): Likewise.
+	* NEWS: Mention the change.
+	* modules/select-tests (Makefile.am): Link test-select, test-select-fd,
+	test-select-stdin against $(LIB_SELECT).
+	* modules/pselect-tests (Makefile.am): Link test-pselect against
+	$(LIB_SELECT).
+
 2011-09-22  Bruno Haible  <bruno@clisp.org>
 
 	select: Avoid compilation error on MSVC.
--- a/NEWS
+++ b/NEWS
@@ -12,6 +12,9 @@
 
 Date        Modules         Changes
 
+2011-09-22  select          The link requirements of this module are changed
+                            from $(LIBSOCKET) to $(LIB_SELECT).
+
 2011-09-12  fchdir          This module no longer overrides the functions
                             opendir() and closedir(), unless the modules
                             'opendir' and 'closedir' are in use, respectively.
--- a/m4/select.m4
+++ b/m4/select.m4
@@ -1,4 +1,4 @@
-# select.m4 serial 5
+# select.m4 serial 6
 dnl Copyright (C) 2009-2011 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -47,4 +47,29 @@
       *) REPLACE_SELECT=1 ;;
     esac
   fi
+
+  dnl Determine the needed libraries.
+  LIB_SELECT="$LIBSOCKET"
+  if test $REPLACE_SELECT = 1; then
+    case "$host_os" in
+      mingw*)
+        dnl On the MSVC platform, the function MsgWaitForMultipleObjects
+        dnl (used in lib/select.c) requires linking with -luser32. On mingw,
+        dnl it is implicit.
+        AC_LINK_IFELSE(
+          [AC_LANG_SOURCE([[
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+int
+main ()
+{
+  MsgWaitForMultipleObjects (0, NULL, 0, 0, 0);
+  return 0;
+}]])],
+          [],
+          [LIB_SELECT="$LIB_SELECT -luser32"])
+        ;;
+    esac
+  fi
+  AC_SUBST([LIB_SELECT])
 ])
--- a/modules/pselect
+++ b/modules/pselect
@@ -23,7 +23,7 @@
 <sys/select.h>
 
 Link:
-$(LIBSOCKET) $(LIB_PTHREAD_SIGMASK)
+$(LIB_SELECT) $(LIB_PTHREAD_SIGMASK)
 
 License:
 LGPLv2+
--- a/modules/pselect-tests
+++ b/modules/pselect-tests
@@ -30,4 +30,4 @@
 Makefile.am:
 TESTS += test-pselect
 check_PROGRAMS += test-pselect
-test_pselect_LDADD = $(LDADD) @LIBSOCKET@ @LIB_PTHREAD_SIGMASK@ $(INET_PTON_LIB)
+test_pselect_LDADD = $(LDADD) @LIB_SELECT@ @LIBSOCKET@ @LIB_PTHREAD_SIGMASK@ $(INET_PTON_LIB)
--- a/modules/select
+++ b/modules/select
@@ -23,7 +23,7 @@
 <sys/select.h>
 
 Link:
-$(LIBSOCKET)
+$(LIB_SELECT)
 
 License:
 LGPLv2+
--- a/modules/select-tests
+++ b/modules/select-tests
@@ -36,6 +36,6 @@
 TESTS += test-select test-select-in.sh test-select-out.sh
 # test-select-stdin has to be run by hand.
 check_PROGRAMS += test-select test-select-fd test-select-stdin
-test_select_LDADD = $(LDADD) @LIBSOCKET@ $(INET_PTON_LIB)
-test_select_fd_LDADD = $(LDADD) @LIBSOCKET@
-test_select_stdin_LDADD = $(LDADD) @LIBSOCKET@
+test_select_LDADD = $(LDADD) @LIB_SELECT@ @LIBSOCKET@ $(INET_PTON_LIB)
+test_select_fd_LDADD = $(LDADD) @LIB_SELECT@
+test_select_stdin_LDADD = $(LDADD) @LIB_SELECT@