mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
1ab7a2f Set version to 1.0.0-b22 2eb4b0c Fix code sample in websocket.qbk 58802f4 Fix typos in design.qbk 19dc4bb Update documentation examples 10dbc5b Disable Boost.Coroutine deprecation warning 01c76c7 Fix websocket stream read documentation d152c96 Update README.md example programs 995d86f Avoid copies in handler_alloc 851cb62 Add handler helpers 114175c Implement asio dealloc-before-invoke guarantee: 681db2e Add missing include 7db3c6e Fix broken Intellisense (MSVC) 09c183d Set version to 1.0.0-b21 1cb01fe Remove extraneous includes 62e65ed Set version to 1.0.0-b20 45eaa8c Increase utf8 checker code coverage 9ff1a27 Add zlib module: a0a3359 Refactor HTTP identifier names (API Change): 79be7f8 Set version to 1.0.0-b19 eda1120 Tidy up internal name 4130ad4 Better buffer_cat: f94f21d Fix consuming_buffers value_type (API Change): 2c524b4 prepared_buffers is private (API Change) df2a108 Fix prepare_buffers value_type: a4af9d6 Use boost::lexical_cast instead of std::to_string 62d670b Fix with_body example: a63bd84 Increase code coverage 84a6775 Boost library min/max guidance: 02feea5 Add read, async_read for message_headers: f224585 Add write, async_write, operator<< for message_headers: ea48bcf Make chunk_encode public: f6dd744 Refactor message and message_headers declarations: 9fd8aed Move sync_ostream to core/detail c98b2d3 Optimize mask operations d4dfc1a Optimize utf8 validation 7b4de4b Set version to 1.0.0-b18 feb5204 Add websocket::stream pong and async_pong d4ffde5 Close connection during async_read on close frame: 644d518 Move clamp to core 427ba38 Fix write_frame masking and auto-fragment handling 54a51b1 Write buffer option does not change capacity 591dbc0 Meet DynamicBuffer requirements for static_streambuf 46d5e72 Reorganize source files and definitions efa4b8f Override incremental link flags: eef6e86 Higher optimization settings for MSVC builds b6f3a36 Check invariants in parse_op: 47b0fa6 Remove unused field in test 8b8e57e unit_test improvements: e907252 Clean up message docs 1e3543f Set version to 1.0.0-b17 de97a69 Trim unused code 796b484 Doc fixes 95c37e2 Fix unused parameter warnings and missing includes: 8b0d285 Refactor read_size_helper 97a9dcb Improve websocket example in README.md 236caef Engaged invokable is destructible: d107ba1 Add headers_parser: 2f90627 Fix handling of body_what::pause in basic_parser_v1 9353d04 Add basic_parser_v1::reset 658e03c Add on_body_what parser callback (API Change): 50bd446 Fix parser traits detection (API Change): df8d306 Tidy up documentation: 47105f8 Tidy up basic_headers for documentation ada1f60 Refine message class hierarchy: cf43f51 Rework HTTP concepts (API Change): 8a261ca HTTP Reader (API Change): 183055a Parser callbacks may not throw (API Change) ebebe52 Add basic_streambuf::alloc_size c9cd171 Fix basic_streambuf::capacity 0eb0e48 Tidying: c5c436d Change implicit_value to default_value 01f939d Set version to 1.0.0-b16 206d0a9 Fix websocket failure tests 6b4fb28 Fix Writer exemplar in docs 4224a3a Relax ForwardIterator requirements in FieldSequence 14d7f8d Refactor base_parser_v1 callback traits: d812344 Add pause option to on_headers interface: c59bd53 Improve first line serialization 78ff20b Constrain parser_v1 constructor 2765a67 Refine Parser concept: c329d33 Fix on_headers called twice from basic_parser_v1 55c4c93 Put back missing Design section in docs 90cec54 Make auto_fragment a boolean option 03642fb Rename to write_buffer_size 0ca8964 Frame processing routines are member functions d99dfb3 Make value optional in param-list 325f579 Set version to 1.0.0-b15 c54762a Fix handling empty HTTP headers in parser_v1.hpp c39cc06 Regression test for empty headers 60e637b Tidy up error types: d54d597 Tidy up DynamicBuffer requirements 707fb5e Fix doc reference section 38af0f7 Fix message_v1 constructor 027c4e8 Add Secure WebSocket example 5baaa49 Add HTTPS example 076456b rfc7230 section 3.3.2 compliance a09a044 Use bin/sh 1ff192d Update README.md for CppCon 2016 presentation 70b8555 Set version to 1.0.0-b14 b4a8342 Update and tidy documentation 8607af5 Update README.md 4abb43e Use BOOST_ASSERT b5bffee Don't rely on undefined behavior 8ee7a21 Better WebSocket decorator: 38f0d95 Update build scripts for MSVC, MinGW 2a5b116 Fix error handling in server examples 4c7065a Add missing rebind to handler_alloc git-subtree-dir: src/beast git-subtree-split: 1ab7a2f04ca9a0b35f2032877cab78d94e96ebad
518 lines
14 KiB
CMake
518 lines
14 KiB
CMake
# !!! The official build system is SConstruct !!!
|
|
# This is an experimental cmake build file for rippled
|
|
#
|
|
# cmake support in rippled. Currently supports:
|
|
#
|
|
# * unity/nounity debug/release
|
|
# * running protobuf
|
|
# * sanitizer builds
|
|
# * optional release build with assert turned on
|
|
# * `target` variable to easily set compiler/debug/unity
|
|
# (i.e. -Dtarget=gcc.debug.nounity)
|
|
# * gcc/clang/visual studio/xcode
|
|
# * linux/mac/win
|
|
# * gcc 4 ABI, when needed
|
|
# * ninja builds
|
|
# * check openssl version on linux
|
|
# * static builds (swd TBD: needs to be tested by building & deploying on different systems)
|
|
#
|
|
# TBD:
|
|
# * jemalloc support
|
|
# * count
|
|
# * Windows protobuf compiler puts generated file in src directory instead of build directory.
|
|
#
|
|
# Notes:
|
|
# * Use the -G"Visual Studio 14 2015 Win64" generator on Windows. Without this
|
|
# a 32-bit project will be created. There is no way to set the generator or
|
|
# force a 64-bit build in CMakeLists.txt (setting CMAKE_GENERATOR_PLATFORM won't work).
|
|
# The best solution may be to wrap cmake with a script.
|
|
#
|
|
# * It is not possible to generate a visual studio project on linux or
|
|
# mac. The visual studio generator is only available on windows.
|
|
#
|
|
# * The visual studio project can be _either_ unity or
|
|
# non-unity (selected at generation time). It does not appear possible
|
|
# to disable compilation based on configuration.
|
|
#
|
|
# * Language is _much_ worse than python, poor documentation and "quirky"
|
|
# language support (for example, generator expressions can only be used
|
|
# in limited contexts and seem to work differently based on
|
|
# context (set_property can set multiple values, add_compile_options
|
|
# can not/or is buggy)
|
|
#
|
|
# * Could not call out to `sed` because cmake messed with the regular
|
|
# expression before calling the external command. I did not see a way
|
|
# around this.
|
|
#
|
|
# * Makefile generators want to be single target. It wants a separate
|
|
# directory for each target type. I saw some mentions on the web for
|
|
# ways around this bug haven't look into it. The visual studio project
|
|
# does support debug/release configurations in the same project (but
|
|
# not unity/non-unity).
|
|
|
|
############################################################
|
|
|
|
cmake_minimum_required(VERSION 3.1.0)
|
|
|
|
if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
|
|
set(dir "build")
|
|
set(cmd "cmake")
|
|
if (target)
|
|
set(dir "${dir}/${target}")
|
|
set(cmd "${cmd} -Dtarget=${target}")
|
|
elseif(CMAKE_BUILD_TYPE)
|
|
set(dir "${dir}/${CMAKE_BUILD_TYPE}")
|
|
set(cmd "${cmd} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}")
|
|
else()
|
|
set(dir "${dir}/default")
|
|
endif()
|
|
set(cmd "${cmd} ${CMAKE_SOURCE_DIR}")
|
|
|
|
message(FATAL_ERROR "Builds are not allowed in ${CMAKE_SOURCE_DIR}.\n"
|
|
"Instead:\n"
|
|
"1) Remove the CMakeCache.txt file and CMakeFiles directory "
|
|
"from ${CMAKE_SOURCE_DIR}.\n"
|
|
"2) Create a directory to hold your build files, for example: ${dir}.\n"
|
|
"3) Change to that directory.\n"
|
|
"4) Run cmake targetting ${CMAKE_SOURCE_DIR}, for example: ${cmd}")
|
|
endif()
|
|
if("${CMAKE_GENERATOR}" MATCHES "Visual Studio" AND
|
|
NOT ("${CMAKE_GENERATOR}" MATCHES .*Win64.*))
|
|
message(FATAL_ERROR "Visual Studio 32-bit build is unsupported. Use
|
|
-G\"${CMAKE_GENERATOR} Win64\"")
|
|
endif()
|
|
|
|
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/Builds/CMake")
|
|
include(CMakeFuncs)
|
|
|
|
set(openssl_min 1.0.2)
|
|
|
|
parse_target()
|
|
|
|
if (NOT DEFINED unity)
|
|
set(unity true)
|
|
set(nonunity false)
|
|
endif()
|
|
|
|
setup_build_cache()
|
|
|
|
project(rippled)
|
|
|
|
if(nonunity)
|
|
get_cmake_property(allvars VARIABLES)
|
|
string(REGEX MATCHALL "[^;]*(DEBUG|RELEASE)[^;]*" matchvars "${allvars}")
|
|
foreach(var IN LISTS matchvars)
|
|
string(REGEX REPLACE "(DEBUG|RELEASE)" "\\1CLASSIC" newvar ${var})
|
|
set(${newvar} ${${var}})
|
|
endforeach()
|
|
|
|
get_cmake_property(allvars CACHE_VARIABLES)
|
|
string(REGEX MATCHALL "[^;]*(DEBUG|RELEASE)[^;]*" matchvars "${allvars}")
|
|
foreach(var IN LISTS matchvars)
|
|
string(REGEX REPLACE "(DEBUG|RELEASE)" "\\1CLASSIC" newvar ${var})
|
|
set(${newvar} ${${var}} CACHE STRING "Copied from ${var}")
|
|
endforeach()
|
|
endif()
|
|
|
|
determine_build_type()
|
|
|
|
check_gcc4_abi()
|
|
|
|
############################################################
|
|
|
|
include_directories(
|
|
src
|
|
src/beast
|
|
src/beast/include
|
|
src/beast/extras
|
|
src/nudb/include
|
|
src/soci/src
|
|
src/soci/include)
|
|
|
|
special_build_flags()
|
|
|
|
############################################################
|
|
|
|
use_boost(
|
|
# resist the temptation to alphabetize these. coroutine
|
|
# must come before context.
|
|
chrono
|
|
coroutine
|
|
context
|
|
date_time
|
|
filesystem
|
|
program_options
|
|
regex
|
|
system
|
|
thread)
|
|
|
|
use_pthread()
|
|
|
|
use_openssl(${openssl_min})
|
|
|
|
use_protobuf()
|
|
|
|
setup_build_boilerplate()
|
|
|
|
############################################################
|
|
|
|
if (is_clang)
|
|
set(rocks_db_system_header --system-header-prefix=rocksdb2)
|
|
else()
|
|
unset(rocks_db_system_header)
|
|
endif()
|
|
|
|
set(soci_extra_includes
|
|
-I"${CMAKE_SOURCE_DIR}/"src/soci/src/core
|
|
-I"${CMAKE_SOURCE_DIR}/"src/soci/include/private
|
|
-I"${CMAKE_SOURCE_DIR}/"src/sqlite)
|
|
|
|
############################################################
|
|
|
|
# Unity sources
|
|
prepend(beast_unity_srcs
|
|
src/ripple/beast/unity/
|
|
beast_insight_unity.cpp
|
|
beast_net_unity.cpp
|
|
beast_utility_unity.cpp)
|
|
|
|
prepend(ripple_unity_srcs
|
|
src/ripple/unity/
|
|
app_ledger.cpp
|
|
app_main.cpp
|
|
app_misc.cpp
|
|
app_paths.cpp
|
|
app_tx.cpp
|
|
conditions.cpp
|
|
core.cpp
|
|
basics.cpp
|
|
crypto.cpp
|
|
ledger.cpp
|
|
net.cpp
|
|
overlay.cpp
|
|
peerfinder.cpp
|
|
json.cpp
|
|
protocol.cpp
|
|
rpcx.cpp
|
|
shamap.cpp
|
|
server.cpp)
|
|
|
|
prepend(test_unity_srcs
|
|
src/test/unity/
|
|
app_test_unity.cpp
|
|
basics_test_unity.cpp
|
|
beast_test_unity.cpp
|
|
conditions_test_unity.cpp
|
|
core_test_unity.cpp
|
|
json_test_unity.cpp
|
|
ledger_test_unity.cpp
|
|
overlay_test_unity.cpp
|
|
peerfinder_test_unity.cpp
|
|
protocol_test_unity.cpp
|
|
resource_test_unity.cpp
|
|
rpc_test_unity.cpp
|
|
server_test_unity.cpp
|
|
shamap_test_unity.cpp
|
|
support_unity.cpp)
|
|
|
|
list(APPEND rippled_src_unity ${beast_unity_srcs} ${ripple_unity_srcs} ${test_unity_srcs})
|
|
|
|
add_with_props(rippled_src_unity src/test/unity/nodestore_test_unity.cpp
|
|
-I"${CMAKE_SOURCE_DIR}/"src/rocksdb2/include
|
|
-I"${CMAKE_SOURCE_DIR}/"src/snappy/snappy
|
|
-I"${CMAKE_SOURCE_DIR}/"src/snappy/config
|
|
${rocks_db_system_header})
|
|
|
|
add_with_props(rippled_src_unity src/ripple/unity/nodestore.cpp
|
|
-I"${CMAKE_SOURCE_DIR}/"src/rocksdb2/include
|
|
-I"${CMAKE_SOURCE_DIR}/"src/snappy/snappy
|
|
-I"${CMAKE_SOURCE_DIR}/"src/snappy/config
|
|
${rocks_db_system_header})
|
|
|
|
add_with_props(rippled_src_unity src/ripple/unity/soci_ripple.cpp ${soci_extra_includes})
|
|
|
|
list(APPEND ripple_unity_srcs ${beast_unity_srcs} ${test_unity_srcs}
|
|
src/ripple/unity/nodestore.cpp
|
|
src/ripple/unity/soci_ripple.cpp
|
|
src/test/unity/nodestore_test_unity.cpp)
|
|
|
|
############################################################
|
|
|
|
# Non-unity sources
|
|
file(GLOB_RECURSE core_srcs src/ripple/core/*.cpp)
|
|
add_with_props(rippled_src_nonunity "${core_srcs}"
|
|
-I"${CMAKE_SOURCE_DIR}/"src/soci/src/core
|
|
-I"${CMAKE_SOURCE_DIR}/"src/sqlite)
|
|
|
|
set(non_unity_srcs ${core_srcs})
|
|
|
|
foreach(curdir
|
|
beast/clock
|
|
beast/container
|
|
beast/insight
|
|
beast/net
|
|
beast/utility
|
|
app
|
|
basics
|
|
conditions
|
|
crypto
|
|
json
|
|
ledger
|
|
legacy
|
|
net
|
|
overlay
|
|
peerfinder
|
|
protocol
|
|
rpc
|
|
server
|
|
shamap)
|
|
file(GLOB_RECURSE cursrcs src/ripple/${curdir}/*.cpp)
|
|
list(APPEND rippled_src_nonunity "${cursrcs}")
|
|
list(APPEND non_unity_srcs "${cursrcs}")
|
|
endforeach()
|
|
|
|
file(GLOB_RECURSE nodestore_srcs src/ripple/nodestore/*.cpp
|
|
src/test/nodestore/*.cpp)
|
|
|
|
add_with_props(rippled_src_nonunity "${nodestore_srcs}"
|
|
-I"${CMAKE_SOURCE_DIR}/"src/rocksdb2/include
|
|
-I"${CMAKE_SOURCE_DIR}/"src/snappy/snappy
|
|
-I"${CMAKE_SOURCE_DIR}/"src/snappy/config
|
|
${rocks_db_system_header})
|
|
|
|
list(APPEND non_unity_srcs "${nodestore_srcs}")
|
|
|
|
# unit test sources
|
|
foreach(curdir
|
|
app
|
|
basics
|
|
beast
|
|
conditions
|
|
core
|
|
json
|
|
ledger
|
|
nodestore
|
|
overlay
|
|
peerfinder
|
|
protocol
|
|
resource
|
|
rpc
|
|
server
|
|
shamap
|
|
support)
|
|
file(GLOB_RECURSE cursrcs src/test/${curdir}/*.cpp)
|
|
list(APPEND test_srcs "${cursrcs}")
|
|
endforeach()
|
|
|
|
add_with_props(rippled_src_nonunity "${test_srcs}"
|
|
-I"${CMAKE_SOURCE_DIR}/"src/rocksdb2/include
|
|
-I"${CMAKE_SOURCE_DIR}/"src/snappy/snappy
|
|
-I"${CMAKE_SOURCE_DIR}/"src/snappy/config
|
|
${rocks_db_system_header})
|
|
|
|
list(APPEND non_unity_srcs "${test_srcs}")
|
|
|
|
if(WIN32 OR is_xcode)
|
|
# Rippled headers. Only needed for IDEs.
|
|
file(GLOB_RECURSE rippled_headers src/*.h src/*.hpp)
|
|
list(APPEND rippled_headers Builds/CMake/CMakeFuncs.cmake)
|
|
foreach(curdir
|
|
beast/asio
|
|
beast/core
|
|
beast/crypto
|
|
beast/cxx17
|
|
beast/hash
|
|
proto
|
|
resource
|
|
validators
|
|
websocket)
|
|
file(GLOB_RECURSE cursrcs src/ripple/${curdir}/*.cpp)
|
|
list(APPEND rippled_headers "${cursrcs}")
|
|
endforeach()
|
|
list(APPEND rippled_src_nonunity "${rippled_headers}")
|
|
|
|
set_property(
|
|
SOURCE ${rippled_headers}
|
|
APPEND
|
|
PROPERTY HEADER_FILE_ONLY
|
|
true)
|
|
# Doesn't work
|
|
# $<OR:$<CONFIG:Debug>,$<CONFIG:Release>>)
|
|
endif()
|
|
|
|
if (WIN32 OR is_xcode)
|
|
# Documentation sources. Only needed for IDEs.
|
|
prepend(doc_srcs
|
|
docs/
|
|
Jamfile.v2
|
|
boostbook.dtd
|
|
index.xml
|
|
main.qbk
|
|
quickref.xml
|
|
reference.xsl
|
|
source.dox)
|
|
|
|
set_property(
|
|
SOURCE ${doc_srcs}
|
|
APPEND
|
|
PROPERTY HEADER_FILE_ONLY
|
|
true)
|
|
# Doesn't work
|
|
# $<OR:$<CONFIG:Debug>,$<CONFIG:Release>>)
|
|
endif()
|
|
|
|
############################################################
|
|
|
|
add_with_props(rippled_src_all src/ripple/unity/soci.cpp
|
|
${soci_extra_includes})
|
|
|
|
if (NOT is_msvc)
|
|
set(no_unused_w -Wno-unused-function)
|
|
else()
|
|
unset(no_unused_w)
|
|
endif()
|
|
|
|
add_with_props(rippled_src_all src/ripple/unity/secp256k1.cpp
|
|
-I"${CMAKE_SOURCE_DIR}/"src/secp256k1
|
|
${no_unused_w}
|
|
)
|
|
|
|
foreach(cursrc
|
|
src/ripple/beast/unity/beast_hash_unity.cpp
|
|
src/ripple/unity/beast.cpp
|
|
src/ripple/unity/lz4.c
|
|
src/ripple/unity/protobuf.cpp
|
|
src/ripple/unity/ripple.proto.cpp
|
|
src/ripple/unity/resource.cpp)
|
|
|
|
add_with_props(rippled_src_all ${cursrc}
|
|
${rocks_db_system_header}
|
|
)
|
|
|
|
endforeach()
|
|
|
|
if (NOT is_msvc)
|
|
set(extra_props -Wno-array-bounds)
|
|
else()
|
|
unset(extra_props)
|
|
endif()
|
|
|
|
add_with_props(rippled_src_all src/sqlite/sqlite_unity.c
|
|
${extra_props})
|
|
|
|
add_with_props(rippled_src_all src/ripple/unity/ed25519_donna.c
|
|
-I"${CMAKE_SOURCE_DIR}/"src/ed25519-donna)
|
|
|
|
if (is_gcc)
|
|
set(no_init_w -Wno-maybe-uninitialized)
|
|
else()
|
|
unset(no_init_w)
|
|
endif()
|
|
|
|
add_with_props(rippled_src_all src/ripple/unity/rocksdb.cpp
|
|
-I"${CMAKE_SOURCE_DIR}/"src/rocksdb2
|
|
-I"${CMAKE_SOURCE_DIR}/"src/rocksdb2/include
|
|
-I"${CMAKE_SOURCE_DIR}/"src/snappy/snappy
|
|
-I"${CMAKE_SOURCE_DIR}/"src/snappy/config
|
|
${no_init_w} ${rocks_db_system_header})
|
|
|
|
if (NOT is_msvc)
|
|
set(no_unused_w -Wno-unused-function)
|
|
endif()
|
|
|
|
add_with_props(rippled_src_all src/ripple/unity/snappy.cpp
|
|
-I"${CMAKE_SOURCE_DIR}/"src/snappy/snappy
|
|
-I"${CMAKE_SOURCE_DIR}/"src/snappy/config
|
|
${no_unused_w})
|
|
|
|
if (APPLE AND is_clang)
|
|
list(APPEND rippled_src_all src/ripple/unity/beastobjc.mm)
|
|
endif()
|
|
|
|
list(APPEND rippled_src_unity "${rippled_src_all}")
|
|
list(APPEND rippled_src_nonunity "${rippled_src_all}")
|
|
|
|
############################################################
|
|
|
|
if (WIN32 OR is_xcode)
|
|
group_sources(src)
|
|
group_sources(docs)
|
|
group_sources(Builds)
|
|
endif()
|
|
|
|
if(unity)
|
|
add_executable(rippled ${rippled_src_unity} ${PROTO_HDRS})
|
|
add_executable(rippled_classic EXCLUDE_FROM_ALL ${rippled_src_nonunity} ${PROTO_HDRS})
|
|
set(other_target rippled_classic)
|
|
else()
|
|
add_executable(rippled ${rippled_src_nonunity} ${PROTO_HDRS})
|
|
add_executable(rippled_unity EXCLUDE_FROM_ALL ${rippled_src_unity} ${PROTO_HDRS})
|
|
set(other_target rippled_unity)
|
|
endif()
|
|
list(APPEND targets "rippled")
|
|
list(APPEND targets ${other_target})
|
|
# Not the same as EXCLUDE_FROM_ALL. Prevents Visual Studio from building the
|
|
# other_target when the user builds the solution (default when pressing <F7>)
|
|
set_property(TARGET ${other_target} PROPERTY EXCLUDE_FROM_DEFAULT_BUILD true)
|
|
|
|
find_program(
|
|
B2_EXE
|
|
NAMES b2
|
|
HINTS ${BOOST_ROOT}
|
|
PATHS ${BOOST_ROOT}
|
|
DOC "Location of the b2 build executable from Boost")
|
|
if(${B2_EXE} STREQUAL "B2_EXE-NOTFOUND")
|
|
message(WARNING
|
|
"Boost b2 executable not found. docs target will not be buildable")
|
|
elseif(NOT BOOST_ROOT)
|
|
if(Boost_INCLUDE_DIRS)
|
|
set(BOOST_ROOT ${Boost_INCLUDE_DIRS})
|
|
else()
|
|
get_filename_component(BOOST_ROOT ${B2_EXE} DIRECTORY)
|
|
endif()
|
|
endif()
|
|
# The value for BOOST_ROOT will be determined based on
|
|
# 1) The environment BOOST_ROOT
|
|
# 2) The Boost_INCLUDE_DIRS found by `get_boost`
|
|
# 3) The folder the `b2` executable is found in.
|
|
# If those checks don't yield the correct path, BOOST_ROOT
|
|
# can be defined on the cmake command line:
|
|
# cmake <path> -DBOOST_ROOT=<boost_path>
|
|
if(BOOST_ROOT)
|
|
set(B2_PARAMS "-sBOOST_ROOT=${BOOST_ROOT}")
|
|
endif()
|
|
|
|
# Find bash to help Windows avoid file association problems
|
|
find_program(
|
|
BASH_EXE
|
|
NAMES bash sh
|
|
DOC "Location of the bash shell executable"
|
|
)
|
|
if(${BASH_EXE} STREQUAL "BASH_EXE-NOTFOUND")
|
|
message(WARNING
|
|
"Unable to find bash executable. docs target may not be buildable")
|
|
set(BASH_EXE "")
|
|
endif()
|
|
|
|
add_custom_target(docs
|
|
COMMAND ${CMAKE_COMMAND} -E env "PATH=$ENV{PATH} " ${BASH_EXE} ./makeqbk.sh
|
|
COMMAND ${B2_EXE} ${B2_PARAMS}
|
|
BYPRODUCTS "${CMAKE_SOURCE_DIR}/docs/html/index.html"
|
|
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}/docs"
|
|
SOURCES "${doc_srcs}"
|
|
)
|
|
|
|
set_startup_project(rippled)
|
|
|
|
foreach(target IN LISTS targets)
|
|
target_link_libraries(${target}
|
|
${OPENSSL_LIBRARIES} ${PROTOBUF_LIBRARIES} ${SANITIZER_LIBRARIES})
|
|
|
|
link_common_libraries(${target})
|
|
endforeach()
|
|
|
|
if (NOT CMAKE_SIZEOF_VOID_P EQUAL 8)
|
|
message(WARNING "Rippled requires a 64 bit target architecture.\n"
|
|
"The most likely cause of this warning is trying to build rippled with a 32-bit OS.")
|
|
endif()
|