From: Bruno Haible Date: Thu, 22 Sep 2011 21:45:06 +0000 (+0200) Subject: select: Avoid link errors on MSVC. X-Git-Tag: v0.1~1784 X-Git-Url: http://erislabs.org.uk/gitweb/?a=commitdiff_plain;h=d7255651d7f2040807a6dc32df6363a60f2c69c6;p=gnulib.git 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 index aca9b43d8..3af8904e0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,17 @@ 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. * lib/select.c: Don't include . diff --git a/NEWS b/NEWS index 16c5a3528..d7d9acd9c 100644 --- a/NEWS +++ b/NEWS @@ -12,6 +12,9 @@ User visible incompatible changes 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 index d9c3465b1..a58f0ac3a 100644 --- 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 @@ changequote([,])dnl *) 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 index fa69c5369..1ca08edea 100644 --- a/modules/pselect +++ b/modules/pselect @@ -23,7 +23,7 @@ Include: Link: -$(LIBSOCKET) $(LIB_PTHREAD_SIGMASK) +$(LIB_SELECT) $(LIB_PTHREAD_SIGMASK) License: LGPLv2+ diff --git a/modules/pselect-tests b/modules/pselect-tests index 0dccb3634..0c37ff6ab 100644 --- a/modules/pselect-tests +++ b/modules/pselect-tests @@ -30,4 +30,4 @@ AC_CHECK_HEADERS_ONCE([sys/wait.h]) 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 index 5969a4eaf..f665740b0 100644 --- a/modules/select +++ b/modules/select @@ -23,7 +23,7 @@ Include: Link: -$(LIBSOCKET) +$(LIB_SELECT) License: LGPLv2+ diff --git a/modules/select-tests b/modules/select-tests index a3b13db2d..bd7b73137 100644 --- a/modules/select-tests +++ b/modules/select-tests @@ -36,6 +36,6 @@ Makefile.am: 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@