set(LIBRARY_NAME waic_runner_core)

set(LIB_SRC
   analyze_buffer.cpp
   cont_reuse.cpp
   fusion_test.cpp
   insert_record_timer.cpp
   insert_pm_load.cpp
   insert_preemption.cpp
   json_reader.cpp
   meta_state.cpp
   meta_utils.cpp
   model_runner.cpp
   op_utils.cpp
   optimize_scratch.cpp
   optimize_scratch_contiguous.cpp
   subgraph_op.cpp
   support_ops.cpp
   txn_utils.cpp
   utils.cpp
   debug_utils.cpp
   aie_context.cpp
)

add_library(${LIBRARY_NAME} STATIC ${LIB_SRC})

if(MSVC)
  target_compile_options(${LIBRARY_NAME} PRIVATE /MP)
endif()

set(AIEBU_CORE_LIB AIEBU::aiebu_static)

target_include_directories(
    ${LIBRARY_NAME}
	PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/runner/aie-runner/include>
  PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/runtime>
	PUBLIC $<INSTALL_INTERFACE:include>
    PRIVATE ${CMAKE_CURRENT_BINARY_DIR}
	#PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include
    PRIVATE ${XRT_INCLUDE_DIRS}
	PRIVATE ${SRC_INCLUDE_DIRS}
	PRIVATE ${AIEBU_INCLUDE_DIRS}
)

target_link_libraries(
    ${LIBRARY_NAME}
    PUBLIC ${XRT_COREUTIL_LIBRARIES}
           nlohmann_json::nlohmann_json
           xaiengine::xaiengine
           ${AIEBU_CORE_LIB}
)

target_compile_options(${LIBRARY_NAME} PRIVATE ${DEFAULT_COMPILE_OPTIONS})
target_compile_definitions(${LIBRARY_NAME} PUBLIC XAIE_FEATURE_MSVC)
set_property(TARGET ${LIBRARY_NAME} PROPERTY COMPILE_WARNING_AS_ERROR ON)

if(BUILD_SHARED_LIBS)
  target_compile_definitions(
    ${LIBRARY_NAME} PUBLIC WAIC_RUNNER_BUILD_SHARED
  )
  target_compile_definitions(${LIBRARY_NAME} PRIVATE WAIC_RUNNER_EXPORT)
endif()

target_include_directories(
  ${LIBRARY_NAME} PRIVATE ${nlohmann_json_SOURCE_DIR}/include
)

include(GNUInstallDirs)
# Install libraries
install(
  TARGETS ${LIBRARY_NAME}
  EXPORT ${PROJECT_NAME}-targets
  INCLUDES
  DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/waic_runner
  RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
  ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
  LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
)

install(
  DIRECTORY ${PROJECT_SOURCE_DIR}/runner/aie-runner/include/
  DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/waic_runner
  FILES_MATCHING
  PATTERN "*.hpp"
  PATTERN "*.h"
)
