cmake_minimum_required(VERSION 3.16)
project(Video_MIGraphX)

set(CMAKE_CXX_COMPILER hipcc)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17 -pthread")
set(CMAKE_BUILD_TYPE release)

set(INCLUDE_PATH    /usr/local/include
                    ${CMAKE_CURRENT_SOURCE_DIR}/include
                    $ENV{ROCM_PATH}/include)
include_directories(${INCLUDE_PATH})


set(LIBRARY_PATH    /usr/local/lib
                    ${CMAKE_CURRENT_SOURCE_DIR}/lib
                    $ENV{ROCM_PATH}/lib)
link_directories(${LIBRARY_PATH})

set(LIBRARY     avcodec avdevice avfilter avformat avutil swresample swscale postproc xcoder
                opencv_core opencv_imgproc opencv_imgcodecs opencv_dnn opencv_highgui opencv_videoio
                migraphx_ref migraphx migraphx_c migraphx_device migraphx_gpu migraphx_onnx)
link_libraries(${LIBRARY})

add_definitions(-DCPU=1 -D_HW=2 -D_HW_DMA=3)
if(USE_P2P)
    add_definitions(-DDMA)
    message(NOTICE "Use p2p dma for decode data.")
else()
    message(NOTICE "Not use p2p dma for decode data.")
endif()

set(SOURCE_FILES    ${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp
                    ${CMAKE_CURRENT_SOURCE_DIR}/src/SSD.cpp
                    ${CMAKE_CURRENT_SOURCE_DIR}/src/YOLOV3.cpp
                    ${CMAKE_CURRENT_SOURCE_DIR}/src/YOLOV5.cpp
                    ${CMAKE_CURRENT_SOURCE_DIR}/src/YOLOV7.cpp
                    ${CMAKE_CURRENT_SOURCE_DIR}/src/RetinaFace.cpp
                    ${CMAKE_CURRENT_SOURCE_DIR}/src/Inference/DetectorSSD.cpp
                    ${CMAKE_CURRENT_SOURCE_DIR}/src/Inference/DetectorYOLOV3.cpp
                    ${CMAKE_CURRENT_SOURCE_DIR}/src/Inference/DetectorYOLOV5.cpp
                    ${CMAKE_CURRENT_SOURCE_DIR}/src/Inference/DetectorYOLOV7.cpp
                    ${CMAKE_CURRENT_SOURCE_DIR}/src/Inference/DetectorRetinaFace.cpp
                    ${CMAKE_CURRENT_SOURCE_DIR}/src/Utility/CommonUtility.cpp
                    ${CMAKE_CURRENT_SOURCE_DIR}/src/Utility/Filesystem.cpp)

add_executable(Video_MIGraphX ${SOURCE_FILES})
if(USE_P2P)
    target_link_libraries(Video_MIGraphX decode0 Queue)
else()
    target_link_libraries(Video_MIGraphX decode1 Queue)
endif()
