- Sidequest: Clean up header-only library dependencies with cmake.
This commit is contained in:
@@ -9,11 +9,11 @@ set(THIRD_PARTY_DIR ${CMAKE_BINARY_DIR}/third_party)
|
||||
find_package(Threads REQUIRED)
|
||||
|
||||
include(cmake/rapidjson.cmake)
|
||||
include(cmake/Pistache.cmake)
|
||||
include(cmake/pistache.cmake)
|
||||
include(cmake/MagicEnum.cmake)
|
||||
|
||||
include_directories(${RAPIDJSON_INCLUDE_DIR})
|
||||
include_directories(${MAGIC_ENUM_INCLUDE_DIR})
|
||||
include(cmake/argparse.cmake)
|
||||
include(cmake/Catch2.cmake)
|
||||
|
||||
add_subdirectory(daggy)
|
||||
add_subdirectory(tests)
|
||||
add_subdirectory(utils)
|
||||
|
||||
2
TODO.md
2
TODO.md
@@ -13,6 +13,8 @@ Tasks
|
||||
- [ ] Slurm Executor
|
||||
- Loggers
|
||||
- [ ] FileSystemLogger
|
||||
- [ ] Add unit tests
|
||||
- [ ] Add more error checking
|
||||
- [ ] General logger
|
||||
|
||||
- Completed
|
||||
|
||||
7
cmake/Catch2.cmake
Normal file
7
cmake/Catch2.cmake
Normal file
@@ -0,0 +1,7 @@
|
||||
Include(FetchContent)
|
||||
|
||||
FetchContent_Declare(
|
||||
Catch2
|
||||
GIT_REPOSITORY https://github.com/catchorg/Catch2.git
|
||||
GIT_TAG v2.13.7)
|
||||
FetchContent_MakeAvailable(Catch2)
|
||||
@@ -1,17 +1,15 @@
|
||||
include(ExternalProject)
|
||||
# Download RapidJSON
|
||||
ExternalProject_Add(
|
||||
magic-enum
|
||||
PREFIX "third_party/magic-enum"
|
||||
GIT_REPOSITORY "https://github.com/Neargye/magic_enum"
|
||||
|
||||
project(magicEnum)
|
||||
|
||||
ExternalProject_Add(${PROJECT_NAME}-external
|
||||
GIT_REPOSITORY https://github.com/Neargye/magic_enum.git
|
||||
GIT_TAG "v0.7.3"
|
||||
TIMEOUT 10
|
||||
CONFIGURE_COMMAND ""
|
||||
GIT_SHALLOW TRUE
|
||||
SOURCE_DIR ${THIRD_PARTY_DIR}/${PROJECT_NAME}
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
UPDATE_COMMAND ""
|
||||
)
|
||||
|
||||
# Magic Enums is a header-only
|
||||
ExternalProject_Get_Property(magic-enum source_dir)
|
||||
set(MAGIC_ENUM_INCLUDE_DIR ${source_dir}/include)
|
||||
CONFIGURE_COMMAND "")
|
||||
add_library(${PROJECT_NAME} INTERFACE)
|
||||
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-external)
|
||||
target_include_directories(${PROJECT_NAME} SYSTEM INTERFACE ${THIRD_PARTY_DIR}/${PROJECT_NAME}/include)
|
||||
15
cmake/argparse.cmake
Normal file
15
cmake/argparse.cmake
Normal file
@@ -0,0 +1,15 @@
|
||||
include(ExternalProject)
|
||||
|
||||
project(argparse)
|
||||
|
||||
ExternalProject_Add(${PROJECT_NAME}-external
|
||||
GIT_REPOSITORY https://github.com/p-ranav/argparse.git
|
||||
GIT_TAG "v2.1"
|
||||
GIT_SHALLOW TRUE
|
||||
SOURCE_DIR ${THIRD_PARTY_DIR}/${PROJECT_NAME}
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
CONFIGURE_COMMAND "")
|
||||
add_library(${PROJECT_NAME} INTERFACE)
|
||||
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-external)
|
||||
target_include_directories(${PROJECT_NAME} SYSTEM INTERFACE ${THIRD_PARTY_DIR}/${PROJECT_NAME}/include)
|
||||
@@ -1,21 +1,15 @@
|
||||
include(ExternalProject)
|
||||
# Download RapidJSON
|
||||
ExternalProject_Add(
|
||||
rapidjson
|
||||
PREFIX "third_party/rapidjson"
|
||||
GIT_REPOSITORY "https://github.com/Tencent/rapidjson.git"
|
||||
GIT_TAG f54b0e47a08782a6131cc3d60f94d038fa6e0a51
|
||||
TIMEOUT 10
|
||||
CMAKE_ARGS
|
||||
-DRAPIDJSON_BUILD_TESTS=OFF
|
||||
-DRAPIDJSON_BUILD_DOC=OFF
|
||||
-DRAPIDJSON_BUILD_EXAMPLES=OFF
|
||||
CONFIGURE_COMMAND ""
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
UPDATE_COMMAND ""
|
||||
)
|
||||
|
||||
# Prepare RapidJSON (RapidJSON is a header-only library)
|
||||
ExternalProject_Get_Property(rapidjson source_dir)
|
||||
set(RAPIDJSON_INCLUDE_DIR ${source_dir}/include)
|
||||
project(rapidjson)
|
||||
|
||||
ExternalProject_Add(${PROJECT_NAME}-external
|
||||
GIT_REPOSITORY https://github.com/Tencent/rapidjson.git
|
||||
GIT_TAG "v1.1.0"
|
||||
GIT_SHALLOW TRUE
|
||||
SOURCE_DIR ${THIRD_PARTY_DIR}/${PROJECT_NAME}
|
||||
BUILD_COMMAND ""
|
||||
INSTALL_COMMAND ""
|
||||
CONFIGURE_COMMAND "")
|
||||
add_library(${PROJECT_NAME} INTERFACE)
|
||||
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}-external)
|
||||
target_include_directories(${PROJECT_NAME} SYSTEM INTERFACE ${THIRD_PARTY_DIR}/${PROJECT_NAME}/include)
|
||||
@@ -1,10 +1,7 @@
|
||||
project(daggy)
|
||||
|
||||
#ExternalProject_Add_StepDependencies(pistache_extern build)
|
||||
|
||||
file(GLOB_RECURSE SOURCES src/*.cpp)
|
||||
add_library(${PROJECT_NAME} STATIC ${SOURCES})
|
||||
include_directories(${PISTACHE_INCLUDE_DIR})
|
||||
target_include_directories(${PROJECT_NAME} PUBLIC include)
|
||||
target_link_libraries(${PROJECT_NAME} pistache pthread)
|
||||
add_dependencies(${PROJECT_NAME} PistacheDownload rapidjson magic-enum)
|
||||
target_link_libraries(${PROJECT_NAME} pistache pthread rapidjson magicEnum)
|
||||
@@ -1,11 +1,3 @@
|
||||
Include(FetchContent)
|
||||
|
||||
FetchContent_Declare(
|
||||
Catch2
|
||||
GIT_REPOSITORY https://github.com/catchorg/Catch2.git
|
||||
GIT_TAG v2.13.7)
|
||||
FetchContent_MakeAvailable(Catch2)
|
||||
|
||||
project(tests)
|
||||
file(GLOB UNIT_TESTS unit_*.cpp)
|
||||
file(GLOB INTEGRATION_TESTS int_*.cpp)
|
||||
|
||||
1
utils/CMakeLists.txt
Normal file
1
utils/CMakeLists.txt
Normal file
@@ -0,0 +1 @@
|
||||
add_subdirectory(rest_server)
|
||||
5
utils/rest_server/CMakeLists.txt
Normal file
5
utils/rest_server/CMakeLists.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
project(rest_server)
|
||||
file(GLOB SOURCES *.cpp)
|
||||
add_executable(${PROJECT_NAME} ${SOURCES})
|
||||
target_link_libraries(${PROJECT_NAME} daggy stdc++fs rapidjson pistache argparse)
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES OUTPUT_NAME "daggy")
|
||||
23
utils/rest_server/daggy.cpp
Normal file
23
utils/rest_server/daggy.cpp
Normal file
@@ -0,0 +1,23 @@
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
|
||||
#include <argoarse/argparse.hpp>
|
||||
|
||||
#include <daggy/Server.hpp>
|
||||
#include <daggy/executors/task/ForkingTaskExecutor.hpp>
|
||||
#include <daggy/loggers/dag_run/OStreamLogger.hpp>
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
argparse::ArgumentParser args("Daggy");
|
||||
|
||||
args.add_argument("-v", "--verbose");
|
||||
args.add_argument("-c", "--config")
|
||||
.help("Config file");
|
||||
args.add_argument("--ip")
|
||||
.help("IP address to listen to");
|
||||
args.add_argument("--port")
|
||||
.help("Port to listen to")
|
||||
.action([](const std::string &value) { return std::stoi(value); });
|
||||
|
||||
daggy::Server endpoint;
|
||||
}
|
||||
Reference in New Issue
Block a user