diff --git a/src/config/CMakeLists.txt b/src/config/CMakeLists.txt --- a/src/config/CMakeLists.txt +++ b/src/config/CMakeLists.txt @@ -5,6 +5,7 @@ include(CheckIncludeFiles) include(CheckSymbolExists) +include(CheckCXXSourceCompiles) # Package informations set(PACKAGE_NAME "Bitcoin ABC") @@ -123,6 +124,29 @@ check_symbol_exists(strnlen "string.h" HAVE_DECL_STRNLEN) check_symbol_exists(daemon "unistd.h" HAVE_DECL_DAEMON) +# Check for ways to obtain entropy +check_symbol_exists(getentropy "unistd.h" HAVE_GETENTROPY) +check_symbol_exists(getentropy "sys/random.h" HAVE_GETENTROPY_RAND) + +check_cxx_source_compiles(" + #include /* for syscall */ + #include /* for SYS_getrandom */ + int main() { + syscall(SYS_getrandom, nullptr, 0, 0); + return 0; + } +" HAVE_SYS_GETRANDOM) + +check_cxx_source_compiles(" + #include + #include + int main() { + static const int name[2] = {CTL_KERN, KERN_ARND}; + sysctl(name, 2, nullptr, nullptr, nullptr, 0); + return 0; + } +" HAVE_SYSCTL_ARND) + # OpenSSL functionality set(CMAKE_REQUIRED_INCLUDES ${OPENSSL_CRYPTO_INCLUDES}) set(CMAKE_REQUIRED_LIBRARIES ${OPENSSL_CRYPTO_LIBRARY}) diff --git a/src/config/bitcoin-config.h.cmake.in b/src/config/bitcoin-config.h.cmake.in --- a/src/config/bitcoin-config.h.cmake.in +++ b/src/config/bitcoin-config.h.cmake.in @@ -52,6 +52,10 @@ #cmakedefine HAVE_DECL_STRNLEN 1 #cmakedefine HAVE_DECL_DAEMON 1 +#cmakedefine HAVE_GETENTROPY 1 +#cmakedefine HAVE_GETENTROPY_RAND 1 +#cmakedefine HAVE_SYS_GETRANDOM 1 +#cmakedefine HAVE_SYSCTL_ARND 1 #cmakedefine HAVE_DECL_EVP_MD_CTX_NEW 1