Compare commits

..

3 Commits

Author SHA1 Message Date
Denis Angell
a516266e5d fix apple build
Co-Authored-By: Denis Angell <dangell@transia.co>
2024-10-21 15:54:13 +02:00
Denis Angell
f0cabd162c Merge branch 'dev' into sha-optimization 2024-10-21 15:36:52 +02:00
Denis Angell
a6f596bc8b avx512
Co-Authored-By: Denis Angell <dangell@transia.co>
2024-10-21 15:32:54 +02:00
7 changed files with 103 additions and 54 deletions

View File

@@ -3,7 +3,7 @@
"C_Cpp.clang_format_path": ".clang-format",
"C_Cpp.clang_format_fallbackStyle": "{ ColumnLimit: 0 }",
"[cpp]":{
"editor.wordBasedSuggestions": "off",
"editor.wordBasedSuggestions": false,
"editor.suggest.insertMode": "replace",
"editor.semanticHighlighting.enabled": true,
"editor.tabSize": 4,

View File

@@ -2,34 +2,92 @@
NIH dep: openssl
#]===================================================================]
#[===============================================[
OPENSSL_ROOT_DIR is the only variable that
FindOpenSSL honors for locating, so convert any
OPENSSL_ROOT vars to this
#]===============================================]
if (NOT DEFINED OPENSSL_ROOT_DIR)
if (DEFINED ENV{OPENSSL_ROOT})
set (OPENSSL_ROOT_DIR $ENV{OPENSSL_ROOT})
elseif (HOMEBREW)
execute_process (COMMAND ${HOMEBREW} --prefix openssl
OUTPUT_VARIABLE OPENSSL_ROOT_DIR
OUTPUT_STRIP_TRAILING_WHITESPACE)
endif ()
file (TO_CMAKE_PATH "${OPENSSL_ROOT_DIR}" OPENSSL_ROOT_DIR)
endif ()
# Include modules
include(ExternalProject)
include(CheckCCompilerFlag)
check_c_compiler_flag("-mavx512f" COMPILER_SUPPORTS_AVX512)
option(ENABLE_AVX512 "Enable AVX512 instructions" ${COMPILER_SUPPORTS_AVX512})
set(OPENSSL_NISTP "")
set(OPENSSL_AVX512 "")
if(APPLE)
if(CMAKE_SYSTEM_PROCESSOR MATCHES "arm64")
set(OPENSSL_PLATFORM "darwin64-arm64-cc")
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64")
set(OPENSSL_PLATFORM "darwin64-x86_64-cc")
else()
message(FATAL_ERROR "Unsupported macOS architecture: ${CMAKE_SYSTEM_PROCESSOR}")
endif()
elseif(UNIX AND NOT APPLE)
set(OPENSSL_PLATFORM "linux-x86_64")
set(OPENSSL_NISTP "enable-ec_nistp_64_gcc_128")
set(OPENSSL_AVX512 "-march=skylake-avx512")
else()
message(FATAL_ERROR "Unsupported platform")
endif()
ExternalProject_Add(openssl_src
PREFIX ${nih_cache_path}
GIT_REPOSITORY https://github.com/openssl/openssl.git
GIT_TAG OpenSSL_1_1_1u
CONFIGURE_COMMAND
${nih_cache_path}/src/openssl_src/Configure
-DBUILD_SHARED_LIBS=OFF
-DBUILD_STATIC_LIBS=ON
${OPENSSL_PLATFORM}
${OPENSSL_NISTP}
${OPENSSL_AVX512}
enable-rmd160
no-ssl2
LOG_BUILD ON
LOG_CONFIGURE ON
LOG_DOWNLOAD ON
BUILD_IN_SOURCE 1
BUILD_COMMAND $(MAKE)
TEST_COMMAND ""
INSTALL_COMMAND ""
BUILD_BYPRODUCTS
<BINARY_DIR>/libssl.a
<BINARY_DIR>/libcrypto.a
)
ExternalProject_Get_Property (openssl_src BINARY_DIR)
set (openssl_src_BINARY_DIR "${BINARY_DIR}")
add_library (OpenSSL::SSL STATIC IMPORTED GLOBAL)
add_library (OpenSSL::Crypto STATIC IMPORTED GLOBAL)
add_dependencies(OpenSSL::SSL openssl_src)
add_dependencies(OpenSSL::Crypto openssl_src)
execute_process(
COMMAND
mkdir -p "${openssl_src_BINARY_DIR}/include"
)
set_target_properties(OpenSSL::SSL PROPERTIES
IMPORTED_LOCATION_DEBUG
"${openssl_src_BINARY_DIR}/libssl.a"
IMPORTED_LOCATION_RELEASE
"${openssl_src_BINARY_DIR}/libssl.a"
INTERFACE_INCLUDE_DIRECTORIES
"${openssl_src_BINARY_DIR}/include"
)
set_target_properties(OpenSSL::Crypto PROPERTIES
IMPORTED_LOCATION_DEBUG
"${openssl_src_BINARY_DIR}/libcrypto.a"
IMPORTED_LOCATION_RELEASE
"${openssl_src_BINARY_DIR}/libcrypto.a"
INTERFACE_INCLUDE_DIRECTORIES
"${openssl_src_BINARY_DIR}/include"
)
if (static)
set (OPENSSL_USE_STATIC_LIBS ON)
endif ()
set (OPENSSL_MSVC_STATIC_RT ON)
find_package (OpenSSL 1.1.1 REQUIRED)
target_link_libraries (ripple_libs
INTERFACE
OpenSSL::SSL
OpenSSL::Crypto)
# disable SSLv2...this can also be done when building/configuring OpenSSL
set_target_properties(OpenSSL::SSL PROPERTIES
INTERFACE_COMPILE_DEFINITIONS OPENSSL_NO_SSL2)
#[=========================================================[
https://gitlab.kitware.com/cmake/cmake/issues/16885
depending on how openssl is built, it might depend
@@ -46,3 +104,9 @@ if (TARGET ZLIB::ZLIB)
INTERFACE_LINK_LIBRARIES ZLIB::ZLIB)
set (has_zlib TRUE)
endif ()
if(ENABLE_AVX512 AND COMPILER_SUPPORTS_AVX512 AND NOT APPLE)
add_compile_options(-mavx512f)
add_compile_options(-march=skylake-avx512)
endif()
add_link_options(-lssl -lcrypto)

View File

@@ -144,12 +144,4 @@ D686F2538F410C9D0D856788E98E3579595DAF7B38D38887F81ECAC934B06040 HooksUpdate1
86E83A7D2ECE3AD5FA87AB2195AE015C950469ABF0B72EAACED318F74886AE90 CryptoConditionsSuite
3C43D9A973AA4443EF3FC38E42DD306160FBFFDAB901CD8BAA15D09F2597EB87 NonFungibleTokensV1
0285B7E5E08E1A8E4C15636F0591D87F73CB6A7B6452A932AD72BBC8E5D1CBE3 fixNFTokenDirV1
36799EA497B1369B170805C078AEFE6188345F9B3E324C21E9CA3FF574E3C3D6 fixNFTokenNegOffer
4C499D17719BB365B69010A436B64FD1A82AAB199FC1CEB06962EBD01059FB09 fixXahauV1
215181D23BF5C173314B5FDB9C872C92DE6CC918483727DE037C0C13E7E6EE9D fixXahauV2
0D8BF22FF7570D58598D1EF19EBB6E142AD46E59A223FD3816262FBB69345BEA Remit
7CA0426E7F411D39BB014E57CD9E08F61DE1750F0D41FCD428D9FB80BB7596B0 ZeroB2M
4B8466415FAB32FFA89D9DCBE166A42340115771DF611A7160F8D7439C87ECD8 fixNSDelete
EDB4EE4C524E16BDD91D9A529332DED08DCAAA51CC6DC897ACFA1A0ED131C5B6 fix240819
8063140E9260799D6716756B891CEC3E7006C4E4F277AB84670663A88F94B9C4 fixPageCap
88693F108C3CD8A967F3F4253A32DEF5E35F9406ACD2A11B88B11D90865763A9 fix240911
36799EA497B1369B170805C078AEFE6188345F9B3E324C21E9CA3FF574E3C3D6 fixNFTokenNegOffer

View File

@@ -1,5 +1,5 @@
/**
* These are helper macros for writing hooks, all of them are optional as is including macro.h at all
* These are helper macros for writing hooks, all of them are optional as is including hookmacro.h at all
*/
#include <stdint.h>

View File

@@ -1132,7 +1132,7 @@ accountTxPage(
{
sql = boost::str(
boost::format(
prefix + (R"(AccountTransactions.LedgerSeq BETWEEN %u AND %u
prefix + (R"(AccountTransactions.LedgerSeq BETWEEN '%u' AND '%u'
ORDER BY AccountTransactions.LedgerSeq %s,
AccountTransactions.TxnSeq %s
LIMIT %u;)")) %
@@ -1155,14 +1155,12 @@ accountTxPage(
FROM AccountTransactions, Transactions WHERE
(AccountTransactions.TransID = Transactions.TransID AND
AccountTransactions.Account = '%s' AND
AccountTransactions.LedgerSeq BETWEEN %u AND %u)
UNION
SELECT AccountTransactions.LedgerSeq,AccountTransactions.TxnSeq,Status,RawTxn,TxnMeta
FROM AccountTransactions, Transactions WHERE
AccountTransactions.LedgerSeq BETWEEN '%u' AND '%u')
OR
(AccountTransactions.TransID = Transactions.TransID AND
AccountTransactions.Account = '%s' AND
AccountTransactions.LedgerSeq = %u AND
AccountTransactions.TxnSeq %s %u)
AccountTransactions.LedgerSeq = '%u' AND
AccountTransactions.TxnSeq %s '%u')
ORDER BY AccountTransactions.LedgerSeq %s,
AccountTransactions.TxnSeq %s
LIMIT %u;

View File

@@ -1894,9 +1894,7 @@ fromNetwork(
constexpr auto RPC_REPLY_MAX_BYTES = megabytes(256);
using namespace std::chrono_literals;
// auto constexpr RPC_NOTIFY = 10min; // Wietse: lolwut 10 minutes for one
// HTTP call?
auto constexpr RPC_NOTIFY = 30s;
auto constexpr RPC_NOTIFY = 10min;
HTTPClient::request(
bSSL,

View File

@@ -78,14 +78,12 @@ public:
{
std::lock_guard sl(mLock);
// Wietse: we're not going to limit this, this is admin-port only, scale
// accordingly Dropping events just like this results in inconsistent
// data on the receiving end if (mDeque.size() >= eventQueueMax)
// {
// // Drop the previous event.
// JLOG(j_.warn()) << "RPCCall::fromNetwork drop";
// mDeque.pop_back();
// }
if (mDeque.size() >= eventQueueMax)
{
// Drop the previous event.
JLOG(j_.warn()) << "RPCCall::fromNetwork drop";
mDeque.pop_back();
}
auto jm = broadcast ? j_.debug() : j_.info();
JLOG(jm) << "RPCCall::fromNetwork push: " << jvObj;
@@ -184,8 +182,7 @@ private:
}
private:
// Wietse: we're not going to limit this, this is admin-port only, scale
// accordingly enum { eventQueueMax = 32 };
enum { eventQueueMax = 32 };
boost::asio::io_service& m_io_service;
JobQueue& m_jobQueue;