253 lines
7.6 KiB
CMake
253 lines
7.6 KiB
CMake
cmake_minimum_required(VERSION 3.20)
|
|
project(amduat LANGUAGES C)
|
|
|
|
set(CMAKE_C_STANDARD 11)
|
|
set(CMAKE_C_STANDARD_REQUIRED ON)
|
|
set(CMAKE_C_EXTENSIONS OFF)
|
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
|
|
|
set(AMDUAT_ROOT ${CMAKE_CURRENT_SOURCE_DIR})
|
|
set(AMDUAT_INCLUDE_DIR ${AMDUAT_ROOT}/include)
|
|
set(AMDUAT_INTERNAL_DIR ${AMDUAT_ROOT}/src/internal)
|
|
|
|
function(amduat_add_lib name)
|
|
set(options)
|
|
set(oneValueArgs)
|
|
set(multiValueArgs SRCS)
|
|
cmake_parse_arguments(AMDUAT "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
|
|
|
|
if ("${AMDUAT_SRCS}" STREQUAL "")
|
|
message(FATAL_ERROR "amduat_add_lib(${name}) requires SRCS")
|
|
endif()
|
|
|
|
add_library(amduat_${name}_obj OBJECT ${AMDUAT_SRCS})
|
|
target_include_directories(amduat_${name}_obj
|
|
PRIVATE ${AMDUAT_INTERNAL_DIR}
|
|
PUBLIC ${AMDUAT_INCLUDE_DIR}
|
|
)
|
|
|
|
add_library(amduat_${name} STATIC $<TARGET_OBJECTS:amduat_${name}_obj>)
|
|
add_library(amduat_${name}_shared SHARED $<TARGET_OBJECTS:amduat_${name}_obj>)
|
|
|
|
set_target_properties(amduat_${name} PROPERTIES OUTPUT_NAME amduat_${name})
|
|
set_target_properties(amduat_${name}_shared PROPERTIES OUTPUT_NAME amduat_${name})
|
|
|
|
target_include_directories(amduat_${name}
|
|
PRIVATE ${AMDUAT_INTERNAL_DIR}
|
|
PUBLIC ${AMDUAT_INCLUDE_DIR}
|
|
)
|
|
target_include_directories(amduat_${name}_shared
|
|
PRIVATE ${AMDUAT_INTERNAL_DIR}
|
|
PUBLIC ${AMDUAT_INCLUDE_DIR}
|
|
)
|
|
endfunction()
|
|
|
|
function(amduat_link name)
|
|
if (ARGC LESS 2)
|
|
return()
|
|
endif()
|
|
|
|
target_link_libraries(amduat_${name} PUBLIC ${ARGN})
|
|
target_link_libraries(amduat_${name}_shared PUBLIC ${ARGN})
|
|
endfunction()
|
|
|
|
set(AMDUAT_UTIL_SRCS
|
|
src/internal/buf.c
|
|
src/internal/arena.c
|
|
src/internal/varint.c
|
|
src/internal/endian.c
|
|
src/internal/hex.c
|
|
)
|
|
|
|
set(AMDUAT_ASL_SRCS
|
|
src/kernel/asl/core.c
|
|
src/near_core/asl/artifact_io.c
|
|
src/near_core/asl/io.c
|
|
src/near_core/asl/parse.c
|
|
src/near_core/asl/ref_io.c
|
|
src/near_core/asl/store.c
|
|
src/near_core/asl/ref_text.c
|
|
src/near_core/asl/registry.c
|
|
)
|
|
|
|
set(AMDUAT_HASH_ASL1_SRCS
|
|
src/near_core/hash/asl1.c
|
|
src/near_core/hash/sha256.c
|
|
)
|
|
|
|
set(AMDUAT_ENC_SRCS
|
|
src/near_core/enc/asl1_core.c
|
|
src/near_core/enc/asl1_core_codec.c
|
|
src/near_core/enc/pel_program_dag.c
|
|
src/near_core/enc/pel_trace_dag.c
|
|
src/near_core/enc/pel1_result.c
|
|
src/near_core/enc/tgk1_edge.c
|
|
)
|
|
|
|
set(AMDUAT_FORMAT_SRCS
|
|
src/near_core/format/json.c
|
|
src/near_core/format/opreg_util.c
|
|
src/near_core/format/parse.c
|
|
src/near_core/format/ref.c
|
|
src/near_core/format/pel.c
|
|
)
|
|
|
|
set(AMDUAT_PEL_SRCS
|
|
src/kernel/pel/core.c
|
|
src/pel_stack/decode.c
|
|
src/pel_stack/surf/surf.c
|
|
src/pel_stack/program_dag/program_dag.c
|
|
src/pel_stack/program_dag/program_dag_desc.c
|
|
src/pel_stack/run.c
|
|
src/pel_stack/trace_dag/trace_dag.c
|
|
src/pel_stack/opreg/kernel.c
|
|
src/pel_stack/opreg/kernel_params.c
|
|
)
|
|
|
|
set(AMDUAT_TGK_SRCS
|
|
src/kernel/tgk/core.c
|
|
src/tgk_stack/store/store.c
|
|
src/tgk_stack/prov/prov.c
|
|
)
|
|
|
|
set(AMDUAT_ASL_STORE_FS_SRCS
|
|
src/adapters/asl_store_fs/asl_store_fs.c
|
|
src/adapters/asl_store_fs/asl_store_fs_layout.c
|
|
src/adapters/asl_store_fs/asl_store_fs_meta.c
|
|
)
|
|
|
|
set(AMDUAT_TGK_STORE_MEM_SRCS
|
|
src/adapters/tgk_store_mem/tgk_store_mem.c
|
|
)
|
|
|
|
set(AMDUAT_TGK_STORE_FS_SRCS
|
|
src/adapters/tgk_store_fs/tgk_store_fs.c
|
|
)
|
|
|
|
amduat_add_lib(util SRCS ${AMDUAT_UTIL_SRCS})
|
|
|
|
amduat_add_lib(asl SRCS ${AMDUAT_ASL_SRCS})
|
|
amduat_link(asl amduat_util)
|
|
|
|
amduat_add_lib(hash_asl1 SRCS ${AMDUAT_HASH_ASL1_SRCS})
|
|
amduat_link(hash_asl1 amduat_asl amduat_util)
|
|
|
|
amduat_add_lib(enc SRCS ${AMDUAT_ENC_SRCS})
|
|
amduat_link(enc amduat_asl amduat_hash_asl1 amduat_util)
|
|
|
|
amduat_add_lib(format SRCS ${AMDUAT_FORMAT_SRCS})
|
|
amduat_link(format amduat_asl amduat_enc amduat_util)
|
|
|
|
amduat_add_lib(pel SRCS ${AMDUAT_PEL_SRCS})
|
|
amduat_link(pel amduat_asl amduat_enc amduat_hash_asl1 amduat_util)
|
|
|
|
amduat_add_lib(tgk SRCS ${AMDUAT_TGK_SRCS})
|
|
amduat_link(tgk amduat_asl amduat_enc amduat_hash_asl1 amduat_util)
|
|
|
|
amduat_add_lib(asl_store_fs SRCS ${AMDUAT_ASL_STORE_FS_SRCS})
|
|
amduat_link(asl_store_fs amduat_asl amduat_enc amduat_hash_asl1 amduat_util)
|
|
target_compile_definitions(amduat_asl_store_fs_obj PRIVATE _POSIX_C_SOURCE=200809L)
|
|
|
|
amduat_add_lib(tgk_store_mem SRCS ${AMDUAT_TGK_STORE_MEM_SRCS})
|
|
amduat_link(tgk_store_mem amduat_tgk amduat_asl amduat_enc amduat_hash_asl1 amduat_util)
|
|
|
|
amduat_add_lib(tgk_store_fs SRCS ${AMDUAT_TGK_STORE_FS_SRCS})
|
|
amduat_link(tgk_store_fs amduat_tgk amduat_asl_store_fs amduat_asl amduat_enc amduat_hash_asl1 amduat_util)
|
|
|
|
add_executable(amduat_asl_cli src/tools/amduat_asl_cli.c)
|
|
target_include_directories(amduat_asl_cli
|
|
PRIVATE ${AMDUAT_INTERNAL_DIR}
|
|
PRIVATE ${AMDUAT_INCLUDE_DIR}
|
|
)
|
|
target_link_libraries(amduat_asl_cli
|
|
PRIVATE amduat_format amduat_asl_store_fs amduat_asl amduat_enc
|
|
amduat_hash_asl1 amduat_util
|
|
)
|
|
set_target_properties(amduat_asl_cli PROPERTIES OUTPUT_NAME amduat-asl)
|
|
|
|
add_executable(amduat_pel_seed src/tools/amduat_pel_seed.c)
|
|
target_include_directories(amduat_pel_seed
|
|
PRIVATE ${AMDUAT_INTERNAL_DIR}
|
|
PRIVATE ${AMDUAT_INCLUDE_DIR}
|
|
)
|
|
target_link_libraries(amduat_pel_seed
|
|
PRIVATE amduat_format amduat_asl_store_fs amduat_asl amduat_enc
|
|
amduat_hash_asl1 amduat_util
|
|
)
|
|
set_target_properties(amduat_pel_seed PROPERTIES OUTPUT_NAME amduat-pel-seed)
|
|
|
|
add_executable(amduat_pel_run src/tools/amduat_pel_run.c)
|
|
target_include_directories(amduat_pel_run
|
|
PRIVATE ${AMDUAT_INTERNAL_DIR}
|
|
PRIVATE ${AMDUAT_INCLUDE_DIR}
|
|
)
|
|
target_link_libraries(amduat_pel_run
|
|
PRIVATE amduat_pel amduat_asl_store_fs amduat_asl amduat_enc
|
|
amduat_hash_asl1 amduat_util
|
|
)
|
|
set_target_properties(amduat_pel_run PROPERTIES OUTPUT_NAME amduat-pel-run)
|
|
|
|
add_executable(amduat_pel_cli src/tools/amduat_pel_cli.c)
|
|
target_include_directories(amduat_pel_cli
|
|
PRIVATE ${AMDUAT_INTERNAL_DIR}
|
|
PRIVATE ${AMDUAT_INCLUDE_DIR}
|
|
)
|
|
target_link_libraries(amduat_pel_cli
|
|
PRIVATE amduat_format amduat_pel amduat_asl_store_fs amduat_asl amduat_enc
|
|
amduat_hash_asl1 amduat_util
|
|
)
|
|
set_target_properties(amduat_pel_cli PROPERTIES OUTPUT_NAME amduat-pel)
|
|
|
|
enable_testing()
|
|
|
|
add_executable(amduat_test_pel_program_dag tests/enc/test_pel_program_dag.c)
|
|
target_include_directories(amduat_test_pel_program_dag
|
|
PRIVATE ${AMDUAT_INTERNAL_DIR}
|
|
PRIVATE ${AMDUAT_INCLUDE_DIR}
|
|
)
|
|
target_link_libraries(amduat_test_pel_program_dag
|
|
PRIVATE amduat_enc amduat_hash_asl1 amduat_asl amduat_util
|
|
)
|
|
add_test(NAME pel_program_dag COMMAND amduat_test_pel_program_dag)
|
|
|
|
add_executable(amduat_test_pel_trace_dag tests/enc/test_pel_trace_dag.c)
|
|
target_include_directories(amduat_test_pel_trace_dag
|
|
PRIVATE ${AMDUAT_INTERNAL_DIR}
|
|
PRIVATE ${AMDUAT_INCLUDE_DIR}
|
|
)
|
|
target_link_libraries(amduat_test_pel_trace_dag
|
|
PRIVATE amduat_enc amduat_hash_asl1 amduat_asl amduat_util
|
|
)
|
|
add_test(NAME pel_trace_dag COMMAND amduat_test_pel_trace_dag)
|
|
|
|
add_executable(amduat_test_pel1_result tests/enc/test_pel1_result.c)
|
|
target_include_directories(amduat_test_pel1_result
|
|
PRIVATE ${AMDUAT_INTERNAL_DIR}
|
|
PRIVATE ${AMDUAT_INCLUDE_DIR}
|
|
)
|
|
target_link_libraries(amduat_test_pel1_result
|
|
PRIVATE amduat_enc amduat_hash_asl1 amduat_asl amduat_util
|
|
)
|
|
add_test(NAME pel1_result COMMAND amduat_test_pel1_result)
|
|
|
|
add_executable(amduat_test_pel_program_dag_exec
|
|
tests/pel/test_pel_program_dag_exec.c)
|
|
target_include_directories(amduat_test_pel_program_dag_exec
|
|
PRIVATE ${AMDUAT_INTERNAL_DIR}
|
|
PRIVATE ${AMDUAT_INCLUDE_DIR}
|
|
)
|
|
target_link_libraries(amduat_test_pel_program_dag_exec
|
|
PRIVATE amduat_pel
|
|
)
|
|
add_test(NAME pel_program_dag_exec COMMAND amduat_test_pel_program_dag_exec)
|
|
|
|
add_executable(amduat_test_pel_surf_run tests/pel/test_pel_surf_run.c)
|
|
target_include_directories(amduat_test_pel_surf_run
|
|
PRIVATE ${AMDUAT_INTERNAL_DIR}
|
|
PRIVATE ${AMDUAT_INCLUDE_DIR}
|
|
)
|
|
target_link_libraries(amduat_test_pel_surf_run
|
|
PRIVATE amduat_pel
|
|
)
|
|
add_test(NAME pel_surf_run COMMAND amduat_test_pel_surf_run)
|