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_space_doctor.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=$ ) 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_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)