Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -196,3 +196,24 @@ find_package(Threads REQUIRED)
add_subdirectory(src/spider)

add_subdirectory(tests)

include(CMakePackageConfigHelpers)

configure_package_config_file(
${CMAKE_CURRENT_SOURCE_DIR}/cmake/Config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
INSTALL_DESTINATION share/cmake/${PROJECT_NAME}
)

write_basic_package_version_file(
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
VERSION ${PROJECT_VERSION}
COMPATIBILITY SameMajorVersion
)

install(
FILES
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
DESTINATION share/cmake/${PROJECT_NAME}
)
25 changes: 25 additions & 0 deletions cmake/Config.cmake.in
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
@PACKAGE_INIT@

include(CMakeFindDependencyMacro)

find_package(Boost 1.74 REQUIRED COMPONENTS headers process program_options filesystem system)
find_package(fmt 8.0.1 REQUIRED)
find_package(spdlog 1.9.2 REQUIRED)
find_package(MariaDBClientCpp 1.0 REQUIRED)
find_package(msgpack-cxx 7.0.0 REQUIRED)
find_package(outcome REQUIRED)
find_package(absl REQUIRED)
find_package(Threads REQUIRED)

if(NOT DEFINED SPIDER_YSTDLIB_SOURCE_DIRECTORY)
message(FATAL_ERROR "SPIDER_YSTDLIB_SOURCE_DIRECTORY must be set to use spider")
endif()

add_subdirectory(
"${SPIDER_YSTDLIB_SOURCE_DIRECTORY}"
"${CMAKE_BINARY_DIR}/ystdlib"
EXCLUDE_FROM_ALL
)

include("${CMAKE_CURRENT_LIST_DIR}/spider_core_export.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/spider_client_export.cmake")
2 changes: 1 addition & 1 deletion cmake/Modules/FindMariaDBClientCpp.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@

set(mariadbclientcpp_LIBNAME "mariadbcpp")

include(cmake/Modules/FindLibraryDependencies.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/FindLibraryDependencies.cmake)

# Run pkg-config
find_package(PkgConfig)
Expand Down
14 changes: 5 additions & 9 deletions examples/quick-start/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,9 @@
cmake_minimum_required(VERSION 3.22.1)
project(spider_getting_started)

if(PROJECT_IS_TOP_LEVEL)
# Include dependency settings if the project isn't being included as a subproject.
include("${CMAKE_SOURCE_DIR}/../../build/deps/cmake-settings/all.cmake")
endif()

# Add the Spider library
add_subdirectory(../../ spider EXCLUDE_FROM_ALL)
include("../../build/deps/cmake-settings/all.cmake")
set(SPIDER_YSTDLIB_SOURCE_DIRECTORY "../../build/deps/ystdlib/ystdlib-src")
find_package(spider REQUIRED)

# Add the tasks library
add_library(
Expand All @@ -18,7 +14,7 @@ add_library(
)

# Link the Spider library to the tasks library
target_link_libraries(tasks PRIVATE spider::spider)
target_link_libraries(tasks PRIVATE spider::spider_client)

# Add the client
add_executable(client src/client.cpp)
Expand All @@ -27,6 +23,6 @@ add_executable(client src/client.cpp)
target_link_libraries(
client
PRIVATE
spider::spider
spider::spider_client
tasks
)
119 changes: 115 additions & 4 deletions src/spider/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,13 @@ set(SPIDER_CORE_HEADERS

add_library(spider_core)
target_sources(spider_core PRIVATE ${SPIDER_CORE_SOURCES})
target_sources(spider_core PUBLIC ${SPIDER_CORE_HEADERS})
target_sources(spider_core PRIVATE ${SPIDER_CORE_HEADERS})
target_include_directories(
spider_core
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>
$<INSTALL_INTERFACE:include/>
)
target_link_libraries(
spider_core
PUBLIC
Expand All @@ -55,6 +61,75 @@ target_link_libraries(
ystdlib::error_handling
)
target_link_libraries(spider_core PRIVATE fmt::fmt)
add_library(${PROJECT_NAME}::spider_core ALIAS spider_core)

install(
FILES
${CMAKE_CURRENT_SOURCE_DIR}/core/Error.hpp
${CMAKE_CURRENT_SOURCE_DIR}/core/Data.hpp
${CMAKE_CURRENT_SOURCE_DIR}/core/Driver.hpp
${CMAKE_CURRENT_SOURCE_DIR}/core/KeyValueData.hpp
${CMAKE_CURRENT_SOURCE_DIR}/core/Task.hpp
${CMAKE_CURRENT_SOURCE_DIR}/core/TaskGraph.hpp
${CMAKE_CURRENT_SOURCE_DIR}/core/JobMetadata.hpp
DESTINATION include/${PROJECT_NAME}/core
)

install(
FILES
${CMAKE_CURRENT_SOURCE_DIR}/io/BoostAsio.hpp
${CMAKE_CURRENT_SOURCE_DIR}/io/MsgPack.hpp
${CMAKE_CURRENT_SOURCE_DIR}/io/msgpack_message.hpp
${CMAKE_CURRENT_SOURCE_DIR}/io/Serializer.hpp
DESTINATION include/${PROJECT_NAME}/io
)

install(
FILES
${CMAKE_CURRENT_SOURCE_DIR}/utils/LruCache.hpp
DESTINATION include/${PROJECT_NAME}/utils
)

install(
FILES
${CMAKE_CURRENT_SOURCE_DIR}/storage/MetadataStorage.hpp
${CMAKE_CURRENT_SOURCE_DIR}/storage/DataStorage.hpp
${CMAKE_CURRENT_SOURCE_DIR}/storage/StorageConnection.hpp
${CMAKE_CURRENT_SOURCE_DIR}/storage/mysql/mysql_stmt.hpp
${CMAKE_CURRENT_SOURCE_DIR}/storage/mysql/MySqlConnection.hpp
${CMAKE_CURRENT_SOURCE_DIR}/storage/mysql/MySqlStorageFactory.hpp
${CMAKE_CURRENT_SOURCE_DIR}/storage/mysql/MySqlStorage.hpp
${CMAKE_CURRENT_SOURCE_DIR}/storage/mysql/MySqlJobSubmissionBatch.hpp
${CMAKE_CURRENT_SOURCE_DIR}/storage/JobSubmissionBatch.hpp
${CMAKE_CURRENT_SOURCE_DIR}/storage/StorageFactory.hpp
DESTINATION include/${PROJECT_NAME}/storage
)

install(
FILES
${CMAKE_CURRENT_SOURCE_DIR}/worker/FunctionManager.hpp
${CMAKE_CURRENT_SOURCE_DIR}/worker/FunctionNameManager.hpp
${CMAKE_CURRENT_SOURCE_DIR}/worker/TaskExecutorMessage.hpp
DESTINATION include/${PROJECT_NAME}/worker
)

install(TARGETS spider_core EXPORT spider_core_export)

install(
EXPORT spider_core_export
FILE spider_core_export.cmake
NAMESPACE ${PROJECT_NAME}::
DESTINATION share/cmake/${PROJECT_NAME}
)

install(TARGETS error_handling EXPORT ystdlib_error_handling_export)

install(
EXPORT ystdlib_error_handling_export
FILE ystdlib_error_handling_export.cmake
NAMESPACE ystdlib::
DESTINATION share/cmake/ystdlib
)

set(SPIDER_WORKER_SOURCES
worker/ChildPid.hpp
Expand Down Expand Up @@ -175,8 +250,13 @@ set(SPIDER_CLIENT_SHARED_HEADERS

add_library(spider_client)
target_sources(spider_client PRIVATE ${SPIDER_CLIENT_SHARED_SOURCES})
target_sources(spider_client PUBLIC ${SPIDER_CLIENT_SHARED_HEADERS})
target_include_directories(spider_client PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/..)
target_sources(spider_client PRIVATE ${SPIDER_CLIENT_SHARED_HEADERS})
target_include_directories(
spider_client
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/..>
$<INSTALL_INTERFACE:include/>
)
target_link_libraries(
spider_client
PUBLIC
Expand All @@ -186,4 +266,35 @@ target_link_libraries(
fmt::fmt
)

add_library(spider::spider ALIAS spider_client)
add_library(${PROJECT_NAME}::spider ALIAS spider_client)

install(
FILES
${CMAKE_CURRENT_SOURCE_DIR}/client/Data.hpp
${CMAKE_CURRENT_SOURCE_DIR}/client/Driver.hpp
${CMAKE_CURRENT_SOURCE_DIR}/client/Job.hpp
${CMAKE_CURRENT_SOURCE_DIR}/client/task.hpp
${CMAKE_CURRENT_SOURCE_DIR}/client/spider.hpp
${CMAKE_CURRENT_SOURCE_DIR}/client/TaskContext.hpp
${CMAKE_CURRENT_SOURCE_DIR}/client/TaskGraph.hpp
${CMAKE_CURRENT_SOURCE_DIR}/client/type_utils.hpp
${CMAKE_CURRENT_SOURCE_DIR}/client/Exception.hpp
DESTINATION include/${PROJECT_NAME}/client
)

install(
FILES
${CMAKE_CURRENT_SOURCE_DIR}/core/DataImpl.hpp
${CMAKE_CURRENT_SOURCE_DIR}/core/TaskContextImpl.hpp
${CMAKE_CURRENT_SOURCE_DIR}/core/TaskGraphImpl.hpp
DESTINATION include/${PROJECT_NAME}/core
)

install(TARGETS spider_client EXPORT spider_client_export)

install(
EXPORT spider_client_export
FILE spider_client_export.cmake
NAMESPACE ${PROJECT_NAME}::
DESTINATION share/cmake/${PROJECT_NAME}
)
5 changes: 3 additions & 2 deletions taskfile.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,8 +42,9 @@ tasks:
- "{{.G_EXAMPLES_CMAKE_CACHE}}"
- "{{.G_EXAMPLES_COMPILE_COMMANDS_DB}}"
cmds:
- "cmake -S '{{.ROOT_DIR}}' -B '{{.G_BUILD_SPIDER_DIR}}'"
- "cmake -S '{{.ROOT_DIR}}/examples/quick-start' -B '{{.G_BUILD_EXAMPLES_DIR}}'"
- "cmake -S '{{.ROOT_DIR}}' -B '{{.G_BUILD_SPIDER_DIR}}' -DCMAKE_INSTALL_PREFIX='{{.ROOT_DIR}}/install-test'"
- "cmake --build '{{.G_BUILD_SPIDER_DIR}}' --target install -j$(nproc)"
- "cmake -S '{{.ROOT_DIR}}/examples/quick-start' -B '{{.G_BUILD_EXAMPLES_DIR}}' -DCMAKE_PREFIX_PATH='{{.ROOT_DIR}}/install-test;' -DCMAKE_MODULE_PATH='{{.ROOT_DIR}}/cmake/Modules;'"

init:
internal: true
Expand Down