mirror of
https://github.com/XRPLF/clio.git
synced 2025-11-18 18:55:51 +00:00
CMake Refactor and Github Actions Hook
This commit is contained in:
15
.github/workflows/clio_ci.yml
vendored
Normal file
15
.github/workflows/clio_ci.yml
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
name: Trigger clio-ci
|
||||
on: [pull_request, push]
|
||||
jobs:
|
||||
dispatch_build_event:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Send build_packages repository_dispatch event to clio-ci
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.PAT_TOKEN }}
|
||||
run: |
|
||||
curl -H "Authorization: token $GITHUB_TOKEN" \
|
||||
-H 'Accept: application/vnd.github.v3+json' \
|
||||
"https://api.github.com/repos/legleux/clio-ci/dispatches" \
|
||||
-d '{"event_type": "build", "client_payload": {"SHA": "${{ github.sha }}"}}'
|
||||
6
CMake/deps/Boost.cmake
Normal file
6
CMake/deps/Boost.cmake
Normal file
@@ -0,0 +1,6 @@
|
||||
set(Boost_USE_STATIC_LIBS ON)
|
||||
set(Boost_USE_STATIC_RUNTIME ON)
|
||||
|
||||
find_package(Boost 1.75 COMPONENTS filesystem log_setup log thread system REQUIRED)
|
||||
|
||||
target_link_libraries(clio PUBLIC ${Boost_LIBRARIES})
|
||||
@@ -1,16 +1,11 @@
|
||||
|
||||
|
||||
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)
|
||||
ExternalProject_Add(postgres_src
|
||||
PREFIX ${nih_cache_path}
|
||||
@@ -23,45 +18,29 @@ if(NOT PostgreSQL_FOUND)
|
||||
INSTALL_COMMAND ""
|
||||
BUILD_BYPRODUCTS <BINARY_DIR>/src/interfaces/libpq/${CMAKE_SHARED_LIBRARY_PREFIX}pq.so
|
||||
)
|
||||
|
||||
|
||||
|
||||
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}/src/include)
|
||||
file (MAKE_DIRECTORY ${postgres_src_SOURCE_DIR}/src/interfaces/libpq)
|
||||
|
||||
list(APPEND INCLUDE_DIRS ${SOURCE_DIR}/src/include)
|
||||
list(APPEND INCLUDE_DIRS ${SOURCE_DIR}/src/interfaces/libpq)
|
||||
|
||||
|
||||
set_target_properties (postgres PROPERTIES
|
||||
IMPORTED_LOCATION
|
||||
${BINARY_DIR}/src/interfaces/libpq/${CMAKE_SHARED_LIBRARY_PREFIX}pq.so
|
||||
INTERFACE_INCLUDE_DIRECTORIES
|
||||
"${INCLUDE_DIRS}")
|
||||
add_dependencies(postgres postgres_src)
|
||||
|
||||
file(TO_CMAKE_PATH "${postgres_src_SOURCE_DIR}" postgres_src_SOURCE_DIR)
|
||||
|
||||
target_link_libraries(clio PUBLIC postgres)
|
||||
target_link_libraries(clio PUBLIC postgres)
|
||||
else()
|
||||
|
||||
message("Found system installed Postgres via find_libary")
|
||||
|
||||
target_include_directories(clio INTERFACE ${libpq-fe})
|
||||
|
||||
target_link_libraries(clio INTERFACE ${postgres})
|
||||
endif()
|
||||
|
||||
else()
|
||||
message("Found system installed Postgres via find_package")
|
||||
message("${PostgreSQL_INCLUDE_DIRS}")
|
||||
|
||||
include_directories(clio INTERFACE "${PostgreSQL_INCLUDE_DIRS}")
|
||||
|
||||
target_link_libraries(clio PUBLIC ${PostgreSQL_LIBRARIES})
|
||||
endif()
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
find_package(ZLIB REQUIRED)
|
||||
|
||||
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")
|
||||
@@ -14,28 +14,19 @@ if(NOT cassandra)
|
||||
INSTALL_COMMAND ""
|
||||
BUILD_BYPRODUCTS <BINARY_DIR>/${CMAKE_STATIC_LIBRARY_PREFIX}z.a
|
||||
)
|
||||
|
||||
|
||||
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}/${CMAKE_STATIC_LIBRARY_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)
|
||||
@@ -48,23 +39,20 @@ if(NOT cassandra)
|
||||
BUILD_IN_SOURCE 1
|
||||
BUILD_COMMAND make
|
||||
INSTALL_COMMAND ""
|
||||
BUILD_BYPRODUCTS <SOURCE_DIR>/lib/${CMAKE_STATIC_LIBRARY_PREFIX}krb5.a
|
||||
BUILD_BYPRODUCTS <SOURCE_DIR>/lib/${CMAKE_STATIC_LIBRARY_PREFIX}krb5.a
|
||||
)
|
||||
message(${ep_lib_prefix}/krb5.a)
|
||||
message(${CMAKE_STATIC_LIBRARY_PREFIX}krb5.a)
|
||||
|
||||
message(${CMAKE_STATIC_LIBRARY_PREFIX}krb5.a)
|
||||
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
|
||||
${SOURCE_DIR}/lib/${CMAKE_STATIC_LIBRARY_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()
|
||||
|
||||
17
CMake/deps/gtest.cmake
Normal file
17
CMake/deps/gtest.cmake
Normal file
@@ -0,0 +1,17 @@
|
||||
FetchContent_Declare(
|
||||
googletest
|
||||
URL https://github.com/google/googletest/archive/609281088cfefc76f9d0ce82e1ff6c30cc3591e5.zip
|
||||
)
|
||||
|
||||
FetchContent_GetProperties(googletest)
|
||||
|
||||
if(NOT googletest_POPULATED)
|
||||
FetchContent_Populate(googletest)
|
||||
add_subdirectory(${googletest_SOURCE_DIR} ${googletest_BINARY_DIR} EXCLUDE_FROM_ALL)
|
||||
endif()
|
||||
|
||||
target_link_libraries(clio_tests PUBLIC clio gtest_main)
|
||||
|
||||
enable_testing()
|
||||
|
||||
include(GoogleTest)
|
||||
15
CMake/deps/rippled.cmake
Normal file
15
CMake/deps/rippled.cmake
Normal file
@@ -0,0 +1,15 @@
|
||||
set(NIH_CACHE_ROOT "${CMAKE_CURRENT_BINARY_DIR}" CACHE INTERNAL "")
|
||||
FetchContent_Declare(rippled
|
||||
GIT_REPOSITORY https://github.com/cjcobb23/rippled.git
|
||||
GIT_TAG clio
|
||||
GIT_SHALLOW ON
|
||||
)
|
||||
|
||||
FetchContent_GetProperties(rippled)
|
||||
if(NOT rippled_POPULATED)
|
||||
FetchContent_Populate(rippled)
|
||||
add_subdirectory(${rippled_SOURCE_DIR} ${rippled_BINARY_DIR} EXCLUDE_FROM_ALL)
|
||||
endif()
|
||||
|
||||
target_link_libraries(clio PUBLIC xrpl_core grpc_pbufs)
|
||||
target_include_directories(clio PUBLIC ${rippled_SOURCE_DIR}/src ) # TODO: Seems like this shouldn't be needed?
|
||||
4
CMake/install/PostInstall.cmake
Normal file
4
CMake/install/PostInstall.cmake
Normal file
@@ -0,0 +1,4 @@
|
||||
execute_process(
|
||||
COMMAND ln -s ${CMAKE_INSTALL_PREFIX}/${CLIO_INSTALL_DIR}/bin/clio_server /usr/local/bin/clio_server
|
||||
COMMAND_ECHO STDOUT
|
||||
)
|
||||
7
CMake/install/install.cmake
Normal file
7
CMake/install/install.cmake
Normal file
@@ -0,0 +1,7 @@
|
||||
set(CLIO_INSTALL_DIR /opt/clio)
|
||||
set(CMAKE_INSTALL_PREFIX ${CLIO_INSTALL_DIR})
|
||||
|
||||
install(TARGETS clio_server DESTINATION bin)
|
||||
# install(TARGETS clio_tests DESTINATION bin) # NOTE: Do we want to install the tests?
|
||||
install(FILES example-config.json DESTINATION etc/clio)
|
||||
install(SCRIPT "${CMAKE_SOURCE_DIR}/CMake/install/PostInstall.cmake")
|
||||
5
CMake/settings.cmake
Normal file
5
CMake/settings.cmake
Normal file
@@ -0,0 +1,5 @@
|
||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-narrowing")
|
||||
1
CMake/version-config.h
Normal file
1
CMake/version-config.h
Normal file
@@ -0,0 +1 @@
|
||||
#define VERSION "@PROJECT_VERSION@"
|
||||
@@ -1,73 +1,30 @@
|
||||
set(CMAKE_VERBOSE_MAKEFILE TRUE)
|
||||
|
||||
project(clio)
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -Wno-narrowing")
|
||||
set(Boost_USE_STATIC_LIBS ON)
|
||||
set(Boost_USE_MULTITHREADED ON)
|
||||
set(Boost_USE_STATIC_RUNTIME ON)
|
||||
if((NOT DEFINED BOOST_ROOT) AND(DEFINED ENV{BOOST_ROOT}))
|
||||
set(BOOST_ROOT $ENV{BOOST_ROOT})
|
||||
endif()
|
||||
file(TO_CMAKE_PATH "${BOOST_ROOT}" BOOST_ROOT)
|
||||
|
||||
find_package( Boost 1.75 COMPONENTS filesystem log_setup log thread system REQUIRED )
|
||||
message("Boost libraries: ${Boost_LIBRARIES}")
|
||||
project(clio VERSION 0.1.0)
|
||||
|
||||
option(VERBOSE "Verbose build" FALSE)
|
||||
if(VERBOSE)
|
||||
set(CMAKE_VERBOSE_MAKEFILE TRUE)
|
||||
set(FETCHCONTENT_QUIET FALSE CACHE STRING "Verbose FetchContent()")
|
||||
endif()
|
||||
|
||||
add_library(clio)
|
||||
target_include_directories(clio PUBLIC src)
|
||||
|
||||
include(FetchContent)
|
||||
FetchContent_Declare(
|
||||
googletest
|
||||
URL https://github.com/google/googletest/archive/609281088cfefc76f9d0ce82e1ff6c30cc3591e5.zip
|
||||
)
|
||||
FetchContent_MakeAvailable(googletest)
|
||||
#include(CMake/deps/) # TODO: see if this works...
|
||||
include(CMake/settings.cmake)
|
||||
include(CMake/deps/rippled.cmake)
|
||||
include(CMake/deps/Boost.cmake)
|
||||
include(CMake/deps/cassandra.cmake)
|
||||
include(CMake/deps/Postgres.cmake)
|
||||
|
||||
enable_testing()
|
||||
include(GoogleTest)
|
||||
|
||||
add_executable(clio_server
|
||||
src/main.cpp
|
||||
)
|
||||
add_executable(clio_tests
|
||||
unittests/main.cpp
|
||||
)
|
||||
add_library(clio)
|
||||
include_directories(src)
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/deps")
|
||||
|
||||
message("Current binary dir: ${CMAKE_CURRENT_BINARY_DIR}")
|
||||
message("Module path: ${CMAKE_MODULE_PATH}")
|
||||
|
||||
set(FETCHCONTENT_QUIET FALSE)
|
||||
set(NIH_CACHE_ROOT "${CMAKE_CURRENT_BINARY_DIR}" CACHE INTERNAL "")
|
||||
FetchContent_Declare(rippled
|
||||
GIT_REPOSITORY https://github.com/cjcobb23/rippled.git
|
||||
GIT_TAG clio
|
||||
)
|
||||
FetchContent_MakeAvailable(rippled)
|
||||
|
||||
target_link_libraries(clio PUBLIC xrpl_core grpc_pbufs)
|
||||
add_dependencies(clio xrpl_core)
|
||||
add_dependencies(clio grpc_pbufs)
|
||||
get_target_property(grpc_includes grpc_pbufs INCLUDE_DIRECTORIES)
|
||||
|
||||
message("GRPC includes: ${grpc_includes}")
|
||||
message("Proto includes: ${proto_includes}")
|
||||
message("Source dir: ${SOURCE_DIR}")
|
||||
include_directories(${grpc_includes})
|
||||
include_directories(${SOURCE_DIR}/src)
|
||||
include_directories(${SOURCE_DIR}/include)
|
||||
get_target_property(xrpl_core_includes xrpl_core INCLUDE_DIRECTORIES)
|
||||
message("XRPL core includes: ${xrpl_core_includes}")
|
||||
include_directories(${xrpl_core_includes})
|
||||
|
||||
include(cassandra)
|
||||
include(Postgres)
|
||||
# configure_file(CMake/version-config.h include/version.h) # NOTE: Not used, but an idea how to handle versioning.
|
||||
|
||||
target_sources(clio PRIVATE
|
||||
## Backend
|
||||
src/backend/CassandraBackend.cpp
|
||||
src/backend/PostgresBackend.cpp
|
||||
## Backend
|
||||
src/backend/CassandraBackend.cpp
|
||||
src/backend/PostgresBackend.cpp
|
||||
src/backend/BackendInterface.cpp
|
||||
src/backend/Pg.cpp
|
||||
src/backend/DBHelpers.cpp
|
||||
@@ -112,9 +69,16 @@ target_sources(clio PRIVATE
|
||||
# Utility
|
||||
src/rpc/handlers/Random.cpp)
|
||||
|
||||
include_directories(${CMAKE_CURRENT_BINARY_DIR} ${Boost_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
target_link_libraries(clio PUBLIC ${Boost_LIBRARIES})
|
||||
add_executable(clio_server src/main.cpp)
|
||||
target_link_libraries(clio_server PUBLIC clio)
|
||||
target_link_libraries(clio_tests PUBLIC clio gtest_main)
|
||||
|
||||
#install(TARGETS clio_server DESTINATION bin)
|
||||
|
||||
add_executable(clio_tests unittests/main.cpp)
|
||||
include(CMake/deps/gtest.cmake)
|
||||
## install(TARGETS clio_tests DESTINATION bin) # NOTE: Do we want to install the tests?
|
||||
|
||||
#install(FILES example-config.json DESTINATION etc/clio)
|
||||
include(CMake/install/install.cmake)
|
||||
gtest_discover_tests(clio_tests)
|
||||
#install(SCRIPT "${CMAKE_SOURCE_DIR}/CMake/install/PostInstall.cmake")
|
||||
|
||||
Reference in New Issue
Block a user