mirror of
https://github.com/XRPLF/rippled.git
synced 2025-11-20 19:15:54 +00:00
Refactor/modernize our cmake:
Switch to target-oriented dependencies. Use imported targets for dependencies (openssl, boost). Localize FindBoost to remove cmake version dependence for latest boost support. Logically separate "ripple-libpp" core sources and add install targets. Add ninja build for msvc. Add two clang sanitizer builds. Misc script changes to work with latest modernized cmake.
This commit is contained in:
committed by
Nik Bougalis
parent
63370b4441
commit
37d9544ef7
@@ -1,31 +1,6 @@
|
|||||||
# This is a set of common functions and settings for rippled
|
|
||||||
# and derived products.
|
|
||||||
|
|
||||||
############################################################
|
|
||||||
|
|
||||||
cmake_minimum_required(VERSION 3.1.0)
|
|
||||||
|
|
||||||
if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
|
|
||||||
message(WARNING "Builds are strongly discouraged in "
|
|
||||||
"${CMAKE_SOURCE_DIR}.")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
## "target" parsing..DEPRECATED and will be removed in future
|
||||||
macro(parse_target)
|
macro(parse_target)
|
||||||
|
|
||||||
if (NOT target OR target STREQUAL "default")
|
|
||||||
if (NOT CMAKE_BUILD_TYPE)
|
|
||||||
set(CMAKE_BUILD_TYPE Debug)
|
|
||||||
endif()
|
|
||||||
string(TOLOWER ${CMAKE_BUILD_TYPE} target)
|
|
||||||
if (APPLE)
|
|
||||||
set(target clang.${target})
|
|
||||||
elseif(WIN32)
|
|
||||||
set(target msvc)
|
|
||||||
else()
|
|
||||||
set(target gcc.${target})
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (target)
|
if (target)
|
||||||
# Parse the target
|
# Parse the target
|
||||||
set(remaining ${target})
|
set(remaining ${target})
|
||||||
@@ -76,12 +51,10 @@ macro(parse_target)
|
|||||||
|
|
||||||
if (${cur_component} STREQUAL unity)
|
if (${cur_component} STREQUAL unity)
|
||||||
set(unity true)
|
set(unity true)
|
||||||
set(nonunity false)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (${cur_component} STREQUAL nounity)
|
if (${cur_component} STREQUAL nounity)
|
||||||
set(unity false)
|
set(unity false)
|
||||||
set(nonunity true)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (${cur_component} STREQUAL debug)
|
if (${cur_component} STREQUAL debug)
|
||||||
@@ -100,14 +73,6 @@ macro(parse_target)
|
|||||||
if (${cur_component} STREQUAL profile)
|
if (${cur_component} STREQUAL profile)
|
||||||
set(profile true)
|
set(profile true)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (${cur_component} STREQUAL ci)
|
|
||||||
# Workarounds that make various CI builds work, but that
|
|
||||||
# we don't want in the general case.
|
|
||||||
set(ci true)
|
|
||||||
set(openssl_min 1.0.1)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
endwhile()
|
endwhile()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -116,109 +81,15 @@ macro(parse_target)
|
|||||||
message(FATAL_ERROR "Can not find appropriate compiler for target ${target}")
|
message(FATAL_ERROR "Can not find appropriate compiler for target ${target}")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# If defined, promote the compiler path values to the CACHE, then
|
|
||||||
# unset the locals to prevent shadowing. Some scenarios do not
|
|
||||||
# need or want to find a compiler, such as -GNinja under Windows.
|
|
||||||
# Setting these values in those case may prevent CMake from finding
|
|
||||||
# a valid compiler.
|
|
||||||
if (CMAKE_C_COMPILER)
|
|
||||||
set(CMAKE_C_COMPILER ${CMAKE_C_COMPILER} CACHE FILEPATH
|
|
||||||
"Path to a program" FORCE)
|
|
||||||
unset(CMAKE_C_COMPILER)
|
|
||||||
endif (CMAKE_C_COMPILER)
|
|
||||||
if (CMAKE_CXX_COMPILER)
|
|
||||||
set(CMAKE_CXX_COMPILER ${CMAKE_CXX_COMPILER} CACHE FILEPATH
|
|
||||||
"Path to a program" FORCE)
|
|
||||||
unset(CMAKE_CXX_COMPILER)
|
|
||||||
endif (CMAKE_CXX_COMPILER)
|
|
||||||
|
|
||||||
if (release)
|
if (release)
|
||||||
set(CMAKE_BUILD_TYPE Release)
|
set(CMAKE_BUILD_TYPE Release)
|
||||||
else()
|
else()
|
||||||
set(CMAKE_BUILD_TYPE Debug)
|
set(CMAKE_BUILD_TYPE Debug)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# ensure that the unity flags are set and exclusive
|
|
||||||
if (NOT DEFINED unity OR unity)
|
|
||||||
# Default to unity builds
|
|
||||||
set(unity true)
|
|
||||||
set(nonunity false)
|
|
||||||
else()
|
|
||||||
set(unity false)
|
|
||||||
set(nonunity true)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (NOT unity)
|
|
||||||
set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE}Classic)
|
|
||||||
endif()
|
|
||||||
# Promote this value to the CACHE, then unset the local
|
|
||||||
# to prevent shadowing.
|
|
||||||
set(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE INTERNAL
|
|
||||||
"Choose the type of build, options are in CMAKE_CONFIGURATION_TYPES"
|
|
||||||
FORCE)
|
|
||||||
unset(CMAKE_BUILD_TYPE)
|
|
||||||
|
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
############################################################
|
############################################################
|
||||||
|
|
||||||
macro(setup_build_cache)
|
|
||||||
set(san "" CACHE STRING "On gcc & clang, add sanitizer
|
|
||||||
instrumentation")
|
|
||||||
set_property(CACHE san PROPERTY STRINGS ";address;thread")
|
|
||||||
set(assert false CACHE BOOL "Enables asserts, even in release builds")
|
|
||||||
set(static false CACHE BOOL
|
|
||||||
"On linux, link protobuf, openssl, libc++, and boost statically")
|
|
||||||
set(jemalloc false CACHE BOOL "Enables jemalloc for heap profiling")
|
|
||||||
set(perf false CACHE BOOL "Enables flags that assist with perf recording")
|
|
||||||
|
|
||||||
if (static AND (WIN32 OR APPLE))
|
|
||||||
message(FATAL_ERROR "Static linking is only supported on linux.")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (perf AND (WIN32 OR APPLE))
|
|
||||||
message(FATAL_ERROR "perf flags are only supported on linux.")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (${CMAKE_GENERATOR} STREQUAL "Unix Makefiles" AND NOT CMAKE_BUILD_TYPE)
|
|
||||||
set(CMAKE_BUILD_TYPE Debug)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Can't exclude files from configurations, so can't support both
|
|
||||||
# unity and nonunity configurations at the same time
|
|
||||||
if (NOT DEFINED unity OR unity)
|
|
||||||
set(CMAKE_CONFIGURATION_TYPES
|
|
||||||
Debug
|
|
||||||
Release)
|
|
||||||
else()
|
|
||||||
set(CMAKE_CONFIGURATION_TYPES
|
|
||||||
DebugClassic
|
|
||||||
ReleaseClassic)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Promote this value to the CACHE, then unset the local
|
|
||||||
# to prevent shadowing.
|
|
||||||
set(CMAKE_CONFIGURATION_TYPES
|
|
||||||
${CMAKE_CONFIGURATION_TYPES} CACHE STRING "" FORCE)
|
|
||||||
unset(CMAKE_CONFIGURATION_TYPES)
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
############################################################
|
|
||||||
|
|
||||||
function(prepend var prefix)
|
|
||||||
set(listVar "")
|
|
||||||
foreach(f ${ARGN})
|
|
||||||
list(APPEND listVar "${prefix}${f}")
|
|
||||||
endforeach(f)
|
|
||||||
set(${var} "${listVar}" PARENT_SCOPE)
|
|
||||||
endfunction()
|
|
||||||
|
|
||||||
macro(append_flags name)
|
|
||||||
foreach (arg ${ARGN})
|
|
||||||
set(${name} "${${name}} ${arg}")
|
|
||||||
endforeach()
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
macro(group_sources_in source_dir curdir)
|
macro(group_sources_in source_dir curdir)
|
||||||
file(GLOB children RELATIVE ${source_dir}/${curdir}
|
file(GLOB children RELATIVE ${source_dir}/${curdir}
|
||||||
${source_dir}/${curdir}/*)
|
${source_dir}/${curdir}/*)
|
||||||
@@ -237,637 +108,3 @@ macro(group_sources curdir)
|
|||||||
group_sources_in(${PROJECT_SOURCE_DIR} ${curdir})
|
group_sources_in(${PROJECT_SOURCE_DIR} ${curdir})
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
||||||
macro(add_with_props src_var files)
|
|
||||||
list(APPEND ${src_var} ${files})
|
|
||||||
foreach (arg ${ARGN})
|
|
||||||
set(props "${props} ${arg}")
|
|
||||||
endforeach()
|
|
||||||
set_source_files_properties(
|
|
||||||
${files}
|
|
||||||
PROPERTIES COMPILE_FLAGS
|
|
||||||
${props})
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
############################################################
|
|
||||||
|
|
||||||
macro(determine_build_type)
|
|
||||||
if ("${CMAKE_CXX_COMPILER_ID}" MATCHES ".*Clang") # both Clang and AppleClang
|
|
||||||
set(is_clang true)
|
|
||||||
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
|
||||||
set(is_gcc true)
|
|
||||||
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
|
||||||
set(is_msvc true)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (${CMAKE_GENERATOR} STREQUAL "Xcode")
|
|
||||||
set(is_xcode true)
|
|
||||||
else()
|
|
||||||
set(is_xcode false)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (NOT is_gcc AND NOT is_clang AND NOT is_msvc)
|
|
||||||
message("Current compiler is ${CMAKE_CXX_COMPILER_ID}")
|
|
||||||
message(FATAL_ERROR "Missing compiler. Must be GNU, Clang, or MSVC")
|
|
||||||
endif()
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
############################################################
|
|
||||||
|
|
||||||
macro(check_gcc4_abi)
|
|
||||||
# Check if should use gcc4's ABI
|
|
||||||
set(gcc4_abi false)
|
|
||||||
|
|
||||||
if ($ENV{RIPPLED_OLD_GCC_ABI})
|
|
||||||
set(gcc4_abi true)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (is_gcc AND NOT gcc4_abi)
|
|
||||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5)
|
|
||||||
execute_process(COMMAND lsb_release -si OUTPUT_VARIABLE lsb)
|
|
||||||
string(STRIP "${lsb}" lsb)
|
|
||||||
if ("${lsb}" STREQUAL "Ubuntu")
|
|
||||||
execute_process(COMMAND lsb_release -sr OUTPUT_VARIABLE lsb)
|
|
||||||
string(STRIP ${lsb} lsb)
|
|
||||||
if (${lsb} VERSION_LESS 15.1)
|
|
||||||
set(gcc4_abi true)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (gcc4_abi)
|
|
||||||
add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
|
|
||||||
endif()
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
############################################################
|
|
||||||
|
|
||||||
macro(special_build_flags)
|
|
||||||
if (coverage)
|
|
||||||
add_compile_options(-fprofile-arcs -ftest-coverage)
|
|
||||||
append_flags(CMAKE_EXE_LINKER_FLAGS -fprofile-arcs -ftest-coverage)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (profile)
|
|
||||||
add_compile_options(-p -pg)
|
|
||||||
append_flags(CMAKE_EXE_LINKER_FLAGS -p -pg)
|
|
||||||
endif()
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
############################################################
|
|
||||||
|
|
||||||
# Params: Boost components to search for.
|
|
||||||
macro(use_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(CMAKE_SIZEOF_VOID_P EQUAL 8 AND IS_DIRECTORY ${BOOST_ROOT}/stage64/lib)
|
|
||||||
set(Boost_LIBRARY_DIR ${BOOST_ROOT}/stage64/lib)
|
|
||||||
else()
|
|
||||||
set(Boost_LIBRARY_DIR ${BOOST_ROOT}/stage/lib)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (is_clang AND DEFINED ENV{CLANG_BOOST_ROOT})
|
|
||||||
set(BOOST_ROOT $ENV{CLANG_BOOST_ROOT})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# 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 OR APPLE)
|
|
||||||
set(Boost_USE_STATIC_LIBS on)
|
|
||||||
endif()
|
|
||||||
set(Boost_USE_MULTITHREADED on)
|
|
||||||
set(Boost_USE_STATIC_RUNTIME off)
|
|
||||||
if(MSVC)
|
|
||||||
find_package(Boost REQUIRED)
|
|
||||||
else()
|
|
||||||
find_package(Boost REQUIRED ${ARGN})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (Boost_FOUND OR
|
|
||||||
((CYGWIN OR WIN32) AND Boost_INCLUDE_DIRS AND Boost_LIBRARY_DIRS))
|
|
||||||
if(NOT Boost_FOUND)
|
|
||||||
message(WARNING "Boost directory found, but not all components. May not be able to build.")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(Boost_VERSION VERSION_LESS 106700)
|
|
||||||
message(FATAL_ERROR "Boost version 1.67 or greater is required for boost::beast. Found version: ${Boost_VERSION}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (is_xcode)
|
|
||||||
include_directories(BEFORE ${Boost_INCLUDE_DIRS})
|
|
||||||
append_flags(CMAKE_CXX_FLAGS --system-header-prefix="boost/")
|
|
||||||
else()
|
|
||||||
include_directories(SYSTEM ${Boost_INCLUDE_DIRS})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(MSVC)
|
|
||||||
link_directories(${Boost_LIBRARY_DIRS})
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
message(FATAL_ERROR "Boost not found")
|
|
||||||
endif()
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
macro(use_pthread)
|
|
||||||
if (NOT WIN32)
|
|
||||||
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
|
||||||
find_package(Threads)
|
|
||||||
add_compile_options(${CMAKE_THREAD_LIBS_INIT})
|
|
||||||
endif()
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
macro(use_openssl openssl_min)
|
|
||||||
if (APPLE AND NOT DEFINED ENV{OPENSSL_ROOT_DIR})
|
|
||||||
find_program(HOMEBREW brew)
|
|
||||||
if (NOT HOMEBREW STREQUAL "HOMEBREW-NOTFOUND")
|
|
||||||
execute_process(COMMAND brew --prefix openssl
|
|
||||||
OUTPUT_VARIABLE OPENSSL_ROOT_DIR
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (WIN32)
|
|
||||||
if ((NOT DEFINED OPENSSL_ROOT) AND (DEFINED ENV{OPENSSL_ROOT}))
|
|
||||||
set(OPENSSL_ROOT $ENV{OPENSSL_ROOT})
|
|
||||||
endif()
|
|
||||||
file(TO_CMAKE_PATH "${OPENSSL_ROOT}" OPENSSL_ROOT)
|
|
||||||
if (DEFINED OPENSSL_ROOT)
|
|
||||||
include_directories(${OPENSSL_ROOT}/include)
|
|
||||||
link_directories(${OPENSSL_ROOT}/lib)
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
if (static)
|
|
||||||
set(tmp CMAKE_FIND_LIBRARY_SUFFIXES)
|
|
||||||
set(CMAKE_FIND_LIBRARY_SUFFIXES .a)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_package(OpenSSL)
|
|
||||||
# depending on how openssl is built, it might depend
|
|
||||||
# on zlib. In fact, the openssl find package should
|
|
||||||
# figure this out for us, but it does not currently...
|
|
||||||
# so let's add zlib ourselves to the lib list
|
|
||||||
find_package(ZLIB)
|
|
||||||
|
|
||||||
if (static)
|
|
||||||
set(CMAKE_FIND_LIBRARY_SUFFIXES tmp)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (OPENSSL_FOUND)
|
|
||||||
include_directories(${OPENSSL_INCLUDE_DIR})
|
|
||||||
list(APPEND OPENSSL_LIBRARIES ${ZLIB_LIBRARIES})
|
|
||||||
else()
|
|
||||||
message(FATAL_ERROR "OpenSSL not found")
|
|
||||||
endif()
|
|
||||||
if (UNIX AND NOT APPLE AND ${OPENSSL_VERSION} VERSION_LESS ${openssl_min})
|
|
||||||
message(FATAL_ERROR
|
|
||||||
"Your openssl is Version: ${OPENSSL_VERSION}, ${openssl_min} or better is required.")
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
macro(use_protobuf)
|
|
||||||
if (WIN32)
|
|
||||||
if (DEFINED ENV{PROTOBUF_ROOT})
|
|
||||||
include_directories($ENV{PROTOBUF_ROOT}/src)
|
|
||||||
link_directories($ENV{PROTOBUF_ROOT}/src/.libs)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Modified from FindProtobuf.cmake
|
|
||||||
FUNCTION(PROTOBUF_GENERATE_CPP SRCS HDRS PROTOFILES)
|
|
||||||
# argument parsing
|
|
||||||
IF(NOT PROTOFILES)
|
|
||||||
MESSAGE(SEND_ERROR "Error: PROTOBUF_GENERATE_CPP() called without any proto files")
|
|
||||||
RETURN()
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
SET(OUTPATH ${CMAKE_CURRENT_BINARY_DIR})
|
|
||||||
SET(PROTOROOT ${CMAKE_CURRENT_SOURCE_DIR})
|
|
||||||
# the real logic
|
|
||||||
SET(${SRCS})
|
|
||||||
SET(${HDRS})
|
|
||||||
FOREACH(PROTOFILE ${PROTOFILES})
|
|
||||||
# ensure that the file ends with .proto
|
|
||||||
STRING(REGEX MATCH "\\.proto$$" PROTOEND ${PROTOFILE})
|
|
||||||
IF(NOT PROTOEND)
|
|
||||||
MESSAGE(SEND_ERROR "Proto file '${PROTOFILE}' does not end with .proto")
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
GET_FILENAME_COMPONENT(PROTO_PATH ${PROTOFILE} PATH)
|
|
||||||
GET_FILENAME_COMPONENT(ABS_FILE ${PROTOFILE} ABSOLUTE)
|
|
||||||
GET_FILENAME_COMPONENT(FILE_WE ${PROTOFILE} NAME_WE)
|
|
||||||
|
|
||||||
STRING(REGEX MATCH "^${PROTOROOT}" IN_ROOT_PATH ${PROTOFILE})
|
|
||||||
STRING(REGEX MATCH "^${PROTOROOT}" IN_ROOT_ABS_FILE ${ABS_FILE})
|
|
||||||
|
|
||||||
IF(IN_ROOT_PATH)
|
|
||||||
SET(MATCH_PATH ${PROTOFILE})
|
|
||||||
ELSEIF(IN_ROOT_ABS_FILE)
|
|
||||||
SET(MATCH_PATH ${ABS_FILE})
|
|
||||||
ELSE()
|
|
||||||
MESSAGE(SEND_ERROR "Proto file '${PROTOFILE}' is not in protoroot '${PROTOROOT}'")
|
|
||||||
ENDIF()
|
|
||||||
|
|
||||||
# build the result file name
|
|
||||||
STRING(REGEX REPLACE "^${PROTOROOT}(/?)" "" ROOT_CLEANED_FILE ${MATCH_PATH})
|
|
||||||
STRING(REGEX REPLACE "\\.proto$$" "" EXT_CLEANED_FILE ${ROOT_CLEANED_FILE})
|
|
||||||
|
|
||||||
SET(CPP_FILE "${OUTPATH}/${EXT_CLEANED_FILE}.pb.cc")
|
|
||||||
SET(H_FILE "${OUTPATH}/${EXT_CLEANED_FILE}.pb.h")
|
|
||||||
|
|
||||||
LIST(APPEND ${SRCS} "${CPP_FILE}")
|
|
||||||
LIST(APPEND ${HDRS} "${H_FILE}")
|
|
||||||
|
|
||||||
ADD_CUSTOM_COMMAND(
|
|
||||||
OUTPUT "${CPP_FILE}" "${H_FILE}"
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${OUTPATH}
|
|
||||||
COMMAND ${PROTOBUF_PROTOC_EXECUTABLE}
|
|
||||||
ARGS "--cpp_out=${OUTPATH}" --proto_path "${PROTOROOT}" "${MATCH_PATH}"
|
|
||||||
DEPENDS ${ABS_FILE}
|
|
||||||
COMMENT "Running C++ protocol buffer compiler on ${MATCH_PATH} with root ${PROTOROOT}, generating: ${CPP_FILE}"
|
|
||||||
VERBATIM)
|
|
||||||
|
|
||||||
ENDFOREACH()
|
|
||||||
|
|
||||||
SET_SOURCE_FILES_PROPERTIES(${${SRCS}} ${${HDRS}} PROPERTIES GENERATED TRUE)
|
|
||||||
SET(${SRCS} ${${SRCS}} PARENT_SCOPE)
|
|
||||||
SET(${HDRS} ${${HDRS}} PARENT_SCOPE)
|
|
||||||
|
|
||||||
ENDFUNCTION()
|
|
||||||
|
|
||||||
set(PROTOBUF_PROTOC_EXECUTABLE Protoc) # must be on path
|
|
||||||
else()
|
|
||||||
if (static)
|
|
||||||
set(tmp CMAKE_FIND_LIBRARY_SUFFIXES)
|
|
||||||
set(CMAKE_FIND_LIBRARY_SUFFIXES .a)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_package(Protobuf REQUIRED)
|
|
||||||
|
|
||||||
if (static)
|
|
||||||
set(CMAKE_FIND_LIBRARY_SUFFIXES tmp)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (is_clang AND DEFINED ENV{CLANG_PROTOBUF_ROOT})
|
|
||||||
link_directories($ENV{CLANG_PROTOBUF_ROOT}/src/.libs)
|
|
||||||
include_directories($ENV{CLANG_PROTOBUF_ROOT}/src)
|
|
||||||
else()
|
|
||||||
include_directories(${PROTOBUF_INCLUDE_DIRS})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (is_xcode)
|
|
||||||
append_flags(CMAKE_CXX_FLAGS --system-header-prefix="google/protobuf")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
endif()
|
|
||||||
include_directories(${CMAKE_CURRENT_BINARY_DIR})
|
|
||||||
|
|
||||||
file(GLOB ripple_proto src/ripple/proto/*.proto)
|
|
||||||
PROTOBUF_GENERATE_CPP(PROTO_SRCS PROTO_HDRS ${ripple_proto})
|
|
||||||
|
|
||||||
if (WIN32)
|
|
||||||
include_directories(src/protobuf/src
|
|
||||||
src/protobuf/vsprojects
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/src/ripple/proto)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
############################################################
|
|
||||||
|
|
||||||
macro(setup_build_boilerplate)
|
|
||||||
if (NOT WIN32 AND san)
|
|
||||||
add_compile_options(-fsanitize=${san} -fno-omit-frame-pointer)
|
|
||||||
|
|
||||||
append_flags(CMAKE_EXE_LINKER_FLAGS
|
|
||||||
-fsanitize=${san})
|
|
||||||
|
|
||||||
string(TOLOWER ${san} ci_san)
|
|
||||||
if (${ci_san} STREQUAL address)
|
|
||||||
if (is_gcc)
|
|
||||||
set(SANITIZER_LIBRARIES asan)
|
|
||||||
endif()
|
|
||||||
add_definitions(-DSANITIZER=ASAN)
|
|
||||||
endif()
|
|
||||||
if (${ci_san} STREQUAL thread)
|
|
||||||
if (is_gcc)
|
|
||||||
set(SANITIZER_LIBRARIES tsan)
|
|
||||||
endif()
|
|
||||||
add_definitions(-DSANITIZER=TSAN)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (perf)
|
|
||||||
add_compile_options(-fno-omit-frame-pointer)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
############################################################
|
|
||||||
|
|
||||||
add_definitions(
|
|
||||||
-DOPENSSL_NO_SSL2
|
|
||||||
-DDEPRECATED_IN_MAC_OS_X_VERSION_10_7_AND_LATER
|
|
||||||
-DHAVE_USLEEP=1
|
|
||||||
-DSOCI_HAVE_CXX_C11=1
|
|
||||||
-D_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS
|
|
||||||
-DBOOST_NO_AUTO_PTR
|
|
||||||
-DBOOST_BEAST_ALLOW_DEPRECATED
|
|
||||||
-DBOOST_ASIO_DISABLE_HANDLER_TYPE_REQUIREMENTS
|
|
||||||
)
|
|
||||||
|
|
||||||
# `ripple.pb.h`, generated from protobuf triggers some warnings
|
|
||||||
# Set the directory that file lives in as SYSTEM
|
|
||||||
include_directories(SYSTEM ${CMAKE_BINARY_DIR})
|
|
||||||
|
|
||||||
if (is_gcc)
|
|
||||||
add_compile_options(-Wno-unused-but-set-variable -Wno-deprecated)
|
|
||||||
append_flags(CMAKE_CXX_FLAGS -Wsuggest-override)
|
|
||||||
|
|
||||||
# use gold linker if available
|
|
||||||
execute_process(
|
|
||||||
COMMAND ${CMAKE_CXX_COMPILER} -fuse-ld=gold -Wl,--version
|
|
||||||
ERROR_QUIET OUTPUT_VARIABLE LD_VERSION)
|
|
||||||
# NOTE: THE gold linker inserts -rpath as DT_RUNPATH by default
|
|
||||||
# intead of DT_RPATH, so you might have slightly unexpected
|
|
||||||
# runtime ld behavior if you were expecting DT_RPATH.
|
|
||||||
# Specify --disable-new-dtags to gold if you do not want
|
|
||||||
# the default DT_RUNPATH behavior. This rpath treatment as well
|
|
||||||
# as static/dynamic selection means that gold does not currently
|
|
||||||
# have ideal default behavior when we are using jemalloc. Thus
|
|
||||||
# for simplicity we don't use it when jemalloc is requested.
|
|
||||||
# An alternative to disabling would be to figure out all the settings
|
|
||||||
# required to make gold play nicely with jemalloc.
|
|
||||||
if (("${LD_VERSION}" MATCHES "GNU gold") AND (NOT jemalloc))
|
|
||||||
append_flags(CMAKE_EXE_LINKER_FLAGS -fuse-ld=gold -Wl,--no-as-needed)
|
|
||||||
endif ()
|
|
||||||
unset(LD_VERSION)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Generator expressions are not supported in add_definitions, use set_property instead
|
|
||||||
set_property(
|
|
||||||
DIRECTORY
|
|
||||||
APPEND
|
|
||||||
PROPERTY COMPILE_DEFINITIONS
|
|
||||||
$<$<OR:$<CONFIG:Debug>,$<CONFIG:DebugClassic>>:DEBUG _DEBUG>)
|
|
||||||
|
|
||||||
if (NOT assert)
|
|
||||||
set_property(
|
|
||||||
DIRECTORY
|
|
||||||
APPEND
|
|
||||||
PROPERTY COMPILE_DEFINITIONS
|
|
||||||
$<$<OR:$<BOOL:${profile}>,$<CONFIG:Release>,$<CONFIG:ReleaseClassic>>:NDEBUG>)
|
|
||||||
else()
|
|
||||||
# CMAKE_CXX_FLAGS_RELEASE is created by CMake for most / all generators
|
|
||||||
# with defaults including /DNDEBUG or -DNDEBUG, and that value is stored
|
|
||||||
# in the cache. Override that locally so that the cache value will be
|
|
||||||
# avaiable if "assert" is ever changed.
|
|
||||||
STRING(REGEX REPLACE "[-/]DNDEBUG" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
|
|
||||||
STRING(REGEX REPLACE "[-/]DNDEBUG" "" CMAKE_CXX_FLAGS_RELEASECLASSIC "${CMAKE_CXX_FLAGS_RELEASECLASSIC}")
|
|
||||||
STRING(REGEX REPLACE "[-/]DNDEBUG" "" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
|
|
||||||
STRING(REGEX REPLACE "[-/]DNDEBUG" "" CMAKE_C_FLAGS_RELEASECLASSIC "${CMAKE_C_FLAGS_RELEASECLASSIC}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (jemalloc)
|
|
||||||
find_package(jemalloc REQUIRED)
|
|
||||||
add_definitions(-DPROFILE_JEMALLOC)
|
|
||||||
include_directories(SYSTEM ${JEMALLOC_INCLUDE_DIRS})
|
|
||||||
link_libraries(${JEMALLOC_LIBRARIES})
|
|
||||||
get_filename_component(JEMALLOC_LIB_PATH ${JEMALLOC_LIBRARIES} DIRECTORY)
|
|
||||||
set(CMAKE_BUILD_RPATH ${CMAKE_BUILD_RPATH} ${JEMALLOC_LIB_PATH})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (NOT WIN32)
|
|
||||||
add_definitions(-D_FILE_OFFSET_BITS=64)
|
|
||||||
append_flags(CMAKE_CXX_FLAGS -frtti -std=c++14 -Wno-invalid-offsetof -Wdeprecated -Wnon-virtual-dtor
|
|
||||||
-DBOOST_COROUTINE_NO_DEPRECATION_WARNING -DBOOST_COROUTINES_NO_DEPRECATION_WARNING)
|
|
||||||
add_compile_options(-Wall -Wno-sign-compare -Wno-char-subscripts -Wno-format
|
|
||||||
-Wno-unused-local-typedefs -g)
|
|
||||||
# There seems to be an issue using generator experssions with multiple values,
|
|
||||||
# split the expression
|
|
||||||
add_compile_options($<$<OR:$<CONFIG:Release>,$<CONFIG:ReleaseClassic>>:-O3>)
|
|
||||||
add_compile_options($<$<OR:$<CONFIG:Release>,$<CONFIG:ReleaseClassic>>:-fno-strict-aliasing>)
|
|
||||||
append_flags(CMAKE_EXE_LINKER_FLAGS -rdynamic -g)
|
|
||||||
|
|
||||||
if (is_clang)
|
|
||||||
add_compile_options(
|
|
||||||
-Wno-redeclared-class-member -Wno-mismatched-tags -Wno-deprecated-register)
|
|
||||||
add_definitions(-DBOOST_ASIO_HAS_STD_ARRAY)
|
|
||||||
|
|
||||||
# use ldd linker if available
|
|
||||||
execute_process(
|
|
||||||
COMMAND ${CMAKE_CXX_COMPILER} -fuse-ld=lld -Wl,--version
|
|
||||||
ERROR_QUIET OUTPUT_VARIABLE LD_VERSION)
|
|
||||||
if ("${LD_VERSION}" MATCHES "LLD")
|
|
||||||
append_flags(CMAKE_EXE_LINKER_FLAGS -fuse-ld=lld)
|
|
||||||
endif ()
|
|
||||||
unset(LD_VERSION)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (APPLE)
|
|
||||||
add_compile_options(
|
|
||||||
-Wno-deprecated-declarations -Wno-unused-function)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (is_gcc)
|
|
||||||
add_compile_options(-Wno-unused-but-set-variable -Wno-unused-local-typedefs)
|
|
||||||
add_compile_options($<$<OR:$<CONFIG:Debug>,$<CONFIG:DebugClassic>>:-O0>)
|
|
||||||
endif (is_gcc)
|
|
||||||
else(NOT WIN32)
|
|
||||||
add_compile_options(
|
|
||||||
/bigobj # Increase object file max size
|
|
||||||
/EHa # ExceptionHandling all
|
|
||||||
/fp:precise # Floating point behavior
|
|
||||||
/Gd # __cdecl calling convention
|
|
||||||
/Gm- # Minimal rebuild: disabled
|
|
||||||
/GR # Enable RTTI
|
|
||||||
/Gy- # Function level linking: disabled
|
|
||||||
/FS
|
|
||||||
/MP # Multiprocessor compilation
|
|
||||||
/openmp- # pragma omp: disabled
|
|
||||||
/Zc:forScope # Language conformance: for scope
|
|
||||||
/Zi # Generate complete debug info
|
|
||||||
/errorReport:none # No error reporting to Internet
|
|
||||||
/nologo # Suppress login banner
|
|
||||||
/W3 # Warning level 3
|
|
||||||
/WX- # Disable warnings as errors
|
|
||||||
/wd4018 # Disable signed/unsigned comparison warnings
|
|
||||||
/wd4244 # Disable float to int possible loss of data warnings
|
|
||||||
/wd4267 # Disable size_t to T possible loss of data warnings
|
|
||||||
/wd4800 # Disable C4800(int to bool performance)
|
|
||||||
/wd4503 # Decorated name length exceeded, name was truncated
|
|
||||||
)
|
|
||||||
add_definitions(
|
|
||||||
-D_WIN32_WINNT=0x6000
|
|
||||||
-D_SCL_SECURE_NO_WARNINGS
|
|
||||||
-D_CRT_SECURE_NO_WARNINGS
|
|
||||||
-DWIN32_CONSOLE
|
|
||||||
-DNOMINMAX
|
|
||||||
-DBOOST_COROUTINE_NO_DEPRECATION_WARNING
|
|
||||||
-DBOOST_COROUTINES_NO_DEPRECATION_WARNING)
|
|
||||||
append_flags(CMAKE_EXE_LINKER_FLAGS
|
|
||||||
/DEBUG
|
|
||||||
/DYNAMICBASE
|
|
||||||
/ERRORREPORT:NONE
|
|
||||||
/MACHINE:X64
|
|
||||||
/MANIFEST
|
|
||||||
/nologo
|
|
||||||
/NXCOMPAT
|
|
||||||
/SUBSYSTEM:CONSOLE
|
|
||||||
/TLBID:1)
|
|
||||||
|
|
||||||
|
|
||||||
# There seems to be an issue using generator experssions with multiple values,
|
|
||||||
# split the expression
|
|
||||||
# /GS Buffers security check: enable
|
|
||||||
add_compile_options($<$<OR:$<CONFIG:Debug>,$<CONFIG:DebugClassic>>:/GS>)
|
|
||||||
# /MTd Language: Multi-threaded Debug CRT
|
|
||||||
add_compile_options($<$<OR:$<CONFIG:Debug>,$<CONFIG:DebugClassic>>:/MTd>)
|
|
||||||
# /Od Optimization: Disabled
|
|
||||||
add_compile_options($<$<OR:$<CONFIG:Debug>,$<CONFIG:DebugClassic>>:/Od>)
|
|
||||||
# /RTC1 Run-time error checks:
|
|
||||||
add_compile_options($<$<OR:$<CONFIG:Debug>,$<CONFIG:DebugClassic>>:/RTC1>)
|
|
||||||
|
|
||||||
# Generator expressions are not supported in add_definitions, use set_property instead
|
|
||||||
set_property(
|
|
||||||
DIRECTORY
|
|
||||||
APPEND
|
|
||||||
PROPERTY COMPILE_DEFINITIONS
|
|
||||||
$<$<OR:$<CONFIG:Debug>,$<CONFIG:DebugClassic>>:_CRTDBG_MAP_ALLOC>)
|
|
||||||
|
|
||||||
# /MT Language: Multi-threaded CRT
|
|
||||||
add_compile_options($<$<OR:$<CONFIG:Release>,$<CONFIG:ReleaseClassic>>:/MT>)
|
|
||||||
add_compile_options($<$<OR:$<CONFIG:Release>,$<CONFIG:ReleaseClassic>>:/Ox>)
|
|
||||||
# /Ox Optimization: Full
|
|
||||||
|
|
||||||
endif (NOT WIN32)
|
|
||||||
|
|
||||||
if (static)
|
|
||||||
append_flags(CMAKE_EXE_LINKER_FLAGS -static-libstdc++)
|
|
||||||
# set_target_properties(ripple-libpp PROPERTIES LINK_SEARCH_START_STATIC 1)
|
|
||||||
# set_target_properties(ripple-libpp PROPERTIES LINK_SEARCH_END_STATIC 1)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
## The following options were migrated from the erstwhile BeastConfig.h
|
|
||||||
## Some of these should be considered for removal in the future if
|
|
||||||
## unused or unmaintained
|
|
||||||
|
|
||||||
# beast_no_unit_test_inline
|
|
||||||
# Prevents unit test definitions from being inserted into a global table
|
|
||||||
if (beast_no_unit_test_inline)
|
|
||||||
add_definitions(-DBEAST_NO_UNIT_TEST_INLINE=1)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# beast_force_debug
|
|
||||||
# Force BEAST_DEBUG behavior regardless of other compiler settings
|
|
||||||
if (beast_force_debug)
|
|
||||||
add_definitions(-DBEAST_FORCE_DEBUG=1)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# beast_check_mem_leaks
|
|
||||||
# Force BEAST_CHECK_MEMORY_LEAKS to be ON. Default is ON only for debug
|
|
||||||
# builds. Only implemeted for windows builds.
|
|
||||||
if (beast_check_mem_leaks)
|
|
||||||
add_definitions(-DBEAST_CHECK_MEMORY_LEAKS=1)
|
|
||||||
elseif(DEFINED beast_check_mem_leaks)
|
|
||||||
add_definitions(-DBEAST_CHECK_MEMORY_LEAKS=0)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (WIN32)
|
|
||||||
# beast_disable_auto_link
|
|
||||||
# Disables autolinking of system library dependencies on windows
|
|
||||||
if (beast_disable_auto_link)
|
|
||||||
add_definitions(-DBEAST_DONT_AUTOLINK_TO_WIN32_LIBRARIES=1)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# dump_leaks_on_exit
|
|
||||||
# Displays heap blocks and counted objects which were not disposed of
|
|
||||||
# during exit. Only implemented for windows builds.
|
|
||||||
if (DEFINED dump_leaks_on_exit AND NOT dump_leaks_on_exit)
|
|
||||||
add_definitions(-DRIPPLE_DUMP_LEAKS_ON_EXIT=0)
|
|
||||||
else ()
|
|
||||||
add_definitions(-DRIPPLE_DUMP_LEAKS_ON_EXIT=1)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# NOTE - THIS OPTION CURRENTLY DOES NOT COMPILE !!
|
|
||||||
# verify_nodeobject_keys
|
|
||||||
# This verifies that the hash of node objects matches the payload.
|
|
||||||
# This check is expensive - use with caution.
|
|
||||||
if (verify_nodeobject_keys)
|
|
||||||
add_definitions(-DRIPPLE_VERIFY_NODEOBJECT_KEYS=1)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# single_io_service_thread
|
|
||||||
# Restricts the number of threads calling io_service::run to one.
|
|
||||||
# This can be useful when debugging."
|
|
||||||
if (single_io_service_thread)
|
|
||||||
add_definitions(-DRIPPLE_SINGLE_IO_SERVICE_THREAD=1)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# use_rocksdb
|
|
||||||
# Controls whether or not the RocksDB database back-end is compiled into
|
|
||||||
# rippled. RocksDB requires a relatively modern C++ compiler (tested with
|
|
||||||
# gcc versions 4.8.1 and later) that supports some C++11 features. The
|
|
||||||
# default is ON for modern unix compilers and OFF for everything else.
|
|
||||||
if (use_rocksdb)
|
|
||||||
add_definitions(-DRIPPLE_ROCKSDB_AVAILABLE=1)
|
|
||||||
elseif(DEFINED use_rocksdb)
|
|
||||||
add_definitions(-DRIPPLE_ROCKSDB_AVAILABLE=0)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
############################################################
|
|
||||||
|
|
||||||
macro(create_build_folder cur_project)
|
|
||||||
if (NOT WIN32)
|
|
||||||
ADD_CUSTOM_TARGET(build_folder ALL
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}
|
|
||||||
COMMENT "Creating build output folder")
|
|
||||||
add_dependencies(${cur_project} build_folder)
|
|
||||||
endif()
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
macro(set_startup_project cur_project)
|
|
||||||
if (WIN32 AND NOT ci)
|
|
||||||
if (CMAKE_VERSION VERSION_LESS 3.6)
|
|
||||||
message(WARNING
|
|
||||||
"Setting the VS startup project requires cmake 3.6 or later. Please upgrade.")
|
|
||||||
endif()
|
|
||||||
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY
|
|
||||||
VS_STARTUP_PROJECT ${cur_project})
|
|
||||||
endif()
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
macro(link_common_libraries cur_project)
|
|
||||||
if (NOT MSVC)
|
|
||||||
target_link_libraries(${cur_project} ${Boost_LIBRARIES})
|
|
||||||
target_link_libraries(${cur_project} dl)
|
|
||||||
target_link_libraries(${cur_project} Threads::Threads)
|
|
||||||
if (APPLE)
|
|
||||||
find_library(app_kit AppKit)
|
|
||||||
find_library(foundation Foundation)
|
|
||||||
target_link_libraries(${cur_project}
|
|
||||||
${app_kit} ${foundation})
|
|
||||||
else()
|
|
||||||
target_link_libraries(${cur_project} rt)
|
|
||||||
endif()
|
|
||||||
else(NOT MSVC)
|
|
||||||
target_link_libraries(${cur_project}
|
|
||||||
$<$<OR:$<CONFIG:Debug>,$<CONFIG:DebugClassic>>:VC/static/ssleay32MTd>
|
|
||||||
$<$<OR:$<CONFIG:Debug>,$<CONFIG:DebugClassic>>:VC/static/libeay32MTd>)
|
|
||||||
target_link_libraries(${cur_project}
|
|
||||||
$<$<OR:$<CONFIG:Release>,$<CONFIG:ReleaseClassic>>:VC/static/ssleay32MT>
|
|
||||||
$<$<OR:$<CONFIG:Release>,$<CONFIG:ReleaseClassic>>:VC/static/libeay32MT>)
|
|
||||||
target_link_libraries(${cur_project}
|
|
||||||
legacy_stdio_definitions.lib Shlwapi kernel32 user32 gdi32 winspool comdlg32
|
|
||||||
advapi32 shell32 ole32 oleaut32 uuid odbc32 odbccp32 crypt32)
|
|
||||||
endif (NOT MSVC)
|
|
||||||
endmacro()
|
|
||||||
|
|||||||
2098
Builds/CMake/FindBoost.cmake
Normal file
2098
Builds/CMake/FindBoost.cmake
Normal file
File diff suppressed because it is too large
Load Diff
55
Builds/CMake/RippleConfig.cmake
Normal file
55
Builds/CMake/RippleConfig.cmake
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
include (CMakeFindDependencyMacro)
|
||||||
|
# need to represent system dependencies of the lib here
|
||||||
|
#[=========================================================[
|
||||||
|
Boost
|
||||||
|
#]=========================================================]
|
||||||
|
if (static OR APPLE OR MSVC)
|
||||||
|
set (Boost_USE_STATIC_LIBS ON)
|
||||||
|
endif ()
|
||||||
|
set (Boost_USE_MULTITHREADED ON)
|
||||||
|
if (static OR MSVC)
|
||||||
|
set (Boost_USE_STATIC_RUNTIME ON)
|
||||||
|
else ()
|
||||||
|
set (Boost_USE_STATIC_RUNTIME OFF)
|
||||||
|
endif ()
|
||||||
|
find_dependency (Boost 1.67
|
||||||
|
COMPONENTS
|
||||||
|
chrono
|
||||||
|
context
|
||||||
|
coroutine
|
||||||
|
date_time
|
||||||
|
filesystem
|
||||||
|
program_options
|
||||||
|
regex
|
||||||
|
serialization
|
||||||
|
system
|
||||||
|
thread)
|
||||||
|
#[=========================================================[
|
||||||
|
OpenSSL
|
||||||
|
#]=========================================================]
|
||||||
|
if (APPLE AND NOT DEFINED ENV{OPENSSL_ROOT_DIR})
|
||||||
|
find_program (HOMEBREW brew)
|
||||||
|
if (NOT HOMEBREW STREQUAL "HOMEBREW-NOTFOUND")
|
||||||
|
execute_process (COMMAND ${HOMEBREW} --prefix openssl
|
||||||
|
OUTPUT_VARIABLE OPENSSL_ROOT_DIR
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
if ((NOT DEFINED OPENSSL_ROOT) AND (DEFINED ENV{OPENSSL_ROOT}))
|
||||||
|
set (OPENSSL_ROOT $ENV{OPENSSL_ROOT})
|
||||||
|
endif ()
|
||||||
|
file (TO_CMAKE_PATH "${OPENSSL_ROOT}" OPENSSL_ROOT)
|
||||||
|
|
||||||
|
if (static OR APPLE OR MSVC)
|
||||||
|
set (OPENSSL_USE_STATIC_LIBS ON)
|
||||||
|
endif ()
|
||||||
|
set (OPENSSL_MSVC_STATIC_RT ON)
|
||||||
|
find_dependency (OpenSSL 1.0.2 REQUIRED)
|
||||||
|
find_dependency (ZLIB)
|
||||||
|
if (TARGET ZLIB::ZLIB)
|
||||||
|
set_target_properties(OpenSSL::Crypto PROPERTIES
|
||||||
|
INTERFACE_LINK_LIBRARIES ZLIB::ZLIB)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
include ("${CMAKE_CURRENT_LIST_DIR}/RippleTargets.cmake")
|
||||||
@@ -60,12 +60,12 @@ IS_OS_X = platform.system().lower() == 'darwin'
|
|||||||
# CMake
|
# CMake
|
||||||
if IS_WINDOWS:
|
if IS_WINDOWS:
|
||||||
CMAKE_UNITY_CONFIGS = ['Debug', 'Release']
|
CMAKE_UNITY_CONFIGS = ['Debug', 'Release']
|
||||||
CMAKE_NONUNITY_CONFIGS = ['DebugClassic', 'ReleaseClassic']
|
CMAKE_NONUNITY_CONFIGS = ['Debug', 'Release']
|
||||||
else:
|
else:
|
||||||
CMAKE_UNITY_CONFIGS = []
|
CMAKE_UNITY_CONFIGS = []
|
||||||
CMAKE_NONUNITY_CONFIGS = []
|
CMAKE_NONUNITY_CONFIGS = []
|
||||||
CMAKE_UNITY_COMBOS = { '' : [['rippled', 'rippled_classic'], CMAKE_UNITY_CONFIGS],
|
CMAKE_UNITY_COMBOS = { '' : [['rippled'], CMAKE_UNITY_CONFIGS],
|
||||||
'.nounity' : [['rippled', 'rippled_unity'], CMAKE_NONUNITY_CONFIGS] }
|
'.nounity' : [['rippled'], CMAKE_NONUNITY_CONFIGS] }
|
||||||
|
|
||||||
if IS_WINDOWS:
|
if IS_WINDOWS:
|
||||||
CMAKE_DIR_TARGETS = { ('msvc' + unity,) : targets for unity, targets in
|
CMAKE_DIR_TARGETS = { ('msvc' + unity,) : targets for unity, targets in
|
||||||
@@ -204,7 +204,7 @@ def decodeString(line):
|
|||||||
else:
|
else:
|
||||||
return line.decode()
|
return line.decode()
|
||||||
|
|
||||||
def shell(cmd, args=(), silent=False):
|
def shell(cmd, args=(), silent=False, cust_env=None):
|
||||||
""""Execute a shell command and return the output."""
|
""""Execute a shell command and return the output."""
|
||||||
silent = ARGS.silent or silent
|
silent = ARGS.silent or silent
|
||||||
verbose = not silent and ARGS.verbose
|
verbose = not silent and ARGS.verbose
|
||||||
@@ -219,6 +219,7 @@ def shell(cmd, args=(), silent=False):
|
|||||||
stdin=subprocess.PIPE,
|
stdin=subprocess.PIPE,
|
||||||
stdout=subprocess.PIPE,
|
stdout=subprocess.PIPE,
|
||||||
stderr=subprocess.STDOUT,
|
stderr=subprocess.STDOUT,
|
||||||
|
env=cust_env,
|
||||||
shell=IS_WINDOWS)
|
shell=IS_WINDOWS)
|
||||||
lines = []
|
lines = []
|
||||||
count = 0
|
count = 0
|
||||||
@@ -258,7 +259,25 @@ def run_cmake(directory, cmake_dir, args):
|
|||||||
args += ( '-GNinja', )
|
args += ( '-GNinja', )
|
||||||
else:
|
else:
|
||||||
args += ( '-GVisual Studio 14 2015 Win64', )
|
args += ( '-GVisual Studio 14 2015 Win64', )
|
||||||
args += ( '-Dtarget=' + cmake_dir, os.path.join('..', '..', '..'), )
|
# hack to extract cmake options/args from the legacy target format
|
||||||
|
if re.search('\.unity', cmake_dir):
|
||||||
|
args += ( '-Dunity=ON', )
|
||||||
|
if re.search('\.nounity', cmake_dir):
|
||||||
|
args += ( '-Dunity=OFF', )
|
||||||
|
if re.search('coverage', cmake_dir):
|
||||||
|
args += ( '-Dcoverage=ON', )
|
||||||
|
if re.search('profile', cmake_dir):
|
||||||
|
args += ( '-Dprofile=ON', )
|
||||||
|
if re.search('debug', cmake_dir):
|
||||||
|
args += ( '-DCMAKE_BUILD_TYPE=Debug', )
|
||||||
|
if re.search('release', cmake_dir):
|
||||||
|
args += ( '-DCMAKE_BUILD_TYPE=Release', )
|
||||||
|
if re.search('gcc', cmake_dir):
|
||||||
|
args += ( '-DCMAKE_C_COMPILER=gcc', '-DCMAKE_CXX_COMPILER=g++', )
|
||||||
|
if re.search('clang', cmake_dir):
|
||||||
|
args += ( '-DCMAKE_C_COMPILER=clang', '-DCMAKE_CXX_COMPILER=clang++', )
|
||||||
|
|
||||||
|
args += ( os.path.join('..', '..', '..'), )
|
||||||
resultcode, lines = shell('cmake', args)
|
resultcode, lines = shell('cmake', args)
|
||||||
|
|
||||||
if resultcode:
|
if resultcode:
|
||||||
|
|||||||
@@ -104,15 +104,16 @@ cd my_build
|
|||||||
followed by:
|
followed by:
|
||||||
|
|
||||||
```
|
```
|
||||||
cmake -Dtarget=gcc.debug.unity ..
|
cmake -DCMAKE_BUILD_TYPE=Debug ..
|
||||||
```
|
```
|
||||||
|
|
||||||
The target variable can be adjusted as needed for `gcc` vs `clang`, `debug` vs.
|
`CMAKE_BUILD_TYPE` can be changed as desired for `Debug` vs.
|
||||||
`release` and `unity` vs. `nounity` builds. `unity` builds are faster to
|
`Release` builds (all four standard cmake build types are supported).
|
||||||
compile since they combine multiple sources into a single compiliation unit.
|
|
||||||
`nounity` builds can be helpful for detecting include omissions or for finding
|
To select a different compiler (most likely gcc will be found by default), pass
|
||||||
other build-related issues, but aren't generally needed for testing and
|
`-DCMAKE_C_COMPILER=<path/to/c-compiler>` and
|
||||||
running.
|
`-DCMAKE_CXX_COMPILER=</path/to/cxx-compiler>` when configuring. If you prefer,
|
||||||
|
you can instead set `CC` and `CXX` environment variables which cmake will honor.
|
||||||
|
|
||||||
Once you have generated the build system, you can run the build via cmake:
|
Once you have generated the build system, you can run the build via cmake:
|
||||||
|
|
||||||
@@ -130,15 +131,94 @@ properly configured) or to run unit tests.
|
|||||||
|
|
||||||
#### Options During Configuration:
|
#### Options During Configuration:
|
||||||
|
|
||||||
There are a number of config variables that our CMake files support. These
|
The CMake file defines a number of configure-time options which can be
|
||||||
can be added to the cmake generation command as needed:
|
examined by running `cmake-gui` or `ccmake` to generated the build. In
|
||||||
|
particular, the `unity` option allows you to select between the unity and
|
||||||
|
non-unity builds. `unity` builds are faster to compile since they combine
|
||||||
|
multiple sources into a single compiliation unit - this is the default if you
|
||||||
|
don't specify. `nounity` builds can be helpful for detecting include omissions
|
||||||
|
or for finding other build-related issues, but aren't generally needed for
|
||||||
|
testing and running.
|
||||||
|
|
||||||
|
* `-Dunity=ON` to enable/disable unity builds (defaults to ON)
|
||||||
* `-Dassert=ON` to enable asserts
|
* `-Dassert=ON` to enable asserts
|
||||||
* `-Djemalloc=ON` to enable jemalloc support for heap checking
|
* `-Djemalloc=ON` to enable jemalloc support for heap checking
|
||||||
* `-Dsan=thread` to enable the thread sanitizer with clang
|
* `-Dsan=thread` to enable the thread sanitizer with clang
|
||||||
* `-Dsan=address` to enable the address sanitizer with clang
|
* `-Dsan=address` to enable the address sanitizer with clang
|
||||||
* `-Dstatic=ON` to enable static linking library dependencies
|
* `-Dstatic=ON` to enable static linking library dependencies
|
||||||
|
|
||||||
|
Several other infrequently used options are available - run `ccmake` or
|
||||||
|
`cmake-gui` for a list of all options.
|
||||||
|
|
||||||
|
#### Optional Installation
|
||||||
|
|
||||||
|
The rippled cmake build supports an installation target that will install
|
||||||
|
rippled as well as a support library that can be used to sign transactions. In
|
||||||
|
order to build and install the files, specify the `install` target when
|
||||||
|
building, e.g.:
|
||||||
|
|
||||||
|
```
|
||||||
|
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/opt/local ..
|
||||||
|
cmake --build . --target install -- -j <parallel jobs>
|
||||||
|
```
|
||||||
|
|
||||||
|
We recommend specifying `CMAKE_INSTALL_PREFIX` when configuring in order to
|
||||||
|
explicitly control the install location for your files. Without this setting,
|
||||||
|
cmake will typically install in `/usr/local`. It is also possible to "rehome"
|
||||||
|
the installation by specifying the `DESTDIR` env variable during the install phase,
|
||||||
|
e.g.:
|
||||||
|
|
||||||
|
```
|
||||||
|
DESTDIR=~/mylibs cmake --build . --target install -- -j <parallel jobs>
|
||||||
|
```
|
||||||
|
|
||||||
|
in which case, the files would be installed in the `CMAKE_INSTALL_PREFIX` within
|
||||||
|
the specified `DESTDIR` path.
|
||||||
|
|
||||||
|
#### Signing Library
|
||||||
|
|
||||||
|
If you want to use the signing support library to create an application, there
|
||||||
|
are two simple mechanisms with cmake + git that facilitate this.
|
||||||
|
|
||||||
|
With either option below, you will have access to a library from the
|
||||||
|
rippled project that you can link to in your own project's CMakeLists.txt, e.g.:
|
||||||
|
|
||||||
|
```
|
||||||
|
target_link_libraries (my-signing-app Ripple::xrpl_core)
|
||||||
|
```
|
||||||
|
|
||||||
|
##### Option 1: git submodules + add_subdirectory
|
||||||
|
|
||||||
|
First, add the rippled repo as a submodule to your project repo:
|
||||||
|
|
||||||
|
```
|
||||||
|
git submodule add -b master https://github.com/ripple/rippled.git vendor/rippled
|
||||||
|
```
|
||||||
|
|
||||||
|
change the `vendor/rippled` path as desired for your repo layout. Furthermore,
|
||||||
|
change the branch name if you want to track a different rippled branch, such
|
||||||
|
as `develop`.
|
||||||
|
|
||||||
|
Second, to bring this submodule into your project, just add the rippled subdirectory:
|
||||||
|
|
||||||
|
```
|
||||||
|
add_subdirectory (vendor/rippled)
|
||||||
|
```
|
||||||
|
|
||||||
|
##### Option 2: installed rippled + find_package
|
||||||
|
|
||||||
|
First, follow the "Optional Installation" instructions above to
|
||||||
|
build and install the desired version of rippled.
|
||||||
|
|
||||||
|
To make use of the installed files, add the following to your CMakeLists.txt file:
|
||||||
|
|
||||||
|
```
|
||||||
|
set (CMAKE_MODULE_PATH /opt/local/lib/cmake/ripple ${CMAKE_MODULE_PATH})
|
||||||
|
find_package(Ripple REQUIRED)
|
||||||
|
```
|
||||||
|
|
||||||
|
change the `/opt/local` module path above to match your chosen installation prefix.
|
||||||
|
|
||||||
## Unit Tests (Recommended)
|
## Unit Tests (Recommended)
|
||||||
|
|
||||||
`rippled` builds a set of unit tests into the server executable. To run these unit
|
`rippled` builds a set of unit tests into the server executable. To run these unit
|
||||||
|
|||||||
@@ -142,21 +142,17 @@ cd my_build
|
|||||||
followed by:
|
followed by:
|
||||||
|
|
||||||
```
|
```
|
||||||
cmake -G "Unix Makefiles" -Dtarget=clang.debug.unity ..
|
cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Debug ..
|
||||||
```
|
```
|
||||||
|
|
||||||
or
|
or
|
||||||
|
|
||||||
```
|
```
|
||||||
cmake -G "Ninja" -Dtarget=clang.debug.unity ..
|
cmake -G "Ninja" -DCMAKE_BUILD_TYPE=Debug ..
|
||||||
```
|
```
|
||||||
|
|
||||||
The target variable can be adjusted as needed for `gcc` vs `clang`, `debug` vs.
|
`CMAKE_BUILD_TYPE` can be changed as desired for `Debug` vs.
|
||||||
`release` and `unity` vs. `nounity` builds. `unity` builds are faster to
|
`Release` builds (all four standard cmake build types are supported).
|
||||||
compile since they combine multiple sources into a single compiliation unit.
|
|
||||||
`nounity` builds can be helpful for detecting include omissions or for finding
|
|
||||||
other build-related issues, but aren't generally needed for testing and
|
|
||||||
running.
|
|
||||||
|
|
||||||
Once you have generated the build system, you can run the build via cmake:
|
Once you have generated the build system, you can run the build via cmake:
|
||||||
|
|
||||||
@@ -190,16 +186,42 @@ cmake --build . -- -jobs 4
|
|||||||
This will invoke the `xcodebuild` utility to compile the project. See `xcodebuild
|
This will invoke the `xcodebuild` utility to compile the project. See `xcodebuild
|
||||||
--help` for details about build options.
|
--help` for details about build options.
|
||||||
|
|
||||||
|
#### Optional installation
|
||||||
|
|
||||||
|
If you'd like to install the artifacts of the build, we have preliminary
|
||||||
|
support for standard CMake installation targets. We recommend explicitly
|
||||||
|
setting the installation location when configuring, e.g.:
|
||||||
|
|
||||||
|
```
|
||||||
|
cmake -DCMAKE_INSTALL_PREFIX=/opt/local ..
|
||||||
|
```
|
||||||
|
|
||||||
|
(change the destination as desired), and then build the `install` target:
|
||||||
|
|
||||||
|
```
|
||||||
|
cmake --build . --target install -- -jobs 4
|
||||||
|
```
|
||||||
|
|
||||||
#### Options During Configuration:
|
#### Options During Configuration:
|
||||||
|
|
||||||
There are a number of config variables that our CMake files support. These
|
The CMake file defines a number of configure-time options which can be
|
||||||
can be added to the cmake generation command as needed:
|
examined by running `cmake-gui` or `ccmake` to generated the build. In
|
||||||
|
particular, the `unity` option allows you to select between the unity and
|
||||||
|
non-unity builds. `unity` builds are faster to compile since they combine
|
||||||
|
multiple sources into a single compiliation unit - this is the default if you
|
||||||
|
don't specify. `nounity` builds can be helpful for detecting include omissions
|
||||||
|
or for finding other build-related issues, but aren't generally needed for
|
||||||
|
testing and running.
|
||||||
|
|
||||||
|
* `-Dunity=ON` to enable/disable unity builds (defaults to ON)
|
||||||
* `-Dassert=ON` to enable asserts
|
* `-Dassert=ON` to enable asserts
|
||||||
* `-Djemalloc=ON` to enable jemalloc support for heap checking
|
* `-Djemalloc=ON` to enable jemalloc support for heap checking
|
||||||
* `-Dsan=thread` to enable the thread sanitizer with clang
|
* `-Dsan=thread` to enable the thread sanitizer with clang
|
||||||
* `-Dsan=address` to enable the address sanitizer with clang
|
* `-Dsan=address` to enable the address sanitizer with clang
|
||||||
|
|
||||||
|
Several other infrequently used options are available - run `ccmake` or
|
||||||
|
`cmake-gui` for a list of all options.
|
||||||
|
|
||||||
## Unit Tests (Recommended)
|
## Unit Tests (Recommended)
|
||||||
|
|
||||||
`rippled` builds a set of unit tests into the server executable. To run these unit
|
`rippled` builds a set of unit tests into the server executable. To run these unit
|
||||||
|
|||||||
2412
CMakeLists.txt
2412
CMakeLists.txt
File diff suppressed because it is too large
Load Diff
147
Jenkinsfile
vendored
147
Jenkinsfile
vendored
@@ -110,26 +110,26 @@ try {
|
|||||||
|
|
||||||
stage ('Parallel Build') {
|
stage ('Parallel Build') {
|
||||||
String[][] variants = [
|
String[][] variants = [
|
||||||
['gcc.release.unity', '-Dassert=true', 'MANUAL_TESTS=true'],
|
['gcc.Release' ,'-Dassert=ON' ,'MANUAL_TESTS=true' ],
|
||||||
['coverage'],
|
['gcc.Debug' ,'-Dcoverage=ON' ],
|
||||||
['docs'],
|
['docs' ],
|
||||||
['msvc.debug'],
|
['msvc.Debug' ],
|
||||||
// This one does not currently build (TBD):
|
['msvc.Debug' ,'' ,'NINJA_BUILD=true' ],
|
||||||
//['msvc.debug.nounity'],
|
['msvc.Debug' ,'-Dunity=OFF' ],
|
||||||
['msvc.debug', '', 'PROJECT_NAME=rippled_classic'],
|
['msvc.Release' ],
|
||||||
['msvc.release'],
|
['clang.Debug' ],
|
||||||
['clang.debug.unity'],
|
['clang.Debug' ,'-Dunity=OFF' ],
|
||||||
['clang.debug.unity', '', 'PARALLEL_TESTS=false'],
|
['gcc.Debug' ],
|
||||||
['clang.debug.nounity'],
|
['gcc.Debug' ,'-Dunity=OFF' ],
|
||||||
['gcc.debug.unity'],
|
['clang.Release' ,'-Dassert=ON' ],
|
||||||
['gcc.debug.nounity'],
|
['gcc.Release' ,'-Dassert=ON' ],
|
||||||
['clang.release.unity', '-Dassert=true'],
|
['gcc.Debug' ,'-Dstatic=OFF' ],
|
||||||
['gcc.release.unity', '-Dassert=true'],
|
['gcc.Debug' ,'-Dstatic=OFF -DBUILD_SHARED_LIBS=ON' ],
|
||||||
// add a static build just to make sure it works
|
['gcc.Debug' ,'' ,'NINJA_BUILD=true' ],
|
||||||
['gcc.debug.unity', '-Dstatic=true'],
|
['clang.Debug' ,'-Dunity=OFF -Dsan=address' ,'PARALLEL_TESTS=false', 'DEBUGGER=false'],
|
||||||
// TODO - sanitizer runs currently fail
|
['clang.Debug' ,'-Dunity=OFF -Dsan=undefined' ,'PARALLEL_TESTS=false'],
|
||||||
//['gcc.debug.nounity' , '-Dsan=address', 'PARALLEL_TESTS=false'],
|
// TODO - tsan runs currently fail/hang
|
||||||
//['gcc.debug.nounity' , '-Dsan=thread', 'PARALLEL_TESTS=false'],
|
//['clang.Debug' ,'-Dunity=OFF -Dsan=thread' ,'PARALLEL_TESTS=false'],
|
||||||
]
|
]
|
||||||
|
|
||||||
// create a map of all builds
|
// create a map of all builds
|
||||||
@@ -149,31 +149,31 @@ try {
|
|||||||
bldlabel = bldlabel.replace('=', '_')
|
bldlabel = bldlabel.replace('=', '_')
|
||||||
|
|
||||||
def compiler = getFirstPart(bldtype)
|
def compiler = getFirstPart(bldtype)
|
||||||
def target = getSecondPart(bldtype)
|
def config = getSecondPart(bldtype)
|
||||||
def config = getFirstPart(target)
|
if (compiler == 'docs') {
|
||||||
if (compiler == 'coverage' || compiler == 'docs') {
|
|
||||||
compiler = 'gcc'
|
compiler = 'gcc'
|
||||||
}
|
}
|
||||||
def cc =
|
def cc =
|
||||||
(compiler == 'clang') ? '/opt/llvm-5.0.1/bin/clang' : 'gcc'
|
(compiler == 'clang') ? '/opt/llvm-5.0.1/bin/clang' : 'gcc'
|
||||||
def cxx =
|
def cxx =
|
||||||
(compiler == 'clang') ? '/opt/llvm-5.0.1/bin/clang++' : 'g++'
|
(compiler == 'clang') ? '/opt/llvm-5.0.1/bin/clang++' : 'g++'
|
||||||
def ucc = isNoUnity(target) ? 'true' : 'false'
|
def ucc = isNoUnity(cmake_extra) ? 'true' : 'false'
|
||||||
def node_type =
|
def node_type =
|
||||||
(compiler == 'msvc') ? 'rippled-win' : 'rippled-dev'
|
(compiler == 'msvc') ? 'rippled-win' : 'rippled-dev'
|
||||||
// the default disposition for parallel test..disabled
|
// the default disposition for parallel test..disabled
|
||||||
// for coverage, enabled otherwise. Can still be overridden
|
// for coverage, enabled otherwise. Can still be overridden
|
||||||
// by explicitly setting with extra env settings above.
|
// by explicitly setting with extra env settings above.
|
||||||
def pt = (compiler == 'coverage') ? 'false' : 'true'
|
def pt = isCoverage(cmake_extra) ? 'false' : 'true'
|
||||||
|
def max_minutes = 25
|
||||||
|
|
||||||
def env_vars = [
|
def env_vars = [
|
||||||
"TARGET=${target}",
|
"BUILD_TYPE=${config}",
|
||||||
"CONFIG_TYPE=${config}",
|
|
||||||
"COMPILER=${compiler}",
|
"COMPILER=${compiler}",
|
||||||
"PARALLEL_TESTS=${pt}",
|
"PARALLEL_TESTS=${pt}",
|
||||||
'BUILD=cmake',
|
'BUILD=cmake',
|
||||||
|
"MAX_TIME=${max_minutes}m",
|
||||||
"BUILD_DIR=${bldlabel}",
|
"BUILD_DIR=${bldlabel}",
|
||||||
"CMAKE_EXTRA_ARGS=${cmake_extra}",
|
"CMAKE_EXTRA_ARGS=-Werr=ON ${cmake_extra}",
|
||||||
'VERBOSE_BUILD=true']
|
'VERBOSE_BUILD=true']
|
||||||
|
|
||||||
builds[bldlabel] = {
|
builds[bldlabel] = {
|
||||||
@@ -185,8 +185,7 @@ try {
|
|||||||
def cdir = upDir(pwd())
|
def cdir = upDir(pwd())
|
||||||
echo "BASEDIR: ${cdir}"
|
echo "BASEDIR: ${cdir}"
|
||||||
echo "COMPILER: ${compiler}"
|
echo "COMPILER: ${compiler}"
|
||||||
echo "TARGET: ${target}"
|
echo "BUILD_TYPE: ${config}"
|
||||||
echo "CONFIG: ${config}"
|
|
||||||
echo "USE_CC: ${ucc}"
|
echo "USE_CC: ${ucc}"
|
||||||
if (compiler == 'msvc') {
|
if (compiler == 'msvc') {
|
||||||
env_vars.addAll([
|
env_vars.addAll([
|
||||||
@@ -223,28 +222,33 @@ try {
|
|||||||
withEnv(env_vars) {
|
withEnv(env_vars) {
|
||||||
myStage(bldlabel)
|
myStage(bldlabel)
|
||||||
try {
|
try {
|
||||||
if (compiler == 'msvc') {
|
timeout(
|
||||||
powershell "Remove-Item -Path \"${bldlabel}.txt\" -Force -ErrorAction Ignore"
|
time: max_minutes * 2,
|
||||||
// we capture stdout to variable because I could
|
units: 'MINUTES')
|
||||||
// not figure out how to make powershell redirect internally
|
{
|
||||||
output = powershell (
|
if (compiler == 'msvc') {
|
||||||
returnStdout: true,
|
powershell "Remove-Item -Path \"${bldlabel}.txt\" -Force -ErrorAction Ignore"
|
||||||
script: windowsBuildCmd())
|
// we capture stdout to variable because I could
|
||||||
// if the powershell command fails (has nonzero exit)
|
// not figure out how to make powershell redirect internally
|
||||||
// then the command above throws, we don't get our output,
|
output = powershell (
|
||||||
// and we never create this output file.
|
returnStdout: true,
|
||||||
// SEE https://issues.jenkins-ci.org/browse/JENKINS-44930
|
script: windowsBuildCmd())
|
||||||
// Alternatively, figure out how to reliably redirect
|
// if the powershell command fails (has nonzero exit)
|
||||||
// all output above to a file (Start/Stop transcript does not work)
|
// then the command above throws, we don't get our output,
|
||||||
writeFile(
|
// and we never create this output file.
|
||||||
file: "${bldlabel}.txt",
|
// SEE https://issues.jenkins-ci.org/browse/JENKINS-44930
|
||||||
text: output)
|
// Alternatively, figure out how to reliably redirect
|
||||||
}
|
// all output above to a file (Start/Stop transcript does not work)
|
||||||
else {
|
writeFile(
|
||||||
sh "rm -fv ${bldlabel}.txt"
|
file: "${bldlabel}.txt",
|
||||||
// execute the bld command in a redirecting shell
|
text: output)
|
||||||
// to capture output
|
}
|
||||||
sh redhatBuildCmd(bldlabel)
|
else {
|
||||||
|
sh "rm -fv ${bldlabel}.txt"
|
||||||
|
// execute the bld command in a redirecting shell
|
||||||
|
// to capture output
|
||||||
|
sh redhatBuildCmd(bldlabel)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
@@ -518,7 +522,13 @@ def getFirstPart(bld) {
|
|||||||
|
|
||||||
@NonCPS
|
@NonCPS
|
||||||
def isNoUnity(bld) {
|
def isNoUnity(bld) {
|
||||||
def matcher = bld =~ /\.nounity\s*$/
|
def matcher = bld =~ /-Dunity=(off|OFF)/
|
||||||
|
matcher ? true : false
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonCPS
|
||||||
|
def isCoverage(bld) {
|
||||||
|
def matcher = bld =~ /-Dcoverage=(on|ON)/
|
||||||
matcher ? true : false
|
matcher ? true : false
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -544,7 +554,7 @@ set -ex
|
|||||||
log_file=''' + "${bldlabel}.txt" + '''
|
log_file=''' + "${bldlabel}.txt" + '''
|
||||||
exec 3>&1 1>>${log_file} 2>&1
|
exec 3>&1 1>>${log_file} 2>&1
|
||||||
ccache -s
|
ccache -s
|
||||||
source /opt/rh/devtoolset-6/enable
|
source /opt/rh/devtoolset-7/enable
|
||||||
/usr/bin/time -p ./bin/ci/ubuntu/build-and-test.sh 2>&1
|
/usr/bin/time -p ./bin/ci/ubuntu/build-and-test.sh 2>&1
|
||||||
ccache -s
|
ccache -s
|
||||||
'''
|
'''
|
||||||
@@ -568,10 +578,10 @@ $sw = [Diagnostics.Stopwatch]::StartNew()
|
|||||||
try {
|
try {
|
||||||
Push-Location "build/$env:BUILD_DIR"
|
Push-Location "build/$env:BUILD_DIR"
|
||||||
if ($env:NINJA_BUILD -eq "true") {
|
if ($env:NINJA_BUILD -eq "true") {
|
||||||
cmake -G"Ninja" -Dtarget="$env:COMPILER.$env:TARGET" -DCMAKE_VERBOSE_MAKEFILE=ON ../..
|
Invoke-Expression "& cmake -G`"Ninja`" -DCMAKE_BUILD_TYPE=$env:BUILD_TYPE -DCMAKE_VERBOSE_MAKEFILE=ON $env:CMAKE_EXTRA_ARGS ../.."
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
cmake -G"Visual Studio 15 2017 Win64" -Dtarget="$env:COMPILER.$env:TARGET" -DCMAKE_VERBOSE_MAKEFILE=ON ../..
|
Invoke-Expression "& cmake -G`"Visual Studio 15 2017 Win64`" -DCMAKE_VERBOSE_MAKEFILE=ON $env:CMAKE_EXTRA_ARGS ../.."
|
||||||
}
|
}
|
||||||
if ($LastExitCode -ne 0) { throw "CMake failed" }
|
if ($LastExitCode -ne 0) { throw "CMake failed" }
|
||||||
|
|
||||||
@@ -584,11 +594,11 @@ try {
|
|||||||
ninja -j $env:NUMBER_OF_PROCESSORS -v
|
ninja -j $env:NUMBER_OF_PROCESSORS -v
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
msbuild /fl /m /nr:false /p:Configuration="$env:CONFIG_TYPE" /p:Platform=x64 /p:GenerateFullPaths=True /v:normal /nologo /clp:"ShowCommandLine;DisableConsoleColor" "$env:PROJECT_NAME.vcxproj"
|
msbuild /fl /m /nr:false /p:Configuration="$env:BUILD_TYPE" /p:Platform=x64 /p:GenerateFullPaths=True /v:normal /nologo /clp:"ShowCommandLine;DisableConsoleColor" "$env:PROJECT_NAME.vcxproj"
|
||||||
}
|
}
|
||||||
if ($LastExitCode -ne 0) { throw "CMake build failed" }
|
if ($LastExitCode -ne 0) { throw "CMake build failed" }
|
||||||
|
|
||||||
$exe = "./$env:CONFIG_TYPE/$env:PROJECT_NAME"
|
$exe = "./$env:BUILD_TYPE/$env:PROJECT_NAME"
|
||||||
if ($env:NINJA_BUILD -eq "true") {
|
if ($env:NINJA_BUILD -eq "true") {
|
||||||
$exe = "./$env:PROJECT_NAME"
|
$exe = "./$env:PROJECT_NAME"
|
||||||
}
|
}
|
||||||
@@ -711,9 +721,24 @@ def reportStatus(label, type, bldurl) {
|
|||||||
def txtcolor =
|
def txtcolor =
|
||||||
fail_count == 0 ? 'DarkGreen' : 'Crimson'
|
fail_count == 0 ? 'DarkGreen' : 'Crimson'
|
||||||
def shortbld = label
|
def shortbld = label
|
||||||
shortbld = shortbld.replace('debug', 'dbg')
|
// this is just an attempt to shorten the
|
||||||
shortbld = shortbld.replace('release', 'rel')
|
// summary text label to the point of absurdity..
|
||||||
shortbld = shortbld.replace('unity', 'un')
|
shortbld = shortbld.replace('Debug', 'dbg')
|
||||||
|
shortbld = shortbld.replace('Release', 'rel')
|
||||||
|
shortbld = shortbld.replace('true', 'Y')
|
||||||
|
shortbld = shortbld.replace('false', 'N')
|
||||||
|
shortbld = shortbld.replace('Dcoverage', 'cov')
|
||||||
|
shortbld = shortbld.replace('Dassert', 'asrt')
|
||||||
|
shortbld = shortbld.replace('Dunity', 'unty')
|
||||||
|
shortbld = shortbld.replace('Dsan=address', 'asan')
|
||||||
|
shortbld = shortbld.replace('Dsan=thread', 'tsan')
|
||||||
|
shortbld = shortbld.replace('Dsan=undefined', 'ubsan')
|
||||||
|
shortbld = shortbld.replace('PARALLEL_TEST', 'PL')
|
||||||
|
shortbld = shortbld.replace('MANUAL_TESTS', 'MAN')
|
||||||
|
shortbld = shortbld.replace('NINJA_BUILD', 'ninja')
|
||||||
|
shortbld = shortbld.replace('DEBUGGER', 'gdb')
|
||||||
|
shortbld = shortbld.replace('ON', 'Y')
|
||||||
|
shortbld = shortbld.replace('OFF', 'N')
|
||||||
manager.addShortText(
|
manager.addShortText(
|
||||||
"${shortbld}: ${st}, t: ${time}",
|
"${shortbld}: ${st}, t: ${time}",
|
||||||
txtcolor,
|
txtcolor,
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ environment:
|
|||||||
# that it's a small download. We also use appveyor's free cache, avoiding fees
|
# that it's a small download. We also use appveyor's free cache, avoiding fees
|
||||||
# downloading from S3 each time.
|
# downloading from S3 each time.
|
||||||
# TODO: script to create this package.
|
# TODO: script to create this package.
|
||||||
RIPPLED_DEPS_PATH: rippled_deps17.03
|
RIPPLED_DEPS_PATH: rippled_deps17.04
|
||||||
RIPPLED_DEPS_URL: https://ripple.github.io/Downloads/appveyor/%RIPPLED_DEPS_PATH%.zip
|
RIPPLED_DEPS_URL: https://ripple.github.io/Downloads/appveyor/%RIPPLED_DEPS_PATH%.zip
|
||||||
|
|
||||||
# CMake honors these environment variables, setting the include/lib paths.
|
# CMake honors these environment variables, setting the include/lib paths.
|
||||||
@@ -72,7 +72,7 @@ build_script:
|
|||||||
"$cmake_target"
|
"$cmake_target"
|
||||||
New-Item -ItemType Directory -Force -Path "build/$cmake_target"
|
New-Item -ItemType Directory -Force -Path "build/$cmake_target"
|
||||||
Push-Location "build/$cmake_target"
|
Push-Location "build/$cmake_target"
|
||||||
cmake -G"Visual Studio 15 2017 Win64" -Dtarget="$cmake_target" ../..
|
cmake -G"Visual Studio 15 2017 Win64" ../..
|
||||||
if ($LastExitCode -ne 0) { throw "CMake failed" }
|
if ($LastExitCode -ne 0) { throw "CMake failed" }
|
||||||
cmake --build . --config $env:buildconfig -- -m
|
cmake --build . --config $env:buildconfig -- -m
|
||||||
if ($LastExitCode -ne 0) { throw "CMake build failed" }
|
if ($LastExitCode -ne 0) { throw "CMake build failed" }
|
||||||
|
|||||||
@@ -7,12 +7,15 @@ set -ex
|
|||||||
__dirname=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
__dirname=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||||||
echo "using CC: $CC"
|
echo "using CC: $CC"
|
||||||
"${CC}" --version
|
"${CC}" --version
|
||||||
|
export CC
|
||||||
COMPNAME=$(basename $CC)
|
COMPNAME=$(basename $CC)
|
||||||
echo "using CXX: ${CXX:-notset}"
|
echo "using CXX: ${CXX:-notset}"
|
||||||
if [[ $CXX ]]; then
|
if [[ $CXX ]]; then
|
||||||
"${CXX}" --version
|
"${CXX}" --version
|
||||||
|
export CXX
|
||||||
fi
|
fi
|
||||||
echo "using TARGET: $TARGET"
|
: ${BUILD_TYPE:=Debug}
|
||||||
|
echo "BUILD TYPE: $BUILD_TYPE"
|
||||||
|
|
||||||
# Ensure APP defaults to rippled if it's not set.
|
# Ensure APP defaults to rippled if it's not set.
|
||||||
: ${APP:=rippled}
|
: ${APP:=rippled}
|
||||||
@@ -36,15 +39,18 @@ echo "cmake building ${APP}"
|
|||||||
if [[ ${NINJA_BUILD:-} == true ]]; then
|
if [[ ${NINJA_BUILD:-} == true ]]; then
|
||||||
CMAKE_EXTRA_ARGS+=" -G Ninja"
|
CMAKE_EXTRA_ARGS+=" -G Ninja"
|
||||||
fi
|
fi
|
||||||
CMAKE_TARGET=${COMPNAME}.${TARGET}
|
|
||||||
if [[ ${CI:-} == true ]]; then
|
coverage=false
|
||||||
CMAKE_TARGET=$CMAKE_TARGET.ci
|
if [[ "${CMAKE_EXTRA_ARGS}" =~ -Dcoverage=((on)|(ON)) ]] ; then
|
||||||
|
echo "coverage option detected."
|
||||||
|
coverage=true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#
|
#
|
||||||
# allow explicit setting of the name of the build
|
# allow explicit setting of the name of the build
|
||||||
# dir, otherwise default to the CMAKE_TARGET value
|
# dir, otherwise default to the compiler.build_type
|
||||||
#
|
#
|
||||||
: "${BUILD_DIR:=$CMAKE_TARGET}"
|
: "${BUILD_DIR:=${COMPNAME}.${BUILD_TYPE}}"
|
||||||
BUILDARGS=" -j${JOBS}"
|
BUILDARGS=" -j${JOBS}"
|
||||||
if [[ ${VERBOSE_BUILD:-} == true ]]; then
|
if [[ ${VERBOSE_BUILD:-} == true ]]; then
|
||||||
CMAKE_EXTRA_ARGS+=" -DCMAKE_VERBOSE_MAKEFILE=ON"
|
CMAKE_EXTRA_ARGS+=" -DCMAKE_VERBOSE_MAKEFILE=ON"
|
||||||
@@ -67,8 +73,8 @@ fi
|
|||||||
|
|
||||||
mkdir -p "build/${BUILD_DIR}"
|
mkdir -p "build/${BUILD_DIR}"
|
||||||
pushd "build/${BUILD_DIR}"
|
pushd "build/${BUILD_DIR}"
|
||||||
$time cmake ../.. -Dtarget=$CMAKE_TARGET ${CMAKE_EXTRA_ARGS}
|
$time cmake ../.. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} ${CMAKE_EXTRA_ARGS}
|
||||||
if [[ ${TARGET} == "docs" ]]; then
|
if [[ ${BUILD_TYPE} == "docs" ]]; then
|
||||||
$time cmake --build . --target docs -- $BUILDARGS
|
$time cmake --build . --target docs -- $BUILDARGS
|
||||||
## mimic the standard test output for docs build
|
## mimic the standard test output for docs build
|
||||||
## to make controlling processes like jenkins happy
|
## to make controlling processes like jenkins happy
|
||||||
@@ -80,19 +86,11 @@ if [[ ${TARGET} == "docs" ]]; then
|
|||||||
exit
|
exit
|
||||||
else
|
else
|
||||||
$time cmake --build . -- $BUILDARGS
|
$time cmake --build . -- $BUILDARGS
|
||||||
if [[ ${BUILD_BOTH:-} == true ]]; then
|
|
||||||
if [[ ${TARGET} == *.unity ]]; then
|
|
||||||
cmake --build . --target rippled_classic -- $BUILDARGS
|
|
||||||
else
|
|
||||||
cmake --build . --target rippled_unity -- $BUILDARGS
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
popd
|
popd
|
||||||
export APP_PATH="$PWD/build/${BUILD_DIR}/${APP}"
|
export APP_PATH="$PWD/build/${BUILD_DIR}/${APP}"
|
||||||
echo "using APP_PATH: $APP_PATH"
|
echo "using APP_PATH: $APP_PATH"
|
||||||
|
|
||||||
|
|
||||||
# See what we've actually built
|
# See what we've actually built
|
||||||
ldd $APP_PATH
|
ldd $APP_PATH
|
||||||
|
|
||||||
@@ -129,7 +127,7 @@ if [[ ${APP} == "rippled" ]]; then
|
|||||||
export LCOV_FILES="*/src/ripple/*"
|
export LCOV_FILES="*/src/ripple/*"
|
||||||
# Nothing to explicitly exclude
|
# Nothing to explicitly exclude
|
||||||
export LCOV_EXCLUDE_FILES="LCOV_NO_EXCLUDE"
|
export LCOV_EXCLUDE_FILES="LCOV_NO_EXCLUDE"
|
||||||
if [[ $TARGET != "coverage" && ${PARALLEL_TESTS:-} == true ]]; then
|
if [[ ${coverage} == false && ${PARALLEL_TESTS:-} == true ]]; then
|
||||||
APP_ARGS+=" --unittest-jobs ${JOBS}"
|
APP_ARGS+=" --unittest-jobs ${JOBS}"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
@@ -138,7 +136,7 @@ else
|
|||||||
: ${LCOV_EXCLUDE_FILES:="LCOV_NO_EXCLUDE"}
|
: ${LCOV_EXCLUDE_FILES:="LCOV_NO_EXCLUDE"}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $TARGET == "coverage" ]]; then
|
if [[ $coverage == true ]]; then
|
||||||
export PATH=$PATH:$LCOV_ROOT/usr/bin
|
export PATH=$PATH:$LCOV_ROOT/usr/bin
|
||||||
|
|
||||||
# Create baseline coverage data file
|
# Create baseline coverage data file
|
||||||
@@ -146,16 +144,22 @@ if [[ $TARGET == "coverage" ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ ${SKIP_TESTS:-} == true ]]; then
|
if [[ ${SKIP_TESTS:-} == true ]]; then
|
||||||
echo "skipping tests for ${TARGET}"
|
echo "skipping tests."
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $TARGET == debug* && -v GDB_ROOT && -x $GDB_ROOT/bin/gdb ]]; then
|
if [[ "${MAX_TIME:-}" == "" ]] ; then
|
||||||
|
tcmd=""
|
||||||
|
else
|
||||||
|
tcmd="timeout ${MAX_TIME}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ${DEBUGGER:-true} == "true" && -v GDB_ROOT && -x $GDB_ROOT/bin/gdb ]]; then
|
||||||
$GDB_ROOT/bin/gdb -v
|
$GDB_ROOT/bin/gdb -v
|
||||||
# Execute unit tests under gdb, printing a call stack
|
# Execute unit tests under gdb, printing a call stack
|
||||||
# if we get a crash.
|
# if we get a crash.
|
||||||
export APP_ARGS
|
export APP_ARGS
|
||||||
$GDB_ROOT/bin/gdb -return-child-result -quiet -batch \
|
$tcmd $GDB_ROOT/bin/gdb -return-child-result -quiet -batch \
|
||||||
-ex "set env MALLOC_CHECK_=3" \
|
-ex "set env MALLOC_CHECK_=3" \
|
||||||
-ex "set print thread-events off" \
|
-ex "set print thread-events off" \
|
||||||
-ex run \
|
-ex run \
|
||||||
@@ -163,10 +167,10 @@ if [[ $TARGET == debug* && -v GDB_ROOT && -x $GDB_ROOT/bin/gdb ]]; then
|
|||||||
-ex "quit" \
|
-ex "quit" \
|
||||||
--args $APP_PATH $APP_ARGS
|
--args $APP_PATH $APP_ARGS
|
||||||
else
|
else
|
||||||
$APP_PATH $APP_ARGS
|
$tcmd $APP_PATH $APP_ARGS
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $TARGET == "coverage" ]]; then
|
if [[ $coverage == true ]]; then
|
||||||
# Create test coverage data file
|
# Create test coverage data file
|
||||||
lcov --no-external -c -d . -o tests.info | grep -v "ignoring data for external file"
|
lcov --no-external -c -d . -o tests.info | grep -v "ignoring data for external file"
|
||||||
|
|
||||||
|
|||||||
@@ -137,8 +137,9 @@ INPUT = \
|
|||||||
../docs/HeapProfiling.md \
|
../docs/HeapProfiling.md \
|
||||||
../docs/Docker.md \
|
../docs/Docker.md \
|
||||||
../docs/consensus.md \
|
../docs/consensus.md \
|
||||||
../Builds/XCode/README.md \
|
../Builds/macos/README.md \
|
||||||
../Builds/VisualStudio2015/README.md \
|
../Builds/linux/README.md \
|
||||||
|
../Builds/VisualStudio2017/README.md \
|
||||||
../src/ripple/consensus/README.md \
|
../src/ripple/consensus/README.md \
|
||||||
../src/ripple/app/consensus/README.md \
|
../src/ripple/app/consensus/README.md \
|
||||||
../src/test/csf/README.md \
|
../src/test/csf/README.md \
|
||||||
|
|||||||
@@ -20,6 +20,7 @@
|
|||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#define DONNA_INLINE inline __attribute__((always_inline))
|
#define DONNA_INLINE inline __attribute__((always_inline))
|
||||||
#define DONNA_NOINLINE __attribute__((noinline))
|
#define DONNA_NOINLINE __attribute__((noinline))
|
||||||
|
#undef ALIGN
|
||||||
#define ALIGN(x) __attribute__((aligned(x)))
|
#define ALIGN(x) __attribute__((aligned(x)))
|
||||||
#define ROTL32(a,b) (((a) << (b)) | ((a) >> (32 - b)))
|
#define ROTL32(a,b) (((a) << (b)) | ((a) >> (32 - b)))
|
||||||
#define ROTR32(a,b) (((a) >> (b)) | ((a) << (32 - b)))
|
#define ROTR32(a,b) (((a) >> (b)) | ((a) << (32 - b)))
|
||||||
|
|||||||
@@ -1,48 +0,0 @@
|
|||||||
//------------------------------------------------------------------------------
|
|
||||||
/*
|
|
||||||
This file is part of rippled: https://github.com/ripple/rippled
|
|
||||||
Copyright (c) 2012, 2013 Ripple Labs Inc.
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
*/
|
|
||||||
//==============================================================================
|
|
||||||
|
|
||||||
#ifndef RIPPLE_BASICS_CHECKLIBRARYVERSIONSIMPL_H_INCLUDED
|
|
||||||
#define RIPPLE_BASICS_CHECKLIBRARYVERSIONSIMPL_H_INCLUDED
|
|
||||||
|
|
||||||
#include <ripple/basics/CheckLibraryVersions.h>
|
|
||||||
|
|
||||||
namespace ripple {
|
|
||||||
namespace version {
|
|
||||||
|
|
||||||
/** Both Boost and OpenSSL have integral version numbers. */
|
|
||||||
using VersionNumber = unsigned long long;
|
|
||||||
|
|
||||||
std::string
|
|
||||||
boostVersion(VersionNumber boostVersion);
|
|
||||||
|
|
||||||
std::string
|
|
||||||
openSSLVersion(VersionNumber openSSLVersion);
|
|
||||||
|
|
||||||
void checkVersion(
|
|
||||||
std::string name,
|
|
||||||
std::string required,
|
|
||||||
std::string actual);
|
|
||||||
|
|
||||||
void checkBoost(std::string version);
|
|
||||||
void checkOpenSSL(std::string version);
|
|
||||||
|
|
||||||
} // namespace version
|
|
||||||
} // namespace ripple
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -231,4 +231,77 @@
|
|||||||
#undef direct
|
#undef direct
|
||||||
#undef check
|
#undef check
|
||||||
|
|
||||||
|
// Order matters, since headers don't have their own #include lines.
|
||||||
|
// Add new includes to the bottom.
|
||||||
|
|
||||||
|
#include <ripple/beast/core/LexicalCast.h>
|
||||||
|
#include <ripple/beast/core/SemanticVersion.h>
|
||||||
|
|
||||||
|
#include <locale>
|
||||||
|
#include <cctype>
|
||||||
|
|
||||||
|
#if ! BEAST_BSD
|
||||||
|
#include <sys/timeb.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if ! BEAST_ANDROID
|
||||||
|
#include <cwctype>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if BEAST_WINDOWS
|
||||||
|
#include <ctime>
|
||||||
|
#include <winsock2.h>
|
||||||
|
#include <ws2tcpip.h>
|
||||||
|
|
||||||
|
#if ! BEAST_MINGW
|
||||||
|
#pragma warning ( push )
|
||||||
|
#pragma warning ( disable: 4091 )
|
||||||
|
#include <Dbghelp.h>
|
||||||
|
#pragma warning ( pop )
|
||||||
|
|
||||||
|
#if ! BEAST_DONT_AUTOLINK_TO_WIN32_LIBRARIES
|
||||||
|
#pragma comment (lib, "DbgHelp.lib")
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if BEAST_MINGW
|
||||||
|
#include <ws2spi.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#else
|
||||||
|
#if BEAST_LINUX || BEAST_ANDROID
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <sys/errno.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if BEAST_LINUX
|
||||||
|
#include <langinfo.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <pwd.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
#include <netinet/tcp.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <net/if.h>
|
||||||
|
#include <sys/ioctl.h>
|
||||||
|
|
||||||
|
#if ! BEAST_ANDROID && ! BEAST_BSD
|
||||||
|
#include <execinfo.h>
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if BEAST_MAC || BEAST_IOS
|
||||||
|
#include <xlocale.h>
|
||||||
|
#include <mach/mach.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if BEAST_ANDROID
|
||||||
|
#include <android/log.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif // BEAST_BASICNATIVEHEADERS_H_INCLUDED
|
#endif // BEAST_BASICNATIVEHEADERS_H_INCLUDED
|
||||||
|
|||||||
@@ -24,6 +24,8 @@
|
|||||||
#include <ripple/beast/core/CurrentThreadName.h>
|
#include <ripple/beast/core/CurrentThreadName.h>
|
||||||
#include <ripple/beast/core/Config.h>
|
#include <ripple/beast/core/Config.h>
|
||||||
#include <boost/thread/tss.hpp>
|
#include <boost/thread/tss.hpp>
|
||||||
|
#include <ripple/beast/core/BasicNativeHeaders.h>
|
||||||
|
#include <ripple/beast/core/StandardIncludes.h>
|
||||||
|
|
||||||
namespace beast {
|
namespace beast {
|
||||||
namespace detail {
|
namespace detail {
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
#include <locale>
|
||||||
|
|
||||||
namespace beast {
|
namespace beast {
|
||||||
|
|
||||||
|
|||||||
@@ -21,106 +21,10 @@
|
|||||||
*/
|
*/
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
#if BEAST_INCLUDE_BEASTCONFIG
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//==============================================================================
|
|
||||||
|
|
||||||
#include <ripple/beast/core/BasicNativeHeaders.h>
|
#include <ripple/beast/core/BasicNativeHeaders.h>
|
||||||
|
|
||||||
#include <ripple/beast/core/Config.h>
|
#include <ripple/beast/core/Config.h>
|
||||||
|
|
||||||
#if BEAST_MSVC
|
|
||||||
# pragma warning (disable: 4251) // (DLL build warning, must be disabled before pushing the warning state)
|
|
||||||
# pragma warning (push)
|
|
||||||
# pragma warning (disable: 4786) // (long class name warning)
|
|
||||||
# ifdef __INTEL_COMPILER
|
|
||||||
# pragma warning (disable: 1125)
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
#include <ripple/beast/core/StandardIncludes.h>
|
#include <ripple/beast/core/StandardIncludes.h>
|
||||||
|
|
||||||
// Order matters, since headers don't have their own #include lines.
|
|
||||||
// Add new includes to the bottom.
|
|
||||||
|
|
||||||
#include <ripple/beast/core/LexicalCast.h>
|
|
||||||
|
|
||||||
#include <ripple/beast/core/SemanticVersion.h>
|
|
||||||
|
|
||||||
#if BEAST_MSVC
|
|
||||||
#pragma warning (pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <locale>
|
|
||||||
#include <cctype>
|
|
||||||
|
|
||||||
#if ! BEAST_BSD
|
|
||||||
#include <sys/timeb.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ! BEAST_ANDROID
|
|
||||||
#include <cwctype>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if BEAST_WINDOWS
|
|
||||||
#include <ctime>
|
|
||||||
#include <winsock2.h>
|
|
||||||
#include <ws2tcpip.h>
|
|
||||||
|
|
||||||
#if ! BEAST_MINGW
|
|
||||||
#pragma warning ( push )
|
|
||||||
#pragma warning ( disable: 4091 )
|
|
||||||
#include <Dbghelp.h>
|
|
||||||
#pragma warning ( pop )
|
|
||||||
|
|
||||||
#if ! BEAST_DONT_AUTOLINK_TO_WIN32_LIBRARIES
|
|
||||||
#pragma comment (lib, "DbgHelp.lib")
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if BEAST_MINGW
|
|
||||||
#include <ws2spi.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#else
|
|
||||||
#if BEAST_LINUX || BEAST_ANDROID
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/socket.h>
|
|
||||||
#include <sys/errno.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <netinet/in.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if BEAST_LINUX
|
|
||||||
#include <langinfo.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <pwd.h>
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <netdb.h>
|
|
||||||
#include <arpa/inet.h>
|
|
||||||
#include <netinet/tcp.h>
|
|
||||||
#include <sys/time.h>
|
|
||||||
#include <net/if.h>
|
|
||||||
#include <sys/ioctl.h>
|
|
||||||
|
|
||||||
#if ! BEAST_ANDROID && ! BEAST_BSD
|
|
||||||
#include <execinfo.h>
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if BEAST_MAC || BEAST_IOS
|
|
||||||
#include <xlocale.h>
|
|
||||||
#include <mach/mach.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if BEAST_ANDROID
|
|
||||||
#include <android/log.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
// If the MSVC debug heap headers were included, disable
|
// If the MSVC debug heap headers were included, disable
|
||||||
|
|||||||
@@ -17,9 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
#if BEAST_INCLUDE_BEASTCONFIG
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <ripple/beast/net/IPAddressV4.h>
|
#include <ripple/beast/net/IPAddressV4.h>
|
||||||
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|||||||
@@ -17,9 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
#if BEAST_INCLUDE_BEASTCONFIG
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <ripple/beast/net/IPAddressV6.h>
|
#include <ripple/beast/net/IPAddressV6.h>
|
||||||
#include <ripple/beast/net/IPAddressV4.h>
|
#include <ripple/beast/net/IPAddressV4.h>
|
||||||
|
|
||||||
|
|||||||
@@ -17,9 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
#if BEAST_INCLUDE_BEASTCONFIG
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <ripple/beast/net/IPEndpoint.h>
|
#include <ripple/beast/net/IPEndpoint.h>
|
||||||
#include <boost/algorithm/string.hpp>
|
#include <boost/algorithm/string.hpp>
|
||||||
|
|
||||||
|
|||||||
@@ -17,9 +17,6 @@
|
|||||||
*/
|
*/
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
#if BEAST_INCLUDE_BEASTCONFIG
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <ripple/beast/utility/src/beast_Debug.cpp>
|
#include <ripple/beast/utility/src/beast_Debug.cpp>
|
||||||
#include <ripple/beast/utility/src/beast_Journal.cpp>
|
#include <ripple/beast/utility/src/beast_Journal.cpp>
|
||||||
#include <ripple/beast/utility/src/beast_PropertyStream.cpp>
|
#include <ripple/beast/utility/src/beast_PropertyStream.cpp>
|
||||||
|
|||||||
@@ -49,7 +49,11 @@ struct secp256k1_data
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static secp256k1_data const secp256k1curve;
|
static secp256k1_data const& secp256k1curve()
|
||||||
|
{
|
||||||
|
static secp256k1_data const curve {};
|
||||||
|
return curve;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace openssl
|
} // namespace openssl
|
||||||
|
|
||||||
@@ -96,7 +100,7 @@ static bignum generateRootDeterministicKey (uint128 const& seed)
|
|||||||
privKey.assign (root.data(), root.size());
|
privKey.assign (root.data(), root.size());
|
||||||
beast::secure_erase(root.data(), root.size());
|
beast::secure_erase(root.data(), root.size());
|
||||||
}
|
}
|
||||||
while (privKey.is_zero() || privKey >= secp256k1curve.order);
|
while (privKey.is_zero() || privKey >= secp256k1curve().order);
|
||||||
beast::secure_erase(&seq, sizeof(seq));
|
beast::secure_erase(&seq, sizeof(seq));
|
||||||
return privKey;
|
return privKey;
|
||||||
}
|
}
|
||||||
@@ -110,7 +114,7 @@ Blob generateRootDeterministicPublicKey (uint128 const& seed)
|
|||||||
bignum privKey = generateRootDeterministicKey (seed);
|
bignum privKey = generateRootDeterministicKey (seed);
|
||||||
|
|
||||||
// compute the corresponding public key point
|
// compute the corresponding public key point
|
||||||
ec_point pubKey = multiply (secp256k1curve.group, privKey, ctx);
|
ec_point pubKey = multiply (secp256k1curve().group, privKey, ctx);
|
||||||
|
|
||||||
privKey.clear(); // security erase
|
privKey.clear(); // security erase
|
||||||
|
|
||||||
@@ -129,7 +133,7 @@ uint256 generateRootDeterministicPrivateKey (uint128 const& seed)
|
|||||||
// <-- root public generator in EC format
|
// <-- root public generator in EC format
|
||||||
static ec_point generateRootPubKey (bignum&& pubGenerator)
|
static ec_point generateRootPubKey (bignum&& pubGenerator)
|
||||||
{
|
{
|
||||||
ec_point pubPoint = bn2point (secp256k1curve.group, pubGenerator.get());
|
ec_point pubPoint = bn2point (secp256k1curve().group, pubGenerator.get());
|
||||||
|
|
||||||
return pubPoint;
|
return pubPoint;
|
||||||
}
|
}
|
||||||
@@ -169,13 +173,13 @@ Blob generatePublicDeterministicKey (Blob const& pubGen, int seq)
|
|||||||
bn_ctx ctx;
|
bn_ctx ctx;
|
||||||
|
|
||||||
// Calculate the private additional key.
|
// Calculate the private additional key.
|
||||||
bignum hash = makeHash (pubGen, seq, secp256k1curve.order);
|
bignum hash = makeHash (pubGen, seq, secp256k1curve().order);
|
||||||
|
|
||||||
// Calculate the corresponding public key.
|
// Calculate the corresponding public key.
|
||||||
ec_point newPoint = multiply (secp256k1curve.group, hash, ctx);
|
ec_point newPoint = multiply (secp256k1curve().group, hash, ctx);
|
||||||
|
|
||||||
// Add the master public key and set.
|
// Add the master public key and set.
|
||||||
add_to (secp256k1curve.group, rootPubKey, newPoint, ctx);
|
add_to (secp256k1curve().group, rootPubKey, newPoint, ctx);
|
||||||
|
|
||||||
return serialize_ec_point (newPoint);
|
return serialize_ec_point (newPoint);
|
||||||
}
|
}
|
||||||
@@ -190,10 +194,10 @@ uint256 generatePrivateDeterministicKey (
|
|||||||
bn_ctx ctx;
|
bn_ctx ctx;
|
||||||
|
|
||||||
// calculate the private additional key
|
// calculate the private additional key
|
||||||
bignum privKey = makeHash (pubGen, seq, secp256k1curve.order);
|
bignum privKey = makeHash (pubGen, seq, secp256k1curve().order);
|
||||||
|
|
||||||
// calculate the final private key
|
// calculate the final private key
|
||||||
add_to (rootPrivKey, privKey, secp256k1curve.order, ctx);
|
add_to (rootPrivKey, privKey, secp256k1curve().order, ctx);
|
||||||
|
|
||||||
rootPrivKey.clear(); // security erase
|
rootPrivKey.clear(); // security erase
|
||||||
|
|
||||||
|
|||||||
@@ -26,14 +26,11 @@ namespace ripple {
|
|||||||
|
|
||||||
namespace BuildInfo {
|
namespace BuildInfo {
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------
|
||||||
|
// The build version number. You must edit this for each release
|
||||||
|
// and follow the format described at http://semver.org/
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
char const* const versionString =
|
char const* const versionString = "1.1.0-b4"
|
||||||
|
|
||||||
//--------------------------------------------------------------------------
|
|
||||||
// The build version number. You must edit this for each release
|
|
||||||
// and follow the format described at http://semver.org/
|
|
||||||
//
|
|
||||||
"1.1.0-b4"
|
|
||||||
|
|
||||||
#if defined(DEBUG) || defined(SANITIZER)
|
#if defined(DEBUG) || defined(SANITIZER)
|
||||||
"+"
|
"+"
|
||||||
|
|||||||
@@ -17,6 +17,13 @@
|
|||||||
*/
|
*/
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
// MUST come first!
|
|
||||||
#include <ripple/beast/core/core.unity.cpp>
|
|
||||||
|
|
||||||
|
#include <ripple/basics/impl/contract.cpp>
|
||||||
|
#include <ripple/basics/impl/CountedObject.cpp>
|
||||||
|
#include <ripple/basics/impl/Log.cpp>
|
||||||
|
#include <ripple/basics/impl/strHex.cpp>
|
||||||
|
#include <ripple/basics/impl/StringUtilities.cpp>
|
||||||
|
|
||||||
|
#if DOXYGEN
|
||||||
|
#include <ripple/basics/README.md>
|
||||||
|
#endif
|
||||||
@@ -17,20 +17,12 @@
|
|||||||
*/
|
*/
|
||||||
//==============================================================================
|
//==============================================================================
|
||||||
|
|
||||||
|
|
||||||
#include <ripple/basics/impl/BasicConfig.cpp>
|
#include <ripple/basics/impl/BasicConfig.cpp>
|
||||||
#include <ripple/basics/impl/contract.cpp>
|
|
||||||
#include <ripple/basics/impl/CountedObject.cpp>
|
|
||||||
#include <ripple/basics/impl/Log.cpp>
|
|
||||||
#include <ripple/basics/impl/make_SSLContext.cpp>
|
#include <ripple/basics/impl/make_SSLContext.cpp>
|
||||||
#include <ripple/basics/impl/mulDiv.cpp>
|
#include <ripple/basics/impl/mulDiv.cpp>
|
||||||
#include <ripple/basics/impl/PerfLogImp.cpp>
|
#include <ripple/basics/impl/PerfLogImp.cpp>
|
||||||
#include <ripple/basics/impl/ResolverAsio.cpp>
|
#include <ripple/basics/impl/ResolverAsio.cpp>
|
||||||
#include <ripple/basics/impl/strHex.cpp>
|
|
||||||
#include <ripple/basics/impl/StringUtilities.cpp>
|
|
||||||
#include <ripple/basics/impl/Sustain.cpp>
|
#include <ripple/basics/impl/Sustain.cpp>
|
||||||
#include <ripple/basics/impl/UptimeClock.cpp>
|
#include <ripple/basics/impl/UptimeClock.cpp>
|
||||||
|
|
||||||
#if DOXYGEN
|
|
||||||
#include <ripple/basics/README.md>
|
|
||||||
#endif
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
//------------------------------------------------------------------------------
|
|
||||||
/*
|
|
||||||
This file is part of rippled: https://github.com/ripple/rippled
|
|
||||||
Copyright (c) 2014 Ripple Labs Inc.
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
*/
|
|
||||||
//==============================================================================
|
|
||||||
|
|
||||||
#ifndef _MSC_VER
|
|
||||||
#include <sys/param.h>
|
|
||||||
#undef ALIGN
|
|
||||||
#endif
|
|
||||||
#include <ed25519.c>
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
//------------------------------------------------------------------------------
|
|
||||||
/*
|
|
||||||
This file is part of rippled: https://github.com/ripple/rippled
|
|
||||||
Copyright (c) 2015 Ripple Labs Inc.
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
*/
|
|
||||||
//==============================================================================
|
|
||||||
|
|
||||||
#include <lz4/lib/lz4.c>
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
#include <lz4/lib/xxhash.c>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
@@ -1,16 +1,6 @@
|
|||||||
// Unity build file for libprotobuf by Vinnie Falco <vinnie.falco@gmail.com>
|
// Unity build file for libprotobuf by Vinnie Falco <vinnie.falco@gmail.com>
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
|
|
||||||
#ifdef _MSC_VER // MSVC
|
|
||||||
# pragma warning (push)
|
|
||||||
# pragma warning (disable: 4018) // signed/unsigned mismatch
|
|
||||||
# pragma warning (disable: 4244) // conversion, possible loss of data
|
|
||||||
# pragma warning (disable: 4800) // forcing value to bool
|
|
||||||
# pragma warning (disable: 4996) // deprecated POSIX name
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "google/protobuf/descriptor.cc"
|
#include "google/protobuf/descriptor.cc"
|
||||||
#include "google/protobuf/descriptor.pb.cc"
|
#include "google/protobuf/descriptor.pb.cc"
|
||||||
#include "google/protobuf/descriptor_database.cc"
|
#include "google/protobuf/descriptor_database.cc"
|
||||||
@@ -50,8 +40,3 @@
|
|||||||
#include "google/protobuf/stubs/atomicops_internals_x86_msvc.cc"
|
#include "google/protobuf/stubs/atomicops_internals_x86_msvc.cc"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef _MSC_VER // MSVC
|
|
||||||
# pragma warning (pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|||||||
@@ -1,20 +0,0 @@
|
|||||||
//------------------------------------------------------------------------------
|
|
||||||
/*
|
|
||||||
This file is part of rippled: https://github.com/ripple/rippled
|
|
||||||
Copyright (c) 2014 Ripple Labs Inc.
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
*/
|
|
||||||
//==============================================================================
|
|
||||||
|
|
||||||
#include "ripple.pb.cc"
|
|
||||||
@@ -22,26 +22,6 @@
|
|||||||
|
|
||||||
#if RIPPLE_ROCKSDB_AVAILABLE
|
#if RIPPLE_ROCKSDB_AVAILABLE
|
||||||
|
|
||||||
#if BEAST_WIN32
|
|
||||||
# define ROCKSDB_PLATFORM_WINDOWS
|
|
||||||
#else
|
|
||||||
# define ROCKSDB_PLATFORM_POSIX
|
|
||||||
# if BEAST_MAC || BEAST_IOS
|
|
||||||
# define OS_MACOSX 1
|
|
||||||
# elif BEAST_BSD
|
|
||||||
# define OS_FREEBSD
|
|
||||||
# else
|
|
||||||
# define OS_LINUX
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if BEAST_GCC
|
|
||||||
# pragma GCC diagnostic push
|
|
||||||
# pragma GCC diagnostic ignored "-Wreorder"
|
|
||||||
# pragma GCC diagnostic ignored "-Wunused-variable"
|
|
||||||
# pragma GCC diagnostic ignored "-Wunused-but-set-variable"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Compile RocksDB without debugging unless specifically requested
|
// Compile RocksDB without debugging unless specifically requested
|
||||||
#if !defined (NDEBUG) && !defined (RIPPLE_DEBUG_ROCKSDB)
|
#if !defined (NDEBUG) && !defined (RIPPLE_DEBUG_ROCKSDB)
|
||||||
#define NDEBUG
|
#define NDEBUG
|
||||||
|
|||||||
@@ -20,44 +20,7 @@
|
|||||||
#ifndef RIPPLE_UNITY_ROCKSDB_H_INCLUDED
|
#ifndef RIPPLE_UNITY_ROCKSDB_H_INCLUDED
|
||||||
#define RIPPLE_UNITY_ROCKSDB_H_INCLUDED
|
#define RIPPLE_UNITY_ROCKSDB_H_INCLUDED
|
||||||
|
|
||||||
#include <ripple/beast/core/Config.h>
|
|
||||||
|
|
||||||
#ifdef __clang_major__
|
|
||||||
#if __clang_major__ >= 7
|
|
||||||
# pragma clang diagnostic push
|
|
||||||
# pragma clang diagnostic ignored "-Winconsistent-missing-override"
|
|
||||||
# pragma clang diagnostic ignored "-Wuninitialized"
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if BEAST_WIN32
|
|
||||||
# define ROCKSDB_PLATFORM_WINDOWS
|
|
||||||
#else
|
|
||||||
# define ROCKSDB_PLATFORM_POSIX
|
|
||||||
# define ROCKSDB_LIB_IO_POSIX
|
|
||||||
# if BEAST_MAC || BEAST_IOS
|
|
||||||
# define OS_MACOSX 1
|
|
||||||
# elif BEAST_BSD
|
|
||||||
# define OS_FREEBSD
|
|
||||||
# else
|
|
||||||
# define OS_LINUX
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef RIPPLE_ROCKSDB_AVAILABLE
|
|
||||||
# if BEAST_WIN32
|
|
||||||
# define RIPPLE_ROCKSDB_AVAILABLE 0
|
|
||||||
# else
|
|
||||||
# if __cplusplus >= 201103L
|
|
||||||
# define RIPPLE_ROCKSDB_AVAILABLE 1
|
|
||||||
# else
|
|
||||||
# define RIPPLE_ROCKSDB_AVAILABLE 0
|
|
||||||
# endif
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if RIPPLE_ROCKSDB_AVAILABLE
|
#if RIPPLE_ROCKSDB_AVAILABLE
|
||||||
#define SNAPPY
|
|
||||||
//#include <rocksdb2/port/port_posix.h>
|
//#include <rocksdb2/port/port_posix.h>
|
||||||
#include <rocksdb2/include/rocksdb/cache.h>
|
#include <rocksdb2/include/rocksdb/cache.h>
|
||||||
#include <rocksdb2/include/rocksdb/compaction_filter.h>
|
#include <rocksdb2/include/rocksdb/compaction_filter.h>
|
||||||
|
|||||||
@@ -1,34 +0,0 @@
|
|||||||
//------------------------------------------------------------------------------
|
|
||||||
/*
|
|
||||||
This file is part of rippled: https://github.com/ripple/rippled
|
|
||||||
Copyright (c) 2012, 2013 Ripple Labs Inc.
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
*/
|
|
||||||
//==============================================================================
|
|
||||||
|
|
||||||
|
|
||||||
#define USE_NUM_NONE
|
|
||||||
#define USE_FIELD_10X26
|
|
||||||
#define USE_FIELD_INV_BUILTIN
|
|
||||||
#define USE_SCALAR_8X32
|
|
||||||
#define USE_SCALAR_INV_BUILTIN
|
|
||||||
|
|
||||||
#if defined(_MSC_VER) && _MSC_VER >= 1900
|
|
||||||
#pragma warning ( push )
|
|
||||||
#pragma warning ( disable: 4319 )
|
|
||||||
#endif
|
|
||||||
#include <secp256k1/src/secp256k1.c>
|
|
||||||
#if defined(_MSC_VER) && _MSC_VER >= 1900
|
|
||||||
#pragma warning ( pop )
|
|
||||||
#endif
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
//------------------------------------------------------------------------------
|
|
||||||
/*
|
|
||||||
This file is part of rippled: https://github.com/ripple/rippled
|
|
||||||
Copyright (c) 2014 Ripple Labs Inc.
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
*/
|
|
||||||
//==============================================================================
|
|
||||||
|
|
||||||
#include <ripple/beast/core/Config.h>
|
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
#include <cstddef>
|
|
||||||
namespace snappy {
|
|
||||||
using ssize_t = std::ptrdiff_t;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if BEAST_CLANG
|
|
||||||
#pragma clang diagnostic push
|
|
||||||
#pragma clang diagnostic ignored "-Wunused-function"
|
|
||||||
#pragma clang diagnostic ignored "-Wdeprecated"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <snappy/snappy/snappy.cc>
|
|
||||||
#include <snappy/snappy/snappy-sinksource.cc>
|
|
||||||
#include <snappy/snappy/snappy-stubs-internal.cc>
|
|
||||||
|
|
||||||
#if BEAST_CLANG
|
|
||||||
#pragma clang diagnostic pop
|
|
||||||
#endif
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
//------------------------------------------------------------------------------
|
|
||||||
/*
|
|
||||||
This file is part of rippled: https://github.com/ripple/rippled
|
|
||||||
Copyright (c) 2012-2015 Ripple Labs Inc.
|
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
|
||||||
copyright notice and this permission notice appear in all copies.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
|
||||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
|
||||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
|
||||||
ANY SPECIAL , DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
|
||||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
|
||||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
|
||||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|
||||||
*/
|
|
||||||
//==============================================================================
|
|
||||||
|
|
||||||
// Prevents sqlite.h from being included, since it screws up the .c
|
|
||||||
#define RIPPLE_SQLITE_CPP_INCLUDED
|
|
||||||
|
|
||||||
#include <sqlite/sqlite.h>
|
|
||||||
|
|
||||||
#ifdef _MSC_VER // MSVC
|
|
||||||
#pragma warning (push)
|
|
||||||
#pragma warning (disable: 4100) /* unreferenced formal parameter */
|
|
||||||
#pragma warning (disable: 4127) /* conditional expression is constant */
|
|
||||||
#pragma warning (disable: 4232) /* nonstandard extension used: dllimport address */
|
|
||||||
#pragma warning (disable: 4244) /* conversion from 'int': possible loss of data */
|
|
||||||
#pragma warning (disable: 4701) /* potentially uninitialized variable */
|
|
||||||
#pragma warning (disable: 4706) /* assignment within conditional expression */
|
|
||||||
#pragma warning (disable: 4996) /* 'GetVersionExA' was declared deprecated */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* When compiled with SQLITE_THREADSAFE=1, SQLite operates in serialized mode.
|
|
||||||
In this mode, SQLite can be safely used by multiple threads with no restriction.
|
|
||||||
|
|
||||||
VFALCO NOTE This implies a global mutex!
|
|
||||||
*/
|
|
||||||
#define SQLITE_THREADSAFE 1
|
|
||||||
|
|
||||||
/* When compiled with SQLITE_THREADSAFE=2, SQLite can be used in a
|
|
||||||
multithreaded program so long as no two threads attempt to use the
|
|
||||||
same database connection at the same time.
|
|
||||||
|
|
||||||
VFALCO NOTE This is the preferred threading model.
|
|
||||||
*/
|
|
||||||
//#define SQLITE_THREADSAFE 2
|
|
||||||
|
|
||||||
#if defined RIPPLE_SQLITE_USE_NDEBUG && !defined (NDEBUG)
|
|
||||||
#define NDEBUG
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <sqlite/sqlite/sqlite3.c>
|
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
#pragma warning (pop)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
@@ -19,9 +19,6 @@
|
|||||||
|
|
||||||
// MODULES: ../impl/IPEndpoint.cpp ../impl/IPAddressV4.cpp ../impl/IPAddressV6.cpp
|
// MODULES: ../impl/IPEndpoint.cpp ../impl/IPAddressV4.cpp ../impl/IPAddressV6.cpp
|
||||||
|
|
||||||
#if BEAST_INCLUDE_BEASTCONFIG
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <ripple/beast/net/IPEndpoint.h>
|
#include <ripple/beast/net/IPEndpoint.h>
|
||||||
#include <ripple/beast/unit_test.h>
|
#include <ripple/beast/unit_test.h>
|
||||||
#include <ripple/basics/random.h>
|
#include <ripple/basics/random.h>
|
||||||
|
|||||||
Reference in New Issue
Block a user