aboutsummaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@protonmail.com>2019-09-18 16:29:40 +0200
committerWladimir J. van der Laan <laanwj@protonmail.com>2019-09-18 16:33:23 +0200
commitdd8cf82e96042cb59354ee1677830f414a5baaaf (patch)
tree3923429349772b76c72656744af1ff3646635265 /configure.ac
parent72d30d668afd54537a707c0995241b5a38844cb9 (diff)
parentb4fd0ca9be14c81023db759c405c0f67cfa78166 (diff)
downloadbitcoin-dd8cf82e96042cb59354ee1677830f414a5baaaf.tar.xz
Merge #15146: Solve SmartOS FD_ZERO build issue
b4fd0ca9be14c81023db759c405c0f67cfa78166 Include cstring for sanity_test_fdelt if required (Ben Woosley) 7fb886b1b1110de4c79478ac094e64cdcb81f3c8 [moveonly] Split glibc sanity_test_fdelt out (Ben Woosley) Pull request description: SmartOS FD_ZERO is implemented in a way that requires an external declaration of memcpy. We can not simply include cstring in the existing file because sanity_test_memcpy is attempting to replace memcpy. Instead split glibc_sanity into fdelt and memcpy files, and include <cstring> in glibc_sanity/fdelt.cpp. Fixes #13581, see also #13619 ACKs for top commit: laanwj: Code review an lightly tested (but not on SmartOS) ACK b4fd0ca9be14c81023db759c405c0f67cfa78166 Tree-SHA512: 231306da291ad9eca8ba91bea1e9c27b6c2e96e484d1602e1c2cf27761202f9287ce0bc19fefd000943d2b449d0e5929cd39e2f7e09cf930d89fa520228ccbec
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac33
1 files changed, 33 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
index e1b7281c30..2445b72683 100644
--- a/configure.ac
+++ b/configure.ac
@@ -777,6 +777,39 @@ 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])
+# FD_ZERO may be dependent on a declaration of memcpy, e.g. in SmartOS
+# check that it fails to build without memcpy, then that it builds with
+AC_MSG_CHECKING(FD_ZERO memcpy dependence)
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ #include <cstddef>
+ #if HAVE_SYS_SELECT_H
+ #include <sys/select.h>
+ #endif
+ ]],[[
+ #if HAVE_SYS_SELECT_H
+ fd_set fds;
+ FD_ZERO(&fds);
+ #endif
+ ]])],
+ [ AC_MSG_RESULT(no) ],
+ [
+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+ #include <cstring>
+ #if HAVE_SYS_SELECT_H
+ #include <sys/select.h>
+ #endif
+ ]], [[
+ #if HAVE_SYS_SELECT_H
+ fd_set fds;
+ FD_ZERO(&fds);
+ #endif
+ ]])],
+ [ AC_MSG_RESULT(yes); AC_DEFINE(HAVE_CSTRING_DEPENDENT_FD_ZERO, 1, [Define this symbol if FD_ZERO is dependent of a memcpy declaration being available]) ],
+ [ AC_MSG_ERROR(failed with cstring include) ]
+ )
+ ]
+)
+
AC_CHECK_DECLS([getifaddrs, freeifaddrs],,,
[#include <sys/types.h>
#include <ifaddrs.h>]