mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-25 10:43:19 -03:00
Merge #21486: build: link against -lsocket if required for *ifaddrs
4783115fd4
net: add ifaddrs.h include (fanquake)879215e665
build: check if -lsocket is required with *ifaddrs (fanquake)87deac66aa
rand: only try and use freeifaddrs if available (fanquake) Pull request description: Fixes #21485 by linking against `-lsocket` when it's required for using `*ifaddrs` functions. ACKs for top commit: laanwj: Code review ACK4783115fd4
hebasto: ACK4783115fd4
, I have reviewed the code and it looks OK, I agree it can be merged. Tree-SHA512: 4542e036e9b029de970eff8a9230fe45d9204bb22313d075f474295d49bdaf1f1cbb36c0c6e2fa8dbbcdba518d8d3a68a6116ce304b82414315f333baf9af0e4
This commit is contained in:
commit
b14462083f
4 changed files with 43 additions and 3 deletions
36
build-aux/m4/l_socket.m4
Normal file
36
build-aux/m4/l_socket.m4
Normal file
|
@ -0,0 +1,36 @@
|
|||
# Illumos/SmartOS requires linking with -lsocket if
|
||||
# using getifaddrs & freeifaddrs
|
||||
|
||||
m4_define([_CHECK_SOCKET_testbody], [[
|
||||
#include <sys/types.h>
|
||||
#include <ifaddrs.h>
|
||||
|
||||
int main() {
|
||||
struct ifaddrs *ifaddr;
|
||||
getifaddrs(&ifaddr);
|
||||
freeifaddrs(ifaddr);
|
||||
}
|
||||
]])
|
||||
|
||||
AC_DEFUN([CHECK_SOCKET], [
|
||||
|
||||
AC_LANG_PUSH(C++)
|
||||
|
||||
AC_MSG_CHECKING([whether ifaddrs funcs can be used without link library])
|
||||
|
||||
AC_LINK_IFELSE([AC_LANG_SOURCE([_CHECK_SOCKET_testbody])],[
|
||||
AC_MSG_RESULT([yes])
|
||||
],[
|
||||
AC_MSG_RESULT([no])
|
||||
LIBS="$LIBS -lsocket"
|
||||
AC_MSG_CHECKING([whether getifaddrs needs -lsocket])
|
||||
AC_LINK_IFELSE([AC_LANG_SOURCE([_CHECK_SOCKET_testbody])],[
|
||||
AC_MSG_RESULT([yes])
|
||||
],[
|
||||
AC_MSG_RESULT([no])
|
||||
AC_MSG_FAILURE([cannot figure out how to use getifaddrs])
|
||||
])
|
||||
])
|
||||
|
||||
AC_LANG_POP
|
||||
])
|
|
@ -936,7 +936,7 @@ fi
|
|||
|
||||
AC_CHECK_HEADERS([endian.h sys/endian.h byteswap.h stdio.h stdlib.h unistd.h strings.h sys/types.h sys/stat.h sys/select.h sys/prctl.h sys/sysctl.h vm/vm_param.h sys/vmmeter.h sys/resources.h])
|
||||
|
||||
AC_CHECK_DECLS([getifaddrs, freeifaddrs],,,
|
||||
AC_CHECK_DECLS([getifaddrs, freeifaddrs],[CHECK_SOCKET],,
|
||||
[#include <sys/types.h>
|
||||
#include <ifaddrs.h>]
|
||||
)
|
||||
|
|
|
@ -31,6 +31,10 @@
|
|||
#include <fcntl.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_DECL_GETIFADDRS && HAVE_DECL_FREEIFADDRS
|
||||
#include <ifaddrs.h>
|
||||
#endif
|
||||
|
||||
#ifdef USE_POLL
|
||||
#include <poll.h>
|
||||
#endif
|
||||
|
|
|
@ -38,7 +38,7 @@
|
|||
#include <sys/utsname.h>
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
#if HAVE_DECL_GETIFADDRS
|
||||
#if HAVE_DECL_GETIFADDRS && HAVE_DECL_FREEIFADDRS
|
||||
#include <ifaddrs.h>
|
||||
#endif
|
||||
#if HAVE_SYSCTL
|
||||
|
@ -361,7 +361,7 @@ void RandAddStaticEnv(CSHA512& hasher)
|
|||
hasher.Write((const unsigned char*)hname, strnlen(hname, 256));
|
||||
}
|
||||
|
||||
#if HAVE_DECL_GETIFADDRS
|
||||
#if HAVE_DECL_GETIFADDRS && HAVE_DECL_FREEIFADDRS
|
||||
// Network interfaces
|
||||
struct ifaddrs *ifad = NULL;
|
||||
getifaddrs(&ifad);
|
||||
|
|
Loading…
Add table
Reference in a new issue