amduat-api/CMakeLists.txt

438 lines
13 KiB
CMake

cmake_minimum_required(VERSION 3.20)
project(amduat_api LANGUAGES C)
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS OFF)
option(AMDUATD_ENABLE_UI "Build amduatd embedded UI" ON)
add_subdirectory(vendor/amduat)
add_library(amduat_federation
federation/coord.c
federation/transport_stub.c
federation/transport_unix.c
)
target_include_directories(amduat_federation
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/vendor/amduat/include
)
target_link_libraries(amduat_federation
PRIVATE amduat_asl amduat_enc amduat_util amduat_fed
)
set(amduatd_sources src/amduatd.c src/amduatd_http.c src/amduatd_caps.c
src/amduatd_space.c src/amduatd_concepts.c
src/amduatd_store.c src/amduatd_derivation_index.c
src/amduatd_fed.c src/amduatd_fed_cursor.c
src/amduatd_fed_until.c
src/amduatd_fed_pull_plan.c src/amduatd_fed_push_plan.c
src/amduatd_fed_pull_apply.c src/amduatd_fed_push_apply.c
src/amduatd_space_doctor.c src/amduatd_space_roots.c
src/amduatd_space_manifest.c
src/amduatd_space_mounts.c)
if(AMDUATD_ENABLE_UI)
list(APPEND amduatd_sources src/amduatd_ui.c)
endif()
add_executable(amduatd ${amduatd_sources})
target_include_directories(amduatd
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/vendor/amduat/src/internal
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/vendor/amduat/include
)
target_compile_definitions(amduatd
PRIVATE AMDUATD_ENABLE_UI=$<BOOL:${AMDUATD_ENABLE_UI}>
)
target_link_libraries(amduatd
PRIVATE amduat_tgk amduat_pel amduat_format amduat_asl_store_fs
amduat_asl_store_index_fs amduat_asl_derivation_index_fs
amduat_asl_record amduat_asl amduat_enc amduat_hash_asl1
amduat_util amduat_federation
)
add_executable(amduat_pel_gc
src/amduat_pel_gc.c
src/asl_gc_fs.c
)
set_target_properties(amduat_pel_gc PROPERTIES OUTPUT_NAME "amduat-pel")
target_include_directories(amduat_pel_gc
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/vendor/amduat/include
)
target_link_libraries(amduat_pel_gc
PRIVATE amduat_asl_store_fs amduat_asl_record amduat_asl amduat_enc
amduat_hash_asl1 amduat_pel amduat_util
)
enable_testing()
add_executable(amduatd_test_store_backend
tests/test_amduatd_store_backend.c
src/amduatd_store.c
)
target_include_directories(amduatd_test_store_backend
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/vendor/amduat/include
)
target_link_libraries(amduatd_test_store_backend
PRIVATE amduat_asl_store_fs amduat_asl_store_index_fs
)
add_test(NAME amduatd_store_backend COMMAND amduatd_test_store_backend)
add_executable(amduatd_test_space_resolve
tests/test_amduatd_space_resolve.c
src/amduatd_space.c
)
target_include_directories(amduatd_test_space_resolve
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/vendor/amduat/include
)
target_link_libraries(amduatd_test_space_resolve
PRIVATE amduat_asl_pointer_fs
)
add_test(NAME amduatd_space_resolve COMMAND amduatd_test_space_resolve)
add_executable(amduatd_test_derivation_index
tests/test_amduatd_derivation_index.c
src/amduatd_derivation_index.c
)
target_include_directories(amduatd_test_derivation_index
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/vendor/amduat/include
)
target_link_libraries(amduatd_test_derivation_index
PRIVATE amduat_asl_derivation_index_fs amduat_pel amduat_asl amduat_util
)
add_test(NAME amduatd_derivation_index COMMAND amduatd_test_derivation_index)
add_executable(amduatd_test_fed_cfg
tests/test_amduatd_fed_cfg.c
src/amduatd_fed.c
src/amduatd_space.c
)
target_include_directories(amduatd_test_fed_cfg
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/vendor/amduat/include
)
target_link_libraries(amduatd_test_fed_cfg
PRIVATE amduat_asl amduat_enc amduat_util amduat_asl_pointer_fs
)
add_test(NAME amduatd_fed_cfg COMMAND amduatd_test_fed_cfg)
add_executable(amduatd_test_fed_cursor
tests/test_amduatd_fed_cursor.c
src/amduatd_fed_cursor.c
src/amduatd_fed.c
src/amduatd_space.c
src/amduatd_store.c
)
target_include_directories(amduatd_test_fed_cursor
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/vendor/amduat/include
)
target_link_libraries(amduatd_test_fed_cursor
PRIVATE amduat_asl_store_fs amduat_asl_store_index_fs amduat_asl_record
amduat_asl amduat_enc amduat_asl_pointer_fs amduat_util
amduat_hash_asl1
)
add_test(NAME amduatd_fed_cursor COMMAND amduatd_test_fed_cursor)
add_executable(amduatd_test_fed_pull_plan
tests/test_amduatd_fed_pull_plan.c
src/amduatd_fed_pull_plan.c
src/amduatd_fed_cursor.c
src/amduatd_fed.c
src/amduatd_space.c
)
target_include_directories(amduatd_test_fed_pull_plan
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/vendor/amduat/include
)
target_link_libraries(amduatd_test_fed_pull_plan
PRIVATE amduat_asl amduat_asl_record amduat_asl_log_store amduat_enc amduat_util amduat_hash_asl1
amduat_asl_pointer_fs
)
add_test(NAME amduatd_fed_pull_plan COMMAND amduatd_test_fed_pull_plan)
add_executable(amduatd_test_fed_push_plan
tests/test_amduatd_fed_push_plan.c
src/amduatd_fed_push_plan.c
src/amduatd_fed_cursor.c
src/amduatd_fed.c
src/amduatd_space.c
)
target_include_directories(amduatd_test_fed_push_plan
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/vendor/amduat/include
)
target_link_libraries(amduatd_test_fed_push_plan
PRIVATE amduat_asl amduat_asl_record amduat_asl_log_store amduat_enc amduat_util amduat_hash_asl1
amduat_asl_pointer_fs
)
add_test(NAME amduatd_fed_push_plan COMMAND amduatd_test_fed_push_plan)
add_executable(amduatd_test_fed_push_apply
tests/test_amduatd_fed_push_apply.c
src/amduatd_fed_push_apply.c
src/amduatd_fed_push_plan.c
src/amduatd_fed_cursor.c
src/amduatd_fed.c
src/amduatd_space.c
src/amduatd_store.c
)
target_include_directories(amduatd_test_fed_push_apply
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/vendor/amduat/include
)
target_link_libraries(amduatd_test_fed_push_apply
PRIVATE amduat_asl_store_fs amduat_asl_store_index_fs amduat_asl_record
amduat_asl amduat_asl_log_store amduat_enc amduat_asl_pointer_fs amduat_util
amduat_hash_asl1
)
add_test(NAME amduatd_fed_push_apply COMMAND amduatd_test_fed_push_apply)
add_executable(amduatd_test_fed_pull_until
tests/test_amduatd_fed_pull_until.c
src/amduatd_fed_until.c
src/amduatd_fed_pull_apply.c
src/amduatd_fed_pull_plan.c
src/amduatd_fed_push_apply.c
src/amduatd_fed_push_plan.c
src/amduatd_fed_cursor.c
src/amduatd_fed.c
src/amduatd_space.c
src/amduatd_store.c
)
target_include_directories(amduatd_test_fed_pull_until
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/vendor/amduat/include
)
target_link_libraries(amduatd_test_fed_pull_until
PRIVATE amduat_asl_store_fs amduat_asl_store_index_fs amduat_asl_record
amduat_asl amduat_enc amduat_asl_pointer_fs amduat_util
amduat_asl_log_store
amduat_hash_asl1 amduat_fed
)
add_test(NAME amduatd_fed_pull_until COMMAND amduatd_test_fed_pull_until)
add_executable(amduatd_test_fed_push_until
tests/test_amduatd_fed_push_until.c
src/amduatd_fed_until.c
src/amduatd_fed_pull_apply.c
src/amduatd_fed_pull_plan.c
src/amduatd_fed_push_apply.c
src/amduatd_fed_push_plan.c
src/amduatd_fed_cursor.c
src/amduatd_fed.c
src/amduatd_space.c
src/amduatd_store.c
)
target_include_directories(amduatd_test_fed_push_until
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/vendor/amduat/include
)
target_link_libraries(amduatd_test_fed_push_until
PRIVATE amduat_asl_store_fs amduat_asl_store_index_fs amduat_asl_record
amduat_asl amduat_enc amduat_asl_pointer_fs amduat_util
amduat_asl_log_store
amduat_hash_asl1 amduat_fed
)
add_test(NAME amduatd_fed_push_until COMMAND amduatd_test_fed_push_until)
add_executable(amduatd_test_fed_pull_apply
tests/test_amduatd_fed_pull_apply.c
src/amduatd_fed_pull_apply.c
src/amduatd_fed_pull_plan.c
src/amduatd_fed_cursor.c
src/amduatd_fed.c
src/amduatd_space.c
src/amduatd_store.c
)
target_include_directories(amduatd_test_fed_pull_apply
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/vendor/amduat/include
)
target_link_libraries(amduatd_test_fed_pull_apply
PRIVATE amduat_asl_store_fs amduat_asl_store_index_fs amduat_asl_record
amduat_asl amduat_enc amduat_asl_pointer_fs amduat_util
amduat_hash_asl1 amduat_fed
)
add_test(NAME amduatd_fed_pull_apply COMMAND amduatd_test_fed_pull_apply)
add_executable(amduatd_http_unix
tests/tools/amduatd_http_unix.c
)
add_test(NAME amduatd_fed_smoke
COMMAND bash ${CMAKE_CURRENT_SOURCE_DIR}/scripts/test_fed_smoke.sh
)
set_tests_properties(amduatd_fed_smoke PROPERTIES SKIP_RETURN_CODE 77)
add_test(NAME amduatd_fed_ingest
COMMAND bash ${CMAKE_CURRENT_SOURCE_DIR}/scripts/test_fed_ingest.sh
)
set_tests_properties(amduatd_fed_ingest PROPERTIES SKIP_RETURN_CODE 77)
add_executable(amduatd_test_space_doctor
tests/test_amduatd_space_doctor.c
src/amduatd_space_doctor.c
src/amduatd_space.c
src/amduatd_store.c
)
target_include_directories(amduatd_test_space_doctor
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/vendor/amduat/include
)
target_link_libraries(amduatd_test_space_doctor
PRIVATE amduat_asl_store_fs amduat_asl_pointer_fs amduat_asl_record
amduat_asl_store_index_fs amduat_asl amduat_enc amduat_util
amduat_hash_asl1
)
add_test(NAME amduatd_space_doctor COMMAND amduatd_test_space_doctor)
add_executable(amduatd_test_space_roots
tests/test_amduatd_space_roots.c
src/amduatd_space_roots.c
src/amduatd_space.c
src/amduatd_fed_cursor.c
src/amduatd_store.c
)
target_include_directories(amduatd_test_space_roots
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/vendor/amduat/include
)
target_link_libraries(amduatd_test_space_roots
PRIVATE amduat_asl_store_fs amduat_asl_pointer_fs amduat_asl_record
amduat_asl_store_index_fs amduat_asl amduat_enc amduat_util
amduat_hash_asl1
)
add_test(NAME amduatd_space_roots COMMAND amduatd_test_space_roots)
add_executable(amduatd_test_space_manifest
tests/test_amduatd_space_manifest.c
src/amduatd_space_manifest.c
src/amduatd_space.c
src/amduatd_store.c
src/amduatd_http.c
)
target_include_directories(amduatd_test_space_manifest
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/vendor/amduat/include
)
target_link_libraries(amduatd_test_space_manifest
PRIVATE amduat_asl_store_fs amduat_asl_pointer_fs amduat_asl_record
amduat_asl_store_index_fs amduat_asl amduat_enc amduat_util
amduat_hash_asl1
)
add_test(NAME amduatd_space_manifest COMMAND amduatd_test_space_manifest)
add_executable(amduatd_test_space_mounts
tests/test_amduatd_space_mounts.c
src/amduatd_space_mounts.c
src/amduatd_space_manifest.c
src/amduatd_http.c
src/amduatd_fed_cursor.c
src/amduatd_space.c
src/amduatd_store.c
)
target_include_directories(amduatd_test_space_mounts
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/vendor/amduat/include
)
target_link_libraries(amduatd_test_space_mounts
PRIVATE amduat_asl_store_fs amduat_asl_pointer_fs amduat_asl_record
amduat_asl_store_index_fs amduat_asl amduat_enc amduat_util
amduat_hash_asl1
)
add_test(NAME amduatd_space_mounts COMMAND amduatd_test_space_mounts)
add_executable(amduatd_test_space_sync_status
tests/test_amduatd_space_sync_status.c
src/amduatd_space_roots.c
src/amduatd_space.c
src/amduatd_fed_cursor.c
src/amduatd_store.c
)
target_include_directories(amduatd_test_space_sync_status
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src
PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/vendor/amduat/include
)
target_link_libraries(amduatd_test_space_sync_status
PRIVATE amduat_asl_store_fs amduat_asl_pointer_fs amduat_asl_record
amduat_asl_store_index_fs amduat_asl amduat_enc amduat_util
amduat_hash_asl1
)
add_test(NAME amduatd_space_sync_status COMMAND amduatd_test_space_sync_status)