diff --git a/CMakeLists.txt b/CMakeLists.txt index c1950fc..69d7531 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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) diff --git a/TODO.md b/TODO.md index 980e511..e1c7746 100644 --- a/TODO.md +++ b/TODO.md @@ -13,6 +13,8 @@ Tasks - [ ] Slurm Executor - Loggers - [ ] FileSystemLogger + - [ ] Add unit tests + - [ ] Add more error checking - [ ] General logger - Completed diff --git a/cmake/Catch2.cmake b/cmake/Catch2.cmake new file mode 100644 index 0000000..61261e4 --- /dev/null +++ b/cmake/Catch2.cmake @@ -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) diff --git a/cmake/MagicEnum.cmake b/cmake/MagicEnum.cmake index d63a488..5e87ff7 100644 --- a/cmake/MagicEnum.cmake +++ b/cmake/MagicEnum.cmake @@ -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) \ No newline at end of file + 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) \ No newline at end of file diff --git a/cmake/argparse.cmake b/cmake/argparse.cmake new file mode 100644 index 0000000..cb82b3c --- /dev/null +++ b/cmake/argparse.cmake @@ -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) \ No newline at end of file diff --git a/cmake/Pistache.cmake b/cmake/pistache.cmake similarity index 100% rename from cmake/Pistache.cmake rename to cmake/pistache.cmake diff --git a/cmake/rapidjson.cmake b/cmake/rapidjson.cmake index 342f537..252fe23 100644 --- a/cmake/rapidjson.cmake +++ b/cmake/rapidjson.cmake @@ -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) \ No newline at end of file +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) \ No newline at end of file diff --git a/daggy/CMakeLists.txt b/daggy/CMakeLists.txt index 15bd0b2..9609a34 100644 --- a/daggy/CMakeLists.txt +++ b/daggy/CMakeLists.txt @@ -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) \ No newline at end of file +target_link_libraries(${PROJECT_NAME} pistache pthread rapidjson magicEnum) \ No newline at end of file diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 4d67d03..fee069f 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -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) diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt new file mode 100644 index 0000000..bcfa9b9 --- /dev/null +++ b/utils/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(rest_server) \ No newline at end of file diff --git a/utils/rest_server/CMakeLists.txt b/utils/rest_server/CMakeLists.txt new file mode 100644 index 0000000..e509171 --- /dev/null +++ b/utils/rest_server/CMakeLists.txt @@ -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") \ No newline at end of file diff --git a/utils/rest_server/daggy.cpp b/utils/rest_server/daggy.cpp new file mode 100644 index 0000000..c969c64 --- /dev/null +++ b/utils/rest_server/daggy.cpp @@ -0,0 +1,23 @@ +#include +#include + +#include + +#include +#include +#include + +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; +} \ No newline at end of file