Simon Josefsson wrote:
> The problem indicate a sub-optimal approach in gnulib's inet_ntop
> module.  It causes link failures due to missing -lnsl on Solaris.

Indeed, Paul Eggert was already aware of it; see his ChangeLog entry in [1].

[1] http://lists.gnu.org/archive/html/bug-gnulib/2009-04/msg00080.html

> How about this patch?  Not tested on Solaris systems, but posted for
> review of my general idea.

It's the right approach. But the name of the variable is not well chosen:
There are several functions defined in libnsl, therefore several modules
may want to define LIBNSL to nonempty when the particular function needs
to be pulled in from libnsl. These variables would clash.

I'm committing the following:


2009-11-02  Simon Josefsson  <si...@josefsson.org>
            Bruno Haible  <br...@clisp.org>

        * m4/inet_ntop.m4 (gl_INET_NTOP): Define also INET_NTOP_LIB.
        * modules/inet_ntop (Link): New section.
        Reported by Boyan Kasarov <bkasa...@gmail.com>.

--- m4/inet_ntop.m4.orig        2009-11-03 00:45:54.000000000 +0100
+++ m4/inet_ntop.m4     2009-11-03 00:45:00.000000000 +0100
@@ -1,4 +1,4 @@
-# inet_ntop.m4 serial 9
+# inet_ntop.m4 serial 10
 dnl Copyright (C) 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
@@ -11,17 +11,17 @@
 
   gl_REPLACE_ARPA_INET_H
 
-  dnl The AC_SEARCH_LIBS call is a hack to persuade the Solaris 8 linker to
-  dnl find inet_ntop.
-  dnl
-  dnl It is the responsibility of gl_INET_NTOP's caller to arrange for
-  dnl -lnsl if it is needed.  Normally -lnsl is not needed on Solaris 8,
-  dnl since inet_ntop is needed only by getaddrinfo, and getaddrinfo
-  dnl isn't built on Solaris 8.
+  dnl Most platforms that provide inet_ntop define it in libc.
+  dnl Solaris 8..10 provide inet_ntop in libnsl instead.
   gl_save_LIBS=$LIBS
   AC_SEARCH_LIBS([inet_ntop], [nsl], [],
     [AC_REPLACE_FUNCS([inet_ntop])])
   LIBS=$gl_save_LIBS
+  INET_NTOP_LIB=
+  if test "$ac_cv_search_inet_ntop" != "none needed"; then
+    INET_NTOP_LIB="$ac_cv_search_inet_ntop"
+  fi
+  AC_SUBST([INET_NTOP_LIB])
 
   gl_PREREQ_INET_NTOP
 ])
--- modules/inet_ntop.orig      2009-11-03 00:45:54.000000000 +0100
+++ modules/inet_ntop   2009-11-03 00:40:45.000000000 +0100
@@ -25,5 +25,8 @@
 Include:
 <arpa/inet.h>
 
+Link:
+$(INET_NTOP_LIB)
+
 Maintainer:
 Yoann Vandoorselaere, glibc


Reply via email to