mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-19 10:35:50 +00:00
* Builds Windows dependencies first. * Builds ALL OSs in the last stage. * Fix the MacOS builds. * Windows dependency stages are allowed to fail so ALL configurations will attempt to build. Windows builds will probably fail if dependencies fail (caching may allow them to succeed), but they will at least be attempted. * Remove broken AppVeyor config file, so it stops trying.
104 lines
3.5 KiB
CMake
104 lines
3.5 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)
|
|
elseif (IS_DIRECTORY ${BOOST_ROOT}/stage/lib)
|
|
set (BOOST_LIBRARYDIR ${BOOST_ROOT}/stage/lib)
|
|
elseif (IS_DIRECTORY ${BOOST_ROOT}/lib)
|
|
set (BOOST_LIBRARYDIR ${BOOST_ROOT}/lib)
|
|
else ()
|
|
message(WARNING "Did not find expected boost library dir. "
|
|
"Defaulting to ${BOOST_ROOT}")
|
|
set (BOOST_LIBRARYDIR ${BOOST_ROOT})
|
|
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 ()
|