Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -531,8 +531,10 @@ include_bitcoin_network_HEADERS = \
include/bitcoin/network/boost.hpp \
include/bitcoin/network/define.hpp \
include/bitcoin/network/error.hpp \
include/bitcoin/network/have.hpp \
include/bitcoin/network/memory.hpp \
include/bitcoin/network/net.hpp \
include/bitcoin/network/preprocessor.hpp \
include/bitcoin/network/settings.hpp \
include/bitcoin/network/version.hpp

Expand Down Expand Up @@ -762,6 +764,7 @@ include_bitcoin_ssl_openssldir = ${includedir}/bitcoin/ssl/openssl
include_bitcoin_ssl_openssl_HEADERS = \
include/bitcoin/ssl/openssl/conf.h \
include/bitcoin/ssl/openssl/dh.h \
include/bitcoin/ssl/openssl/engine.h \
include/bitcoin/ssl/openssl/err.h \
include/bitcoin/ssl/openssl/openssl.h \
include/bitcoin/ssl/openssl/rsa.h \
Expand Down
13 changes: 12 additions & 1 deletion builds/cmake/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,18 @@ set( pkgconfigdir "${libdir}/pkgconfig" CACHE PATH "Path to pkgconfig directory.
#------------------------------------------------------------------------------
set( with-tests "yes" CACHE BOOL "Compile with unit tests." )

# Implement -Dwith-ssl and define WOLFSSL_USER_SETTINGS and output ${ssl}.
#------------------------------------------------------------------------------
set( with-ssl "yes" CACHE BOOL "Compile with internal ssl." )

if (with-ssl)
add_definitions( -DWOLFSSL_USER_SETTINGS )
endif()

if (with-ssl)
set( ssl "-DWOLFSSL_USER_SETTINGS" )
endif()

# Implement -Denable-ndebug and define NDEBUG.
#------------------------------------------------------------------------------
set( enable-ndebug "yes" CACHE BOOL "Compile without debug assertions." )
Expand All @@ -132,7 +144,6 @@ if (BUILD_SHARED_LIBS)
add_definitions( -DBOOST_ALL_DYN_LINK )
endif()

add_definitions( -DWOLFSSL_USER_SETTINGS )
if (BUILD_SHARED_LIBS)
set( Boost_USE_STATIC_LIBS "off" )
else()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,16 @@
<ClCompile>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\..\..\libbitcoin-network\test\ssl\wolfssl\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<EnablePREfast>false</EnablePREfast>
<PreprocessorDefinitions>CERT_PREFIX=&quot;$(RepoRoot.Replace("\", "/"))test/ssl/vectors/&quot;;%(PreprocessorDefinitions)</PreprocessorDefinitions>

<!-- Define CERT_PREFIX as the relative path to the /certs and /tests parent directory. -->
<PreprocessorDefinitions Condition="'$(Option-ssl)' == 'true'">CERT_PREFIX=&quot;$(RepoRoot.Replace("\", "/"))test/ssl/vectors/&quot;;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<PostBuildEvent Condition="'$(DebugOrRelease)' == 'release'">
<Command>"$(TargetPath)" --log_level=warning --run_test=* --show_progress=no --build_info=yes</Command>
</PostBuildEvent>
</ItemDefinitionGroup>

<Target Name="SuppressWarningsForWolfSSLFiles" BeforeTargets="ClCompile">
<Target Name="WolfSSLSuppressions" BeforeTargets="ClCompile">
<ItemGroup>
<ClCompile Update="@(ClCompile)">
<AdditionalOptions Condition="$([System.String]::new('%(RelativeDir)').StartsWith('..\..\..\..\test\ssl\wolfssl\'))">/wd4005 /wd4189 /wd4245 /wd4267 /wd4701 /wd4702 /wd4703 %(AdditionalOptions)</AdditionalOptions>
Expand Down
28 changes: 26 additions & 2 deletions builds/msvc/vs2022/libbitcoin-network.import.props
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,29 @@
<PropertyPageSchema Include="$(MSBuildThisFileDirectory)libbitcoin-network.import.xml" />
</ItemGroup>

<!-- Options -->

<PropertyGroup>
<Option-ssl>true</Option-ssl>
</PropertyGroup>

<!-- Messages -->

<Target Name="OptionInfo" BeforeTargets="PrepareForBuild">
<Message Text="Option-ssl : $(Option-ssl)" Importance="high"/>
</Target>

<!-- Linkage -->

<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\..\..\libbitcoin-network\include\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\..\..\libbitcoin-network\include\bitcoin\ssl\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

<!-- Prevent boost from seeing ssl includes when ssl is deselected (requires external headers). -->
<AdditionalIncludeDirectories Condition="'$(Option-ssl)' == 'true'">$(ProjectDir)..\..\..\..\..\libbitcoin-network\include\bitcoin\ssl\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
<PreprocessorDefinitions Condition="'$(Linkage-libbitcoin-network)' == 'static' Or '$(Linkage-libbitcoin-network)' == 'ltcg'">BCT_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WOLFSSL_USER_SETTINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="'$(Option-ssl)' == 'true'">WOLFSSL_USER_SETTINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalDependencies Condition="'$(Linkage-libbitcoin-network)' != ''">libbitcoin-network.lib;%(AdditionalDependencies)</AdditionalDependencies>
Expand All @@ -35,4 +49,14 @@
</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>

<Target Name="WolfSSLSuppressions" BeforeTargets="ClCompile">
<ItemGroup>
<ClCompile Update="@(ClCompile)">
<!-- Exclude wolfssl test sources when ssl is deselected (requires external linkage). -->
<ExcludedFromBuild Condition="$([System.String]::new('%(RelativeDir)').StartsWith('..\..\..\..\test\ssl\')) And '$(Option-ssl)' == 'false'">true</ExcludedFromBuild>
</ClCompile>
</ItemGroup>
</Target>

</Project>
12 changes: 12 additions & 0 deletions builds/msvc/vs2022/libbitcoin-network.import.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,16 @@
<EnumValue Name="ltcg" DisplayName="Static using link time compile generation (LTCG)" />
</EnumProperty>
</Rule>
<Rule Name="libbitcoin-network-options-uiextension" PageTemplate="tool" DisplayName="Bitcoin Network Options" SwitchPrefix="/" Order="1">
<Rule.Categories>
<Category Name="ssl" DisplayName="ssl" />
</Rule.Categories>
<Rule.DataSource>
<DataSource Persistence="ProjectFile" ItemType="" />
</Rule.DataSource>
<EnumProperty Name="Option-ssl" DisplayName="Enable Embedded SSL" Description="Requires external SSL if not enabled." Category="ssl">
<EnumValue Name="false" DisplayName="No" />
<EnumValue Name="true" DisplayName="Yes" />
</EnumProperty>
</Rule>
</ProjectSchemaDefinitions>
36 changes: 33 additions & 3 deletions builds/msvc/vs2022/libbitcoin-network/libbitcoin-network.props
Original file line number Diff line number Diff line change
Expand Up @@ -7,24 +7,44 @@
<RunCodeAnalysis>false</RunCodeAnalysis>
</PropertyGroup>

<!-- User Interface -->

<ItemGroup Label="BuildOptionsExtension">
<PropertyPageSchema Include="$(MSBuildThisFileDirectory)$(ProjectName).xml" />
</ItemGroup>

<!-- Options -->

<PropertyGroup>
<Option-ssl>true</Option-ssl>
</PropertyGroup>

<!-- Configuration -->

<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>$(RepoRoot)include\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(RepoRoot)include\bitcoin\ssl\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>

<!-- Prevent boost from seeing ssl includes when ssl is deselected (requires external headers). -->
<AdditionalIncludeDirectories Condition="'$(Option-ssl)' == 'true'">$(RepoRoot)include\bitcoin\ssl\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<AdditionalOptions>/bigobj %(AdditionalOptions)</AdditionalOptions>
<EnablePREfast>false</EnablePREfast>
<PreprocessorDefinitions Condition="'$(ConfigurationType)' == 'DynamicLibrary'">BCT_DLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="'$(ConfigurationType)' == 'StaticLibrary'">BCT_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WOLFSSL_USER_SETTINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="'$(Option-ssl)' == 'true'">WOLFSSL_USER_SETTINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
</ItemDefinitionGroup>

<Target Name="SuppressWarningsForWolfSSLFiles" BeforeTargets="ClCompile">
<Target Name="WolfSSLSuppressions" BeforeTargets="ClCompile">
<ItemGroup>
<ClCompile Update="@(ClCompile)">
<AdditionalOptions Condition="$([System.String]::new('%(RelativeDir)').StartsWith('..\..\..\..\src\ssl\'))">/wd4189 /wd4245 /wd4267 /wd4701 /wd4702 /wd4703 %(AdditionalOptions)</AdditionalOptions>

<!-- This is only used as an inlining header, so never compile it directly. -->
<ExcludedFromBuild Condition="$([System.String]::new('%(RelativeDir)').StartsWith('..\..\..\..\include\bitcoin\ssl\'))">true</ExcludedFromBuild>

<!-- Exclude wolfssl sources when ssl is deselected (requires external linkage). -->
<ExcludedFromBuild Condition="$([System.String]::new('%(RelativeDir)').StartsWith('..\..\..\..\include\bitcoin\ssl\wolfcrypt\src\')) And '$(Option-ssl)' == 'false'">true</ExcludedFromBuild>
</ClCompile>
</ItemGroup>
</Target>
Expand All @@ -51,9 +71,19 @@
<Linkage-secp256k1>static</Linkage-secp256k1>
<Linkage-libbitcoin-system>static</Linkage-libbitcoin-system>
</PropertyGroup>

<!-- Options -->

<PropertyGroup>
<Option-ssl>true</Option-ssl>
</PropertyGroup>

<!-- Messages -->

<Target Name="OptionInfo" BeforeTargets="PrepareForBuild">
<Message Text="Option-ssl : $(Option-ssl)" Importance="high"/>
</Target>

<Target Name="LinkageInfo" BeforeTargets="PrepareForBuild">
<Message Text="Linkage-secp256k1 : $(Linkage-secp256k1)" Importance="high"/>
<Message Text="Linkage-_system : $(Linkage-libbitcoin-system)" Importance="high"/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -373,6 +373,7 @@
<ClInclude Include="..\..\..\..\include\bitcoin\network\config\utilities.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\define.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\error.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\have.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\interfaces\http.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\interfaces\interfaces.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\interfaces\peer_broadcast.hpp" />
Expand Down Expand Up @@ -462,6 +463,7 @@
<ClInclude Include="..\..\..\..\include\bitcoin\network\net\net.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\net\proxy.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\net\socket.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\preprocessor.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol_address_in_209.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol_address_out_209.hpp" />
Expand Down Expand Up @@ -491,6 +493,7 @@
<ClInclude Include="..\..\..\..\include\bitcoin\network\version.hpp" />
<ClInclude Include="..\..\..\..\include\bitcoin\ssl\openssl\conf.h" />
<ClInclude Include="..\..\..\..\include\bitcoin\ssl\openssl\dh.h" />
<ClInclude Include="..\..\..\..\include\bitcoin\ssl\openssl\engine.h" />
<ClInclude Include="..\..\..\..\include\bitcoin\ssl\openssl\err.h" />
<ClInclude Include="..\..\..\..\include\bitcoin\ssl\openssl\openssl.h" />
<ClInclude Include="..\..\..\..\include\bitcoin\ssl\openssl\rsa.h" />
Expand Down Expand Up @@ -702,4 +705,4 @@
<ItemGroup>
<Natvis Include="..\..\debug.natvis" />
</ItemGroup>
</Project>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -884,6 +884,9 @@
<ClInclude Include="..\..\..\..\include\bitcoin\network\error.hpp">
<Filter>include\bitcoin\network</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\network\have.hpp">
<Filter>include\bitcoin\network</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\network\interfaces\http.hpp">
<Filter>include\bitcoin\network\interfaces</Filter>
</ClInclude>
Expand Down Expand Up @@ -1151,6 +1154,9 @@
<ClInclude Include="..\..\..\..\include\bitcoin\network\net\socket.hpp">
<Filter>include\bitcoin\network\net</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\network\preprocessor.hpp">
<Filter>include\bitcoin\network</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\network\protocols\protocol.hpp">
<Filter>include\bitcoin\network\protocols</Filter>
</ClInclude>
Expand Down Expand Up @@ -1238,6 +1244,9 @@
<ClInclude Include="..\..\..\..\include\bitcoin\ssl\openssl\dh.h">
<Filter>include\bitcoin\ssl\openssl</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\ssl\openssl\engine.h">
<Filter>include\bitcoin\ssl\openssl</Filter>
</ClInclude>
<ClInclude Include="..\..\..\..\include\bitcoin\ssl\openssl\err.h">
<Filter>include\bitcoin\ssl\openssl</Filter>
</ClInclude>
Expand Down Expand Up @@ -1788,4 +1797,4 @@
<ItemGroup>
<Natvis Include="..\..\debug.natvis" />
</ItemGroup>
</Project>
</Project>
15 changes: 15 additions & 0 deletions builds/msvc/vs2022/libbitcoin-network/libbitcoin-network.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<ProjectSchemaDefinitions xmlns="clr-namespace:Microsoft.Build.Framework.XamlTypes;assembly=Microsoft.Build.Framework">
<Rule Name="libbitcoin-network-uiextension" PageTemplate="tool" DisplayName="Bitcoin Network Options" SwitchPrefix="/" Order="1">
<Rule.Categories>
<Category Name="ssl" DisplayName="ssl" />
</Rule.Categories>
<Rule.DataSource>
<DataSource Persistence="ProjectFile" ItemType="" />
</Rule.DataSource>
<EnumProperty Name="Option-ssl" DisplayName="Enable Embedded SSL" Description="Requires external SSL if not enabled." Category="ssl">
<EnumValue Name="false" DisplayName="No" />
<EnumValue Name="true" DisplayName="Yes" />
</EnumProperty>
</Rule>
</ProjectSchemaDefinitions>
5 changes: 1 addition & 4 deletions builds/msvc/vs2022/libbitcoin-system.import.props
Original file line number Diff line number Diff line change
Expand Up @@ -46,12 +46,9 @@
<ItemDefinitionGroup>
<ClCompile>
<AdditionalIncludeDirectories>$(ProjectDir)..\..\..\..\..\libbitcoin-system\include\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<!-- WITH_ICU always defined in Visual Studio builds. -->
<!-- NOMINMAX enables use of std::min/max without conflict. -->
<!-- WIN32_LEAN_AND_MEAN avoids inclusion of certain headers, winsock.h conflicts with boost and protocol use of winsock2.h. -->
<PreprocessorDefinitions>WITH_ICU;WIN32_LEAN_AND_MEAN;NOMINMAX;_WIN32_WINNT=0x0602;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<!-- Disable auto-linking for all boost-json and its dependency boost-container so they can be header only. -->
<PreprocessorDefinitions>BOOST_JSON_NO_LIB;BOOST_CONTAINER_NO_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>WIN32_LEAN_AND_MEAN;NOMINMAX;_WIN32_WINNT=0x0602;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="'$(Linkage-libbitcoin-system)' == 'static' Or '$(Linkage-libbitcoin-system)' == 'ltcg'">BC_STATIC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions Condition="$(Configuration.IndexOf('Debug')) != -1">_CRTDBG_MAP_ALLOC;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<!-- Enable use of CPU intrinsics. -->
Expand Down
19 changes: 12 additions & 7 deletions configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,18 @@ AC_ARG_WITH([tests],
AC_MSG_RESULT([$with_tests])
AM_CONDITIONAL([WITH_TESTS], [test x$with_tests != xno])

# Implement --with-ssl and define WOLFSSL_USER_SETTINGS and output ${ssl}.
#------------------------------------------------------------------------------
AC_MSG_CHECKING([--with-ssl option])
AC_ARG_WITH([ssl],
AS_HELP_STRING([--with-ssl],
[Compile with internal ssl. @<:@default=yes@:>@]),
[with_ssl=$withval],
[with_ssl=yes])
AC_MSG_RESULT([$with_ssl])
AS_CASE([${with_ssl}], [yes], AC_DEFINE([WOLFSSL_USER_SETTINGS]))
AS_CASE([${with_ssl}], [yes], AC_SUBST([ssl], [-DWOLFSSL_USER_SETTINGS]))

# Implement --enable-ndebug and define NDEBUG.
#------------------------------------------------------------------------------
AC_MSG_CHECKING([--enable-ndebug option])
Expand All @@ -124,13 +136,6 @@ AC_ARG_ENABLE([isystem],
AC_MSG_RESULT([$enable_isystem])


# Set preprocessor defines.
#==============================================================================
# Unconditionally define the preprocessor symbol WOLFSSL_USER_SETTINGS.
#------------------------------------------------------------------------------
AC_DEFINE([WOLFSSL_USER_SETTINGS])


# Set flags.
#==============================================================================
# Require c++20 for all c++ products.
Expand Down
2 changes: 2 additions & 0 deletions include/bitcoin/network.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,10 @@
#include <bitcoin/network/boost.hpp>
#include <bitcoin/network/define.hpp>
#include <bitcoin/network/error.hpp>
#include <bitcoin/network/have.hpp>
#include <bitcoin/network/memory.hpp>
#include <bitcoin/network/net.hpp>
#include <bitcoin/network/preprocessor.hpp>
#include <bitcoin/network/settings.hpp>
#include <bitcoin/network/version.hpp>
#include <bitcoin/network/async/asio.hpp>
Expand Down
5 changes: 0 additions & 5 deletions include/bitcoin/network/async/asio.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,8 @@ typedef asio::acceptor::reuse_address reuse_address;
/// connect
typedef tcp::socket socket;
typedef std::shared_ptr<socket> socket_ptr;
constexpr auto max_connections =
boost::asio::socket_base::max_listen_connections;

/// ssl
#if defined(HAVE_SSL)
namespace ssl {

typedef boost::asio::ssl::context context;
Expand All @@ -75,8 +72,6 @@ inline void foobar() THROWS
}

} // namespace ssl
#endif // HAVE_SSL

} // namespace asio
} // namespace network
} // namespace libbitcoin
Expand Down
20 changes: 10 additions & 10 deletions include/bitcoin/network/boost.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,24 +19,24 @@
#ifndef LIBBITCOIN_NETWORK_BOOST_HPP
#define LIBBITCOIN_NETWORK_BOOST_HPP

#include <bitcoin/network/version.hpp>
#include <bitcoin/network/preprocessor.hpp>

// Pull in any base boost configuration before including boost.
#include <bitcoin/system.hpp>

#include <boost/bimap.hpp>
#include <boost/bimap/set_of.hpp>
#include <boost/bimap/multiset_of.hpp>
#include <boost/circular_buffer.hpp>
#include <boost/system/error_code.hpp>

#define BOOST_ASIO_NO_DEPRECATED
#include <boost/asio.hpp>

// TODO: Hoist this out to build config.
#define WITH_SSL
// TODO: exclude ssl sources when HAVE_SSL not defined (lib and test).
// TODO: exclude ssl include paths when HAVE_SSL not defined (lib and test).
#if defined(HAVE_SSL)
#define BOOST_ASIO_USE_WOLFSSL
#endif

#if defined(WITH_SSL)
#define HAVE_SSL
#define BOOST_ASIO_USE_WOLFSSL
/// Without HAVE_SSL openssl headers must be externally defined for asio.
#include <boost/asio/ssl.hpp>
#endif // WITH_SSL

#endif
Loading
Loading