cmake_minimum_required(VERSION 3.13)

include(CheckCXXCompilerFlag)

project(spacemit_ort_samples)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

if(CMAKE_BUILD_TYPE STREQUAL "Release")
  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-builtin-macro-redefined -U__FILE__ -D__FILE__='\"$(subst $(dir $<),,$<)\"'")
  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-builtin-macro-redefined -U__FILE__ -D__FILE__='\"$(subst $(dir $<),,$<)\"'")
endif()

if (DEFINED ONNXRUNTIME_PUBLIC_INCLUDE_DIRS)
    add_executable(imagenet_test imagenet_test.cc)
    add_executable(run_demo demo.cc)
    spine_configure_target(imagenet_test)
    spine_configure_target(run_demo)
else()
    add_executable(imagenet_test samples/imagenet_test.cc)
    add_executable(run_demo samples/demo.cc)
    set(DEMO_INCLUDE_DIRS
        ${CMAKE_CURRENT_LIST_DIR}/include/
    )
    set(DEMO_LIB_DIRS
        ${CMAKE_CURRENT_LIST_DIR}/lib/
    )
endif()

target_include_directories(
    imagenet_test PRIVATE
    ${DEMO_INCLUDE_DIRS}
)

target_include_directories(
    run_demo PRIVATE
    ${DEMO_INCLUDE_DIRS}
)

target_link_directories(
    imagenet_test PRIVATE
    ${DEMO_LIB_DIRS}
)

target_link_directories(
    run_demo PRIVATE
    ${DEMO_LIB_DIRS}
)

set(SPACEMIT_ORT_LIBS onnxruntime spacemit_ep)

target_link_libraries(imagenet_test PRIVATE ${SPACEMIT_ORT_LIBS})
target_link_libraries(run_demo PRIVATE ${SPACEMIT_ORT_LIBS})

install(TARGETS imagenet_test
        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
        FRAMEWORK DESTINATION ${CMAKE_INSTALL_BINDIR})


install(TARGETS run_demo
        ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
        LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
        RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
        FRAMEWORK DESTINATION ${CMAKE_INSTALL_BINDIR})
