|
|
|
@ -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++])
|
|
|
|
|
|
|
|
|
@ -1439,56 +1439,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"])
|
|
|
|
|
|
|
|
|
|