mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-19 18:45:52 +00:00
- Simplify and consolidate code for parsing hex input. - Replace beast::endian::order with boost::endian::order. - Simplify CountedObject code. - Remove pre-C++17 workarounds in favor of C++17 based solutions. - Improve `base_uint` and simplify its hex-parsing interface by consolidating the `SexHex` and `SetHexExact` methods into one API: `parseHex` which forces callers to verify the result of the operation; as a result some public-facing API endpoints may now return errors when passed values that were previously accepted. - Remove the simple fallback implementations of SHA2 and RIPEMD introduced to reduce our dependency on OpenSSL. The code is slow and rarely, if ever, exercised and we rely on OpenSSL functionality for Boost.ASIO as well.
104 lines
3.6 KiB
CMake
104 lines
3.6 KiB
CMake
#[===================================================================[
|
|
rippled compile options/settings via an interface library
|
|
#]===================================================================]
|
|
|
|
add_library (opts INTERFACE)
|
|
add_library (Ripple::opts ALIAS opts)
|
|
target_compile_definitions (opts
|
|
INTERFACE
|
|
BOOST_ASIO_DISABLE_HANDLER_TYPE_REQUIREMENTS
|
|
$<$<BOOL:${boost_show_deprecated}>:
|
|
BOOST_ASIO_NO_DEPRECATED
|
|
BOOST_FILESYSTEM_NO_DEPRECATED
|
|
>
|
|
$<$<NOT:$<BOOL:${boost_show_deprecated}>>:
|
|
BOOST_COROUTINES_NO_DEPRECATION_WARNING
|
|
BOOST_BEAST_ALLOW_DEPRECATED
|
|
BOOST_FILESYSTEM_DEPRECATED
|
|
>
|
|
$<$<BOOL:${beast_no_unit_test_inline}>:BEAST_NO_UNIT_TEST_INLINE=1>
|
|
$<$<BOOL:${beast_disable_autolink}>:BEAST_DONT_AUTOLINK_TO_WIN32_LIBRARIES=1>
|
|
$<$<BOOL:${single_io_service_thread}>:RIPPLE_SINGLE_IO_SERVICE_THREAD=1>)
|
|
target_compile_options (opts
|
|
INTERFACE
|
|
$<$<AND:$<BOOL:${is_gcc}>,$<COMPILE_LANGUAGE:CXX>>:-Wsuggest-override>
|
|
$<$<BOOL:${perf}>:-fno-omit-frame-pointer>
|
|
$<$<AND:$<BOOL:${is_gcc}>,$<BOOL:${coverage}>>:-fprofile-arcs -ftest-coverage>
|
|
$<$<AND:$<BOOL:${is_clang}>,$<BOOL:${coverage}>>:-fprofile-instr-generate -fcoverage-mapping>
|
|
$<$<BOOL:${profile}>:-pg>
|
|
$<$<AND:$<BOOL:${is_gcc}>,$<BOOL:${profile}>>:-p>)
|
|
|
|
target_link_libraries (opts
|
|
INTERFACE
|
|
$<$<AND:$<BOOL:${is_gcc}>,$<BOOL:${coverage}>>:-fprofile-arcs -ftest-coverage>
|
|
$<$<AND:$<BOOL:${is_clang}>,$<BOOL:${coverage}>>:-fprofile-instr-generate -fcoverage-mapping>
|
|
$<$<BOOL:${profile}>:-pg>
|
|
$<$<AND:$<BOOL:${is_gcc}>,$<BOOL:${profile}>>:-p>)
|
|
|
|
if (jemalloc)
|
|
if (static)
|
|
set(JEMALLOC_USE_STATIC ON CACHE BOOL "" FORCE)
|
|
endif ()
|
|
find_package (jemalloc REQUIRED)
|
|
target_compile_definitions (opts INTERFACE PROFILE_JEMALLOC)
|
|
target_include_directories (opts SYSTEM INTERFACE ${JEMALLOC_INCLUDE_DIRS})
|
|
target_link_libraries (opts INTERFACE ${JEMALLOC_LIBRARIES})
|
|
get_filename_component (JEMALLOC_LIB_PATH ${JEMALLOC_LIBRARIES} DIRECTORY)
|
|
## TODO see if we can use the BUILD_RPATH target property (is it transitive?)
|
|
set (CMAKE_BUILD_RPATH ${CMAKE_BUILD_RPATH} ${JEMALLOC_LIB_PATH})
|
|
endif ()
|
|
|
|
if (san)
|
|
target_compile_options (opts
|
|
INTERFACE
|
|
# sanitizers recommend minimum of -O1 for reasonable performance
|
|
$<$<CONFIG:Debug>:-O1>
|
|
${SAN_FLAG}
|
|
-fno-omit-frame-pointer)
|
|
target_compile_definitions (opts
|
|
INTERFACE
|
|
$<$<STREQUAL:${san},address>:SANITIZER=ASAN>
|
|
$<$<STREQUAL:${san},thread>:SANITIZER=TSAN>
|
|
$<$<STREQUAL:${san},memory>:SANITIZER=MSAN>
|
|
$<$<STREQUAL:${san},undefined>:SANITIZER=UBSAN>)
|
|
target_link_libraries (opts INTERFACE ${SAN_FLAG} ${SAN_LIB})
|
|
endif ()
|
|
|
|
#[===================================================================[
|
|
rippled transitive library deps via an interface library
|
|
#]===================================================================]
|
|
|
|
add_library (ripple_syslibs INTERFACE)
|
|
add_library (Ripple::syslibs ALIAS ripple_syslibs)
|
|
target_link_libraries (ripple_syslibs
|
|
INTERFACE
|
|
$<$<BOOL:${MSVC}>:
|
|
legacy_stdio_definitions.lib
|
|
Shlwapi
|
|
kernel32
|
|
user32
|
|
gdi32
|
|
winspool
|
|
comdlg32
|
|
advapi32
|
|
shell32
|
|
ole32
|
|
oleaut32
|
|
uuid
|
|
odbc32
|
|
odbccp32
|
|
crypt32
|
|
>
|
|
$<$<NOT:$<BOOL:${MSVC}>>:dl>
|
|
$<$<NOT:$<OR:$<BOOL:${MSVC}>,$<BOOL:${APPLE}>>>:rt>)
|
|
|
|
if (NOT MSVC)
|
|
set (THREADS_PREFER_PTHREAD_FLAG ON)
|
|
find_package (Threads)
|
|
target_link_libraries (ripple_syslibs INTERFACE Threads::Threads)
|
|
endif ()
|
|
|
|
add_library (ripple_libs INTERFACE)
|
|
add_library (Ripple::libs ALIAS ripple_libs)
|
|
target_link_libraries (ripple_libs INTERFACE Ripple::syslibs)
|