add_library(logger STATIC 
    logger.cpp
)

# Although we used memory pool, it doesn't seem to have a significant advantage over stl.
# Perhaps we need to implement multi-level pooling, 
# introduce lock free queues, and avoid using stringstream
#target_compile_definitions(logger
#    PRIVATE USE_STL_QUEUE
#)

add_library(cuda_mock STATIC
    GlobalVarMgr.cpp
    logger.cpp
    cuda_mock.cpp 
    hook.cpp 
    cuda_op_tracer.cpp 
    backtrace.cpp
    xpu_mock.cpp
)


set_target_properties(cuda_mock PROPERTIES POSITION_INDEPENDENT_CODE ON)

target_link_libraries(cuda_mock PRIVATE fmt::fmt-header-only)
include_directories(PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../include)
include_directories(PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../third_party/fmt/include)


add_library(plthook STATIC
    logger.cpp
    cuda_mock.cpp 
    hook.cpp 
    cuda_op_tracer.cpp 
    backtrace.cpp
)
target_compile_definitions(plthook
    PRIVATE FMT_HEADER_ONLY
)

target_link_libraries(plthook PRIVATE pthread dl)

