From 39ec168251884f121bbd9387279d0ad8a8192968 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Mon, 29 Sep 2008 11:34:31 +0200 Subject: [PATCH] Set LIBSOCKET instead of augmenting LIBS. Also handle Solaris -lsocket. --- ChangeLog | 10 ++++++++ m4/sockets.m4 | 64 +++++++++++++++++++++++++++++++++++------------- modules/poll-tests | 1 + modules/sockets | 5 +++- modules/sockets-tests | 1 + modules/sys_select-tests | 1 + 6 files changed, 64 insertions(+), 18 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9167e3471..08a77bf1f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,15 @@ 2008-09-29 Bruno Haible + * 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 + * 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. diff --git a/m4/sockets.m4 b/m4/sockets.m4 index 615b6e872..c7bd6646a 100644 --- a/m4/sockets.m4 +++ b/m4/sockets.m4 @@ -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 #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 ]) diff --git a/modules/poll-tests b/modules/poll-tests index 1fa37bff0..94cca234f 100644 --- a/modules/poll-tests +++ b/modules/poll-tests @@ -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@ diff --git a/modules/sockets b/modules/sockets index a11789b4c..3dca00175 100644 --- a/modules/sockets +++ b/modules/sockets @@ -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 diff --git a/modules/sockets-tests b/modules/sockets-tests index b1a1c6945..22524e4d1 100644 --- a/modules/sockets-tests +++ b/modules/sockets-tests @@ -8,3 +8,4 @@ configure.ac: Makefile.am: TESTS += test-sockets check_PROGRAMS += test-sockets +test_sockets_LDADD = $(LDADD) @LIBSOCKET@ diff --git a/modules/sys_select-tests b/modules/sys_select-tests index ab9e59ef3..7520ee301 100644 --- a/modules/sys_select-tests +++ b/modules/sys_select-tests @@ -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 -- 2.11.0