Discussion:
inet_ntop, inet_pton: fix link errors on Haiku
Bruno Haible
2017-10-29 01:00:01 UTC
Permalink
On Haiku, the functions inet_ntop, inet_pton require linking with "-lnetwork".
But INET_NTOP_LIB and INET_PTON_LIB come out as empty. This leads to a
link error:

gcc-x86 -g -O2 -L/boot/home/config/lib -o test-inet_ntop test-inet_ntop.o libtests.a ../gllib/libgnu.a libtests.a
test-inet_ntop.o: In function `main':
/boot/home/testdir-posix/build/gltests/../../gltests/test-inet_ntop.c:49: undefined reference to `inet_ntop'
collect2: error: ld returned 1 exit status

This fixes it.


2017-10-28 Bruno Haible <***@clisp.org>

inet_ntop, inet_pton: Determine needed library correctly on Haiku.
* m4/inet_ntop.m4 (gl_FUNC_INET_NTOP): Search also in libnetwork.
* m4/inet_pton.m4 (gl_FUNC_INET_PTON): Likewise.

diff --git a/m4/inet_ntop.m4 b/m4/inet_ntop.m4
index f4ac237..9532647 100644
--- a/m4/inet_ntop.m4
+++ b/m4/inet_ntop.m4
@@ -1,4 +1,4 @@
-# inet_ntop.m4 serial 19
+# inet_ntop.m4 serial 20
dnl Copyright (C) 2005-2006, 2008-2017 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -16,6 +16,7 @@ AC_DEFUN([gl_FUNC_INET_NTOP],
dnl Most platforms that provide inet_ntop define it in libc.
dnl Solaris 8..10 provide inet_ntop in libnsl instead.
dnl Solaris 2.6..7 provide inet_ntop in libresolv instead.
+ dnl Haiku provides it in -lnetwork.
dnl Native Windows provides it in -lws2_32 instead, with a declaration in
dnl <ws2tcpip.h>, and it uses stdcall calling convention, not cdecl
dnl (hence we cannot use AC_CHECK_FUNCS, AC_SEARCH_LIBS to find it).
@@ -35,7 +36,7 @@ AC_DEFUN([gl_FUNC_INET_NTOP],
fi
else
gl_save_LIBS=$LIBS
- AC_SEARCH_LIBS([inet_ntop], [nsl resolv], [],
+ AC_SEARCH_LIBS([inet_ntop], [nsl resolv network], [],
[AC_CHECK_FUNCS([inet_ntop])
if test $ac_cv_func_inet_ntop = no; then
HAVE_INET_NTOP=0
diff --git a/m4/inet_pton.m4 b/m4/inet_pton.m4
index 407c29c..9dc02b4 100644
--- a/m4/inet_pton.m4
+++ b/m4/inet_pton.m4
@@ -1,4 +1,4 @@
-# inet_pton.m4 serial 17
+# inet_pton.m4 serial 18
dnl Copyright (C) 2006, 2008-2017 Free Software Foundation, Inc.
dnl This file is free software; the Free Software Foundation
dnl gives unlimited permission to copy and/or distribute it,
@@ -16,6 +16,7 @@ AC_DEFUN([gl_FUNC_INET_PTON],
dnl Most platforms that provide inet_pton define it in libc.
dnl Solaris 8..10 provide inet_pton in libnsl instead.
dnl Solaris 2.6..7 provide inet_pton in libresolv instead.
+ dnl Haiku provides it in -lnetwork.
dnl Native Windows provides it in -lws2_32 instead, with a declaration in
dnl <ws2tcpip.h>, and it uses stdcall calling convention, not cdecl
dnl (hence we cannot use AC_CHECK_FUNCS, AC_SEARCH_LIBS to find it).
@@ -35,7 +36,7 @@ AC_DEFUN([gl_FUNC_INET_PTON],
fi
else
gl_save_LIBS=$LIBS
- AC_SEARCH_LIBS([inet_pton], [nsl resolv], [],
+ AC_SEARCH_LIBS([inet_pton], [nsl resolv network], [],
[AC_CHECK_FUNCS([inet_pton])
if test $ac_cv_func_inet_pton = no; then
HAVE_INET_PTON=0

Loading...