mirror of
https://github.com/Xahau/xahaud.git
synced 2025-11-04 10:45:50 +00:00
* Reduce lock scope on all public functions * Use TaskQueue to process shard finalization in separate thread * Store shard last ledger hash and other info in backend * Use temp SQLite DB versus control file when acquiring * Remove boost serialization from cmake files
98 lines
3.2 KiB
CMake
98 lines
3.2 KiB
CMake
#[===================================================================[
|
|
NIH dep: boost
|
|
#]===================================================================]
|
|
|
|
if ((NOT DEFINED BOOST_ROOT) AND (DEFINED ENV{BOOST_ROOT}))
|
|
set (BOOST_ROOT $ENV{BOOST_ROOT})
|
|
endif ()
|
|
file (TO_CMAKE_PATH "${BOOST_ROOT}" BOOST_ROOT)
|
|
if (WIN32 OR CYGWIN)
|
|
# Workaround for MSVC having two boost versions - x86 and x64 on same PC in stage folders
|
|
if (DEFINED BOOST_ROOT)
|
|
if (IS_DIRECTORY ${BOOST_ROOT}/stage64/lib)
|
|
set (BOOST_LIBRARYDIR ${BOOST_ROOT}/stage64/lib)
|
|
else ()
|
|
set (BOOST_LIBRARYDIR ${BOOST_ROOT}/stage/lib)
|
|
endif ()
|
|
endif ()
|
|
endif ()
|
|
message (STATUS "BOOST_ROOT: ${BOOST_ROOT}")
|
|
message (STATUS "BOOST_LIBRARYDIR: ${BOOST_LIBRARYDIR}")
|
|
|
|
# uncomment the following as needed to debug FindBoost issues:
|
|
#set (Boost_DEBUG ON)
|
|
|
|
#[=========================================================[
|
|
boost dynamic libraries don't trivially support @rpath
|
|
linking right now (cmake's default), so just force
|
|
static linking for macos, or if requested on linux by flag
|
|
#]=========================================================]
|
|
if (static)
|
|
set (Boost_USE_STATIC_LIBS ON)
|
|
endif ()
|
|
set (Boost_USE_MULTITHREADED ON)
|
|
if (static AND NOT APPLE)
|
|
set (Boost_USE_STATIC_RUNTIME ON)
|
|
else ()
|
|
set (Boost_USE_STATIC_RUNTIME OFF)
|
|
endif ()
|
|
# TBD:
|
|
# Boost_USE_DEBUG_RUNTIME: When ON, uses Boost libraries linked against the
|
|
find_package (Boost 1.70 REQUIRED
|
|
COMPONENTS
|
|
chrono
|
|
context
|
|
coroutine
|
|
date_time
|
|
filesystem
|
|
program_options
|
|
regex
|
|
system
|
|
thread)
|
|
|
|
add_library (ripple_boost INTERFACE)
|
|
add_library (Ripple::boost ALIAS ripple_boost)
|
|
if (is_xcode)
|
|
target_include_directories (ripple_boost BEFORE INTERFACE ${Boost_INCLUDE_DIRS})
|
|
target_compile_options (ripple_boost INTERFACE --system-header-prefix="boost/")
|
|
else ()
|
|
target_include_directories (ripple_boost SYSTEM BEFORE INTERFACE ${Boost_INCLUDE_DIRS})
|
|
endif()
|
|
|
|
target_link_libraries (ripple_boost
|
|
INTERFACE
|
|
Boost::boost
|
|
Boost::chrono
|
|
Boost::coroutine
|
|
Boost::date_time
|
|
Boost::filesystem
|
|
Boost::program_options
|
|
Boost::regex
|
|
Boost::system
|
|
Boost::thread)
|
|
if (Boost_COMPILER)
|
|
target_link_libraries (ripple_boost INTERFACE Boost::disable_autolinking)
|
|
endif ()
|
|
if (san AND is_clang)
|
|
# TODO: gcc does not support -fsanitize-blacklist...can we do something else
|
|
# for gcc ?
|
|
if (NOT Boost_INCLUDE_DIRS AND TARGET Boost::headers)
|
|
get_target_property (Boost_INCLUDE_DIRS Boost::headers INTERFACE_INCLUDE_DIRECTORIES)
|
|
endif ()
|
|
message(STATUS "Adding [${Boost_INCLUDE_DIRS}] to sanitizer blacklist")
|
|
file (WRITE ${CMAKE_CURRENT_BINARY_DIR}/san_bl.txt "src:${Boost_INCLUDE_DIRS}/*")
|
|
target_compile_options (opts
|
|
INTERFACE
|
|
# ignore boost headers for sanitizing
|
|
-fsanitize-blacklist=${CMAKE_CURRENT_BINARY_DIR}/san_bl.txt)
|
|
endif ()
|
|
|
|
# workaround for xcode 10.2 and boost < 1.69
|
|
# once we require Boost 1.69 or higher, this can be removed
|
|
# see: https://github.com/boostorg/asio/commit/43874d5
|
|
if (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang" AND
|
|
CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 10.0.1.10010043 AND
|
|
Boost_VERSION LESS 106900)
|
|
target_compile_definitions (opts INTERFACE BOOST_ASIO_HAS_STD_STRING_VIEW)
|
|
endif ()
|