# HG changeset patch # User Bruno Haible # Date 1316727906 -7200 # Node ID 13505a7899dc8c0b328244c798ed34bf2a45f31a # Parent 4a8092c21b948225ff550bf070939fe158390292 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). diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2011-09-22 Bruno Haible + + 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 select: Avoid compilation error on MSVC. diff --git a/NEWS b/NEWS --- 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. diff --git a/m4/select.m4 b/m4/select.m4 --- 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 +int +main () +{ + MsgWaitForMultipleObjects (0, NULL, 0, 0, 0); + return 0; +}]])], + [], + [LIB_SELECT="$LIB_SELECT -luser32"]) + ;; + esac + fi + AC_SUBST([LIB_SELECT]) ]) diff --git a/modules/pselect b/modules/pselect --- a/modules/pselect +++ b/modules/pselect @@ -23,7 +23,7 @@ Link: -$(LIBSOCKET) $(LIB_PTHREAD_SIGMASK) +$(LIB_SELECT) $(LIB_PTHREAD_SIGMASK) License: LGPLv2+ diff --git a/modules/pselect-tests b/modules/pselect-tests --- 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) diff --git a/modules/select b/modules/select --- a/modules/select +++ b/modules/select @@ -23,7 +23,7 @@ Link: -$(LIBSOCKET) +$(LIB_SELECT) License: LGPLv2+ diff --git a/modules/select-tests b/modules/select-tests --- 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@