aboutsummaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authormerge-script <fanquake@gmail.com>2024-04-10 12:03:06 +0200
committermerge-script <fanquake@gmail.com>2024-04-10 12:03:06 +0200
commit0a9cfd175259391ec29b0dfe87578d46b508611e (patch)
treed54759a5acc2ea8675de083bb8c79a59ea40b838 /configure.ac
parente31956980e16ad3d619022e572bdf55a4eae8716 (diff)
parentd5a715536e497c160a2520f81334aab6c7490213 (diff)
downloadbitcoin-0a9cfd175259391ec29b0dfe87578d46b508611e.tar.xz
Merge bitcoin/bitcoin#28981: Replace Boost.Process with cpp-subprocess
d5a715536e497c160a2520f81334aab6c7490213 build: remove boost::process dependency for building external signer support (Sebastian Falbesoner) 70434b1c443d9251a880d0193af771f574c40617 external_signer: replace boost::process with cpp-subprocess (Sebastian Falbesoner) cc8b9875b104c31f0a5b5e4195a8278ec55f35f7 Add `cpp-subprocess` header-only library (Hennadii Stepanov) Pull request description: Closes https://github.com/bitcoin/bitcoin/issues/24907. This PR is based on **theStack**'s [work](https://github.com/bitcoin/bitcoin/issues/24907#issuecomment-1466087049). The `subprocess.hpp` header has been sourced from the [upstream repo](https://github.com/arun11299/cpp-subprocess) with the only modification being the removal of convenience functions, which are not utilized in our codebase. Windows-related changes will be addressed in subsequent follow-ups. ACKs for top commit: achow101: reACK d5a715536e497c160a2520f81334aab6c7490213 Sjors: re-tACK d5a715536e497c160a2520f81334aab6c7490213 theStack: Light re-ACK d5a715536e497c160a2520f81334aab6c7490213 fanquake: ACK d5a715536e497c160a2520f81334aab6c7490213 - with the expectation that this code is going to be maintained as our own. Next PRs should: Tree-SHA512: d7fb6fecc3f5792496204190afb7d85b3e207b858fb1a75efe483c05260843b81b27d14b299323bb667c990e87a07197059afea3796cf218ed8b614086bd3611
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac62
1 files changed, 10 insertions, 52 deletions
diff --git a/configure.ac b/configure.ac
index d8b7159e27..63a012b35d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -307,9 +307,9 @@ AC_ARG_ENABLE([werror],
[enable_werror=no])
AC_ARG_ENABLE([external-signer],
- [AS_HELP_STRING([--enable-external-signer],[compile external signer support (default is auto, requires Boost::Process)])],
+ [AS_HELP_STRING([--enable-external-signer],[compile external signer support (default is yes)])],
[use_external_signer=$enableval],
- [use_external_signer=auto])
+ [use_external_signer=yes])
AC_LANG_PUSH([C++])
@@ -1414,56 +1414,14 @@ if test "$use_boost" = "yes"; then
fi
fi
-if test "$use_external_signer" != "no"; then
- AC_MSG_CHECKING([whether Boost.Process can be used])
- TEMP_CXXFLAGS="$CXXFLAGS"
- dnl Boost 1.78 requires the following workaround.
- dnl See: https://github.com/boostorg/process/issues/235
- CXXFLAGS="$CXXFLAGS -Wno-error=narrowing"
- TEMP_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS $BOOST_CPPFLAGS"
- TEMP_LDFLAGS="$LDFLAGS"
- dnl Boost 1.73 and older require the following workaround.
- LDFLAGS="$LDFLAGS $PTHREAD_CFLAGS"
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[
- #define BOOST_PROCESS_USE_STD_FS
- #include <boost/process.hpp>
- ]],[[
- namespace bp = boost::process;
- bp::opstream stdin_stream;
- bp::ipstream stdout_stream;
- bp::child c("dummy", bp::std_out > stdout_stream, bp::std_err > stdout_stream, bp::std_in < stdin_stream);
- stdin_stream << std::string{"test"} << std::endl;
- if (c.running()) c.terminate();
- c.wait();
- c.exit_code();
- ]])],
- [have_boost_process="yes"],
- [have_boost_process="no"])
- LDFLAGS="$TEMP_LDFLAGS"
- CPPFLAGS="$TEMP_CPPFLAGS"
- CXXFLAGS="$TEMP_CXXFLAGS"
- AC_MSG_RESULT([$have_boost_process])
- if test "$have_boost_process" = "yes"; then
- case $host in
- dnl Boost Process for Windows uses Boost ASIO. Boost ASIO performs
- dnl pre-main init of Windows networking libraries, which we do not
- dnl want.
- *mingw*)
- use_external_signer="no"
- ;;
- *)
- use_external_signer="yes"
- AC_DEFINE([ENABLE_EXTERNAL_SIGNER], [1], [Define if external signer support is enabled])
- AC_DEFINE([BOOST_PROCESS_USE_STD_FS], [1], [Defined to avoid Boost::Process trying to use Boost Filesystem])
- ;;
- esac
- else
- if test "$use_external_signer" = "yes"; then
- AC_MSG_ERROR([External signing is not supported for this Boost version])
- fi
- use_external_signer="no";
- fi
+case $host in
+ dnl Re-enable it after enabling Windows support in cpp-subprocess.
+ *mingw*)
+ use_external_signer="no"
+ ;;
+esac
+if test "$use_external_signer" = "yes"; then
+ AC_DEFINE([ENABLE_EXTERNAL_SIGNER], [1], [Define if external signer support is enabled])
fi
AM_CONDITIONAL([ENABLE_EXTERNAL_SIGNER], [test "$use_external_signer" = "yes"])