mirror of
https://github.com/Xahau/xahaud.git
synced 2025-11-04 18:55:49 +00:00
Make release build use conan deps where possible and hbb 4.0.1 (#516)
Co-authored-by: Denis Angell <dangell@transia.co> Co-authored-by: Niq Dudfield <ndudfield@gmail.com>
This commit is contained in:
12
.github/workflows/build-in-docker.yml
vendored
12
.github/workflows/build-in-docker.yml
vendored
@@ -32,19 +32,9 @@ jobs:
|
|||||||
clean: true
|
clean: true
|
||||||
fetch-depth: 2 # Only get the last 2 commits, to avoid fetching all history
|
fetch-depth: 2 # Only get the last 2 commits, to avoid fetching all history
|
||||||
|
|
||||||
checkpatterns:
|
|
||||||
runs-on: [self-hosted, vanity]
|
|
||||||
needs: checkout
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: ${{ needs.checkout.outputs.checkout_path }}
|
|
||||||
steps:
|
|
||||||
- name: Check for suspicious patterns
|
|
||||||
run: /bin/bash suspicious_patterns.sh
|
|
||||||
|
|
||||||
build:
|
build:
|
||||||
runs-on: [self-hosted, vanity]
|
runs-on: [self-hosted, vanity]
|
||||||
needs: [checkpatterns, checkout]
|
needs: [checkout]
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
working-directory: ${{ needs.checkout.outputs.checkout_path }}
|
working-directory: ${{ needs.checkout.outputs.checkout_path }}
|
||||||
|
|||||||
5
.gitignore
vendored
5
.gitignore
vendored
@@ -24,6 +24,11 @@ bin/project-cache.jam
|
|||||||
|
|
||||||
build/docker
|
build/docker
|
||||||
|
|
||||||
|
# Ignore release builder files
|
||||||
|
.env
|
||||||
|
release-build
|
||||||
|
cmake-*.tar.gz
|
||||||
|
|
||||||
# Ignore object files.
|
# Ignore object files.
|
||||||
*.o
|
*.o
|
||||||
build
|
build
|
||||||
|
|||||||
@@ -1068,6 +1068,11 @@ target_link_libraries (rippled
|
|||||||
Ripple::opts
|
Ripple::opts
|
||||||
Ripple::libs
|
Ripple::libs
|
||||||
Ripple::xrpl_core
|
Ripple::xrpl_core
|
||||||
|
# Workaround for a Conan 1.x bug that prevents static linking of libstdc++
|
||||||
|
# when a dependency (snappy) modifies system_libs. See the comment in
|
||||||
|
# external/snappy/conanfile.py for a full explanation.
|
||||||
|
# This is likely not strictly necessary, but listed explicitly as a good practice.
|
||||||
|
m
|
||||||
)
|
)
|
||||||
exclude_if_included (rippled)
|
exclude_if_included (rippled)
|
||||||
# define a macro for tests that might need to
|
# define a macro for tests that might need to
|
||||||
|
|||||||
@@ -1,33 +0,0 @@
|
|||||||
#[===================================================================[
|
|
||||||
NIH prefix path..this is where we will download
|
|
||||||
and build any ExternalProjects, and they will hopefully
|
|
||||||
survive across build directory deletion (manual cleans)
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
string (REGEX REPLACE "[ \\/%]+" "_" gen_for_path ${CMAKE_GENERATOR})
|
|
||||||
string (TOLOWER ${gen_for_path} gen_for_path)
|
|
||||||
# HACK: trying to shorten paths for windows CI (which hits 260 MAXPATH easily)
|
|
||||||
# @see: https://issues.jenkins-ci.org/browse/JENKINS-38706?focusedCommentId=339847
|
|
||||||
string (REPLACE "visual_studio" "vs" gen_for_path ${gen_for_path})
|
|
||||||
if (NOT DEFINED NIH_CACHE_ROOT)
|
|
||||||
if (DEFINED ENV{NIH_CACHE_ROOT})
|
|
||||||
set (NIH_CACHE_ROOT $ENV{NIH_CACHE_ROOT})
|
|
||||||
else ()
|
|
||||||
set (NIH_CACHE_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/.nih_c")
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
set (nih_cache_path
|
|
||||||
"${NIH_CACHE_ROOT}/${gen_for_path}/${CMAKE_CXX_COMPILER_ID}_${CMAKE_CXX_COMPILER_VERSION}")
|
|
||||||
if (NOT is_multiconfig)
|
|
||||||
set (nih_cache_path "${nih_cache_path}/${CMAKE_BUILD_TYPE}")
|
|
||||||
endif ()
|
|
||||||
file(TO_CMAKE_PATH "${nih_cache_path}" nih_cache_path)
|
|
||||||
message (STATUS "NIH-EP cache path: ${nih_cache_path}")
|
|
||||||
## two convenience variables:
|
|
||||||
set (ep_lib_prefix ${CMAKE_STATIC_LIBRARY_PREFIX})
|
|
||||||
set (ep_lib_suffix ${CMAKE_STATIC_LIBRARY_SUFFIX})
|
|
||||||
|
|
||||||
# this is a setting for FetchContent and needs to be
|
|
||||||
# a cache variable
|
|
||||||
# https://cmake.org/cmake/help/latest/module/FetchContent.html#populating-the-content
|
|
||||||
set (FETCHCONTENT_BASE_DIR ${nih_cache_path} CACHE STRING "" FORCE)
|
|
||||||
@@ -1,52 +0,0 @@
|
|||||||
find_package(Boost 1.83 REQUIRED
|
|
||||||
COMPONENTS
|
|
||||||
chrono
|
|
||||||
container
|
|
||||||
context
|
|
||||||
coroutine
|
|
||||||
date_time
|
|
||||||
filesystem
|
|
||||||
program_options
|
|
||||||
regex
|
|
||||||
system
|
|
||||||
thread
|
|
||||||
)
|
|
||||||
|
|
||||||
add_library(ripple_boost INTERFACE)
|
|
||||||
add_library(Ripple::boost ALIAS ripple_boost)
|
|
||||||
if(XCODE)
|
|
||||||
target_include_directories(ripple_boost BEFORE INTERFACE ${Boost_INCLUDE_DIRS})
|
|
||||||
target_compile_options(ripple_boost INTERFACE --system-header-prefix="boost/")
|
|
||||||
else()
|
|
||||||
target_include_directories(ripple_boost SYSTEM BEFORE INTERFACE ${Boost_INCLUDE_DIRS})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
target_link_libraries(ripple_boost
|
|
||||||
INTERFACE
|
|
||||||
Boost::boost
|
|
||||||
Boost::chrono
|
|
||||||
Boost::container
|
|
||||||
Boost::coroutine
|
|
||||||
Boost::date_time
|
|
||||||
Boost::filesystem
|
|
||||||
Boost::program_options
|
|
||||||
Boost::regex
|
|
||||||
Boost::system
|
|
||||||
Boost::iostreams
|
|
||||||
Boost::thread)
|
|
||||||
if(Boost_COMPILER)
|
|
||||||
target_link_libraries(ripple_boost INTERFACE Boost::disable_autolinking)
|
|
||||||
endif()
|
|
||||||
if(san AND is_clang)
|
|
||||||
# TODO: gcc does not support -fsanitize-blacklist...can we do something else
|
|
||||||
# for gcc ?
|
|
||||||
if(NOT Boost_INCLUDE_DIRS AND TARGET Boost::headers)
|
|
||||||
get_target_property(Boost_INCLUDE_DIRS Boost::headers INTERFACE_INCLUDE_DIRECTORIES)
|
|
||||||
endif()
|
|
||||||
message(STATUS "Adding [${Boost_INCLUDE_DIRS}] to sanitizer blacklist")
|
|
||||||
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/san_bl.txt "src:${Boost_INCLUDE_DIRS}/*")
|
|
||||||
target_compile_options(opts
|
|
||||||
INTERFACE
|
|
||||||
# ignore boost headers for sanitizing
|
|
||||||
-fsanitize-blacklist=${CMAKE_CURRENT_BINARY_DIR}/san_bl.txt)
|
|
||||||
endif()
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
find_package(Protobuf 3.8)
|
|
||||||
|
|
||||||
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/proto_gen)
|
|
||||||
set(ccbd ${CMAKE_CURRENT_BINARY_DIR})
|
|
||||||
set(CMAKE_CURRENT_BINARY_DIR ${CMAKE_BINARY_DIR}/proto_gen)
|
|
||||||
protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS src/ripple/proto/ripple.proto)
|
|
||||||
set(CMAKE_CURRENT_BINARY_DIR ${ccbd})
|
|
||||||
|
|
||||||
add_library(pbufs STATIC ${PROTO_SRCS} ${PROTO_HDRS})
|
|
||||||
target_include_directories(pbufs SYSTEM PUBLIC
|
|
||||||
${CMAKE_BINARY_DIR}/proto_gen
|
|
||||||
${CMAKE_BINARY_DIR}/proto_gen/src/ripple/proto
|
|
||||||
)
|
|
||||||
target_link_libraries(pbufs protobuf::libprotobuf)
|
|
||||||
target_compile_options(pbufs
|
|
||||||
PUBLIC
|
|
||||||
$<$<BOOL:${XCODE}>:
|
|
||||||
--system-header-prefix="google/protobuf"
|
|
||||||
-Wno-deprecated-dynamic-exception-spec
|
|
||||||
>
|
|
||||||
)
|
|
||||||
add_library(Ripple::pbufs ALIAS pbufs)
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
find_package(gRPC 1.23)
|
|
||||||
|
|
||||||
#[=================================[
|
|
||||||
generate protobuf sources for
|
|
||||||
grpc defs and bundle into a
|
|
||||||
static lib
|
|
||||||
#]=================================]
|
|
||||||
set(GRPC_GEN_DIR "${CMAKE_BINARY_DIR}/proto_gen_grpc")
|
|
||||||
file(MAKE_DIRECTORY ${GRPC_GEN_DIR})
|
|
||||||
set(GRPC_PROTO_SRCS)
|
|
||||||
set(GRPC_PROTO_HDRS)
|
|
||||||
set(GRPC_PROTO_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/src/ripple/proto/org")
|
|
||||||
file(GLOB_RECURSE GRPC_DEFINITION_FILES LIST_DIRECTORIES false "${GRPC_PROTO_ROOT}/*.proto")
|
|
||||||
foreach(file ${GRPC_DEFINITION_FILES})
|
|
||||||
get_filename_component(_abs_file ${file} ABSOLUTE)
|
|
||||||
get_filename_component(_abs_dir ${_abs_file} DIRECTORY)
|
|
||||||
get_filename_component(_basename ${file} NAME_WE)
|
|
||||||
get_filename_component(_proto_inc ${GRPC_PROTO_ROOT} DIRECTORY) # updir one level
|
|
||||||
file(RELATIVE_PATH _rel_root_file ${_proto_inc} ${_abs_file})
|
|
||||||
get_filename_component(_rel_root_dir ${_rel_root_file} DIRECTORY)
|
|
||||||
file(RELATIVE_PATH _rel_dir ${CMAKE_CURRENT_SOURCE_DIR} ${_abs_dir})
|
|
||||||
|
|
||||||
set(src_1 "${GRPC_GEN_DIR}/${_rel_root_dir}/${_basename}.grpc.pb.cc")
|
|
||||||
set(src_2 "${GRPC_GEN_DIR}/${_rel_root_dir}/${_basename}.pb.cc")
|
|
||||||
set(hdr_1 "${GRPC_GEN_DIR}/${_rel_root_dir}/${_basename}.grpc.pb.h")
|
|
||||||
set(hdr_2 "${GRPC_GEN_DIR}/${_rel_root_dir}/${_basename}.pb.h")
|
|
||||||
add_custom_command(
|
|
||||||
OUTPUT ${src_1} ${src_2} ${hdr_1} ${hdr_2}
|
|
||||||
COMMAND protobuf::protoc
|
|
||||||
ARGS --grpc_out=${GRPC_GEN_DIR}
|
|
||||||
--cpp_out=${GRPC_GEN_DIR}
|
|
||||||
--plugin=protoc-gen-grpc=$<TARGET_FILE:gRPC::grpc_cpp_plugin>
|
|
||||||
-I ${_proto_inc} -I ${_rel_dir}
|
|
||||||
${_abs_file}
|
|
||||||
DEPENDS ${_abs_file} protobuf::protoc gRPC::grpc_cpp_plugin
|
|
||||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
COMMENT "Running gRPC C++ protocol buffer compiler on ${file}"
|
|
||||||
VERBATIM)
|
|
||||||
set_source_files_properties(${src_1} ${src_2} ${hdr_1} ${hdr_2} PROPERTIES GENERATED TRUE)
|
|
||||||
list(APPEND GRPC_PROTO_SRCS ${src_1} ${src_2})
|
|
||||||
list(APPEND GRPC_PROTO_HDRS ${hdr_1} ${hdr_2})
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
add_library(grpc_pbufs STATIC ${GRPC_PROTO_SRCS} ${GRPC_PROTO_HDRS})
|
|
||||||
#target_include_directories(grpc_pbufs PRIVATE src)
|
|
||||||
target_include_directories(grpc_pbufs SYSTEM PUBLIC ${GRPC_GEN_DIR})
|
|
||||||
target_link_libraries(grpc_pbufs
|
|
||||||
"gRPC::grpc++"
|
|
||||||
# libgrpc is missing references.
|
|
||||||
absl::random_random
|
|
||||||
)
|
|
||||||
target_compile_options(grpc_pbufs
|
|
||||||
PRIVATE
|
|
||||||
$<$<BOOL:${MSVC}>:-wd4065>
|
|
||||||
$<$<NOT:$<BOOL:${MSVC}>>:-Wno-deprecated-declarations>
|
|
||||||
PUBLIC
|
|
||||||
$<$<BOOL:${MSVC}>:-wd4996>
|
|
||||||
$<$<BOOL:${XCODE}>:
|
|
||||||
--system-header-prefix="google/protobuf"
|
|
||||||
-Wno-deprecated-dynamic-exception-spec
|
|
||||||
>)
|
|
||||||
add_library(Ripple::grpc_pbufs ALIAS grpc_pbufs)
|
|
||||||
@@ -1,51 +1,3 @@
|
|||||||
#[===================================================================[
|
|
||||||
NIH dep: boost
|
|
||||||
#]===================================================================]
|
|
||||||
if((NOT DEFINED BOOST_ROOT) AND(DEFINED ENV{BOOST_ROOT}))
|
|
||||||
set(BOOST_ROOT $ENV{BOOST_ROOT})
|
|
||||||
endif()
|
|
||||||
if((NOT DEFINED BOOST_LIBRARYDIR) AND(DEFINED ENV{BOOST_LIBRARYDIR}))
|
|
||||||
set(BOOST_LIBRARYDIR $ENV{BOOST_LIBRARYDIR})
|
|
||||||
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((NOT DEFINED BOOST_LIBRARYDIR) AND (DEFINED BOOST_ROOT))
|
|
||||||
if(IS_DIRECTORY ${BOOST_ROOT}/stage64/lib)
|
|
||||||
set(BOOST_LIBRARYDIR ${BOOST_ROOT}/stage64/lib)
|
|
||||||
elseif(IS_DIRECTORY ${BOOST_ROOT}/stage/lib)
|
|
||||||
set(BOOST_LIBRARYDIR ${BOOST_ROOT}/stage/lib)
|
|
||||||
elseif(IS_DIRECTORY ${BOOST_ROOT}/lib)
|
|
||||||
set(BOOST_LIBRARYDIR ${BOOST_ROOT}/lib)
|
|
||||||
else()
|
|
||||||
message(WARNING "Did not find expected boost library dir. "
|
|
||||||
"Defaulting to ${BOOST_ROOT}")
|
|
||||||
set(BOOST_LIBRARYDIR ${BOOST_ROOT})
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
message(STATUS "BOOST_ROOT: ${BOOST_ROOT}")
|
|
||||||
message(STATUS "BOOST_LIBRARYDIR: ${BOOST_LIBRARYDIR}")
|
|
||||||
|
|
||||||
# uncomment the following as needed to debug FindBoost issues:
|
|
||||||
#set(Boost_DEBUG ON)
|
|
||||||
|
|
||||||
#[=========================================================[
|
|
||||||
boost dynamic libraries don't trivially support @rpath
|
|
||||||
linking right now (cmake's default), so just force
|
|
||||||
static linking for macos, or if requested on linux by flag
|
|
||||||
#]=========================================================]
|
|
||||||
if(static)
|
|
||||||
set(Boost_USE_STATIC_LIBS ON)
|
|
||||||
endif()
|
|
||||||
set(Boost_USE_MULTITHREADED ON)
|
|
||||||
if(static AND NOT APPLE)
|
|
||||||
set(Boost_USE_STATIC_RUNTIME ON)
|
|
||||||
else()
|
|
||||||
set(Boost_USE_STATIC_RUNTIME OFF)
|
|
||||||
endif()
|
|
||||||
# TBD:
|
|
||||||
# Boost_USE_DEBUG_RUNTIME: When ON, uses Boost libraries linked against the
|
|
||||||
find_package(Boost 1.86 REQUIRED
|
find_package(Boost 1.86 REQUIRED
|
||||||
COMPONENTS
|
COMPONENTS
|
||||||
chrono
|
chrono
|
||||||
@@ -57,12 +9,12 @@ find_package(Boost 1.86 REQUIRED
|
|||||||
program_options
|
program_options
|
||||||
regex
|
regex
|
||||||
system
|
system
|
||||||
iostreams
|
thread
|
||||||
thread)
|
)
|
||||||
|
|
||||||
add_library(ripple_boost INTERFACE)
|
add_library(ripple_boost INTERFACE)
|
||||||
add_library(Ripple::boost ALIAS ripple_boost)
|
add_library(Ripple::boost ALIAS ripple_boost)
|
||||||
if(is_xcode)
|
if(XCODE)
|
||||||
target_include_directories(ripple_boost BEFORE INTERFACE ${Boost_INCLUDE_DIRS})
|
target_include_directories(ripple_boost BEFORE INTERFACE ${Boost_INCLUDE_DIRS})
|
||||||
target_compile_options(ripple_boost INTERFACE --system-header-prefix="boost/")
|
target_compile_options(ripple_boost INTERFACE --system-header-prefix="boost/")
|
||||||
else()
|
else()
|
||||||
@@ -77,10 +29,10 @@ target_link_libraries(ripple_boost
|
|||||||
Boost::coroutine
|
Boost::coroutine
|
||||||
Boost::date_time
|
Boost::date_time
|
||||||
Boost::filesystem
|
Boost::filesystem
|
||||||
Boost::iostreams
|
|
||||||
Boost::program_options
|
Boost::program_options
|
||||||
Boost::regex
|
Boost::regex
|
||||||
Boost::system
|
Boost::system
|
||||||
|
Boost::iostreams
|
||||||
Boost::thread)
|
Boost::thread)
|
||||||
if(Boost_COMPILER)
|
if(Boost_COMPILER)
|
||||||
target_link_libraries(ripple_boost INTERFACE Boost::disable_autolinking)
|
target_link_libraries(ripple_boost INTERFACE Boost::disable_autolinking)
|
||||||
|
|||||||
@@ -1,28 +0,0 @@
|
|||||||
#[===================================================================[
|
|
||||||
NIH dep: ed25519-donna
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
add_library (ed25519-donna STATIC
|
|
||||||
src/ed25519-donna/ed25519.c)
|
|
||||||
target_include_directories (ed25519-donna
|
|
||||||
PUBLIC
|
|
||||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
|
|
||||||
$<INSTALL_INTERFACE:include>
|
|
||||||
PRIVATE
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/src/ed25519-donna)
|
|
||||||
#[=========================================================[
|
|
||||||
NOTE for macos:
|
|
||||||
https://github.com/floodyberry/ed25519-donna/issues/29
|
|
||||||
our source for ed25519-donna-portable.h has been
|
|
||||||
patched to workaround this.
|
|
||||||
#]=========================================================]
|
|
||||||
target_link_libraries (ed25519-donna PUBLIC OpenSSL::SSL)
|
|
||||||
add_library (NIH::ed25519-donna ALIAS ed25519-donna)
|
|
||||||
target_link_libraries (ripple_libs INTERFACE NIH::ed25519-donna)
|
|
||||||
#[===========================[
|
|
||||||
headers installation
|
|
||||||
#]===========================]
|
|
||||||
install (
|
|
||||||
FILES
|
|
||||||
src/ed25519-donna/ed25519.h
|
|
||||||
DESTINATION include/ed25519-donna)
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,47 +0,0 @@
|
|||||||
# - Try to find jemalloc
|
|
||||||
# Once done this will define
|
|
||||||
# JEMALLOC_FOUND - System has jemalloc
|
|
||||||
# JEMALLOC_INCLUDE_DIRS - The jemalloc include directories
|
|
||||||
# JEMALLOC_LIBRARIES - The libraries needed to use jemalloc
|
|
||||||
|
|
||||||
if(NOT USE_BUNDLED_JEMALLOC)
|
|
||||||
find_package(PkgConfig)
|
|
||||||
if (PKG_CONFIG_FOUND)
|
|
||||||
pkg_check_modules(PC_JEMALLOC QUIET jemalloc)
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
set(PC_JEMALLOC_INCLUDEDIR)
|
|
||||||
set(PC_JEMALLOC_INCLUDE_DIRS)
|
|
||||||
set(PC_JEMALLOC_LIBDIR)
|
|
||||||
set(PC_JEMALLOC_LIBRARY_DIRS)
|
|
||||||
set(LIMIT_SEARCH NO_DEFAULT_PATH)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(JEMALLOC_DEFINITIONS ${PC_JEMALLOC_CFLAGS_OTHER})
|
|
||||||
|
|
||||||
find_path(JEMALLOC_INCLUDE_DIR jemalloc/jemalloc.h
|
|
||||||
PATHS ${PC_JEMALLOC_INCLUDEDIR} ${PC_JEMALLOC_INCLUDE_DIRS}
|
|
||||||
${LIMIT_SEARCH})
|
|
||||||
|
|
||||||
# If we're asked to use static linkage, add libjemalloc.a as a preferred library name.
|
|
||||||
if(JEMALLOC_USE_STATIC)
|
|
||||||
list(APPEND JEMALLOC_NAMES
|
|
||||||
"${CMAKE_STATIC_LIBRARY_PREFIX}jemalloc${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
list(APPEND JEMALLOC_NAMES jemalloc)
|
|
||||||
|
|
||||||
find_library(JEMALLOC_LIBRARY NAMES ${JEMALLOC_NAMES}
|
|
||||||
HINTS ${PC_JEMALLOC_LIBDIR} ${PC_JEMALLOC_LIBRARY_DIRS}
|
|
||||||
${LIMIT_SEARCH})
|
|
||||||
|
|
||||||
set(JEMALLOC_LIBRARIES ${JEMALLOC_LIBRARY})
|
|
||||||
set(JEMALLOC_INCLUDE_DIRS ${JEMALLOC_INCLUDE_DIR})
|
|
||||||
|
|
||||||
include(FindPackageHandleStandardArgs)
|
|
||||||
# handle the QUIETLY and REQUIRED arguments and set JEMALLOC_FOUND to TRUE
|
|
||||||
# if all listed variables are TRUE
|
|
||||||
find_package_handle_standard_args(JeMalloc DEFAULT_MSG
|
|
||||||
JEMALLOC_LIBRARY JEMALLOC_INCLUDE_DIR)
|
|
||||||
|
|
||||||
mark_as_advanced(JEMALLOC_INCLUDE_DIR JEMALLOC_LIBRARY)
|
|
||||||
@@ -1,22 +0,0 @@
|
|||||||
find_package (PkgConfig REQUIRED)
|
|
||||||
pkg_search_module (libarchive_PC QUIET libarchive>=3.4.3)
|
|
||||||
|
|
||||||
if(static)
|
|
||||||
set(LIBARCHIVE_LIB libarchive.a)
|
|
||||||
else()
|
|
||||||
set(LIBARCHIVE_LIB archive)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_library (archive
|
|
||||||
NAMES ${LIBARCHIVE_LIB}
|
|
||||||
HINTS
|
|
||||||
${libarchive_PC_LIBDIR}
|
|
||||||
${libarchive_PC_LIBRARY_DIRS}
|
|
||||||
NO_DEFAULT_PATH)
|
|
||||||
|
|
||||||
find_path (LIBARCHIVE_INCLUDE_DIR
|
|
||||||
NAMES archive.h
|
|
||||||
HINTS
|
|
||||||
${libarchive_PC_INCLUDEDIR}
|
|
||||||
${libarchive_PC_INCLUDEDIRS}
|
|
||||||
NO_DEFAULT_PATH)
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
find_package (PkgConfig)
|
|
||||||
if (PKG_CONFIG_FOUND)
|
|
||||||
pkg_search_module (lz4_PC QUIET liblz4>=1.9)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if(static)
|
|
||||||
set(LZ4_LIB liblz4.a)
|
|
||||||
else()
|
|
||||||
set(LZ4_LIB lz4.so)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_library (lz4
|
|
||||||
NAMES ${LZ4_LIB}
|
|
||||||
HINTS
|
|
||||||
${lz4_PC_LIBDIR}
|
|
||||||
${lz4_PC_LIBRARY_DIRS}
|
|
||||||
NO_DEFAULT_PATH)
|
|
||||||
|
|
||||||
find_path (LZ4_INCLUDE_DIR
|
|
||||||
NAMES lz4.h
|
|
||||||
HINTS
|
|
||||||
${lz4_PC_INCLUDEDIR}
|
|
||||||
${lz4_PC_INCLUDEDIRS}
|
|
||||||
NO_DEFAULT_PATH)
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
find_package (PkgConfig)
|
|
||||||
if (PKG_CONFIG_FOUND)
|
|
||||||
pkg_search_module (secp256k1_PC QUIET libsecp256k1)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if(static)
|
|
||||||
set(SECP256K1_LIB libsecp256k1.a)
|
|
||||||
else()
|
|
||||||
set(SECP256K1_LIB secp256k1)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_library(secp256k1
|
|
||||||
NAMES ${SECP256K1_LIB}
|
|
||||||
HINTS
|
|
||||||
${secp256k1_PC_LIBDIR}
|
|
||||||
${secp256k1_PC_LIBRARY_PATHS}
|
|
||||||
NO_DEFAULT_PATH)
|
|
||||||
|
|
||||||
find_path (SECP256K1_INCLUDE_DIR
|
|
||||||
NAMES secp256k1.h
|
|
||||||
HINTS
|
|
||||||
${secp256k1_PC_INCLUDEDIR}
|
|
||||||
${secp256k1_PC_INCLUDEDIRS}
|
|
||||||
NO_DEFAULT_PATH)
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
find_package (PkgConfig)
|
|
||||||
if (PKG_CONFIG_FOUND)
|
|
||||||
pkg_search_module (snappy_PC QUIET snappy>=1.1.7)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if(static)
|
|
||||||
set(SNAPPY_LIB libsnappy.a)
|
|
||||||
else()
|
|
||||||
set(SNAPPY_LIB libsnappy.so)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_library (snappy
|
|
||||||
NAMES ${SNAPPY_LIB}
|
|
||||||
HINTS
|
|
||||||
${snappy_PC_LIBDIR}
|
|
||||||
${snappy_PC_LIBRARY_DIRS}
|
|
||||||
NO_DEFAULT_PATH)
|
|
||||||
|
|
||||||
find_path (SNAPPY_INCLUDE_DIR
|
|
||||||
NAMES snappy.h
|
|
||||||
HINTS
|
|
||||||
${snappy_PC_INCLUDEDIR}
|
|
||||||
${snappy_PC_INCLUDEDIRS}
|
|
||||||
NO_DEFAULT_PATH)
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
find_package (PkgConfig)
|
|
||||||
if (PKG_CONFIG_FOUND)
|
|
||||||
# TBD - currently no soci pkgconfig
|
|
||||||
#pkg_search_module (soci_PC QUIET libsoci_core>=3.2)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if(static)
|
|
||||||
set(SOCI_LIB libsoci.a)
|
|
||||||
else()
|
|
||||||
set(SOCI_LIB libsoci_core.so)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_library (soci
|
|
||||||
NAMES ${SOCI_LIB})
|
|
||||||
|
|
||||||
find_path (SOCI_INCLUDE_DIR
|
|
||||||
NAMES soci/soci.h)
|
|
||||||
|
|
||||||
message("SOCI FOUND AT: ${SOCI_LIB}")
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
find_package (PkgConfig)
|
|
||||||
if (PKG_CONFIG_FOUND)
|
|
||||||
pkg_search_module (sqlite_PC QUIET sqlite3>=3.26.0)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if(static)
|
|
||||||
set(SQLITE_LIB libsqlite3.a)
|
|
||||||
else()
|
|
||||||
set(SQLITE_LIB sqlite3.so)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
find_library (sqlite3
|
|
||||||
NAMES ${SQLITE_LIB}
|
|
||||||
HINTS
|
|
||||||
${sqlite_PC_LIBDIR}
|
|
||||||
${sqlite_PC_LIBRARY_DIRS}
|
|
||||||
NO_DEFAULT_PATH)
|
|
||||||
|
|
||||||
find_path (SQLITE_INCLUDE_DIR
|
|
||||||
NAMES sqlite3.h
|
|
||||||
HINTS
|
|
||||||
${sqlite_PC_INCLUDEDIR}
|
|
||||||
${sqlite_PC_INCLUDEDIRS}
|
|
||||||
NO_DEFAULT_PATH)
|
|
||||||
@@ -1,163 +0,0 @@
|
|||||||
#[===================================================================[
|
|
||||||
NIH dep: libarchive
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
option (local_libarchive "use local build of libarchive." OFF)
|
|
||||||
add_library (archive_lib UNKNOWN IMPORTED GLOBAL)
|
|
||||||
|
|
||||||
if (NOT local_libarchive)
|
|
||||||
if (NOT WIN32)
|
|
||||||
find_package(libarchive_pc REQUIRED)
|
|
||||||
endif ()
|
|
||||||
if (archive)
|
|
||||||
message (STATUS "Found libarchive using pkg-config. Using ${archive}.")
|
|
||||||
set_target_properties (archive_lib PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${archive}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${archive}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${LIBARCHIVE_INCLUDE_DIR})
|
|
||||||
# pkg-config can return extra info for static lib linking
|
|
||||||
# this is probably needed/useful generally, but apply
|
|
||||||
# to APPLE for now (mostly for homebrew)
|
|
||||||
if (APPLE AND static AND libarchive_PC_STATIC_LIBRARIES)
|
|
||||||
message(STATUS "NOTE: libarchive static libs: ${libarchive_PC_STATIC_LIBRARIES}")
|
|
||||||
# also, APPLE seems to need iconv...maybe linux does too (TBD)
|
|
||||||
target_link_libraries (archive_lib
|
|
||||||
INTERFACE iconv ${libarchive_PC_STATIC_LIBRARIES})
|
|
||||||
endif ()
|
|
||||||
else ()
|
|
||||||
## now try searching using the minimal find module that cmake provides
|
|
||||||
find_package(LibArchive 3.4.3 QUIET)
|
|
||||||
if (LibArchive_FOUND)
|
|
||||||
if (static)
|
|
||||||
# find module doesn't find static libs currently, so we re-search
|
|
||||||
get_filename_component(_loc ${LibArchive_LIBRARY} DIRECTORY)
|
|
||||||
find_library(_la_static
|
|
||||||
NAMES libarchive.a archive_static.lib archive.lib
|
|
||||||
PATHS ${_loc})
|
|
||||||
if (_la_static)
|
|
||||||
set (_la_lib ${_la_static})
|
|
||||||
else ()
|
|
||||||
message (WARNING "unable to find libarchive static lib - switching to local build")
|
|
||||||
set (local_libarchive ON CACHE BOOL "" FORCE)
|
|
||||||
endif ()
|
|
||||||
else ()
|
|
||||||
set (_la_lib ${LibArchive_LIBRARY})
|
|
||||||
endif ()
|
|
||||||
if (NOT local_libarchive)
|
|
||||||
message (STATUS "Found libarchive using module/config. Using ${_la_lib}.")
|
|
||||||
set_target_properties (archive_lib PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${_la_lib}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${_la_lib}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${LibArchive_INCLUDE_DIRS})
|
|
||||||
endif ()
|
|
||||||
else ()
|
|
||||||
set (local_libarchive ON CACHE BOOL "" FORCE)
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (local_libarchive)
|
|
||||||
set (lib_post "")
|
|
||||||
if (MSVC)
|
|
||||||
set (lib_post "_static")
|
|
||||||
endif ()
|
|
||||||
ExternalProject_Add (libarchive
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/libarchive/libarchive.git
|
|
||||||
GIT_TAG v3.4.3
|
|
||||||
CMAKE_ARGS
|
|
||||||
# passing the compiler seems to be needed for windows CI, sadly
|
|
||||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
|
||||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
|
||||||
$<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:-DCMAKE_VERBOSE_MAKEFILE=ON>
|
|
||||||
-DCMAKE_DEBUG_POSTFIX=_d
|
|
||||||
$<$<NOT:$<BOOL:${is_multiconfig}>>:-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}>
|
|
||||||
-DENABLE_LZ4=ON
|
|
||||||
-ULZ4_*
|
|
||||||
-DLZ4_INCLUDE_DIR=$<JOIN:$<TARGET_PROPERTY:lz4_lib,INTERFACE_INCLUDE_DIRECTORIES>,::>
|
|
||||||
# because we are building a static lib, this lz4 library doesn't
|
|
||||||
# actually matter since you can't generally link static libs to other static
|
|
||||||
# libs. The include files are needed, but the library itself is not (until
|
|
||||||
# we link our application, at which point we use the lz4 we built above).
|
|
||||||
# nonetheless, we need to provide a library to libarchive else it will
|
|
||||||
# NOT include lz4 support when configuring
|
|
||||||
-DLZ4_LIBRARY=$<IF:$<CONFIG:Debug>,$<TARGET_PROPERTY:lz4_lib,IMPORTED_LOCATION_DEBUG>,$<TARGET_PROPERTY:lz4_lib,IMPORTED_LOCATION_RELEASE>>
|
|
||||||
-DENABLE_WERROR=OFF
|
|
||||||
-DENABLE_TAR=OFF
|
|
||||||
-DENABLE_TAR_SHARED=OFF
|
|
||||||
-DENABLE_INSTALL=ON
|
|
||||||
-DENABLE_NETTLE=OFF
|
|
||||||
-DENABLE_OPENSSL=OFF
|
|
||||||
-DENABLE_LZO=OFF
|
|
||||||
-DENABLE_LZMA=OFF
|
|
||||||
-DENABLE_ZLIB=OFF
|
|
||||||
-DENABLE_BZip2=OFF
|
|
||||||
-DENABLE_LIBXML2=OFF
|
|
||||||
-DENABLE_EXPAT=OFF
|
|
||||||
-DENABLE_PCREPOSIX=OFF
|
|
||||||
-DENABLE_LibGCC=OFF
|
|
||||||
-DENABLE_CNG=OFF
|
|
||||||
-DENABLE_CPIO=OFF
|
|
||||||
-DENABLE_CPIO_SHARED=OFF
|
|
||||||
-DENABLE_CAT=OFF
|
|
||||||
-DENABLE_CAT_SHARED=OFF
|
|
||||||
-DENABLE_XATTR=OFF
|
|
||||||
-DENABLE_ACL=OFF
|
|
||||||
-DENABLE_ICONV=OFF
|
|
||||||
-DENABLE_TEST=OFF
|
|
||||||
-DENABLE_COVERAGE=OFF
|
|
||||||
$<$<BOOL:${MSVC}>:
|
|
||||||
"-DCMAKE_C_FLAGS=-GR -Gd -fp:precise -FS -MP"
|
|
||||||
"-DCMAKE_C_FLAGS_DEBUG=-MTd"
|
|
||||||
"-DCMAKE_C_FLAGS_RELEASE=-MT"
|
|
||||||
>
|
|
||||||
LIST_SEPARATOR ::
|
|
||||||
LOG_BUILD ON
|
|
||||||
LOG_CONFIGURE ON
|
|
||||||
BUILD_COMMAND
|
|
||||||
${CMAKE_COMMAND}
|
|
||||||
--build .
|
|
||||||
--config $<CONFIG>
|
|
||||||
--target archive_static
|
|
||||||
--parallel ${ep_procs}
|
|
||||||
$<$<BOOL:${is_multiconfig}>:
|
|
||||||
COMMAND
|
|
||||||
${CMAKE_COMMAND} -E copy
|
|
||||||
<BINARY_DIR>/libarchive/$<CONFIG>/${ep_lib_prefix}archive${lib_post}$<$<CONFIG:Debug>:_d>${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/libarchive
|
|
||||||
>
|
|
||||||
TEST_COMMAND ""
|
|
||||||
INSTALL_COMMAND ""
|
|
||||||
DEPENDS lz4_lib
|
|
||||||
BUILD_BYPRODUCTS
|
|
||||||
<BINARY_DIR>/libarchive/${ep_lib_prefix}archive${lib_post}${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/libarchive/${ep_lib_prefix}archive${lib_post}_d${ep_lib_suffix}
|
|
||||||
)
|
|
||||||
ExternalProject_Get_Property (libarchive BINARY_DIR)
|
|
||||||
ExternalProject_Get_Property (libarchive SOURCE_DIR)
|
|
||||||
if (CMAKE_VERBOSE_MAKEFILE)
|
|
||||||
print_ep_logs (libarchive)
|
|
||||||
endif ()
|
|
||||||
file (MAKE_DIRECTORY ${SOURCE_DIR}/libarchive)
|
|
||||||
set_target_properties (archive_lib PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${BINARY_DIR}/libarchive/${ep_lib_prefix}archive${lib_post}_d${ep_lib_suffix}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${BINARY_DIR}/libarchive/${ep_lib_prefix}archive${lib_post}${ep_lib_suffix}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${SOURCE_DIR}/libarchive
|
|
||||||
INTERFACE_COMPILE_DEFINITIONS
|
|
||||||
LIBARCHIVE_STATIC)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_dependencies (archive_lib libarchive)
|
|
||||||
target_link_libraries (archive_lib INTERFACE lz4_lib)
|
|
||||||
target_link_libraries (ripple_libs INTERFACE archive_lib)
|
|
||||||
exclude_if_included (libarchive)
|
|
||||||
exclude_if_included (archive_lib)
|
|
||||||
@@ -1,79 +0,0 @@
|
|||||||
#[===================================================================[
|
|
||||||
NIH dep: lz4
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
add_library (lz4_lib STATIC IMPORTED GLOBAL)
|
|
||||||
|
|
||||||
if (NOT WIN32)
|
|
||||||
find_package(lz4)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(lz4)
|
|
||||||
set_target_properties (lz4_lib PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${lz4}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${lz4}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${LZ4_INCLUDE_DIR})
|
|
||||||
|
|
||||||
else()
|
|
||||||
ExternalProject_Add (lz4
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/lz4/lz4.git
|
|
||||||
GIT_TAG v1.9.2
|
|
||||||
SOURCE_SUBDIR contrib/cmake_unofficial
|
|
||||||
CMAKE_ARGS
|
|
||||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
|
||||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
|
||||||
$<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:-DCMAKE_VERBOSE_MAKEFILE=ON>
|
|
||||||
-DCMAKE_DEBUG_POSTFIX=_d
|
|
||||||
$<$<NOT:$<BOOL:${is_multiconfig}>>:-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}>
|
|
||||||
-DBUILD_STATIC_LIBS=ON
|
|
||||||
-DBUILD_SHARED_LIBS=OFF
|
|
||||||
$<$<BOOL:${MSVC}>:
|
|
||||||
"-DCMAKE_C_FLAGS=-GR -Gd -fp:precise -FS -MP"
|
|
||||||
"-DCMAKE_C_FLAGS_DEBUG=-MTd"
|
|
||||||
"-DCMAKE_C_FLAGS_RELEASE=-MT"
|
|
||||||
>
|
|
||||||
LOG_BUILD ON
|
|
||||||
LOG_CONFIGURE ON
|
|
||||||
BUILD_COMMAND
|
|
||||||
${CMAKE_COMMAND}
|
|
||||||
--build .
|
|
||||||
--config $<CONFIG>
|
|
||||||
--target lz4_static
|
|
||||||
--parallel ${ep_procs}
|
|
||||||
$<$<BOOL:${is_multiconfig}>:
|
|
||||||
COMMAND
|
|
||||||
${CMAKE_COMMAND} -E copy
|
|
||||||
<BINARY_DIR>/$<CONFIG>/${ep_lib_prefix}lz4$<$<CONFIG:Debug>:_d>${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>
|
|
||||||
>
|
|
||||||
TEST_COMMAND ""
|
|
||||||
INSTALL_COMMAND ""
|
|
||||||
BUILD_BYPRODUCTS
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}lz4${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}lz4_d${ep_lib_suffix}
|
|
||||||
)
|
|
||||||
ExternalProject_Get_Property (lz4 BINARY_DIR)
|
|
||||||
ExternalProject_Get_Property (lz4 SOURCE_DIR)
|
|
||||||
|
|
||||||
file (MAKE_DIRECTORY ${SOURCE_DIR}/lz4)
|
|
||||||
set_target_properties (lz4_lib PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${BINARY_DIR}/${ep_lib_prefix}lz4_d${ep_lib_suffix}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${BINARY_DIR}/${ep_lib_prefix}lz4${ep_lib_suffix}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${SOURCE_DIR}/lib)
|
|
||||||
|
|
||||||
if (CMAKE_VERBOSE_MAKEFILE)
|
|
||||||
print_ep_logs (lz4)
|
|
||||||
endif ()
|
|
||||||
add_dependencies (lz4_lib lz4)
|
|
||||||
target_link_libraries (ripple_libs INTERFACE lz4_lib)
|
|
||||||
exclude_if_included (lz4)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
exclude_if_included (lz4_lib)
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
#[===================================================================[
|
|
||||||
NIH dep: nudb
|
|
||||||
|
|
||||||
NuDB is header-only, thus is an INTERFACE lib in CMake.
|
|
||||||
TODO: move the library definition into NuDB repo and add
|
|
||||||
proper targets and export/install
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
if (is_root_project) # NuDB not needed in the case of xrpl_core inclusion build
|
|
||||||
add_library (nudb INTERFACE)
|
|
||||||
FetchContent_Declare(
|
|
||||||
nudb_src
|
|
||||||
GIT_REPOSITORY https://github.com/CPPAlliance/NuDB.git
|
|
||||||
GIT_TAG 2.0.5
|
|
||||||
)
|
|
||||||
FetchContent_GetProperties(nudb_src)
|
|
||||||
if(NOT nudb_src_POPULATED)
|
|
||||||
message (STATUS "Pausing to download NuDB...")
|
|
||||||
FetchContent_Populate(nudb_src)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
file(TO_CMAKE_PATH "${nudb_src_SOURCE_DIR}" nudb_src_SOURCE_DIR)
|
|
||||||
# specify as system includes so as to avoid warnings
|
|
||||||
target_include_directories (nudb SYSTEM INTERFACE ${nudb_src_SOURCE_DIR}/include)
|
|
||||||
target_link_libraries (nudb
|
|
||||||
INTERFACE
|
|
||||||
Boost::thread
|
|
||||||
Boost::system)
|
|
||||||
add_library (NIH::nudb ALIAS nudb)
|
|
||||||
target_link_libraries (ripple_libs INTERFACE NIH::nudb)
|
|
||||||
endif ()
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
#[===================================================================[
|
|
||||||
NIH dep: openssl
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
#[===============================================[
|
|
||||||
OPENSSL_ROOT_DIR is the only variable that
|
|
||||||
FindOpenSSL honors for locating, so convert any
|
|
||||||
OPENSSL_ROOT vars to this
|
|
||||||
#]===============================================]
|
|
||||||
if (NOT DEFINED OPENSSL_ROOT_DIR)
|
|
||||||
if (DEFINED ENV{OPENSSL_ROOT})
|
|
||||||
set (OPENSSL_ROOT_DIR $ENV{OPENSSL_ROOT})
|
|
||||||
elseif (HOMEBREW)
|
|
||||||
execute_process (COMMAND ${HOMEBREW} --prefix openssl
|
|
||||||
OUTPUT_VARIABLE OPENSSL_ROOT_DIR
|
|
||||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
|
||||||
endif ()
|
|
||||||
file (TO_CMAKE_PATH "${OPENSSL_ROOT_DIR}" OPENSSL_ROOT_DIR)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (static)
|
|
||||||
set (OPENSSL_USE_STATIC_LIBS ON)
|
|
||||||
endif ()
|
|
||||||
set (OPENSSL_MSVC_STATIC_RT ON)
|
|
||||||
find_package (OpenSSL 1.1.1 REQUIRED)
|
|
||||||
target_link_libraries (ripple_libs
|
|
||||||
INTERFACE
|
|
||||||
OpenSSL::SSL
|
|
||||||
OpenSSL::Crypto)
|
|
||||||
# disable SSLv2...this can also be done when building/configuring OpenSSL
|
|
||||||
set_target_properties(OpenSSL::SSL PROPERTIES
|
|
||||||
INTERFACE_COMPILE_DEFINITIONS OPENSSL_NO_SSL2)
|
|
||||||
#[=========================================================[
|
|
||||||
https://gitlab.kitware.com/cmake/cmake/issues/16885
|
|
||||||
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
|
|
||||||
TODO: investigate linking to static zlib for static
|
|
||||||
build option
|
|
||||||
#]=========================================================]
|
|
||||||
find_package (ZLIB)
|
|
||||||
set (has_zlib FALSE)
|
|
||||||
if (TARGET ZLIB::ZLIB)
|
|
||||||
set_target_properties(OpenSSL::Crypto PROPERTIES
|
|
||||||
INTERFACE_LINK_LIBRARIES ZLIB::ZLIB)
|
|
||||||
set (has_zlib TRUE)
|
|
||||||
endif ()
|
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
if(reporting)
|
|
||||||
find_package(PostgreSQL)
|
|
||||||
if(NOT PostgreSQL_FOUND)
|
|
||||||
message("find_package did not find postgres")
|
|
||||||
find_library(postgres NAMES pq libpq libpq-dev pq-dev postgresql-devel)
|
|
||||||
find_path(libpq-fe NAMES libpq-fe.h PATH_SUFFIXES postgresql pgsql include)
|
|
||||||
|
|
||||||
if(NOT libpq-fe_FOUND OR NOT postgres_FOUND)
|
|
||||||
message("No system installed Postgres found. Will build")
|
|
||||||
add_library(postgres SHARED IMPORTED GLOBAL)
|
|
||||||
add_library(pgport SHARED IMPORTED GLOBAL)
|
|
||||||
add_library(pgcommon SHARED IMPORTED GLOBAL)
|
|
||||||
ExternalProject_Add(postgres_src
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/postgres/postgres.git
|
|
||||||
GIT_TAG REL_14_5
|
|
||||||
CONFIGURE_COMMAND ./configure --without-readline > /dev/null
|
|
||||||
BUILD_COMMAND ${CMAKE_COMMAND} -E env --unset=MAKELEVEL make
|
|
||||||
UPDATE_COMMAND ""
|
|
||||||
BUILD_IN_SOURCE 1
|
|
||||||
INSTALL_COMMAND ""
|
|
||||||
BUILD_BYPRODUCTS
|
|
||||||
<BINARY_DIR>/src/interfaces/libpq/${ep_lib_prefix}pq.a
|
|
||||||
<BINARY_DIR>/src/common/${ep_lib_prefix}pgcommon.a
|
|
||||||
<BINARY_DIR>/src/port/${ep_lib_prefix}pgport.a
|
|
||||||
LOG_BUILD TRUE
|
|
||||||
)
|
|
||||||
ExternalProject_Get_Property (postgres_src SOURCE_DIR)
|
|
||||||
ExternalProject_Get_Property (postgres_src BINARY_DIR)
|
|
||||||
|
|
||||||
set (postgres_src_SOURCE_DIR "${SOURCE_DIR}")
|
|
||||||
file (MAKE_DIRECTORY ${postgres_src_SOURCE_DIR})
|
|
||||||
list(APPEND INCLUDE_DIRS
|
|
||||||
${SOURCE_DIR}/src/include
|
|
||||||
${SOURCE_DIR}/src/interfaces/libpq
|
|
||||||
)
|
|
||||||
set_target_properties(postgres PROPERTIES
|
|
||||||
IMPORTED_LOCATION
|
|
||||||
${BINARY_DIR}/src/interfaces/libpq/${ep_lib_prefix}pq.a
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
"${INCLUDE_DIRS}"
|
|
||||||
)
|
|
||||||
set_target_properties(pgcommon PROPERTIES
|
|
||||||
IMPORTED_LOCATION
|
|
||||||
${BINARY_DIR}/src/common/${ep_lib_prefix}pgcommon.a
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
"${INCLUDE_DIRS}"
|
|
||||||
)
|
|
||||||
set_target_properties(pgport PROPERTIES
|
|
||||||
IMPORTED_LOCATION
|
|
||||||
${BINARY_DIR}/src/port/${ep_lib_prefix}pgport.a
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
"${INCLUDE_DIRS}"
|
|
||||||
)
|
|
||||||
add_dependencies(postgres postgres_src)
|
|
||||||
add_dependencies(pgcommon postgres_src)
|
|
||||||
add_dependencies(pgport postgres_src)
|
|
||||||
file(TO_CMAKE_PATH "${postgres_src_SOURCE_DIR}" postgres_src_SOURCE_DIR)
|
|
||||||
target_link_libraries(ripple_libs INTERFACE postgres pgcommon pgport)
|
|
||||||
else()
|
|
||||||
message("Found system installed Postgres via find_libary")
|
|
||||||
target_include_directories(ripple_libs INTERFACE ${libpq-fe})
|
|
||||||
target_link_libraries(ripple_libs INTERFACE ${postgres})
|
|
||||||
endif()
|
|
||||||
else()
|
|
||||||
message("Found system installed Postgres via find_package")
|
|
||||||
target_include_directories(ripple_libs INTERFACE ${PostgreSQL_INCLUDE_DIRS})
|
|
||||||
target_link_libraries(ripple_libs INTERFACE ${PostgreSQL_LIBRARIES})
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
@@ -1,155 +1,22 @@
|
|||||||
#[===================================================================[
|
find_package(Protobuf 3.8)
|
||||||
import protobuf (lib and compiler) and create a lib
|
|
||||||
from our proto message definitions. If the system protobuf
|
|
||||||
is not found, fallback on EP to download and build a version
|
|
||||||
from official source.
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
if (static)
|
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/proto_gen)
|
||||||
set (Protobuf_USE_STATIC_LIBS ON)
|
set(ccbd ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
endif ()
|
set(CMAKE_CURRENT_BINARY_DIR ${CMAKE_BINARY_DIR}/proto_gen)
|
||||||
find_package (Protobuf 3.8)
|
protobuf_generate_cpp(PROTO_SRCS PROTO_HDRS src/ripple/proto/ripple.proto)
|
||||||
if (is_multiconfig)
|
set(CMAKE_CURRENT_BINARY_DIR ${ccbd})
|
||||||
set(protobuf_protoc_lib ${Protobuf_PROTOC_LIBRARIES})
|
|
||||||
else ()
|
|
||||||
string(TOUPPER ${CMAKE_BUILD_TYPE} upper_cmake_build_type)
|
|
||||||
set(protobuf_protoc_lib ${Protobuf_PROTOC_LIBRARY_${upper_cmake_build_type}})
|
|
||||||
endif ()
|
|
||||||
if (local_protobuf OR NOT (Protobuf_FOUND AND Protobuf_PROTOC_EXECUTABLE AND protobuf_protoc_lib))
|
|
||||||
include (GNUInstallDirs)
|
|
||||||
message (STATUS "using local protobuf build.")
|
|
||||||
set(protobuf_reqs Protobuf_PROTOC_EXECUTABLE protobuf_protoc_lib)
|
|
||||||
foreach(lib ${protobuf_reqs})
|
|
||||||
if(NOT ${lib})
|
|
||||||
message(STATUS "Couldn't find ${lib}")
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
if (WIN32)
|
|
||||||
# protobuf prepends lib even on windows
|
|
||||||
set (pbuf_lib_pre "lib")
|
|
||||||
else ()
|
|
||||||
set (pbuf_lib_pre ${ep_lib_prefix})
|
|
||||||
endif ()
|
|
||||||
# for the external project build of protobuf, we currently ignore the
|
|
||||||
# static option and always build static libs here. This is consistent
|
|
||||||
# with our other EP builds. Dynamic libs in an EP would add complexity
|
|
||||||
# because we'd need to get them into the runtime path, and probably
|
|
||||||
# install them.
|
|
||||||
ExternalProject_Add (protobuf_src
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/protocolbuffers/protobuf.git
|
|
||||||
GIT_TAG v3.8.0
|
|
||||||
SOURCE_SUBDIR cmake
|
|
||||||
CMAKE_ARGS
|
|
||||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
|
||||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
|
||||||
-DCMAKE_INSTALL_PREFIX=<BINARY_DIR>/_installed_
|
|
||||||
-Dprotobuf_BUILD_TESTS=OFF
|
|
||||||
-Dprotobuf_BUILD_EXAMPLES=OFF
|
|
||||||
-Dprotobuf_BUILD_PROTOC_BINARIES=ON
|
|
||||||
-Dprotobuf_MSVC_STATIC_RUNTIME=ON
|
|
||||||
-DBUILD_SHARED_LIBS=OFF
|
|
||||||
-Dprotobuf_BUILD_SHARED_LIBS=OFF
|
|
||||||
-DCMAKE_DEBUG_POSTFIX=_d
|
|
||||||
-Dprotobuf_DEBUG_POSTFIX=_d
|
|
||||||
-Dprotobuf_WITH_ZLIB=$<IF:$<BOOL:${has_zlib}>,ON,OFF>
|
|
||||||
$<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:-DCMAKE_VERBOSE_MAKEFILE=ON>
|
|
||||||
$<$<BOOL:${unity}>:-DCMAKE_UNITY_BUILD=ON}>
|
|
||||||
$<$<NOT:$<BOOL:${is_multiconfig}>>:-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}>
|
|
||||||
$<$<BOOL:${MSVC}>:
|
|
||||||
"-DCMAKE_CXX_FLAGS=-GR -Gd -fp:precise -FS -EHa -MP"
|
|
||||||
>
|
|
||||||
LOG_BUILD ON
|
|
||||||
LOG_CONFIGURE ON
|
|
||||||
BUILD_COMMAND
|
|
||||||
${CMAKE_COMMAND}
|
|
||||||
--build .
|
|
||||||
--config $<CONFIG>
|
|
||||||
--parallel ${ep_procs}
|
|
||||||
TEST_COMMAND ""
|
|
||||||
INSTALL_COMMAND
|
|
||||||
${CMAKE_COMMAND} -E env --unset=DESTDIR ${CMAKE_COMMAND} --build . --config $<CONFIG> --target install
|
|
||||||
BUILD_BYPRODUCTS
|
|
||||||
<BINARY_DIR>/_installed_/${CMAKE_INSTALL_LIBDIR}/${pbuf_lib_pre}protobuf${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/_installed_/${CMAKE_INSTALL_LIBDIR}/${pbuf_lib_pre}protobuf_d${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/_installed_/${CMAKE_INSTALL_LIBDIR}/${pbuf_lib_pre}protoc${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/_installed_/${CMAKE_INSTALL_LIBDIR}/${pbuf_lib_pre}protoc_d${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/_installed_/bin/protoc${CMAKE_EXECUTABLE_SUFFIX}
|
|
||||||
)
|
|
||||||
ExternalProject_Get_Property (protobuf_src BINARY_DIR)
|
|
||||||
ExternalProject_Get_Property (protobuf_src SOURCE_DIR)
|
|
||||||
if (CMAKE_VERBOSE_MAKEFILE)
|
|
||||||
print_ep_logs (protobuf_src)
|
|
||||||
endif ()
|
|
||||||
exclude_if_included (protobuf_src)
|
|
||||||
|
|
||||||
if (NOT TARGET protobuf::libprotobuf)
|
add_library(pbufs STATIC ${PROTO_SRCS} ${PROTO_HDRS})
|
||||||
add_library (protobuf::libprotobuf STATIC IMPORTED GLOBAL)
|
target_include_directories(pbufs SYSTEM PUBLIC
|
||||||
endif ()
|
${CMAKE_BINARY_DIR}/proto_gen
|
||||||
file (MAKE_DIRECTORY ${BINARY_DIR}/_installed_/include)
|
${CMAKE_BINARY_DIR}/proto_gen/src/ripple/proto
|
||||||
set_target_properties (protobuf::libprotobuf PROPERTIES
|
)
|
||||||
IMPORTED_LOCATION_DEBUG
|
target_link_libraries(pbufs protobuf::libprotobuf)
|
||||||
${BINARY_DIR}/_installed_/${CMAKE_INSTALL_LIBDIR}/${pbuf_lib_pre}protobuf_d${ep_lib_suffix}
|
target_compile_options(pbufs
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${BINARY_DIR}/_installed_/${CMAKE_INSTALL_LIBDIR}/${pbuf_lib_pre}protobuf${ep_lib_suffix}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${BINARY_DIR}/_installed_/include)
|
|
||||||
add_dependencies (protobuf::libprotobuf protobuf_src)
|
|
||||||
exclude_if_included (protobuf::libprotobuf)
|
|
||||||
|
|
||||||
if (NOT TARGET protobuf::libprotoc)
|
|
||||||
add_library (protobuf::libprotoc STATIC IMPORTED GLOBAL)
|
|
||||||
endif ()
|
|
||||||
set_target_properties (protobuf::libprotoc PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${BINARY_DIR}/_installed_/${CMAKE_INSTALL_LIBDIR}/${pbuf_lib_pre}protoc_d${ep_lib_suffix}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${BINARY_DIR}/_installed_/${CMAKE_INSTALL_LIBDIR}/${pbuf_lib_pre}protoc${ep_lib_suffix}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${BINARY_DIR}/_installed_/include)
|
|
||||||
add_dependencies (protobuf::libprotoc protobuf_src)
|
|
||||||
exclude_if_included (protobuf::libprotoc)
|
|
||||||
|
|
||||||
if (NOT TARGET protobuf::protoc)
|
|
||||||
add_executable (protobuf::protoc IMPORTED)
|
|
||||||
exclude_if_included (protobuf::protoc)
|
|
||||||
endif ()
|
|
||||||
set_target_properties (protobuf::protoc PROPERTIES
|
|
||||||
IMPORTED_LOCATION "${BINARY_DIR}/_installed_/bin/protoc${CMAKE_EXECUTABLE_SUFFIX}")
|
|
||||||
add_dependencies (protobuf::protoc protobuf_src)
|
|
||||||
else ()
|
|
||||||
if (NOT TARGET protobuf::protoc)
|
|
||||||
if (EXISTS "${Protobuf_PROTOC_EXECUTABLE}")
|
|
||||||
add_executable (protobuf::protoc IMPORTED)
|
|
||||||
set_target_properties (protobuf::protoc PROPERTIES
|
|
||||||
IMPORTED_LOCATION "${Protobuf_PROTOC_EXECUTABLE}")
|
|
||||||
else ()
|
|
||||||
message (FATAL_ERROR "Protobuf import failed")
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
file (MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/proto_gen)
|
|
||||||
set (save_CBD ${CMAKE_CURRENT_BINARY_DIR})
|
|
||||||
set (CMAKE_CURRENT_BINARY_DIR ${CMAKE_BINARY_DIR}/proto_gen)
|
|
||||||
protobuf_generate_cpp (
|
|
||||||
PROTO_SRCS
|
|
||||||
PROTO_HDRS
|
|
||||||
src/ripple/proto/ripple.proto)
|
|
||||||
set (CMAKE_CURRENT_BINARY_DIR ${save_CBD})
|
|
||||||
|
|
||||||
add_library (pbufs STATIC ${PROTO_SRCS} ${PROTO_HDRS})
|
|
||||||
|
|
||||||
target_include_directories (pbufs PRIVATE src)
|
|
||||||
target_include_directories (pbufs
|
|
||||||
SYSTEM PUBLIC ${CMAKE_BINARY_DIR}/proto_gen)
|
|
||||||
target_link_libraries (pbufs protobuf::libprotobuf)
|
|
||||||
target_compile_options (pbufs
|
|
||||||
PUBLIC
|
PUBLIC
|
||||||
$<$<BOOL:${is_xcode}>:
|
$<$<BOOL:${XCODE}>:
|
||||||
--system-header-prefix="google/protobuf"
|
--system-header-prefix="google/protobuf"
|
||||||
-Wno-deprecated-dynamic-exception-spec
|
-Wno-deprecated-dynamic-exception-spec
|
||||||
>)
|
>
|
||||||
add_library (Ripple::pbufs ALIAS pbufs)
|
)
|
||||||
target_link_libraries (ripple_libs INTERFACE Ripple::pbufs)
|
add_library(Ripple::pbufs ALIAS pbufs)
|
||||||
exclude_if_included (pbufs)
|
|
||||||
@@ -1,177 +0,0 @@
|
|||||||
#[===================================================================[
|
|
||||||
NIH dep: rocksdb
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
add_library (rocksdb_lib UNKNOWN IMPORTED GLOBAL)
|
|
||||||
set_target_properties (rocksdb_lib
|
|
||||||
PROPERTIES INTERFACE_COMPILE_DEFINITIONS RIPPLE_ROCKSDB_AVAILABLE=1)
|
|
||||||
|
|
||||||
option (local_rocksdb "use local build of rocksdb." OFF)
|
|
||||||
if (NOT local_rocksdb)
|
|
||||||
find_package (RocksDB 6.27 QUIET CONFIG)
|
|
||||||
if (TARGET RocksDB::rocksdb)
|
|
||||||
message (STATUS "Found RocksDB using config.")
|
|
||||||
get_target_property (_rockslib_l RocksDB::rocksdb IMPORTED_LOCATION_DEBUG)
|
|
||||||
if (_rockslib_l)
|
|
||||||
set_target_properties (rocksdb_lib PROPERTIES IMPORTED_LOCATION_DEBUG ${_rockslib_l})
|
|
||||||
endif ()
|
|
||||||
get_target_property (_rockslib_l RocksDB::rocksdb IMPORTED_LOCATION_RELEASE)
|
|
||||||
if (_rockslib_l)
|
|
||||||
set_target_properties (rocksdb_lib PROPERTIES IMPORTED_LOCATION_RELEASE ${_rockslib_l})
|
|
||||||
endif ()
|
|
||||||
get_target_property (_rockslib_l RocksDB::rocksdb IMPORTED_LOCATION)
|
|
||||||
if (_rockslib_l)
|
|
||||||
set_target_properties (rocksdb_lib PROPERTIES IMPORTED_LOCATION ${_rockslib_l})
|
|
||||||
endif ()
|
|
||||||
get_target_property (_rockslib_i RocksDB::rocksdb INTERFACE_INCLUDE_DIRECTORIES)
|
|
||||||
if (_rockslib_i)
|
|
||||||
set_target_properties (rocksdb_lib PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${_rockslib_i})
|
|
||||||
endif ()
|
|
||||||
target_link_libraries (ripple_libs INTERFACE RocksDB::rocksdb)
|
|
||||||
else ()
|
|
||||||
# using a find module with rocksdb is difficult because
|
|
||||||
# you have no idea how it was configured (transitive dependencies).
|
|
||||||
# the code below will generally find rocksdb using the module, but
|
|
||||||
# will then result in linker errors for static linkage since the
|
|
||||||
# transitive dependencies are unknown. force local build here for now, but leave the code as
|
|
||||||
# a placeholder for future investigation.
|
|
||||||
if (static)
|
|
||||||
set (local_rocksdb ON CACHE BOOL "" FORCE)
|
|
||||||
# TBD if there is some way to extract transitive deps..then:
|
|
||||||
#set (RocksDB_USE_STATIC ON)
|
|
||||||
else ()
|
|
||||||
find_package (RocksDB 6.27 MODULE)
|
|
||||||
if (ROCKSDB_FOUND)
|
|
||||||
if (RocksDB_LIBRARY_DEBUG)
|
|
||||||
set_target_properties (rocksdb_lib PROPERTIES IMPORTED_LOCATION_DEBUG ${RocksDB_LIBRARY_DEBUG})
|
|
||||||
endif ()
|
|
||||||
set_target_properties (rocksdb_lib PROPERTIES IMPORTED_LOCATION_RELEASE ${RocksDB_LIBRARIES})
|
|
||||||
set_target_properties (rocksdb_lib PROPERTIES IMPORTED_LOCATION ${RocksDB_LIBRARIES})
|
|
||||||
set_target_properties (rocksdb_lib PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${RocksDB_INCLUDE_DIRS})
|
|
||||||
else ()
|
|
||||||
set (local_rocksdb ON CACHE BOOL "" FORCE)
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (local_rocksdb)
|
|
||||||
message (STATUS "Using local build of RocksDB.")
|
|
||||||
ExternalProject_Add (rocksdb
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/facebook/rocksdb.git
|
|
||||||
GIT_TAG v6.27.3
|
|
||||||
PATCH_COMMAND
|
|
||||||
# only used by windows build
|
|
||||||
${CMAKE_COMMAND} -E copy_if_different
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/Builds/CMake/rocks_thirdparty.inc
|
|
||||||
<SOURCE_DIR>/thirdparty.inc
|
|
||||||
COMMAND
|
|
||||||
# fixup their build version file to keep the values
|
|
||||||
# from changing always
|
|
||||||
${CMAKE_COMMAND} -E copy_if_different
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/Builds/CMake/rocksdb_build_version.cc.in
|
|
||||||
<SOURCE_DIR>/util/build_version.cc.in
|
|
||||||
CMAKE_ARGS
|
|
||||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
|
||||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
|
||||||
$<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:-DCMAKE_VERBOSE_MAKEFILE=ON>
|
|
||||||
$<$<BOOL:${unity}>:-DCMAKE_UNITY_BUILD=ON}>
|
|
||||||
-DCMAKE_DEBUG_POSTFIX=_d
|
|
||||||
$<$<NOT:$<BOOL:${is_multiconfig}>>:-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}>
|
|
||||||
-DBUILD_SHARED_LIBS=OFF
|
|
||||||
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
|
|
||||||
-DWITH_JEMALLOC=$<IF:$<BOOL:${jemalloc}>,ON,OFF>
|
|
||||||
-DWITH_SNAPPY=ON
|
|
||||||
-DWITH_LZ4=ON
|
|
||||||
-DWITH_ZLIB=OFF
|
|
||||||
-DUSE_RTTI=ON
|
|
||||||
-DWITH_ZSTD=OFF
|
|
||||||
-DWITH_GFLAGS=OFF
|
|
||||||
-DWITH_BZ2=OFF
|
|
||||||
-ULZ4_*
|
|
||||||
-Ulz4_*
|
|
||||||
-Dlz4_INCLUDE_DIRS=$<JOIN:$<TARGET_PROPERTY:lz4_lib,INTERFACE_INCLUDE_DIRECTORIES>,::>
|
|
||||||
-Dlz4_LIBRARIES=$<IF:$<CONFIG:Debug>,$<TARGET_PROPERTY:lz4_lib,IMPORTED_LOCATION_DEBUG>,$<TARGET_PROPERTY:lz4_lib,IMPORTED_LOCATION_RELEASE>>
|
|
||||||
-Dlz4_FOUND=ON
|
|
||||||
-USNAPPY_*
|
|
||||||
-Usnappy_*
|
|
||||||
-USnappy_*
|
|
||||||
-Dsnappy_INCLUDE_DIRS=$<JOIN:$<TARGET_PROPERTY:snappy_lib,INTERFACE_INCLUDE_DIRECTORIES>,::>
|
|
||||||
-Dsnappy_LIBRARIES=$<IF:$<CONFIG:Debug>,$<TARGET_PROPERTY:snappy_lib,IMPORTED_LOCATION_DEBUG>,$<TARGET_PROPERTY:snappy_lib,IMPORTED_LOCATION_RELEASE>>
|
|
||||||
-Dsnappy_FOUND=ON
|
|
||||||
-DSnappy_INCLUDE_DIRS=$<JOIN:$<TARGET_PROPERTY:snappy_lib,INTERFACE_INCLUDE_DIRECTORIES>,::>
|
|
||||||
-DSnappy_LIBRARIES=$<IF:$<CONFIG:Debug>,$<TARGET_PROPERTY:snappy_lib,IMPORTED_LOCATION_DEBUG>,$<TARGET_PROPERTY:snappy_lib,IMPORTED_LOCATION_RELEASE>>
|
|
||||||
-DSnappy_FOUND=ON
|
|
||||||
-DWITH_MD_LIBRARY=OFF
|
|
||||||
-DWITH_RUNTIME_DEBUG=$<IF:$<CONFIG:Debug>,ON,OFF>
|
|
||||||
-DFAIL_ON_WARNINGS=OFF
|
|
||||||
-DWITH_ASAN=OFF
|
|
||||||
-DWITH_TSAN=OFF
|
|
||||||
-DWITH_UBSAN=OFF
|
|
||||||
-DWITH_NUMA=OFF
|
|
||||||
-DWITH_TBB=OFF
|
|
||||||
-DWITH_WINDOWS_UTF8_FILENAMES=OFF
|
|
||||||
-DWITH_XPRESS=OFF
|
|
||||||
-DPORTABLE=ON
|
|
||||||
-DFORCE_SSE42=OFF
|
|
||||||
-DDISABLE_STALL_NOTIF=OFF
|
|
||||||
-DOPTDBG=ON
|
|
||||||
-DROCKSDB_LITE=OFF
|
|
||||||
-DWITH_FALLOCATE=ON
|
|
||||||
-DWITH_LIBRADOS=OFF
|
|
||||||
-DWITH_JNI=OFF
|
|
||||||
-DROCKSDB_INSTALL_ON_WINDOWS=OFF
|
|
||||||
-DWITH_TESTS=OFF
|
|
||||||
-DWITH_TOOLS=OFF
|
|
||||||
$<$<BOOL:${MSVC}>:
|
|
||||||
"-DCMAKE_CXX_FLAGS=-GR -Gd -fp:precise -FS -MP /DNDEBUG"
|
|
||||||
>
|
|
||||||
$<$<NOT:$<BOOL:${MSVC}>>:
|
|
||||||
"-DCMAKE_CXX_FLAGS=-DNDEBUG"
|
|
||||||
>
|
|
||||||
LOG_BUILD ON
|
|
||||||
LOG_CONFIGURE ON
|
|
||||||
BUILD_COMMAND
|
|
||||||
${CMAKE_COMMAND}
|
|
||||||
--build .
|
|
||||||
--config $<CONFIG>
|
|
||||||
--parallel ${ep_procs}
|
|
||||||
$<$<BOOL:${is_multiconfig}>:
|
|
||||||
COMMAND
|
|
||||||
${CMAKE_COMMAND} -E copy
|
|
||||||
<BINARY_DIR>/$<CONFIG>/${ep_lib_prefix}rocksdb$<$<CONFIG:Debug>:_d>${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>
|
|
||||||
>
|
|
||||||
LIST_SEPARATOR ::
|
|
||||||
TEST_COMMAND ""
|
|
||||||
INSTALL_COMMAND ""
|
|
||||||
DEPENDS snappy_lib lz4_lib
|
|
||||||
BUILD_BYPRODUCTS
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}rocksdb${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}rocksdb_d${ep_lib_suffix}
|
|
||||||
)
|
|
||||||
ExternalProject_Get_Property (rocksdb BINARY_DIR)
|
|
||||||
ExternalProject_Get_Property (rocksdb SOURCE_DIR)
|
|
||||||
if (CMAKE_VERBOSE_MAKEFILE)
|
|
||||||
print_ep_logs (rocksdb)
|
|
||||||
endif ()
|
|
||||||
file (MAKE_DIRECTORY ${SOURCE_DIR}/include)
|
|
||||||
set_target_properties (rocksdb_lib PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${BINARY_DIR}/${ep_lib_prefix}rocksdb_d${ep_lib_suffix}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${BINARY_DIR}/${ep_lib_prefix}rocksdb${ep_lib_suffix}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${SOURCE_DIR}/include)
|
|
||||||
add_dependencies (rocksdb_lib rocksdb)
|
|
||||||
exclude_if_included (rocksdb)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
target_link_libraries (rocksdb_lib
|
|
||||||
INTERFACE
|
|
||||||
snappy_lib
|
|
||||||
lz4_lib
|
|
||||||
$<$<BOOL:${MSVC}>:rpcrt4>)
|
|
||||||
exclude_if_included (rocksdb_lib)
|
|
||||||
target_link_libraries (ripple_libs INTERFACE rocksdb_lib)
|
|
||||||
@@ -1,58 +0,0 @@
|
|||||||
#[===================================================================[
|
|
||||||
NIH dep: secp256k1
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
add_library (secp256k1_lib STATIC IMPORTED GLOBAL)
|
|
||||||
|
|
||||||
if (NOT WIN32)
|
|
||||||
find_package(secp256k1)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(secp256k1)
|
|
||||||
set_target_properties (secp256k1_lib PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${secp256k1}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${secp256k1}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${SECP256K1_INCLUDE_DIR})
|
|
||||||
|
|
||||||
add_library (secp256k1 ALIAS secp256k1_lib)
|
|
||||||
add_library (NIH::secp256k1 ALIAS secp256k1_lib)
|
|
||||||
|
|
||||||
else()
|
|
||||||
set(INSTALL_SECP256K1 true)
|
|
||||||
|
|
||||||
add_library (secp256k1 STATIC
|
|
||||||
src/secp256k1/src/secp256k1.c)
|
|
||||||
target_compile_definitions (secp256k1
|
|
||||||
PRIVATE
|
|
||||||
USE_NUM_NONE
|
|
||||||
USE_FIELD_10X26
|
|
||||||
USE_FIELD_INV_BUILTIN
|
|
||||||
USE_SCALAR_8X32
|
|
||||||
USE_SCALAR_INV_BUILTIN)
|
|
||||||
target_include_directories (secp256k1
|
|
||||||
PUBLIC
|
|
||||||
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>
|
|
||||||
$<INSTALL_INTERFACE:include>
|
|
||||||
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src/secp256k1)
|
|
||||||
target_compile_options (secp256k1
|
|
||||||
PRIVATE
|
|
||||||
$<$<BOOL:${MSVC}>:-wd4319>
|
|
||||||
$<$<NOT:$<BOOL:${MSVC}>>:
|
|
||||||
-Wno-deprecated-declarations
|
|
||||||
-Wno-unused-function
|
|
||||||
>
|
|
||||||
$<$<BOOL:${is_gcc}>:-Wno-nonnull-compare>)
|
|
||||||
target_link_libraries (ripple_libs INTERFACE NIH::secp256k1)
|
|
||||||
#[===========================[
|
|
||||||
headers installation
|
|
||||||
#]===========================]
|
|
||||||
install (
|
|
||||||
FILES
|
|
||||||
src/secp256k1/include/secp256k1.h
|
|
||||||
DESTINATION include/secp256k1/include)
|
|
||||||
|
|
||||||
add_library (NIH::secp256k1 ALIAS secp256k1)
|
|
||||||
endif()
|
|
||||||
@@ -1,77 +0,0 @@
|
|||||||
#[===================================================================[
|
|
||||||
NIH dep: snappy
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
add_library (snappy_lib STATIC IMPORTED GLOBAL)
|
|
||||||
|
|
||||||
if (NOT WIN32)
|
|
||||||
find_package(snappy)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(snappy)
|
|
||||||
set_target_properties (snappy_lib PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${snappy}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${snappy}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${SNAPPY_INCLUDE_DIR})
|
|
||||||
|
|
||||||
else()
|
|
||||||
ExternalProject_Add (snappy
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/google/snappy.git
|
|
||||||
GIT_TAG 1.1.7
|
|
||||||
CMAKE_ARGS
|
|
||||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
|
||||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
|
||||||
$<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:-DCMAKE_VERBOSE_MAKEFILE=ON>
|
|
||||||
-DCMAKE_DEBUG_POSTFIX=_d
|
|
||||||
$<$<NOT:$<BOOL:${is_multiconfig}>>:-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}>
|
|
||||||
-DBUILD_SHARED_LIBS=OFF
|
|
||||||
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
|
|
||||||
-DSNAPPY_BUILD_TESTS=OFF
|
|
||||||
$<$<BOOL:${MSVC}>:
|
|
||||||
"-DCMAKE_CXX_FLAGS=-GR -Gd -fp:precise -FS -EHa -MP"
|
|
||||||
"-DCMAKE_CXX_FLAGS_DEBUG=-MTd"
|
|
||||||
"-DCMAKE_CXX_FLAGS_RELEASE=-MT"
|
|
||||||
>
|
|
||||||
LOG_BUILD ON
|
|
||||||
LOG_CONFIGURE ON
|
|
||||||
BUILD_COMMAND
|
|
||||||
${CMAKE_COMMAND}
|
|
||||||
--build .
|
|
||||||
--config $<CONFIG>
|
|
||||||
--parallel ${ep_procs}
|
|
||||||
$<$<BOOL:${is_multiconfig}>:
|
|
||||||
COMMAND
|
|
||||||
${CMAKE_COMMAND} -E copy
|
|
||||||
<BINARY_DIR>/$<CONFIG>/${ep_lib_prefix}snappy$<$<CONFIG:Debug>:_d>${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>
|
|
||||||
>
|
|
||||||
TEST_COMMAND ""
|
|
||||||
INSTALL_COMMAND
|
|
||||||
${CMAKE_COMMAND} -E copy_if_different <BINARY_DIR>/config.h <BINARY_DIR>/snappy-stubs-public.h <SOURCE_DIR>
|
|
||||||
BUILD_BYPRODUCTS
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}snappy${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}snappy_d${ep_lib_suffix}
|
|
||||||
)
|
|
||||||
ExternalProject_Get_Property (snappy BINARY_DIR)
|
|
||||||
ExternalProject_Get_Property (snappy SOURCE_DIR)
|
|
||||||
if (CMAKE_VERBOSE_MAKEFILE)
|
|
||||||
print_ep_logs (snappy)
|
|
||||||
endif ()
|
|
||||||
file (MAKE_DIRECTORY ${SOURCE_DIR}/snappy)
|
|
||||||
set_target_properties (snappy_lib PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${BINARY_DIR}/${ep_lib_prefix}snappy_d${ep_lib_suffix}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${BINARY_DIR}/${ep_lib_prefix}snappy${ep_lib_suffix}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${SOURCE_DIR})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_dependencies (snappy_lib snappy)
|
|
||||||
target_link_libraries (ripple_libs INTERFACE snappy_lib)
|
|
||||||
exclude_if_included (snappy)
|
|
||||||
exclude_if_included (snappy_lib)
|
|
||||||
@@ -1,165 +0,0 @@
|
|||||||
#[===================================================================[
|
|
||||||
NIH dep: soci
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
foreach (_comp core empty sqlite3)
|
|
||||||
add_library ("soci_${_comp}" STATIC IMPORTED GLOBAL)
|
|
||||||
endforeach ()
|
|
||||||
|
|
||||||
if (NOT WIN32)
|
|
||||||
find_package(soci)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (soci)
|
|
||||||
foreach (_comp core empty sqlite3)
|
|
||||||
set_target_properties ("soci_${_comp}" PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${soci}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${soci}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${SOCI_INCLUDE_DIR})
|
|
||||||
endforeach ()
|
|
||||||
|
|
||||||
else()
|
|
||||||
set (soci_lib_pre ${ep_lib_prefix})
|
|
||||||
set (soci_lib_post "")
|
|
||||||
if (WIN32)
|
|
||||||
# for some reason soci on windows still prepends lib (non-standard)
|
|
||||||
set (soci_lib_pre lib)
|
|
||||||
# this version in the name might change if/when we change versions of soci
|
|
||||||
set (soci_lib_post "_4_0")
|
|
||||||
endif ()
|
|
||||||
get_target_property (_boost_incs Boost::date_time INTERFACE_INCLUDE_DIRECTORIES)
|
|
||||||
get_target_property (_boost_dt Boost::date_time IMPORTED_LOCATION)
|
|
||||||
if (NOT _boost_dt)
|
|
||||||
get_target_property (_boost_dt Boost::date_time IMPORTED_LOCATION_RELEASE)
|
|
||||||
endif ()
|
|
||||||
if (NOT _boost_dt)
|
|
||||||
get_target_property (_boost_dt Boost::date_time IMPORTED_LOCATION_DEBUG)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
ExternalProject_Add (soci
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/SOCI/soci.git
|
|
||||||
GIT_TAG 04e1870294918d20761736743bb6136314c42dd5
|
|
||||||
# We had an issue with soci integer range checking for boost::optional
|
|
||||||
# and needed to remove the exception that SOCI throws in this case.
|
|
||||||
# This is *probably* a bug in SOCI, but has never been investigated more
|
|
||||||
# nor reported to the maintainers.
|
|
||||||
# This cmake script comments out the lines in question.
|
|
||||||
# This patch process is likely fragile and should be reviewed carefully
|
|
||||||
# whenever we update the GIT_TAG above.
|
|
||||||
PATCH_COMMAND
|
|
||||||
${CMAKE_COMMAND} -D RIPPLED_SOURCE=${CMAKE_CURRENT_SOURCE_DIR}
|
|
||||||
-P ${CMAKE_CURRENT_SOURCE_DIR}/Builds/CMake/soci_patch.cmake
|
|
||||||
CMAKE_ARGS
|
|
||||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
|
||||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
|
||||||
$<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:-DCMAKE_VERBOSE_MAKEFILE=ON>
|
|
||||||
$<$<BOOL:${CMAKE_TOOLCHAIN_FILE}>:-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}>
|
|
||||||
$<$<BOOL:${VCPKG_TARGET_TRIPLET}>:-DVCPKG_TARGET_TRIPLET=${VCPKG_TARGET_TRIPLET}>
|
|
||||||
$<$<BOOL:${unity}>:-DCMAKE_UNITY_BUILD=ON}>
|
|
||||||
-DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/sqlite3
|
|
||||||
-DCMAKE_MODULE_PATH=${CMAKE_CURRENT_SOURCE_DIR}/Builds/CMake
|
|
||||||
-DCMAKE_INCLUDE_PATH=$<JOIN:$<TARGET_PROPERTY:sqlite,INTERFACE_INCLUDE_DIRECTORIES>,::>
|
|
||||||
-DCMAKE_LIBRARY_PATH=${sqlite_BINARY_DIR}
|
|
||||||
-DCMAKE_DEBUG_POSTFIX=_d
|
|
||||||
$<$<NOT:$<BOOL:${is_multiconfig}>>:-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}>
|
|
||||||
-DSOCI_CXX_C11=ON
|
|
||||||
-DSOCI_STATIC=ON
|
|
||||||
-DSOCI_LIBDIR=lib
|
|
||||||
-DSOCI_SHARED=OFF
|
|
||||||
-DSOCI_TESTS=OFF
|
|
||||||
# hacks to workaround the fact that soci doesn't currently use
|
|
||||||
# boost imported targets in its cmake. If they switch to
|
|
||||||
# proper imported targets, this next line can be removed
|
|
||||||
# (as well as the get_property above that sets _boost_incs)
|
|
||||||
-DBoost_INCLUDE_DIRS=$<JOIN:${_boost_incs},::>
|
|
||||||
-DBoost_INCLUDE_DIR=$<JOIN:${_boost_incs},::>
|
|
||||||
-DBOOST_ROOT=${BOOST_ROOT}
|
|
||||||
-DWITH_BOOST=ON
|
|
||||||
-DBoost_FOUND=ON
|
|
||||||
-DBoost_NO_BOOST_CMAKE=ON
|
|
||||||
-DBoost_DATE_TIME_FOUND=ON
|
|
||||||
-DSOCI_HAVE_BOOST=ON
|
|
||||||
-DSOCI_HAVE_BOOST_DATE_TIME=ON
|
|
||||||
-DBoost_DATE_TIME_LIBRARY=${_boost_dt}
|
|
||||||
-DSOCI_DB2=OFF
|
|
||||||
-DSOCI_FIREBIRD=OFF
|
|
||||||
-DSOCI_MYSQL=OFF
|
|
||||||
-DSOCI_ODBC=OFF
|
|
||||||
-DSOCI_ORACLE=OFF
|
|
||||||
-DSOCI_POSTGRESQL=OFF
|
|
||||||
-DSOCI_SQLITE3=ON
|
|
||||||
-DSQLITE3_INCLUDE_DIR=$<JOIN:$<TARGET_PROPERTY:sqlite,INTERFACE_INCLUDE_DIRECTORIES>,::>
|
|
||||||
-DSQLITE3_LIBRARY=$<IF:$<CONFIG:Debug>,$<TARGET_PROPERTY:sqlite,IMPORTED_LOCATION_DEBUG>,$<TARGET_PROPERTY:sqlite,IMPORTED_LOCATION_RELEASE>>
|
|
||||||
$<$<BOOL:${APPLE}>:-DCMAKE_FIND_FRAMEWORK=LAST>
|
|
||||||
$<$<BOOL:${MSVC}>:
|
|
||||||
"-DCMAKE_CXX_FLAGS=-GR -Gd -fp:precise -FS -EHa -MP"
|
|
||||||
"-DCMAKE_CXX_FLAGS_DEBUG=-MTd"
|
|
||||||
"-DCMAKE_CXX_FLAGS_RELEASE=-MT"
|
|
||||||
>
|
|
||||||
$<$<NOT:$<BOOL:${MSVC}>>:
|
|
||||||
"-DCMAKE_CXX_FLAGS=-Wno-deprecated-declarations"
|
|
||||||
>
|
|
||||||
# SEE: https://github.com/SOCI/soci/issues/640
|
|
||||||
$<$<AND:$<BOOL:${is_gcc}>,$<VERSION_GREATER_EQUAL:${CMAKE_CXX_COMPILER_VERSION},8>>:
|
|
||||||
"-DCMAKE_CXX_FLAGS=-Wno-deprecated-declarations -Wno-error=format-overflow -Wno-format-overflow -Wno-error=format-truncation"
|
|
||||||
>
|
|
||||||
LIST_SEPARATOR ::
|
|
||||||
LOG_BUILD ON
|
|
||||||
LOG_CONFIGURE ON
|
|
||||||
BUILD_COMMAND
|
|
||||||
${CMAKE_COMMAND}
|
|
||||||
--build .
|
|
||||||
--config $<CONFIG>
|
|
||||||
--parallel ${ep_procs}
|
|
||||||
$<$<BOOL:${is_multiconfig}>:
|
|
||||||
COMMAND
|
|
||||||
${CMAKE_COMMAND} -E copy
|
|
||||||
<BINARY_DIR>/lib/$<CONFIG>/${soci_lib_pre}soci_core${soci_lib_post}$<$<CONFIG:Debug>:_d>${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/lib/$<CONFIG>/${soci_lib_pre}soci_empty${soci_lib_post}$<$<CONFIG:Debug>:_d>${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/lib/$<CONFIG>/${soci_lib_pre}soci_sqlite3${soci_lib_post}$<$<CONFIG:Debug>:_d>${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/lib
|
|
||||||
>
|
|
||||||
TEST_COMMAND ""
|
|
||||||
INSTALL_COMMAND ""
|
|
||||||
DEPENDS sqlite
|
|
||||||
BUILD_BYPRODUCTS
|
|
||||||
<BINARY_DIR>/lib/${soci_lib_pre}soci_core${soci_lib_post}${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/lib/${soci_lib_pre}soci_core${soci_lib_post}_d${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/lib/${soci_lib_pre}soci_empty${soci_lib_post}${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/lib/${soci_lib_pre}soci_empty${soci_lib_post}_d${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/lib/${soci_lib_pre}soci_sqlite3${soci_lib_post}${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/lib/${soci_lib_pre}soci_sqlite3${soci_lib_post}_d${ep_lib_suffix}
|
|
||||||
)
|
|
||||||
ExternalProject_Get_Property (soci BINARY_DIR)
|
|
||||||
ExternalProject_Get_Property (soci SOURCE_DIR)
|
|
||||||
if (CMAKE_VERBOSE_MAKEFILE)
|
|
||||||
print_ep_logs (soci)
|
|
||||||
endif ()
|
|
||||||
file (MAKE_DIRECTORY ${SOURCE_DIR}/include)
|
|
||||||
file (MAKE_DIRECTORY ${BINARY_DIR}/include)
|
|
||||||
foreach (_comp core empty sqlite3)
|
|
||||||
set_target_properties ("soci_${_comp}" PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${BINARY_DIR}/lib/${soci_lib_pre}soci_${_comp}${soci_lib_post}_d${ep_lib_suffix}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${BINARY_DIR}/lib/${soci_lib_pre}soci_${_comp}${soci_lib_post}${ep_lib_suffix}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
"${SOURCE_DIR}/include;${BINARY_DIR}/include")
|
|
||||||
add_dependencies ("soci_${_comp}" soci) # something has to depend on the ExternalProject to trigger it
|
|
||||||
target_link_libraries (ripple_libs INTERFACE "soci_${_comp}")
|
|
||||||
if (NOT _comp STREQUAL "core")
|
|
||||||
target_link_libraries ("soci_${_comp}" INTERFACE soci_core)
|
|
||||||
endif ()
|
|
||||||
endforeach ()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
foreach (_comp core empty sqlite3)
|
|
||||||
exclude_if_included ("soci_${_comp}")
|
|
||||||
endforeach ()
|
|
||||||
|
|
||||||
|
|
||||||
exclude_if_included (soci)
|
|
||||||
@@ -1,93 +0,0 @@
|
|||||||
#[===================================================================[
|
|
||||||
NIH dep: sqlite
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
add_library (sqlite STATIC IMPORTED GLOBAL)
|
|
||||||
|
|
||||||
if (NOT WIN32)
|
|
||||||
find_package(sqlite)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
if(sqlite3)
|
|
||||||
set_target_properties (sqlite PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${sqlite3}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${sqlite3}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${SQLITE_INCLUDE_DIR})
|
|
||||||
|
|
||||||
else()
|
|
||||||
ExternalProject_Add (sqlite3
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
# sqlite doesn't use git, but it provides versioned tarballs
|
|
||||||
URL https://www.sqlite.org/2018/sqlite-amalgamation-3260000.zip
|
|
||||||
http://www.sqlite.org/2018/sqlite-amalgamation-3260000.zip
|
|
||||||
https://www2.sqlite.org/2018/sqlite-amalgamation-3260000.zip
|
|
||||||
http://www2.sqlite.org/2018/sqlite-amalgamation-3260000.zip
|
|
||||||
# ^^^ version is apparent in the URL: 3260000 => 3.26.0
|
|
||||||
URL_HASH SHA256=de5dcab133aa339a4cf9e97c40aa6062570086d6085d8f9ad7bc6ddf8a52096e
|
|
||||||
# Don't need to worry about MITM attacks too much because the download
|
|
||||||
# is checked against a strong hash
|
|
||||||
TLS_VERIFY false
|
|
||||||
# we wrote a very simple CMake file to build sqlite
|
|
||||||
# so that's what we copy here so that we can build with
|
|
||||||
# CMake. sqlite doesn't generally provided a build system
|
|
||||||
# for the single amalgamation source file.
|
|
||||||
PATCH_COMMAND
|
|
||||||
${CMAKE_COMMAND} -E copy_if_different
|
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/Builds/CMake/CMake_sqlite3.txt
|
|
||||||
<SOURCE_DIR>/CMakeLists.txt
|
|
||||||
CMAKE_ARGS
|
|
||||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
|
||||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
|
||||||
$<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:-DCMAKE_VERBOSE_MAKEFILE=ON>
|
|
||||||
-DCMAKE_DEBUG_POSTFIX=_d
|
|
||||||
$<$<NOT:$<BOOL:${is_multiconfig}>>:-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}>
|
|
||||||
$<$<BOOL:${MSVC}>:
|
|
||||||
"-DCMAKE_C_FLAGS=-GR -Gd -fp:precise -FS -MP"
|
|
||||||
"-DCMAKE_C_FLAGS_DEBUG=-MTd"
|
|
||||||
"-DCMAKE_C_FLAGS_RELEASE=-MT"
|
|
||||||
>
|
|
||||||
LOG_BUILD ON
|
|
||||||
LOG_CONFIGURE ON
|
|
||||||
BUILD_COMMAND
|
|
||||||
${CMAKE_COMMAND}
|
|
||||||
--build .
|
|
||||||
--config $<CONFIG>
|
|
||||||
--parallel ${ep_procs}
|
|
||||||
$<$<BOOL:${is_multiconfig}>:
|
|
||||||
COMMAND
|
|
||||||
${CMAKE_COMMAND} -E copy
|
|
||||||
<BINARY_DIR>/$<CONFIG>/${ep_lib_prefix}sqlite3$<$<CONFIG:Debug>:_d>${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>
|
|
||||||
>
|
|
||||||
TEST_COMMAND ""
|
|
||||||
INSTALL_COMMAND ""
|
|
||||||
BUILD_BYPRODUCTS
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}sqlite3${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}sqlite3_d${ep_lib_suffix}
|
|
||||||
)
|
|
||||||
ExternalProject_Get_Property (sqlite3 BINARY_DIR)
|
|
||||||
ExternalProject_Get_Property (sqlite3 SOURCE_DIR)
|
|
||||||
if (CMAKE_VERBOSE_MAKEFILE)
|
|
||||||
print_ep_logs (sqlite3)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
set_target_properties (sqlite PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${BINARY_DIR}/${ep_lib_prefix}sqlite3_d${ep_lib_suffix}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${BINARY_DIR}/${ep_lib_prefix}sqlite3${ep_lib_suffix}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${SOURCE_DIR})
|
|
||||||
|
|
||||||
add_dependencies (sqlite sqlite3)
|
|
||||||
exclude_if_included (sqlite3)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
target_link_libraries (sqlite INTERFACE $<$<NOT:$<BOOL:${MSVC}>>:dl>)
|
|
||||||
target_link_libraries (ripple_libs INTERFACE sqlite)
|
|
||||||
exclude_if_included (sqlite)
|
|
||||||
set(sqlite_BINARY_DIR ${BINARY_DIR})
|
|
||||||
@@ -1,84 +1 @@
|
|||||||
#[===================================================================[
|
find_package(wasmedge REQUIRED)
|
||||||
NIH dep: wasmedge: web assembly runtime for hooks.
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
find_package(Curses)
|
|
||||||
if(CURSES_FOUND)
|
|
||||||
include_directories(${CURSES_INCLUDE_DIR})
|
|
||||||
target_link_libraries(ripple_libs INTERFACE ${CURSES_LIBRARY})
|
|
||||||
else()
|
|
||||||
message(WARNING "CURSES library not found... (only important for mac builds)")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
find_package(LLVM REQUIRED CONFIG)
|
|
||||||
message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
|
|
||||||
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")
|
|
||||||
ExternalProject_Add (wasmedge_src
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/WasmEdge/WasmEdge.git
|
|
||||||
GIT_TAG 0.11.2
|
|
||||||
CMAKE_ARGS
|
|
||||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
|
||||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
|
||||||
$<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:-DCMAKE_VERBOSE_MAKEFILE=ON>
|
|
||||||
-DCMAKE_DEBUG_POSTFIX=_d
|
|
||||||
-DWASMEDGE_BUILD_SHARED_LIB=OFF
|
|
||||||
-DWASMEDGE_BUILD_STATIC_LIB=ON
|
|
||||||
-DWASMEDGE_BUILD_AOT_RUNTIME=ON
|
|
||||||
-DWASMEDGE_FORCE_DISABLE_LTO=ON
|
|
||||||
-DWASMEDGE_LINK_LLVM_STATIC=ON
|
|
||||||
-DWASMEDGE_LINK_TOOLS_STATIC=ON
|
|
||||||
-DWASMEDGE_BUILD_PLUGINS=OFF
|
|
||||||
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
|
|
||||||
-DLLVM_DIR=${LLVM_DIR}
|
|
||||||
-DLLVM_LIBRARY_DIR=${LLVM_LIBRARY_DIR}
|
|
||||||
-DLLVM_ENABLE_TERMINFO=OFF
|
|
||||||
$<$<NOT:$<BOOL:${is_multiconfig}>>:-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}>
|
|
||||||
$<$<BOOL:${MSVC}>:
|
|
||||||
"-DCMAKE_C_FLAGS=-GR -Gd -fp:precise -FS -MP -march=native"
|
|
||||||
"-DCMAKE_C_FLAGS_DEBUG=-MTd"
|
|
||||||
"-DCMAKE_C_FLAGS_RELEASE=-MT"
|
|
||||||
>
|
|
||||||
LOG_CONFIGURE ON
|
|
||||||
LOG_BUILD ON
|
|
||||||
LOG_CONFIGURE ON
|
|
||||||
COMMAND
|
|
||||||
pwd
|
|
||||||
BUILD_COMMAND
|
|
||||||
${CMAKE_COMMAND}
|
|
||||||
--build .
|
|
||||||
--config $<CONFIG>
|
|
||||||
$<$<VERSION_GREATER_EQUAL:${CMAKE_VERSION},3.12>:--parallel ${ep_procs}>
|
|
||||||
TEST_COMMAND ""
|
|
||||||
INSTALL_COMMAND ""
|
|
||||||
BUILD_BYPRODUCTS
|
|
||||||
<BINARY_DIR>/lib/api/libwasmedge.a
|
|
||||||
)
|
|
||||||
add_library (wasmedge STATIC IMPORTED GLOBAL)
|
|
||||||
ExternalProject_Get_Property (wasmedge_src BINARY_DIR)
|
|
||||||
ExternalProject_Get_Property (wasmedge_src SOURCE_DIR)
|
|
||||||
set (wasmedge_src_BINARY_DIR "${BINARY_DIR}")
|
|
||||||
add_dependencies (wasmedge wasmedge_src)
|
|
||||||
execute_process(
|
|
||||||
COMMAND
|
|
||||||
mkdir -p "${wasmedge_src_BINARY_DIR}/include/api"
|
|
||||||
)
|
|
||||||
set_target_properties (wasmedge PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
"${wasmedge_src_BINARY_DIR}/lib/api/libwasmedge.a"
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
"${wasmedge_src_BINARY_DIR}/lib/api/libwasmedge.a"
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
"${wasmedge_src_BINARY_DIR}/include/api/"
|
|
||||||
)
|
|
||||||
target_link_libraries (ripple_libs INTERFACE wasmedge)
|
|
||||||
#RH NOTE: some compilers / versions of some libraries need these, most don't
|
|
||||||
|
|
||||||
find_library(XAR_LIBRARY NAMES xar)
|
|
||||||
if(XAR_LIBRARY)
|
|
||||||
target_link_libraries(ripple_libs INTERFACE ${XAR_LIBRARY})
|
|
||||||
else()
|
|
||||||
message(WARNING "xar library not found... (only important for mac builds)")
|
|
||||||
endif()
|
|
||||||
add_library (wasmedge::wasmedge ALIAS wasmedge)
|
|
||||||
|
|||||||
@@ -1,167 +0,0 @@
|
|||||||
if(reporting)
|
|
||||||
find_library(cassandra NAMES cassandra)
|
|
||||||
if(NOT cassandra)
|
|
||||||
|
|
||||||
message("System installed Cassandra cpp driver not found. Will build")
|
|
||||||
|
|
||||||
find_library(zlib NAMES zlib1g-dev zlib-devel zlib z)
|
|
||||||
if(NOT zlib)
|
|
||||||
message("zlib not found. will build")
|
|
||||||
add_library(zlib STATIC IMPORTED GLOBAL)
|
|
||||||
ExternalProject_Add(zlib_src
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/madler/zlib.git
|
|
||||||
GIT_TAG v1.2.12
|
|
||||||
INSTALL_COMMAND ""
|
|
||||||
BUILD_BYPRODUCTS <BINARY_DIR>/${ep_lib_prefix}z.a
|
|
||||||
LOG_BUILD TRUE
|
|
||||||
LOG_CONFIGURE TRUE
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
ExternalProject_Get_Property (zlib_src SOURCE_DIR)
|
|
||||||
ExternalProject_Get_Property (zlib_src BINARY_DIR)
|
|
||||||
set (zlib_src_SOURCE_DIR "${SOURCE_DIR}")
|
|
||||||
file (MAKE_DIRECTORY ${zlib_src_SOURCE_DIR}/include)
|
|
||||||
|
|
||||||
set_target_properties (zlib PROPERTIES
|
|
||||||
IMPORTED_LOCATION
|
|
||||||
${BINARY_DIR}/${ep_lib_prefix}z.a
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${SOURCE_DIR}/include)
|
|
||||||
add_dependencies(zlib zlib_src)
|
|
||||||
|
|
||||||
file(TO_CMAKE_PATH "${zlib_src_SOURCE_DIR}" zlib_src_SOURCE_DIR)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
find_library(krb5 NAMES krb5-dev libkrb5-dev)
|
|
||||||
|
|
||||||
if(NOT krb5)
|
|
||||||
message("krb5 not found. will build")
|
|
||||||
add_library(krb5 STATIC IMPORTED GLOBAL)
|
|
||||||
ExternalProject_Add(krb5_src
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/krb5/krb5.git
|
|
||||||
GIT_TAG krb5-1.20-final
|
|
||||||
UPDATE_COMMAND ""
|
|
||||||
CONFIGURE_COMMAND autoreconf src && CFLAGS=-fcommon ./src/configure --enable-static --disable-shared > /dev/null
|
|
||||||
BUILD_IN_SOURCE 1
|
|
||||||
BUILD_COMMAND make
|
|
||||||
INSTALL_COMMAND ""
|
|
||||||
BUILD_BYPRODUCTS <SOURCE_DIR>/lib/${ep_lib_prefix}krb5.a
|
|
||||||
LOG_BUILD TRUE
|
|
||||||
)
|
|
||||||
|
|
||||||
ExternalProject_Get_Property (krb5_src SOURCE_DIR)
|
|
||||||
ExternalProject_Get_Property (krb5_src BINARY_DIR)
|
|
||||||
set (krb5_src_SOURCE_DIR "${SOURCE_DIR}")
|
|
||||||
file (MAKE_DIRECTORY ${krb5_src_SOURCE_DIR}/include)
|
|
||||||
|
|
||||||
set_target_properties (krb5 PROPERTIES
|
|
||||||
IMPORTED_LOCATION
|
|
||||||
${BINARY_DIR}/lib/${ep_lib_prefix}krb5.a
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${SOURCE_DIR}/include)
|
|
||||||
add_dependencies(krb5 krb5_src)
|
|
||||||
|
|
||||||
file(TO_CMAKE_PATH "${krb5_src_SOURCE_DIR}" krb5_src_SOURCE_DIR)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
|
|
||||||
find_library(libuv1 NAMES uv1 libuv1 liubuv1-dev libuv1:amd64)
|
|
||||||
|
|
||||||
|
|
||||||
if(NOT libuv1)
|
|
||||||
message("libuv1 not found, will build")
|
|
||||||
add_library(libuv1 STATIC IMPORTED GLOBAL)
|
|
||||||
ExternalProject_Add(libuv_src
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/libuv/libuv.git
|
|
||||||
GIT_TAG v1.44.2
|
|
||||||
INSTALL_COMMAND ""
|
|
||||||
BUILD_BYPRODUCTS <BINARY_DIR>/${ep_lib_prefix}uv_a.a
|
|
||||||
LOG_BUILD TRUE
|
|
||||||
LOG_CONFIGURE TRUE
|
|
||||||
)
|
|
||||||
|
|
||||||
ExternalProject_Get_Property (libuv_src SOURCE_DIR)
|
|
||||||
ExternalProject_Get_Property (libuv_src BINARY_DIR)
|
|
||||||
set (libuv_src_SOURCE_DIR "${SOURCE_DIR}")
|
|
||||||
file (MAKE_DIRECTORY ${libuv_src_SOURCE_DIR}/include)
|
|
||||||
|
|
||||||
set_target_properties (libuv1 PROPERTIES
|
|
||||||
IMPORTED_LOCATION
|
|
||||||
${BINARY_DIR}/${ep_lib_prefix}uv_a.a
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${SOURCE_DIR}/include)
|
|
||||||
add_dependencies(libuv1 libuv_src)
|
|
||||||
|
|
||||||
file(TO_CMAKE_PATH "${libuv_src_SOURCE_DIR}" libuv_src_SOURCE_DIR)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_library (cassandra STATIC IMPORTED GLOBAL)
|
|
||||||
ExternalProject_Add(cassandra_src
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/datastax/cpp-driver.git
|
|
||||||
GIT_TAG 2.16.2
|
|
||||||
CMAKE_ARGS
|
|
||||||
-DLIBUV_ROOT_DIR=${BINARY_DIR}
|
|
||||||
-DLIBUV_LIBARY=${BINARY_DIR}/libuv_a.a
|
|
||||||
-DLIBUV_INCLUDE_DIR=${SOURCE_DIR}/include
|
|
||||||
-DCASS_BUILD_STATIC=ON
|
|
||||||
-DCASS_BUILD_SHARED=OFF
|
|
||||||
-DOPENSSL_ROOT_DIR=/opt/local/openssl
|
|
||||||
INSTALL_COMMAND ""
|
|
||||||
BUILD_BYPRODUCTS <BINARY_DIR>/${ep_lib_prefix}cassandra_static.a
|
|
||||||
LOG_BUILD TRUE
|
|
||||||
LOG_CONFIGURE TRUE
|
|
||||||
)
|
|
||||||
|
|
||||||
ExternalProject_Get_Property (cassandra_src SOURCE_DIR)
|
|
||||||
ExternalProject_Get_Property (cassandra_src BINARY_DIR)
|
|
||||||
set (cassandra_src_SOURCE_DIR "${SOURCE_DIR}")
|
|
||||||
file (MAKE_DIRECTORY ${cassandra_src_SOURCE_DIR}/include)
|
|
||||||
|
|
||||||
set_target_properties (cassandra PROPERTIES
|
|
||||||
IMPORTED_LOCATION
|
|
||||||
${BINARY_DIR}/${ep_lib_prefix}cassandra_static.a
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${SOURCE_DIR}/include)
|
|
||||||
add_dependencies(cassandra cassandra_src)
|
|
||||||
|
|
||||||
if(NOT libuv1)
|
|
||||||
ExternalProject_Add_StepDependencies(cassandra_src build libuv1)
|
|
||||||
target_link_libraries(cassandra INTERFACE libuv1)
|
|
||||||
else()
|
|
||||||
target_link_libraries(cassandra INTERFACE ${libuv1})
|
|
||||||
endif()
|
|
||||||
if(NOT krb5)
|
|
||||||
|
|
||||||
ExternalProject_Add_StepDependencies(cassandra_src build krb5)
|
|
||||||
target_link_libraries(cassandra INTERFACE krb5)
|
|
||||||
else()
|
|
||||||
target_link_libraries(cassandra INTERFACE ${krb5})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(NOT zlib)
|
|
||||||
ExternalProject_Add_StepDependencies(cassandra_src build zlib)
|
|
||||||
target_link_libraries(cassandra INTERFACE zlib)
|
|
||||||
else()
|
|
||||||
target_link_libraries(cassandra INTERFACE ${zlib})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
file(TO_CMAKE_PATH "${cassandra_src_SOURCE_DIR}" cassandra_src_SOURCE_DIR)
|
|
||||||
target_link_libraries(ripple_libs INTERFACE cassandra)
|
|
||||||
else()
|
|
||||||
message("Found system installed cassandra cpp driver")
|
|
||||||
|
|
||||||
find_path(cassandra_includes NAMES cassandra.h REQUIRED)
|
|
||||||
target_link_libraries (ripple_libs INTERFACE ${cassandra})
|
|
||||||
target_include_directories(ripple_libs INTERFACE ${cassandra_includes})
|
|
||||||
endif()
|
|
||||||
|
|
||||||
exclude_if_included (cassandra)
|
|
||||||
endif()
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
#[===================================================================[
|
|
||||||
NIH dep: date
|
|
||||||
|
|
||||||
the main library is header-only, thus is an INTERFACE lib in CMake.
|
|
||||||
|
|
||||||
NOTE: this has been accepted into c++20 so can likely be replaced
|
|
||||||
when we update to that standard
|
|
||||||
#]===================================================================]
|
|
||||||
|
|
||||||
find_package (date QUIET)
|
|
||||||
if (NOT TARGET date::date)
|
|
||||||
FetchContent_Declare(
|
|
||||||
hh_date_src
|
|
||||||
GIT_REPOSITORY https://github.com/HowardHinnant/date.git
|
|
||||||
GIT_TAG fc4cf092f9674f2670fb9177edcdee870399b829
|
|
||||||
)
|
|
||||||
FetchContent_MakeAvailable(hh_date_src)
|
|
||||||
endif ()
|
|
||||||
@@ -1,324 +1,15 @@
|
|||||||
|
find_package(gRPC 1.23)
|
||||||
# currently linking to unsecure versions...if we switch, we'll
|
|
||||||
# need to add ssl as a link dependency to the grpc targets
|
|
||||||
option (use_secure_grpc "use TLS version of grpc libs." OFF)
|
|
||||||
if (use_secure_grpc)
|
|
||||||
set (grpc_suffix "")
|
|
||||||
else ()
|
|
||||||
set (grpc_suffix "_unsecure")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
find_package (gRPC 1.23 CONFIG QUIET)
|
|
||||||
if (TARGET gRPC::gpr AND NOT local_grpc)
|
|
||||||
get_target_property (_grpc_l gRPC::gpr IMPORTED_LOCATION_DEBUG)
|
|
||||||
if (NOT _grpc_l)
|
|
||||||
get_target_property (_grpc_l gRPC::gpr IMPORTED_LOCATION_RELEASE)
|
|
||||||
endif ()
|
|
||||||
if (NOT _grpc_l)
|
|
||||||
get_target_property (_grpc_l gRPC::gpr IMPORTED_LOCATION)
|
|
||||||
endif ()
|
|
||||||
message (STATUS "Found cmake config for gRPC. Using ${_grpc_l}.")
|
|
||||||
else ()
|
|
||||||
find_package (PkgConfig QUIET)
|
|
||||||
if (PKG_CONFIG_FOUND)
|
|
||||||
pkg_check_modules (grpc QUIET "grpc${grpc_suffix}>=1.25" "grpc++${grpc_suffix}" gpr)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
if (grpc_FOUND)
|
|
||||||
message (STATUS "Found gRPC using pkg-config. Using ${grpc_gpr_PREFIX}.")
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
add_executable (gRPC::grpc_cpp_plugin IMPORTED)
|
|
||||||
exclude_if_included (gRPC::grpc_cpp_plugin)
|
|
||||||
|
|
||||||
if (grpc_FOUND AND NOT local_grpc)
|
|
||||||
# use installed grpc (via pkg-config)
|
|
||||||
macro (add_imported_grpc libname_)
|
|
||||||
if (static)
|
|
||||||
set (_search "${CMAKE_STATIC_LIBRARY_PREFIX}${libname_}${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
|
||||||
else ()
|
|
||||||
set (_search "${CMAKE_SHARED_LIBRARY_PREFIX}${libname_}${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
|
||||||
endif()
|
|
||||||
find_library(_found_${libname_}
|
|
||||||
NAMES ${_search}
|
|
||||||
HINTS ${grpc_LIBRARY_DIRS})
|
|
||||||
if (_found_${libname_})
|
|
||||||
message (STATUS "importing ${libname_} as ${_found_${libname_}}")
|
|
||||||
else ()
|
|
||||||
message (FATAL_ERROR "using pkg-config for grpc, can't find ${_search}")
|
|
||||||
endif ()
|
|
||||||
add_library ("gRPC::${libname_}" STATIC IMPORTED GLOBAL)
|
|
||||||
set_target_properties ("gRPC::${libname_}" PROPERTIES IMPORTED_LOCATION ${_found_${libname_}})
|
|
||||||
if (grpc_INCLUDE_DIRS)
|
|
||||||
set_target_properties ("gRPC::${libname_}" PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${grpc_INCLUDE_DIRS})
|
|
||||||
endif ()
|
|
||||||
target_link_libraries (ripple_libs INTERFACE "gRPC::${libname_}")
|
|
||||||
exclude_if_included ("gRPC::${libname_}")
|
|
||||||
endmacro ()
|
|
||||||
|
|
||||||
set_target_properties (gRPC::grpc_cpp_plugin PROPERTIES
|
|
||||||
IMPORTED_LOCATION "${grpc_gpr_PREFIX}/bin/grpc_cpp_plugin${CMAKE_EXECUTABLE_SUFFIX}")
|
|
||||||
|
|
||||||
pkg_check_modules (cares QUIET libcares)
|
|
||||||
if (cares_FOUND)
|
|
||||||
if (static)
|
|
||||||
set (_search "${CMAKE_STATIC_LIBRARY_PREFIX}cares${CMAKE_STATIC_LIBRARY_SUFFIX}")
|
|
||||||
set (_prefix cares_STATIC)
|
|
||||||
set (_static STATIC)
|
|
||||||
else ()
|
|
||||||
set (_search "${CMAKE_SHARED_LIBRARY_PREFIX}cares${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
|
||||||
set (_prefix cares)
|
|
||||||
set (_static)
|
|
||||||
endif()
|
|
||||||
find_library(_location NAMES ${_search} HINTS ${cares_LIBRARY_DIRS})
|
|
||||||
if (NOT _location)
|
|
||||||
message (FATAL_ERROR "using pkg-config for grpc, can't find c-ares")
|
|
||||||
endif ()
|
|
||||||
if(${_location} MATCHES "\\.a$")
|
|
||||||
add_library(c-ares::cares STATIC IMPORTED GLOBAL)
|
|
||||||
else()
|
|
||||||
add_library(c-ares::cares SHARED IMPORTED GLOBAL)
|
|
||||||
endif()
|
|
||||||
set_target_properties (c-ares::cares PROPERTIES
|
|
||||||
IMPORTED_LOCATION ${_location}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES "${${_prefix}_INCLUDE_DIRS}"
|
|
||||||
INTERFACE_LINK_OPTIONS "${${_prefix}_LDFLAGS}"
|
|
||||||
)
|
|
||||||
exclude_if_included (c-ares::cares)
|
|
||||||
else ()
|
|
||||||
message (FATAL_ERROR "using pkg-config for grpc, can't find c-ares")
|
|
||||||
endif ()
|
|
||||||
else ()
|
|
||||||
#[===========================[
|
|
||||||
c-ares (grpc requires)
|
|
||||||
#]===========================]
|
|
||||||
ExternalProject_Add (c-ares_src
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/c-ares/c-ares.git
|
|
||||||
GIT_TAG cares-1_15_0
|
|
||||||
CMAKE_ARGS
|
|
||||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
|
||||||
$<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:-DCMAKE_VERBOSE_MAKEFILE=ON>
|
|
||||||
-DCMAKE_DEBUG_POSTFIX=_d
|
|
||||||
$<$<NOT:$<BOOL:${is_multiconfig}>>:-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}>
|
|
||||||
-DCMAKE_INSTALL_PREFIX=<BINARY_DIR>/_installed_
|
|
||||||
-DCARES_SHARED=OFF
|
|
||||||
-DCARES_STATIC=ON
|
|
||||||
-DCARES_STATIC_PIC=ON
|
|
||||||
-DCARES_INSTALL=ON
|
|
||||||
-DCARES_MSVC_STATIC_RUNTIME=ON
|
|
||||||
$<$<BOOL:${MSVC}>:
|
|
||||||
"-DCMAKE_C_FLAGS=-GR -Gd -fp:precise -FS -MP"
|
|
||||||
>
|
|
||||||
LOG_BUILD ON
|
|
||||||
LOG_CONFIGURE ON
|
|
||||||
BUILD_COMMAND
|
|
||||||
${CMAKE_COMMAND}
|
|
||||||
--build .
|
|
||||||
--config $<CONFIG>
|
|
||||||
--parallel ${ep_procs}
|
|
||||||
TEST_COMMAND ""
|
|
||||||
INSTALL_COMMAND
|
|
||||||
${CMAKE_COMMAND} -E env --unset=DESTDIR ${CMAKE_COMMAND} --build . --config $<CONFIG> --target install
|
|
||||||
BUILD_BYPRODUCTS
|
|
||||||
<BINARY_DIR>/_installed_/lib/${ep_lib_prefix}cares${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/_installed_/lib/${ep_lib_prefix}cares_d${ep_lib_suffix}
|
|
||||||
)
|
|
||||||
exclude_if_included (c-ares_src)
|
|
||||||
ExternalProject_Get_Property (c-ares_src BINARY_DIR)
|
|
||||||
set (cares_binary_dir "${BINARY_DIR}")
|
|
||||||
|
|
||||||
add_library (c-ares::cares STATIC IMPORTED GLOBAL)
|
|
||||||
file (MAKE_DIRECTORY ${BINARY_DIR}/_installed_/include)
|
|
||||||
set_target_properties (c-ares::cares PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${BINARY_DIR}/_installed_/lib/${ep_lib_prefix}cares_d${ep_lib_suffix}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${BINARY_DIR}/_installed_/lib/${ep_lib_prefix}cares${ep_lib_suffix}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${BINARY_DIR}/_installed_/include)
|
|
||||||
add_dependencies (c-ares::cares c-ares_src)
|
|
||||||
exclude_if_included (c-ares::cares)
|
|
||||||
|
|
||||||
if (NOT has_zlib)
|
|
||||||
#[===========================[
|
|
||||||
zlib (grpc requires)
|
|
||||||
#]===========================]
|
|
||||||
if (MSVC)
|
|
||||||
set (zlib_debug_postfix "d") # zlib cmake sets this internally for MSVC, so we really don't have a choice
|
|
||||||
set (zlib_base "zlibstatic")
|
|
||||||
else ()
|
|
||||||
set (zlib_debug_postfix "_d")
|
|
||||||
set (zlib_base "z")
|
|
||||||
endif ()
|
|
||||||
ExternalProject_Add (zlib_src
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/madler/zlib.git
|
|
||||||
GIT_TAG v1.2.11
|
|
||||||
CMAKE_ARGS
|
|
||||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
|
||||||
$<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:-DCMAKE_VERBOSE_MAKEFILE=ON>
|
|
||||||
-DCMAKE_DEBUG_POSTFIX=${zlib_debug_postfix}
|
|
||||||
$<$<NOT:$<BOOL:${is_multiconfig}>>:-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}>
|
|
||||||
-DCMAKE_INSTALL_PREFIX=<BINARY_DIR>/_installed_
|
|
||||||
-DBUILD_SHARED_LIBS=OFF
|
|
||||||
$<$<BOOL:${MSVC}>:
|
|
||||||
"-DCMAKE_C_FLAGS=-GR -Gd -fp:precise -FS -MP"
|
|
||||||
"-DCMAKE_C_FLAGS_DEBUG=-MTd"
|
|
||||||
"-DCMAKE_C_FLAGS_RELEASE=-MT"
|
|
||||||
>
|
|
||||||
LOG_BUILD ON
|
|
||||||
LOG_CONFIGURE ON
|
|
||||||
BUILD_COMMAND
|
|
||||||
${CMAKE_COMMAND}
|
|
||||||
--build .
|
|
||||||
--config $<CONFIG>
|
|
||||||
--parallel ${ep_procs}
|
|
||||||
TEST_COMMAND ""
|
|
||||||
INSTALL_COMMAND
|
|
||||||
${CMAKE_COMMAND} -E env --unset=DESTDIR ${CMAKE_COMMAND} --build . --config $<CONFIG> --target install
|
|
||||||
BUILD_BYPRODUCTS
|
|
||||||
<BINARY_DIR>/_installed_/lib/${ep_lib_prefix}${zlib_base}${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/_installed_/lib/${ep_lib_prefix}${zlib_base}${zlib_debug_postfix}${ep_lib_suffix}
|
|
||||||
)
|
|
||||||
exclude_if_included (zlib_src)
|
|
||||||
ExternalProject_Get_Property (zlib_src BINARY_DIR)
|
|
||||||
set (zlib_binary_dir "${BINARY_DIR}")
|
|
||||||
|
|
||||||
add_library (ZLIB::ZLIB STATIC IMPORTED GLOBAL)
|
|
||||||
file (MAKE_DIRECTORY ${BINARY_DIR}/_installed_/include)
|
|
||||||
set_target_properties (ZLIB::ZLIB PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${BINARY_DIR}/_installed_/lib/${ep_lib_prefix}${zlib_base}${zlib_debug_postfix}${ep_lib_suffix}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${BINARY_DIR}/_installed_/lib/${ep_lib_prefix}${zlib_base}${ep_lib_suffix}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${BINARY_DIR}/_installed_/include)
|
|
||||||
add_dependencies (ZLIB::ZLIB zlib_src)
|
|
||||||
exclude_if_included (ZLIB::ZLIB)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
#[===========================[
|
|
||||||
grpc
|
|
||||||
#]===========================]
|
|
||||||
ExternalProject_Add (grpc_src
|
|
||||||
PREFIX ${nih_cache_path}
|
|
||||||
GIT_REPOSITORY https://github.com/grpc/grpc.git
|
|
||||||
GIT_TAG v1.25.0
|
|
||||||
CMAKE_ARGS
|
|
||||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
|
||||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
|
||||||
-DCMAKE_CXX_STANDARD=17
|
|
||||||
$<$<BOOL:${CMAKE_VERBOSE_MAKEFILE}>:-DCMAKE_VERBOSE_MAKEFILE=ON>
|
|
||||||
$<$<BOOL:${CMAKE_TOOLCHAIN_FILE}>:-DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}>
|
|
||||||
$<$<BOOL:${VCPKG_TARGET_TRIPLET}>:-DVCPKG_TARGET_TRIPLET=${VCPKG_TARGET_TRIPLET}>
|
|
||||||
$<$<BOOL:${unity}>:-DCMAKE_UNITY_BUILD=ON}>
|
|
||||||
-DCMAKE_DEBUG_POSTFIX=_d
|
|
||||||
$<$<NOT:$<BOOL:${is_multiconfig}>>:-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}>
|
|
||||||
-DgRPC_BUILD_TESTS=OFF
|
|
||||||
-DgRPC_BENCHMARK_PROVIDER=""
|
|
||||||
-DgRPC_BUILD_CSHARP_EXT=OFF
|
|
||||||
-DgRPC_MSVC_STATIC_RUNTIME=ON
|
|
||||||
-DgRPC_INSTALL=OFF
|
|
||||||
-DgRPC_CARES_PROVIDER=package
|
|
||||||
-Dc-ares_DIR=${cares_binary_dir}/_installed_/lib/cmake/c-ares
|
|
||||||
-DgRPC_SSL_PROVIDER=package
|
|
||||||
-DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR}
|
|
||||||
-DgRPC_PROTOBUF_PROVIDER=package
|
|
||||||
-DProtobuf_USE_STATIC_LIBS=$<IF:$<AND:$<BOOL:${Protobuf_FOUND}>,$<NOT:$<BOOL:${static}>>>,OFF,ON>
|
|
||||||
-DProtobuf_INCLUDE_DIR=$<JOIN:$<TARGET_PROPERTY:protobuf::libprotobuf,INTERFACE_INCLUDE_DIRECTORIES>,:_:>
|
|
||||||
-DProtobuf_LIBRARY=$<IF:$<CONFIG:Debug>,$<TARGET_PROPERTY:protobuf::libprotobuf,IMPORTED_LOCATION_DEBUG>,$<TARGET_PROPERTY:protobuf::libprotobuf,IMPORTED_LOCATION_RELEASE>>
|
|
||||||
-DProtobuf_PROTOC_LIBRARY=$<IF:$<CONFIG:Debug>,$<TARGET_PROPERTY:protobuf::libprotoc,IMPORTED_LOCATION_DEBUG>,$<TARGET_PROPERTY:protobuf::libprotoc,IMPORTED_LOCATION_RELEASE>>
|
|
||||||
-DProtobuf_PROTOC_EXECUTABLE=$<TARGET_PROPERTY:protobuf::protoc,IMPORTED_LOCATION>
|
|
||||||
-DgRPC_ZLIB_PROVIDER=package
|
|
||||||
$<$<NOT:$<BOOL:${has_zlib}>>:-DZLIB_ROOT=${zlib_binary_dir}/_installed_>
|
|
||||||
$<$<BOOL:${MSVC}>:
|
|
||||||
"-DCMAKE_CXX_FLAGS=-GR -Gd -fp:precise -FS -EHa -MP"
|
|
||||||
"-DCMAKE_C_FLAGS=-GR -Gd -fp:precise -FS -MP"
|
|
||||||
>
|
|
||||||
LOG_BUILD ON
|
|
||||||
LOG_CONFIGURE ON
|
|
||||||
BUILD_COMMAND
|
|
||||||
${CMAKE_COMMAND}
|
|
||||||
--build .
|
|
||||||
--config $<CONFIG>
|
|
||||||
--parallel ${ep_procs}
|
|
||||||
$<$<BOOL:${is_multiconfig}>:
|
|
||||||
COMMAND
|
|
||||||
${CMAKE_COMMAND} -E copy
|
|
||||||
<BINARY_DIR>/$<CONFIG>/${ep_lib_prefix}grpc${grpc_suffix}$<$<CONFIG:Debug>:_d>${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/$<CONFIG>/${ep_lib_prefix}grpc++${grpc_suffix}$<$<CONFIG:Debug>:_d>${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/$<CONFIG>/${ep_lib_prefix}address_sorting$<$<CONFIG:Debug>:_d>${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/$<CONFIG>/${ep_lib_prefix}gpr$<$<CONFIG:Debug>:_d>${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/$<CONFIG>/grpc_cpp_plugin${CMAKE_EXECUTABLE_SUFFIX}
|
|
||||||
<BINARY_DIR>
|
|
||||||
>
|
|
||||||
LIST_SEPARATOR :_:
|
|
||||||
TEST_COMMAND ""
|
|
||||||
INSTALL_COMMAND ""
|
|
||||||
DEPENDS c-ares_src
|
|
||||||
BUILD_BYPRODUCTS
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}grpc${grpc_suffix}${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}grpc${grpc_suffix}_d${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}grpc++${grpc_suffix}${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}grpc++${grpc_suffix}_d${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}address_sorting${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}address_sorting_d${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}gpr${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/${ep_lib_prefix}gpr_d${ep_lib_suffix}
|
|
||||||
<BINARY_DIR>/grpc_cpp_plugin${CMAKE_EXECUTABLE_SUFFIX}
|
|
||||||
)
|
|
||||||
if (TARGET protobuf_src)
|
|
||||||
ExternalProject_Add_StepDependencies(grpc_src build protobuf_src)
|
|
||||||
endif ()
|
|
||||||
exclude_if_included (grpc_src)
|
|
||||||
ExternalProject_Get_Property (grpc_src BINARY_DIR)
|
|
||||||
ExternalProject_Get_Property (grpc_src SOURCE_DIR)
|
|
||||||
set (grpc_binary_dir "${BINARY_DIR}")
|
|
||||||
set (grpc_source_dir "${SOURCE_DIR}")
|
|
||||||
if (CMAKE_VERBOSE_MAKEFILE)
|
|
||||||
print_ep_logs (grpc_src)
|
|
||||||
endif ()
|
|
||||||
file (MAKE_DIRECTORY ${SOURCE_DIR}/include)
|
|
||||||
|
|
||||||
macro (add_imported_grpc libname_)
|
|
||||||
add_library ("gRPC::${libname_}" STATIC IMPORTED GLOBAL)
|
|
||||||
set_target_properties ("gRPC::${libname_}" PROPERTIES
|
|
||||||
IMPORTED_LOCATION_DEBUG
|
|
||||||
${grpc_binary_dir}/${ep_lib_prefix}${libname_}_d${ep_lib_suffix}
|
|
||||||
IMPORTED_LOCATION_RELEASE
|
|
||||||
${grpc_binary_dir}/${ep_lib_prefix}${libname_}${ep_lib_suffix}
|
|
||||||
INTERFACE_INCLUDE_DIRECTORIES
|
|
||||||
${grpc_source_dir}/include)
|
|
||||||
add_dependencies ("gRPC::${libname_}" grpc_src)
|
|
||||||
target_link_libraries (ripple_libs INTERFACE "gRPC::${libname_}")
|
|
||||||
exclude_if_included ("gRPC::${libname_}")
|
|
||||||
endmacro ()
|
|
||||||
|
|
||||||
set_target_properties (gRPC::grpc_cpp_plugin PROPERTIES
|
|
||||||
IMPORTED_LOCATION "${grpc_binary_dir}/grpc_cpp_plugin${CMAKE_EXECUTABLE_SUFFIX}")
|
|
||||||
add_dependencies (gRPC::grpc_cpp_plugin grpc_src)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
add_imported_grpc (gpr)
|
|
||||||
add_imported_grpc ("grpc${grpc_suffix}")
|
|
||||||
add_imported_grpc ("grpc++${grpc_suffix}")
|
|
||||||
add_imported_grpc (address_sorting)
|
|
||||||
|
|
||||||
target_link_libraries ("gRPC::grpc${grpc_suffix}" INTERFACE c-ares::cares gRPC::gpr gRPC::address_sorting ZLIB::ZLIB)
|
|
||||||
target_link_libraries ("gRPC::grpc++${grpc_suffix}" INTERFACE "gRPC::grpc${grpc_suffix}" gRPC::gpr)
|
|
||||||
endif ()
|
|
||||||
|
|
||||||
#[=================================[
|
#[=================================[
|
||||||
generate protobuf sources for
|
generate protobuf sources for
|
||||||
grpc defs and bundle into a
|
grpc defs and bundle into a
|
||||||
static lib
|
static lib
|
||||||
#]=================================]
|
#]=================================]
|
||||||
set (GRPC_GEN_DIR "${CMAKE_BINARY_DIR}/proto_gen_grpc")
|
set(GRPC_GEN_DIR "${CMAKE_BINARY_DIR}/proto_gen_grpc")
|
||||||
file (MAKE_DIRECTORY ${GRPC_GEN_DIR})
|
file(MAKE_DIRECTORY ${GRPC_GEN_DIR})
|
||||||
set (GRPC_PROTO_SRCS)
|
set(GRPC_PROTO_SRCS)
|
||||||
set (GRPC_PROTO_HDRS)
|
set(GRPC_PROTO_HDRS)
|
||||||
set (GRPC_PROTO_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/src/ripple/proto/org")
|
set(GRPC_PROTO_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/src/ripple/proto/org")
|
||||||
file(GLOB_RECURSE GRPC_DEFINITION_FILES LIST_DIRECTORIES false "${GRPC_PROTO_ROOT}/*.proto")
|
file(GLOB_RECURSE GRPC_DEFINITION_FILES LIST_DIRECTORIES false "${GRPC_PROTO_ROOT}/*.proto")
|
||||||
foreach(file ${GRPC_DEFINITION_FILES})
|
foreach(file ${GRPC_DEFINITION_FILES})
|
||||||
get_filename_component(_abs_file ${file} ABSOLUTE)
|
get_filename_component(_abs_file ${file} ABSOLUTE)
|
||||||
@@ -329,10 +20,10 @@ foreach(file ${GRPC_DEFINITION_FILES})
|
|||||||
get_filename_component(_rel_root_dir ${_rel_root_file} DIRECTORY)
|
get_filename_component(_rel_root_dir ${_rel_root_file} DIRECTORY)
|
||||||
file(RELATIVE_PATH _rel_dir ${CMAKE_CURRENT_SOURCE_DIR} ${_abs_dir})
|
file(RELATIVE_PATH _rel_dir ${CMAKE_CURRENT_SOURCE_DIR} ${_abs_dir})
|
||||||
|
|
||||||
set (src_1 "${GRPC_GEN_DIR}/${_rel_root_dir}/${_basename}.grpc.pb.cc")
|
set(src_1 "${GRPC_GEN_DIR}/${_rel_root_dir}/${_basename}.grpc.pb.cc")
|
||||||
set (src_2 "${GRPC_GEN_DIR}/${_rel_root_dir}/${_basename}.pb.cc")
|
set(src_2 "${GRPC_GEN_DIR}/${_rel_root_dir}/${_basename}.pb.cc")
|
||||||
set (hdr_1 "${GRPC_GEN_DIR}/${_rel_root_dir}/${_basename}.grpc.pb.h")
|
set(hdr_1 "${GRPC_GEN_DIR}/${_rel_root_dir}/${_basename}.grpc.pb.h")
|
||||||
set (hdr_2 "${GRPC_GEN_DIR}/${_rel_root_dir}/${_basename}.pb.h")
|
set(hdr_2 "${GRPC_GEN_DIR}/${_rel_root_dir}/${_basename}.pb.h")
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
OUTPUT ${src_1} ${src_2} ${hdr_1} ${hdr_2}
|
OUTPUT ${src_1} ${src_2} ${hdr_1} ${hdr_2}
|
||||||
COMMAND protobuf::protoc
|
COMMAND protobuf::protoc
|
||||||
@@ -350,20 +41,22 @@ foreach(file ${GRPC_DEFINITION_FILES})
|
|||||||
list(APPEND GRPC_PROTO_HDRS ${hdr_1} ${hdr_2})
|
list(APPEND GRPC_PROTO_HDRS ${hdr_1} ${hdr_2})
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
add_library (grpc_pbufs STATIC ${GRPC_PROTO_SRCS} ${GRPC_PROTO_HDRS})
|
add_library(grpc_pbufs STATIC ${GRPC_PROTO_SRCS} ${GRPC_PROTO_HDRS})
|
||||||
#target_include_directories (grpc_pbufs PRIVATE src)
|
#target_include_directories(grpc_pbufs PRIVATE src)
|
||||||
target_include_directories (grpc_pbufs SYSTEM PUBLIC ${GRPC_GEN_DIR})
|
target_include_directories(grpc_pbufs SYSTEM PUBLIC ${GRPC_GEN_DIR})
|
||||||
target_link_libraries (grpc_pbufs protobuf::libprotobuf "gRPC::grpc++${grpc_suffix}")
|
target_link_libraries(grpc_pbufs
|
||||||
target_compile_options (grpc_pbufs
|
"gRPC::grpc++"
|
||||||
|
# libgrpc is missing references.
|
||||||
|
absl::random_random
|
||||||
|
)
|
||||||
|
target_compile_options(grpc_pbufs
|
||||||
PRIVATE
|
PRIVATE
|
||||||
$<$<BOOL:${MSVC}>:-wd4065>
|
$<$<BOOL:${MSVC}>:-wd4065>
|
||||||
$<$<NOT:$<BOOL:${MSVC}>>:-Wno-deprecated-declarations>
|
$<$<NOT:$<BOOL:${MSVC}>>:-Wno-deprecated-declarations>
|
||||||
PUBLIC
|
PUBLIC
|
||||||
$<$<BOOL:${MSVC}>:-wd4996>
|
$<$<BOOL:${MSVC}>:-wd4996>
|
||||||
$<$<BOOL:${is_xcode}>:
|
$<$<BOOL:${XCODE}>:
|
||||||
--system-header-prefix="google/protobuf"
|
--system-header-prefix="google/protobuf"
|
||||||
-Wno-deprecated-dynamic-exception-spec
|
-Wno-deprecated-dynamic-exception-spec
|
||||||
>)
|
>)
|
||||||
add_library (Ripple::grpc_pbufs ALIAS grpc_pbufs)
|
add_library(Ripple::grpc_pbufs ALIAS grpc_pbufs)
|
||||||
target_link_libraries (ripple_libs INTERFACE Ripple::grpc_pbufs)
|
|
||||||
exclude_if_included (grpc_pbufs)
|
|
||||||
@@ -50,11 +50,6 @@ if(CMAKE_TOOLCHAIN_FILE)
|
|||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (NOT USE_CONAN)
|
|
||||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Builds/CMake")
|
|
||||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/Builds/CMake/deps")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
include (CheckCXXCompilerFlag)
|
include (CheckCXXCompilerFlag)
|
||||||
include (FetchContent)
|
include (FetchContent)
|
||||||
include (ExternalProject)
|
include (ExternalProject)
|
||||||
@@ -67,9 +62,7 @@ endif ()
|
|||||||
include(RippledSanity)
|
include(RippledSanity)
|
||||||
include(RippledVersion)
|
include(RippledVersion)
|
||||||
include(RippledSettings)
|
include(RippledSettings)
|
||||||
if (NOT USE_CONAN)
|
|
||||||
include(RippledNIH)
|
|
||||||
endif()
|
|
||||||
# this check has to remain in the top-level cmake
|
# this check has to remain in the top-level cmake
|
||||||
# because of the early return statement
|
# because of the early return statement
|
||||||
if (packages_only)
|
if (packages_only)
|
||||||
@@ -81,74 +74,53 @@ endif ()
|
|||||||
include(RippledCompiler)
|
include(RippledCompiler)
|
||||||
include(RippledInterface)
|
include(RippledInterface)
|
||||||
|
|
||||||
###
|
include(deps/Boost)
|
||||||
if (NOT USE_CONAN)
|
find_package(OpenSSL 1.1.1 REQUIRED)
|
||||||
add_subdirectory(src/secp256k1)
|
set_target_properties(OpenSSL::SSL PROPERTIES
|
||||||
add_subdirectory(src/ed25519-donna)
|
|
||||||
include(deps/Boost)
|
|
||||||
include(deps/OpenSSL)
|
|
||||||
# include(deps/Secp256k1)
|
|
||||||
# include(deps/Ed25519-donna)
|
|
||||||
include(deps/Lz4)
|
|
||||||
include(deps/Libarchive)
|
|
||||||
include(deps/Sqlite)
|
|
||||||
include(deps/Soci)
|
|
||||||
include(deps/Snappy)
|
|
||||||
include(deps/Rocksdb)
|
|
||||||
include(deps/Nudb)
|
|
||||||
include(deps/date)
|
|
||||||
include(deps/Protobuf)
|
|
||||||
include(deps/gRPC)
|
|
||||||
include(deps/cassandra)
|
|
||||||
include(deps/Postgres)
|
|
||||||
include(deps/WasmEdge)
|
|
||||||
else()
|
|
||||||
include(conan/Boost)
|
|
||||||
find_package(OpenSSL 1.1.1 REQUIRED)
|
|
||||||
set_target_properties(OpenSSL::SSL PROPERTIES
|
|
||||||
INTERFACE_COMPILE_DEFINITIONS OPENSSL_NO_SSL2
|
INTERFACE_COMPILE_DEFINITIONS OPENSSL_NO_SSL2
|
||||||
)
|
)
|
||||||
add_subdirectory(src/secp256k1)
|
add_subdirectory(src/secp256k1)
|
||||||
add_subdirectory(src/ed25519-donna)
|
add_subdirectory(src/ed25519-donna)
|
||||||
find_package(lz4 REQUIRED)
|
find_package(lz4 REQUIRED)
|
||||||
# Target names with :: are not allowed in a generator expression.
|
# Target names with :: are not allowed in a generator expression.
|
||||||
# We need to pull the include directories and imported location properties
|
# We need to pull the include directories and imported location properties
|
||||||
# from separate targets.
|
# from separate targets.
|
||||||
find_package(LibArchive REQUIRED)
|
find_package(LibArchive REQUIRED)
|
||||||
find_package(SOCI REQUIRED)
|
find_package(SOCI REQUIRED)
|
||||||
find_package(SQLite3 REQUIRED)
|
find_package(SQLite3 REQUIRED)
|
||||||
find_package(Snappy REQUIRED)
|
find_package(Snappy REQUIRED)
|
||||||
find_package(wasmedge REQUIRED)
|
# find_package(wasmedge REQUIRED)
|
||||||
option(rocksdb "Enable RocksDB" ON)
|
option(rocksdb "Enable RocksDB" ON)
|
||||||
if(rocksdb)
|
if(rocksdb)
|
||||||
find_package(RocksDB REQUIRED)
|
find_package(RocksDB REQUIRED)
|
||||||
set_target_properties(RocksDB::rocksdb PROPERTIES
|
set_target_properties(RocksDB::rocksdb PROPERTIES
|
||||||
INTERFACE_COMPILE_DEFINITIONS RIPPLE_ROCKSDB_AVAILABLE=1
|
INTERFACE_COMPILE_DEFINITIONS RIPPLE_ROCKSDB_AVAILABLE=1
|
||||||
)
|
)
|
||||||
target_link_libraries(ripple_libs INTERFACE RocksDB::rocksdb)
|
target_link_libraries(ripple_libs INTERFACE RocksDB::rocksdb)
|
||||||
endif()
|
endif()
|
||||||
find_package(nudb REQUIRED)
|
find_package(nudb REQUIRED)
|
||||||
find_package(date REQUIRED)
|
find_package(date REQUIRED)
|
||||||
include(conan/Protobuf)
|
include(deps/Protobuf)
|
||||||
include(conan/gRPC)
|
include(deps/gRPC)
|
||||||
|
include(deps/WasmEdge)
|
||||||
if(TARGET nudb::core)
|
if(TARGET nudb::core)
|
||||||
set(nudb nudb::core)
|
set(nudb nudb::core)
|
||||||
elseif(TARGET NuDB::nudb)
|
elseif(TARGET NuDB::nudb)
|
||||||
set(nudb NuDB::nudb)
|
set(nudb NuDB::nudb)
|
||||||
else()
|
else()
|
||||||
message(FATAL_ERROR "unknown nudb target")
|
message(FATAL_ERROR "unknown nudb target")
|
||||||
endif()
|
endif()
|
||||||
target_link_libraries(ripple_libs INTERFACE ${nudb})
|
target_link_libraries(ripple_libs INTERFACE ${nudb})
|
||||||
|
|
||||||
if(reporting)
|
if(reporting)
|
||||||
find_package(cassandra-cpp-driver REQUIRED)
|
find_package(cassandra-cpp-driver REQUIRED)
|
||||||
find_package(PostgreSQL REQUIRED)
|
find_package(PostgreSQL REQUIRED)
|
||||||
target_link_libraries(ripple_libs INTERFACE
|
target_link_libraries(ripple_libs INTERFACE
|
||||||
cassandra-cpp-driver::cassandra-cpp-driver
|
cassandra-cpp-driver::cassandra-cpp-driver
|
||||||
PostgreSQL::PostgreSQL
|
PostgreSQL::PostgreSQL
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
target_link_libraries(ripple_libs INTERFACE
|
target_link_libraries(ripple_libs INTERFACE
|
||||||
ed25519::ed25519
|
ed25519::ed25519
|
||||||
LibArchive::LibArchive
|
LibArchive::LibArchive
|
||||||
lz4::lz4
|
lz4::lz4
|
||||||
@@ -159,8 +131,7 @@ else()
|
|||||||
secp256k1::secp256k1
|
secp256k1::secp256k1
|
||||||
soci::soci
|
soci::soci
|
||||||
SQLite::SQLite3
|
SQLite::SQLite3
|
||||||
)
|
)
|
||||||
endif()
|
|
||||||
|
|
||||||
###
|
###
|
||||||
|
|
||||||
|
|||||||
@@ -5,8 +5,6 @@
|
|||||||
# debugging.
|
# debugging.
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
echo "START INSIDE CONTAINER - CORE"
|
echo "START INSIDE CONTAINER - CORE"
|
||||||
|
|
||||||
echo "-- BUILD CORES: $3"
|
echo "-- BUILD CORES: $3"
|
||||||
@@ -27,7 +25,8 @@ if [[ "$?" -ne "0" ]]; then
|
|||||||
exit 127
|
exit 127
|
||||||
fi
|
fi
|
||||||
|
|
||||||
perl -i -pe "s/^(\\s*)-DBUILD_SHARED_LIBS=OFF/\\1-DBUILD_SHARED_LIBS=OFF\\n\\1-DROCKSDB_BUILD_SHARED=OFF/g" Builds/CMake/deps/Rocksdb.cmake &&
|
BUILD_TYPE=Release
|
||||||
|
|
||||||
mv Builds/CMake/deps/WasmEdge.cmake Builds/CMake/deps/WasmEdge.old &&
|
mv Builds/CMake/deps/WasmEdge.cmake Builds/CMake/deps/WasmEdge.old &&
|
||||||
echo "find_package(LLVM REQUIRED CONFIG)
|
echo "find_package(LLVM REQUIRED CONFIG)
|
||||||
message(STATUS \"Found LLVM \${LLVM_PACKAGE_VERSION}\")
|
message(STATUS \"Found LLVM \${LLVM_PACKAGE_VERSION}\")
|
||||||
@@ -38,13 +37,30 @@ target_link_libraries (ripple_libs INTERFACE wasmedge)
|
|||||||
add_library (wasmedge::wasmedge ALIAS wasmedge)
|
add_library (wasmedge::wasmedge ALIAS wasmedge)
|
||||||
message(\"WasmEdge DONE\")
|
message(\"WasmEdge DONE\")
|
||||||
" > Builds/CMake/deps/WasmEdge.cmake &&
|
" > Builds/CMake/deps/WasmEdge.cmake &&
|
||||||
|
|
||||||
|
export LDFLAGS="-static-libstdc++"
|
||||||
|
|
||||||
|
git config --global --add safe.directory /io &&
|
||||||
git checkout src/ripple/protocol/impl/BuildInfo.cpp &&
|
git checkout src/ripple/protocol/impl/BuildInfo.cpp &&
|
||||||
sed -i s/\"0.0.0\"/\"$(date +%Y).$(date +%-m).$(date +%-d)-$(git rev-parse --abbrev-ref HEAD)+$4\"/g src/ripple/protocol/impl/BuildInfo.cpp &&
|
sed -i s/\"0.0.0\"/\"$(date +%Y).$(date +%-m).$(date +%-d)-$(git rev-parse --abbrev-ref HEAD)$(if [ -n "$4" ]; then echo "+$4"; fi)\"/g src/ripple/protocol/impl/BuildInfo.cpp &&
|
||||||
|
conan export external/snappy snappy/1.1.10@ &&
|
||||||
|
conan export external/soci soci/4.0.3@ &&
|
||||||
cd release-build &&
|
cd release-build &&
|
||||||
cmake .. -DCMAKE_BUILD_TYPE=Release -DBoost_NO_BOOST_CMAKE=ON -DLLVM_DIR=/usr/lib64/llvm13/lib/cmake/llvm/ -DLLVM_LIBRARY_DIR=/usr/lib64/llvm13/lib/ -DWasmEdge_LIB=/usr/local/lib64/libwasmedge.a &&
|
conan install .. --output-folder . --build missing --settings build_type=$BUILD_TYPE &&
|
||||||
make -j$3 VERBOSE=1 &&
|
cmake .. -G Ninja \
|
||||||
|
-DCMAKE_BUILD_TYPE=$BUILD_TYPE \
|
||||||
|
-DCMAKE_TOOLCHAIN_FILE:FILEPATH=build/generators/conan_toolchain.cmake \
|
||||||
|
-DCMAKE_EXE_LINKER_FLAGS="-static-libstdc++" \
|
||||||
|
-DLLVM_DIR=$LLVM_DIR \
|
||||||
|
-DWasmEdge_LIB=$WasmEdge_LIB \
|
||||||
|
-Dxrpld=TRUE \
|
||||||
|
-Dtests=TRUE &&
|
||||||
|
ccache -z &&
|
||||||
|
ninja -j $3 &&
|
||||||
|
ccache -s &&
|
||||||
strip -s rippled &&
|
strip -s rippled &&
|
||||||
mv rippled xahaud &&
|
mv rippled xahaud &&
|
||||||
|
libcheck xahaud &&
|
||||||
echo "Build host: `hostname`" > release.info &&
|
echo "Build host: `hostname`" > release.info &&
|
||||||
echo "Build date: `date`" >> release.info &&
|
echo "Build date: `date`" >> release.info &&
|
||||||
echo "Build md5: `md5sum xahaud`" >> release.info &&
|
echo "Build md5: `md5sum xahaud`" >> release.info &&
|
||||||
@@ -69,8 +85,8 @@ fi
|
|||||||
cd ..;
|
cd ..;
|
||||||
|
|
||||||
mv src/ripple/net/impl/RegisterSSLCerts.cpp.old src/ripple/net/impl/RegisterSSLCerts.cpp;
|
mv src/ripple/net/impl/RegisterSSLCerts.cpp.old src/ripple/net/impl/RegisterSSLCerts.cpp;
|
||||||
mv Builds/CMake/deps/Rocksdb.cmake.old Builds/CMake/deps/Rocksdb.cmake;
|
|
||||||
mv Builds/CMake/deps/WasmEdge.old Builds/CMake/deps/WasmEdge.cmake;
|
mv Builds/CMake/deps/WasmEdge.old Builds/CMake/deps/WasmEdge.cmake;
|
||||||
|
rm src/certs/certbundle.h;
|
||||||
|
git checkout src/ripple/protocol/impl/BuildInfo.cpp;
|
||||||
|
|
||||||
echo "END INSIDE CONTAINER - CORE"
|
echo "END INSIDE CONTAINER - CORE"
|
||||||
|
|||||||
@@ -3,8 +3,6 @@
|
|||||||
# processes launched or upon any unbound variable.
|
# processes launched or upon any unbound variable.
|
||||||
# We use set -x to print commands before running them to help with
|
# We use set -x to print commands before running them to help with
|
||||||
# debugging.
|
# debugging.
|
||||||
set -ex
|
|
||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
echo "START INSIDE CONTAINER - FULL"
|
echo "START INSIDE CONTAINER - FULL"
|
||||||
@@ -16,13 +14,6 @@ echo "-- GITHUB_RUN_NUMBER: $4"
|
|||||||
|
|
||||||
umask 0000;
|
umask 0000;
|
||||||
|
|
||||||
echo "Fixing CentOS 7 EOL"
|
|
||||||
|
|
||||||
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
|
|
||||||
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
|
|
||||||
yum clean all
|
|
||||||
yum-config-manager --disable centos-sclo-sclo
|
|
||||||
|
|
||||||
####
|
####
|
||||||
|
|
||||||
cd /io;
|
cd /io;
|
||||||
@@ -73,92 +64,15 @@ then
|
|||||||
#endif/g" src/ripple/net/impl/RegisterSSLCerts.cpp &&
|
#endif/g" src/ripple/net/impl/RegisterSSLCerts.cpp &&
|
||||||
sed -i "s/#include <ripple\/net\/RegisterSSLCerts.h>/\0\n#include <certs\/certbundle.h>/g" src/ripple/net/impl/RegisterSSLCerts.cpp
|
sed -i "s/#include <ripple\/net\/RegisterSSLCerts.h>/\0\n#include <certs\/certbundle.h>/g" src/ripple/net/impl/RegisterSSLCerts.cpp
|
||||||
fi
|
fi
|
||||||
mkdir -p .nih_c;
|
# Environment setup moved to Dockerfile in release-builder.sh
|
||||||
mkdir -p .nih_toolchain;
|
source /opt/rh/gcc-toolset-11/enable
|
||||||
cd .nih_toolchain &&
|
export PATH=/usr/local/bin:$PATH
|
||||||
yum install -y wget lz4 lz4-devel git llvm13-static.x86_64 llvm13-devel.x86_64 devtoolset-10-binutils zlib-static ncurses-static -y \
|
export CC='ccache gcc' &&
|
||||||
devtoolset-7-gcc-c++ \
|
export CXX='ccache g++' &&
|
||||||
devtoolset-9-gcc-c++ \
|
|
||||||
devtoolset-10-gcc-c++ \
|
|
||||||
snappy snappy-devel \
|
|
||||||
zlib zlib-devel \
|
|
||||||
lz4-devel \
|
|
||||||
libasan &&
|
|
||||||
export PATH=`echo $PATH | sed -E "s/devtoolset-9/devtoolset-7/g"` &&
|
|
||||||
echo "-- Install ZStd 1.1.3 --" &&
|
|
||||||
yum install epel-release -y &&
|
|
||||||
ZSTD_VERSION="1.1.3" &&
|
|
||||||
( wget -nc -q -O zstd-${ZSTD_VERSION}.tar.gz https://github.com/facebook/zstd/archive/v${ZSTD_VERSION}.tar.gz; echo "" ) &&
|
|
||||||
tar xzvf zstd-${ZSTD_VERSION}.tar.gz &&
|
|
||||||
cd zstd-${ZSTD_VERSION} &&
|
|
||||||
make -j$3 install &&
|
|
||||||
cd .. &&
|
|
||||||
echo "-- Install Cmake 3.23.1 --" &&
|
|
||||||
pwd &&
|
|
||||||
( wget -nc -q https://github.com/Kitware/CMake/releases/download/v3.23.1/cmake-3.23.1-linux-x86_64.tar.gz; echo "" ) &&
|
|
||||||
tar -xzf cmake-3.23.1-linux-x86_64.tar.gz -C /hbb/ &&
|
|
||||||
echo "-- Install Boost 1.86.0 --" &&
|
|
||||||
pwd &&
|
|
||||||
( wget -nc -q https://archives.boost.io/release/1.86.0/source/boost_1_86_0.tar.gz; echo "" ) &&
|
|
||||||
tar -xzf boost_1_86_0.tar.gz &&
|
|
||||||
cd boost_1_86_0 && ./bootstrap.sh && ./b2 link=static -j$3 && ./b2 install &&
|
|
||||||
cd ../ &&
|
|
||||||
echo "-- Install Protobuf 3.20.0 --" &&
|
|
||||||
pwd &&
|
|
||||||
( wget -nc -q https://github.com/protocolbuffers/protobuf/releases/download/v3.20.0/protobuf-all-3.20.0.tar.gz; echo "" ) &&
|
|
||||||
tar -xzf protobuf-all-3.20.0.tar.gz &&
|
|
||||||
cd protobuf-3.20.0/ &&
|
|
||||||
./autogen.sh && ./configure --prefix=/usr --disable-shared link=static && make -j$3 && make install &&
|
|
||||||
cd .. &&
|
|
||||||
echo "-- Build LLD --" &&
|
|
||||||
pwd &&
|
|
||||||
ln /usr/bin/llvm-config-13 /usr/bin/llvm-config &&
|
|
||||||
mv /opt/rh/devtoolset-9/root/usr/bin/ar /opt/rh/devtoolset-9/root/usr/bin/ar-9 &&
|
|
||||||
ln /opt/rh/devtoolset-10/root/usr/bin/ar /opt/rh/devtoolset-9/root/usr/bin/ar &&
|
|
||||||
( wget -nc -q https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/lld-13.0.1.src.tar.xz; echo "" ) &&
|
|
||||||
( wget -nc -q https://github.com/llvm/llvm-project/releases/download/llvmorg-13.0.1/libunwind-13.0.1.src.tar.xz; echo "" ) &&
|
|
||||||
tar -xf lld-13.0.1.src.tar.xz &&
|
|
||||||
tar -xf libunwind-13.0.1.src.tar.xz &&
|
|
||||||
cp -r libunwind-13.0.1.src/include libunwind-13.0.1.src/src lld-13.0.1.src/ &&
|
|
||||||
cd lld-13.0.1.src &&
|
|
||||||
rm -rf build CMakeCache.txt &&
|
|
||||||
mkdir -p build &&
|
|
||||||
cd build &&
|
|
||||||
cmake .. -DLLVM_LIBRARY_DIR=/usr/lib64/llvm13/lib/ -DCMAKE_INSTALL_PREFIX=/usr/lib64/llvm13/ -DCMAKE_BUILD_TYPE=Release &&
|
|
||||||
make -j$3 install &&
|
|
||||||
ln -s /usr/lib64/llvm13/lib/include/lld /usr/include/lld &&
|
|
||||||
cp /usr/lib64/llvm13/lib/liblld*.a /usr/local/lib/ &&
|
|
||||||
cd ../../ &&
|
|
||||||
echo "-- Build WasmEdge --" &&
|
|
||||||
( wget -nc -q https://github.com/WasmEdge/WasmEdge/archive/refs/tags/0.11.2.zip; unzip -o 0.11.2.zip; ) &&
|
|
||||||
cd WasmEdge-0.11.2 &&
|
|
||||||
( mkdir -p build; echo "" ) &&
|
|
||||||
cd build &&
|
|
||||||
export BOOST_ROOT="/usr/local/src/boost_1_86_0" &&
|
|
||||||
export Boost_LIBRARY_DIRS="/usr/local/lib" &&
|
|
||||||
export BOOST_INCLUDEDIR="/usr/local/src/boost_1_86_0" &&
|
|
||||||
export PATH=`echo $PATH | sed -E "s/devtoolset-7/devtoolset-9/g"` &&
|
|
||||||
cmake .. \
|
|
||||||
-DCMAKE_BUILD_TYPE=Release \
|
|
||||||
-DWASMEDGE_BUILD_SHARED_LIB=OFF \
|
|
||||||
-DWASMEDGE_BUILD_STATIC_LIB=ON \
|
|
||||||
-DWASMEDGE_BUILD_AOT_RUNTIME=ON \
|
|
||||||
-DWASMEDGE_FORCE_DISABLE_LTO=ON \
|
|
||||||
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
|
|
||||||
-DWASMEDGE_LINK_LLVM_STATIC=ON \
|
|
||||||
-DWASMEDGE_BUILD_PLUGINS=OFF \
|
|
||||||
-DWASMEDGE_LINK_TOOLS_STATIC=ON \
|
|
||||||
-DBoost_NO_BOOST_CMAKE=ON -DLLVM_DIR=/usr/lib64/llvm13/lib/cmake/llvm/ -DLLVM_LIBRARY_DIR=/usr/lib64/llvm13/lib/ &&
|
|
||||||
make -j$3 install &&
|
|
||||||
export PATH=`echo $PATH | sed -E "s/devtoolset-9/devtoolset-10/g"` &&
|
|
||||||
cp -r include/api/wasmedge /usr/include/ &&
|
|
||||||
cd /io/ &&
|
|
||||||
echo "-- Build Rippled --" &&
|
echo "-- Build Rippled --" &&
|
||||||
pwd &&
|
pwd &&
|
||||||
cp Builds/CMake/deps/Rocksdb.cmake Builds/CMake/deps/Rocksdb.cmake.old &&
|
|
||||||
|
|
||||||
echo "MOVING TO [ build-core.sh ]"
|
echo "MOVING TO [ build-core.sh ]";
|
||||||
cd /io;
|
|
||||||
|
|
||||||
printenv > .env.temp;
|
printenv > .env.temp;
|
||||||
cat .env.temp | grep '=' | sed s/\\\(^[^=]\\+=\\\)/\\1\\\"/g|sed s/\$/\\\"/g > .env;
|
cat .env.temp | grep '=' | sed s/\\\(^[^=]\\+=\\\)/\\1\\\"/g|sed s/\$/\\\"/g > .env;
|
||||||
|
|||||||
@@ -8,4 +8,4 @@ if [[ "$GITHUB_REPOSITORY" == "" ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Mounting $(pwd)/io in ubuntu and running unit tests"
|
echo "Mounting $(pwd)/io in ubuntu and running unit tests"
|
||||||
docker run --rm -i -v $(pwd):/io -e BUILD_CORES=$BUILD_CORES ubuntu sh -c '/io/release-build/xahaud --unittest-jobs $BUILD_CORES -u'
|
docker run --rm -i -v $(pwd):/io --platform=linux/amd64 -e BUILD_CORES=$BUILD_CORES ubuntu sh -c '/io/release-build/xahaud --unittest-jobs $BUILD_CORES -u'
|
||||||
|
|||||||
11
external/snappy/conanfile.py
vendored
11
external/snappy/conanfile.py
vendored
@@ -77,9 +77,14 @@ class SnappyConan(ConanFile):
|
|||||||
self.cpp_info.set_property("cmake_target_name", "Snappy::snappy")
|
self.cpp_info.set_property("cmake_target_name", "Snappy::snappy")
|
||||||
# TODO: back to global scope in conan v2 once cmake_find_package* generators removed
|
# TODO: back to global scope in conan v2 once cmake_find_package* generators removed
|
||||||
self.cpp_info.components["snappylib"].libs = ["snappy"]
|
self.cpp_info.components["snappylib"].libs = ["snappy"]
|
||||||
if not self.options.shared:
|
# The following block is commented out as a workaround for a bug in the
|
||||||
if self.settings.os in ["Linux", "FreeBSD"]:
|
# Conan 1.x CMakeDeps generator. Including system_libs ("m") here
|
||||||
self.cpp_info.components["snappylib"].system_libs.append("m")
|
# incorrectly triggers a heuristic that adds a dynamic link to `stdc++`
|
||||||
|
# (-lstdc++), preventing a fully static build.
|
||||||
|
# This behavior is expected to be corrected in Conan 2.
|
||||||
|
# if not self.options.shared:
|
||||||
|
# if self.settings.os in ["Linux", "FreeBSD"]:
|
||||||
|
# self.cpp_info.components["snappylib"].system_libs.append("m")
|
||||||
|
|
||||||
# TODO: to remove in conan v2 once cmake_find_package* generators removed
|
# TODO: to remove in conan v2 once cmake_find_package* generators removed
|
||||||
self.cpp_info.names["cmake_find_package"] = "Snappy"
|
self.cpp_info.names["cmake_find_package"] = "Snappy"
|
||||||
|
|||||||
2
external/soci/conanfile.py
vendored
2
external/soci/conanfile.py
vendored
@@ -154,7 +154,7 @@ class SociConan(ConanFile):
|
|||||||
self.cpp_info.components["soci_core"].set_property("cmake_target_name", "SOCI::soci_core{}".format(target_suffix))
|
self.cpp_info.components["soci_core"].set_property("cmake_target_name", "SOCI::soci_core{}".format(target_suffix))
|
||||||
self.cpp_info.components["soci_core"].libs = ["{}soci_core{}".format(lib_prefix, lib_suffix)]
|
self.cpp_info.components["soci_core"].libs = ["{}soci_core{}".format(lib_prefix, lib_suffix)]
|
||||||
if self.options.with_boost:
|
if self.options.with_boost:
|
||||||
self.cpp_info.components["soci_core"].requires.append("boost::boost")
|
self.cpp_info.components["soci_core"].requires.append("boost::headers")
|
||||||
|
|
||||||
# soci_empty
|
# soci_empty
|
||||||
if self.options.empty:
|
if self.options.empty:
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
#!/bin/bash -u
|
#!/bin/bash
|
||||||
# We use set -e and bash with -u to bail on first non zero exit code of any
|
# We use set -e and bash with -u to bail on first non zero exit code of any
|
||||||
# processes launched or upon any unbound variable.
|
# processes launched or upon any unbound variable.
|
||||||
# We use set -x to print commands before running them to help with
|
# We use set -x to print commands before running them to help with
|
||||||
# debugging.
|
# debugging.
|
||||||
set -ex
|
|
||||||
|
|
||||||
echo "START BUILDING (HOST)"
|
echo "START BUILDING (HOST)"
|
||||||
|
|
||||||
@@ -14,7 +13,7 @@ BUILD_CORES=$(echo "scale=0 ; `nproc` / 1.337" | bc)
|
|||||||
|
|
||||||
if [[ "$GITHUB_REPOSITORY" == "" ]]; then
|
if [[ "$GITHUB_REPOSITORY" == "" ]]; then
|
||||||
#Default
|
#Default
|
||||||
BUILD_CORES=8
|
BUILD_CORES=${BUILD_CORES:-8}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Ensure still works outside of GH Actions by setting these to /dev/null
|
# Ensure still works outside of GH Actions by setting these to /dev/null
|
||||||
@@ -46,29 +45,166 @@ fi
|
|||||||
|
|
||||||
STATIC_CONTAINER=$(docker ps -a | grep $CONTAINER_NAME |wc -l)
|
STATIC_CONTAINER=$(docker ps -a | grep $CONTAINER_NAME |wc -l)
|
||||||
|
|
||||||
|
CACHE_VOLUME_NAME="xahau-release-builder-cache"
|
||||||
|
|
||||||
# if [[ "$STATIC_CONTAINER" -gt "0" && "$GITHUB_REPOSITORY" != "" ]]; then
|
# if [[ "$STATIC_CONTAINER" -gt "0" && "$GITHUB_REPOSITORY" != "" ]]; then
|
||||||
if false; then
|
if false; then
|
||||||
echo "Static container, execute in static container to have max. cache"
|
echo "Static container, execute in static container to have max. cache"
|
||||||
docker start $CONTAINER_NAME
|
docker start $CONTAINER_NAME
|
||||||
docker exec -i $CONTAINER_NAME /hbb_exe/activate-exec bash -x /io/build-core.sh "$GITHUB_REPOSITORY" "$GITHUB_SHA" "$BUILD_CORES" "$GITHUB_RUN_NUMBER"
|
docker exec -i $CONTAINER_NAME /hbb_exe/activate-exec bash -c "source /opt/rh/gcc-toolset-11/enable && bash -x /io/build-core.sh '$GITHUB_REPOSITORY' '$GITHUB_SHA' '$BUILD_CORES' '$GITHUB_RUN_NUMBER'"
|
||||||
docker stop $CONTAINER_NAME
|
docker stop $CONTAINER_NAME
|
||||||
else
|
else
|
||||||
echo "No static container, build on temp container"
|
echo "No static container, build on temp container"
|
||||||
rm -rf release-build;
|
rm -rf release-build;
|
||||||
mkdir -p release-build;
|
mkdir -p release-build;
|
||||||
|
|
||||||
|
docker volume create $CACHE_VOLUME_NAME
|
||||||
|
|
||||||
|
# Create inline Dockerfile with environment setup for build-full.sh
|
||||||
|
DOCKERFILE_CONTENT=$(cat <<'DOCKERFILE_EOF'
|
||||||
|
FROM ghcr.io/phusion/holy-build-box:4.0.1-amd64
|
||||||
|
|
||||||
|
ARG BUILD_CORES=8
|
||||||
|
|
||||||
|
# Enable repositories and install dependencies
|
||||||
|
RUN /hbb_exe/activate-exec bash -c "dnf install -y epel-release && \
|
||||||
|
dnf config-manager --set-enabled powertools || dnf config-manager --set-enabled crb && \
|
||||||
|
dnf install -y --enablerepo=devel \
|
||||||
|
wget git \
|
||||||
|
gcc-toolset-11-gcc-c++ gcc-toolset-11-binutils gcc-toolset-11-libatomic-devel \
|
||||||
|
lz4 lz4-devel \
|
||||||
|
ncurses-static ncurses-devel \
|
||||||
|
snappy snappy-devel \
|
||||||
|
zlib zlib-devel zlib-static \
|
||||||
|
libasan \
|
||||||
|
python3 python3-pip \
|
||||||
|
ccache \
|
||||||
|
ninja-build \
|
||||||
|
patch \
|
||||||
|
glibc-devel glibc-static \
|
||||||
|
libxml2-devel \
|
||||||
|
autoconf \
|
||||||
|
automake \
|
||||||
|
texinfo \
|
||||||
|
libtool \
|
||||||
|
llvm14-static llvm14-devel && \
|
||||||
|
dnf clean all"
|
||||||
|
|
||||||
|
# Install Conan and CMake
|
||||||
|
RUN /hbb_exe/activate-exec pip3 install "conan==1.66.0" && \
|
||||||
|
/hbb_exe/activate-exec wget -q https://github.com/Kitware/CMake/releases/download/v3.23.1/cmake-3.23.1-linux-x86_64.tar.gz -O cmake.tar.gz && \
|
||||||
|
mkdir cmake && \
|
||||||
|
tar -xzf cmake.tar.gz --strip-components=1 -C cmake && \
|
||||||
|
rm cmake.tar.gz
|
||||||
|
|
||||||
|
# Install Boost 1.86.0
|
||||||
|
RUN /hbb_exe/activate-exec bash -c "cd /tmp && \
|
||||||
|
wget -q https://archives.boost.io/release/1.86.0/source/boost_1_86_0.tar.gz -O boost.tar.gz && \
|
||||||
|
mkdir boost && \
|
||||||
|
tar -xzf boost.tar.gz --strip-components=1 -C boost && \
|
||||||
|
cd boost && \
|
||||||
|
./bootstrap.sh && \
|
||||||
|
./b2 link=static -j${BUILD_CORES} && \
|
||||||
|
./b2 install && \
|
||||||
|
cd /tmp && \
|
||||||
|
rm -rf boost boost.tar.gz"
|
||||||
|
|
||||||
|
ENV BOOST_ROOT=/usr/local/src/boost_1_86_0
|
||||||
|
ENV Boost_LIBRARY_DIRS=/usr/local/lib
|
||||||
|
ENV BOOST_INCLUDEDIR=/usr/local/src/boost_1_86_0
|
||||||
|
|
||||||
|
ENV CMAKE_EXE_LINKER_FLAGS="-static-libstdc++"
|
||||||
|
|
||||||
|
ENV LLVM_DIR=/usr/lib64/llvm14/lib/cmake/llvm
|
||||||
|
ENV WasmEdge_LIB=/usr/local/lib64/libwasmedge.a
|
||||||
|
|
||||||
|
ENV CC='ccache gcc'
|
||||||
|
ENV CXX='ccache g++'
|
||||||
|
|
||||||
|
# Install LLD
|
||||||
|
RUN /hbb_exe/activate-exec bash -c "source /opt/rh/gcc-toolset-11/enable && \
|
||||||
|
cd /tmp && \
|
||||||
|
wget -q https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.3/lld-14.0.3.src.tar.xz && \
|
||||||
|
wget -q https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.3/libunwind-14.0.3.src.tar.xz && \
|
||||||
|
tar -xf lld-14.0.3.src.tar.xz && \
|
||||||
|
tar -xf libunwind-14.0.3.src.tar.xz && \
|
||||||
|
cp -r libunwind-14.0.3.src/include libunwind-14.0.3.src/src lld-14.0.3.src/ && \
|
||||||
|
cd lld-14.0.3.src && \
|
||||||
|
mkdir -p build && cd build && \
|
||||||
|
cmake .. \
|
||||||
|
-DLLVM_LIBRARY_DIR=/usr/lib64/llvm14/lib/ \
|
||||||
|
-DCMAKE_INSTALL_PREFIX=/usr/lib64/llvm14/ \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_EXE_LINKER_FLAGS=\"\$CMAKE_EXE_LINKER_FLAGS\" && \
|
||||||
|
make -j${BUILD_CORES} install && \
|
||||||
|
ln -s /usr/lib64/llvm14/lib/include/lld /usr/include/lld && \
|
||||||
|
cp /usr/lib64/llvm14/lib/liblld*.a /usr/local/lib/ && \
|
||||||
|
cd /tmp && rm -rf lld-* libunwind-*"
|
||||||
|
|
||||||
|
# Build and install WasmEdge (static version)
|
||||||
|
# Note: Conan only provides WasmEdge with shared library linking.
|
||||||
|
# For a fully static build, we need to manually install:
|
||||||
|
# * Boost: Static C++ libraries for filesystem and system operations (built from source above)
|
||||||
|
# * LLVM: Static LLVM libraries for WebAssembly compilation (installed via llvm14-static package)
|
||||||
|
# * LLD: Static linker to produce the final static binary (built from source above)
|
||||||
|
# These were installed above to enable WASMEDGE_LINK_LLVM_STATIC=ON
|
||||||
|
RUN cd /tmp && \
|
||||||
|
( wget -nc -q https://github.com/WasmEdge/WasmEdge/archive/refs/tags/0.11.2.zip; unzip -o 0.11.2.zip; ) && \
|
||||||
|
cd WasmEdge-0.11.2 && \
|
||||||
|
( mkdir -p build; echo "" ) && \
|
||||||
|
cd build && \
|
||||||
|
/hbb_exe/activate-exec bash -c "source /opt/rh/gcc-toolset-11/enable && \
|
||||||
|
ln -sf /opt/rh/gcc-toolset-11/root/usr/bin/ar /usr/bin/ar && \
|
||||||
|
cmake .. \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DCMAKE_INSTALL_PREFIX=/usr/local \
|
||||||
|
-DCMAKE_POSITION_INDEPENDENT_CODE=ON \
|
||||||
|
-DWASMEDGE_BUILD_SHARED_LIB=OFF \
|
||||||
|
-DWASMEDGE_BUILD_STATIC_LIB=ON \
|
||||||
|
-DWASMEDGE_BUILD_AOT_RUNTIME=ON \
|
||||||
|
-DWASMEDGE_FORCE_DISABLE_LTO=ON \
|
||||||
|
-DWASMEDGE_LINK_LLVM_STATIC=ON \
|
||||||
|
-DWASMEDGE_BUILD_PLUGINS=OFF \
|
||||||
|
-DWASMEDGE_LINK_TOOLS_STATIC=ON \
|
||||||
|
-DBoost_NO_BOOST_CMAKE=ON \
|
||||||
|
-DCMAKE_EXE_LINKER_FLAGS=\"\$CMAKE_EXE_LINKER_FLAGS\" \
|
||||||
|
&& \
|
||||||
|
make -j${BUILD_CORES} install" && \
|
||||||
|
cp -r include/api/wasmedge /usr/include/ && \
|
||||||
|
cd /tmp && rm -rf WasmEdge* 0.11.2.zip
|
||||||
|
|
||||||
|
# Set environment variables
|
||||||
|
ENV PATH=/usr/local/bin:$PATH
|
||||||
|
|
||||||
|
# Configure ccache and Conan
|
||||||
|
RUN /hbb_exe/activate-exec bash -c "ccache -M 10G && \
|
||||||
|
ccache -o cache_dir=/cache/ccache && \
|
||||||
|
ccache -o compiler_check=content && \
|
||||||
|
conan config set storage.path=/cache/conan && \
|
||||||
|
(conan profile new default --detect || true) && \
|
||||||
|
conan profile update settings.compiler.libcxx=libstdc++11 default && \
|
||||||
|
conan profile update settings.compiler.cppstd=20 default"
|
||||||
|
|
||||||
|
DOCKERFILE_EOF
|
||||||
|
)
|
||||||
|
|
||||||
|
# Build custom Docker image
|
||||||
|
IMAGE_NAME="xahaud-builder:latest"
|
||||||
|
echo "Building custom Docker image with dependencies..."
|
||||||
|
echo "$DOCKERFILE_CONTENT" | docker build --build-arg BUILD_CORES="$BUILD_CORES" -t "$IMAGE_NAME" - || exit 1
|
||||||
|
|
||||||
if [[ "$GITHUB_REPOSITORY" == "" ]]; then
|
if [[ "$GITHUB_REPOSITORY" == "" ]]; then
|
||||||
# Non GH, local building
|
# Non GH, local building
|
||||||
echo "Non-GH runner, local building, temp container"
|
echo "Non-GH runner, local building, temp container"
|
||||||
docker run -i --user 0:$(id -g) --rm -v /data/builds:/data/builds -v `pwd`:/io --network host ghcr.io/foobarwidget/holy-build-box-x64 /hbb_exe/activate-exec bash -x /io/build-full.sh "$GITHUB_REPOSITORY" "$GITHUB_SHA" "$BUILD_CORES" "$GITHUB_RUN_NUMBER"
|
docker run -i --user 0:$(id -g) --rm -v /data/builds:/data/builds -v `pwd`:/io -v "$CACHE_VOLUME_NAME":/cache --network host "$IMAGE_NAME" /hbb_exe/activate-exec bash -c "source /opt/rh/gcc-toolset-11/enable && bash -x /io/build-full.sh '$GITHUB_REPOSITORY' '$GITHUB_SHA' '$BUILD_CORES' '$GITHUB_RUN_NUMBER'"
|
||||||
else
|
else
|
||||||
# GH Action, runner
|
# GH Action, runner
|
||||||
echo "GH Action, runner, clean & re-create create persistent container"
|
echo "GH Action, runner, clean & re-create create persistent container"
|
||||||
docker rm -f $CONTAINER_NAME
|
docker rm -f $CONTAINER_NAME
|
||||||
echo "echo 'Stopping container: $CONTAINER_NAME'" >> "$JOB_CLEANUP_SCRIPT"
|
echo "echo 'Stopping container: $CONTAINER_NAME'" >> "$JOB_CLEANUP_SCRIPT"
|
||||||
echo "docker stop --time=15 \"$CONTAINER_NAME\" || echo 'Failed to stop container or container not running'" >> "$JOB_CLEANUP_SCRIPT"
|
echo "docker stop --time=15 \"$CONTAINER_NAME\" || echo 'Failed to stop container or container not running'" >> "$JOB_CLEANUP_SCRIPT"
|
||||||
docker run -di --user 0:$(id -g) --name $CONTAINER_NAME -v /data/builds:/data/builds -v `pwd`:/io --network host ghcr.io/foobarwidget/holy-build-box-x64 /hbb_exe/activate-exec bash
|
docker run -di --user 0:$(id -g) --name $CONTAINER_NAME -v /data/builds:/data/builds -v `pwd`:/io -v "$CACHE_VOLUME_NAME":/cache --network host "$IMAGE_NAME" /hbb_exe/activate-exec bash
|
||||||
docker exec -i $CONTAINER_NAME /hbb_exe/activate-exec bash -x /io/build-full.sh "$GITHUB_REPOSITORY" "$GITHUB_SHA" "$BUILD_CORES" "$GITHUB_RUN_NUMBER"
|
docker exec -i $CONTAINER_NAME /hbb_exe/activate-exec bash -c "source /opt/rh/gcc-toolset-11/enable && bash -x /io/build-full.sh '$GITHUB_REPOSITORY' '$GITHUB_SHA' '$BUILD_CORES' '$GITHUB_RUN_NUMBER'"
|
||||||
docker stop $CONTAINER_NAME
|
docker stop $CONTAINER_NAME
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user