mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
b02bfa754 Tag open source release 1.1.7.
824e6718b Add a loop alignment directive to work around a performance regression.
55924d110 Add GNUInstallDirs to CMake configuration.
632cd0f12 Use 64-bit optimized code path for ARM64.
77c12adc1 Add unistd.h checks back to the CMake build.
c8049c582 Replace getpagesize() with sysconf(_SC_PAGESIZE).
18e2f220d Add guidelines for opensource contributions.
f0d3237c3 Use _BitScanForward and _BitScanReverse on MSVC.
71b8f8688 Add SNAPPY_ prefix to PREDICT_{TRUE,FALSE} macros.
be6dc3db8 Redo CMake configuration.
e4de6ce08 Small improvements to open source CI configuration.
c756f7f5d Support both static and shared library CMake builds.
038a3329b Inline DISALLOW_COPY_AND_ASSIGN.
a8b239c3d snappy: Remove autoconf build configuration.
27671c6ae Clean up CMake header and type checks.
548501c98 zippy: Re-release snappy 1.1.5 as 1.1.6.
513df5fb5 Tag open source release 1.1.5.
5bc9c82ae Set minimum CMake version to 3.1.
e9720a001 Update Travis CI config, add AppVeyor for Windows CI coverage.
f24f9d2d9 Explicitly copy internal::wordmask to the stack array to work around a compiler optimization with LLVM that converts const stack arrays to global arrays. This is a temporary change and should be reverted when https://reviews.llvm.org/D30759 is fixed.
82deffcde Remove benchmarking support for fastlz.
18488d621 Use 64 bit little endian on ppc64le.
7b9532b87 Improve the SSE2 macro check on Windows.
7dadceea5 Check for the existence of sys/uio.h in autoconf build.
83179dd8b Remove quicklz and lzf support in benchmarks.
c8131680d Provide a CMakeLists.txt.
ed3b7b242 Clean up unused function warnings in snappy.
8b60aac4f Remove "using namespace std;" from zippy-stubs-internal.h.
7d7a8ec80 Add Travis CI configuration to snappy and fix the make build.
1cd3ab02e Rename README to README.md. It already in markdown, we might as well let github know so that it renders nicely.
597fa795d Delete UnalignedCopy64 from snappy-stubs since the version in snappy.cc is more robust and possibly faster (assuming the compiler knows how to best copy 8 bytes between locations in memory the fastest way possible - a rather safe bet).
039b3a7ac Add std:: prefix to STL non-type names.
3c706d223 Make UnalignedCopy64 not exhibit undefined behavior when src and dst overlap.
d3c6d20d0 Add compression size reporting hooks.
626e1b9fa Use #ifdef __SSE2__ for the emmintrin.h include, otherwise snappy.cc does not compile with -march=prescott.
2d99bd14d 1.1.4 release.
8bfb028b6 Improve zippy decompression speed.
818b58338 adds std:: to stl types (#061)
27c5d8652 Re-work fast path for handling copies in zippy decompression.
4a7409408 Speed up Zippy decompression in PIE mode by removing the penalty for global array access.
38a5ec5fc Re-work fast path that emits copies in zippy compression.
094c67de8 Speed up the EmitLiteral fast path, +1.62% for ZFlat benchmarks.
fce661fa8 Speed up zippy decompression by removing some zero-extensions.
e788e527d Avoid calling memset when resizing the buffer.
32d6d7d8a Merge pull request #6 from deviance/provide-pkg-config-data
971613510 Add #ifdef to guard against macro redefinition if this is included in another Google project that also defines this.
0000f997d Merge pull request #13 from huachaohuang/patch-1
d53de1879 Make heuristic match skipping more aggressive.
2b9152d9c Default to glibtoolize instead of libtoolize if it exists, and also make it customizable through the environment variable $LIBTOOLIZE.
0800b1e4c Work around an issue where some compilers interpret <:: as a trigraph. Also correct the namespace name.
e7d2818d1 Unbreak the open-source build for ARM due to missing ATTRIBUTE_PACKED declaration.
7525a1600 Fix an issue where the ByteSource path (used for parsing std::string) would incorrectly accept some invalid varints that the other path would not, causing potential CHECK-failures if the unit test were run with --write_uncompressed and a corrupted input file.
ef5598aa0 Make UNALIGNED_LOAD16/32 on ARMv7 go through an explicitly unaligned struct, to avoid the compiler coalescing multiple loads into a single load instruction (which only work for aligned accesses).
b8cd908a8 Allow to compile in nested packages.
96a2e340f Update URLs in the Snappy README to reflect the move to GitHub.
0852af760 Move the logic from ComputeTable into the unit test, which means it's run automatically together with the other tests, and also removes the stray function ComputeTable() (which was never referenced by anything else in the open-source version, causing compiler warnings for some) out of the core library.
d80342922 Fix signed-vs.-unsigned comparison warnings.
d2cb73b6a Provide pkg-config data
efb39e81b Release Snappy 1.1.3; getting the new Uncompress variant in a release is nice, and it's also good to finally get an official release out after the migration to GitHub.
eb66d8176 Initialized members of SnappyArrayWriter and SnappyDecompressionValidator. These members were almost surely initialized before use by other member functions, but Coverity was warning about this. Eliminating these warnings minimizes clutter in that report and the likelihood of overlooking a real bug.
b2312c4c2 Add support for Uncompress(source, sink). Various changes to allow Uncompress(source, sink) to get the same performance as the different variants of Uncompress to Cord/DataBuffer/String/FlatBuffer.
b2ad96006 Changes to eliminate compiler warnings on MSVC
e7a897e18 Fixed unit tests to compile under MSVC.
86eb8b152 Change a few branch annotations that profiling found to be wrong. Overall performance is neutral or slightly positive.
11ccdfb86 Sync with various Google-internal changes.
22acaf438 Change some internal path names.
git-subtree-dir: src/snappy/snappy
git-subtree-split: b02bfa754ebf27921d8da3bd2517eab445b84ff9
543 lines
15 KiB
CMake
543 lines
15 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)
|
|
# * jemalloc enabled builds (linux and macos only)
|
|
# * perf builds (linux only) - which just sets recommended compiler flags
|
|
# for running perf on the executable
|
|
#
|
|
# Notes:
|
|
# * Use the -G"Visual Studio 14 2015 Win64" generator, or the "VS2015 x86 x64
|
|
# Cross Tools" Command Prompt 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.
|
|
#
|
|
# * Ninja command line builds seem to work under Windows, but only from within
|
|
# the "VS2015 x86 x64 Cross Tools" Command Prompt.
|
|
#
|
|
# * 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 solution will be generated with two projects, one
|
|
# unity, one non-unity. Which is default depends on the nounity flag in
|
|
# -Dtarget. Unity targets will create `rippled` and `rippled_classic`.
|
|
# Non-unity targets will create `rippled` and `rippled_unity`. In either
|
|
# case, only the `rippled` build will be enabled by default. It does
|
|
# not appear possible to include both unity and non-unity configs in one
|
|
# project and 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_C_COMPILER and CMAKE_CXX_COMPILER must be defined
|
|
# before the project statement; However, the project
|
|
# statement will clear CMAKE_BUILD_TYPE. CACHE variables,
|
|
# along with the order of this code, are used to work
|
|
# around these constraints.
|
|
#
|
|
# Don't put any code above or in this block, unless it
|
|
# has similar constraints.
|
|
cmake_minimum_required(VERSION 3.1.0)
|
|
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/Builds/CMake")
|
|
include(CMakeFuncs)
|
|
set(openssl_min 1.0.2)
|
|
parse_target()
|
|
project(rippled)
|
|
#########################################################
|
|
|
|
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()
|
|
|
|
setup_build_cache()
|
|
|
|
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_consensus.cpp
|
|
app_ledger.cpp
|
|
app_ledger_impl.cpp
|
|
app_main1.cpp
|
|
app_main2.cpp
|
|
app_misc.cpp
|
|
app_misc_impl.cpp
|
|
app_paths.cpp
|
|
app_tx.cpp
|
|
conditions.cpp
|
|
consensus.cpp
|
|
core.cpp
|
|
basics.cpp
|
|
crypto.cpp
|
|
ledger.cpp
|
|
net.cpp
|
|
overlay1.cpp
|
|
overlay2.cpp
|
|
peerfinder.cpp
|
|
json.cpp
|
|
protocol.cpp
|
|
rpcx1.cpp
|
|
rpcx2.cpp
|
|
shamap.cpp
|
|
server.cpp)
|
|
|
|
prepend(test_unity_srcs
|
|
src/test/unity/
|
|
app_test_unity1.cpp
|
|
app_test_unity2.cpp
|
|
basics_test_unity.cpp
|
|
beast_test_unity1.cpp
|
|
beast_test_unity2.cpp
|
|
conditions_test_unity.cpp
|
|
consensus_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
|
|
server_status_test_unity.cpp
|
|
shamap_test_unity.cpp
|
|
jtx_unity1.cpp
|
|
jtx_unity2.cpp
|
|
csf_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
|
|
consensus
|
|
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
|
|
consensus
|
|
core
|
|
csf
|
|
json
|
|
jtx
|
|
ledger
|
|
nodestore
|
|
overlay
|
|
peerfinder
|
|
protocol
|
|
resource
|
|
rpc
|
|
server
|
|
shamap
|
|
unit_test)
|
|
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 *.md)
|
|
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
|
|
consensus.qbk
|
|
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()
|