


cmake_minimum_required(VERSION 3.5)

project(WaytousDeepInfer)

# cuda opencv
find_package(CUDA REQUIRED)
find_package(OpenCV REQUIRED)
# enable_language(CUDA)
link_directories(${OpenCV_LIBRARIES_DIRS})
include_directories(${OpenCV_INCLUDE_DIRS})
# link_directories(${CUDA_LIBRARIES_DIRS})
# include_directories(${CUDA_INCLUDE_DIRS})
link_directories(/usr/local/cuda/lib64)
include_directories(/usr/local/cuda/include)

# eigen3
find_package(Eigen3 REQUIRED)
link_directories(${EIGEN3_LIBRARIES_DIRS})
include_directories(${EIGEN3_INCLUDE_DIRS})
include_directories(include)

# tensorrt 
include_directories(/root/TensorRT/TensorRT-7.0.0.11-cuda-10.0/include)
link_directories(/root/TensorRT/TensorRT-7.0.0.11-cuda-10.0/lib)
# aarch64
    # # figure out real path
    # include_directories(/home/nvidia/.../tensorrt-7.1-aarch64-DCN/include)
    # link_directories(/home/nvidia/.../tensorrt-7.1-aarch64-DCN/lib)
    # # cudnn + default-tensorrt
    # link_directories(/usr/lib/aarch64-linux-gnu)
    # include_directories(/usr/include/aarch64-linux-gnu)

# yaml
include_directories(/usr/local/include/yaml-cpp)
# aarch64 -- figure out
# include_directories(/usr/include/yaml-cpp)

# glog gflags
# sudo apt-get install libgoogle-glog*
include_directories(/usr/include/gflags)
include_directories(/usr/include/glog)

set(DEP_LIBS 
    ${CUDA_npp_LIBRARY}
    ${CUDA_nppc_LIBRARY}
    ${OpenCV_LIBS}
    cudart 
    nvinfer
    nvonnxparser
    nvinfer_plugin
    yaml-cpp
    gflags
    glog 
)

set(CMAKE_CUDA_ARCHITECTURES 35 50 72)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wfatal-errors -Ofast")
list(APPEND CUDA_NVCC_FLAGS "-D_FORCE_INLINES -Xcompiler -fPIC")

set(PROJECT_CUDA_LIB waytous_deepinfer_cuda)
set(PROJECT_LIB waytous_deepinfer)
message(WARNING ${PROJECT_LIB} ${DEP_LIBS})
add_subdirectory(src)

list(APPEND EXTRA_LIBS ${PROJECT_LIB} ${PROJECT_CUDA_LIB})
list(APPEND EXTRA_INCLUDES "${PROJECT_SOURCE_DIR}/src")

add_executable(main main.cpp)
target_link_libraries(main
    ${EXTRA_LIBS}
    ${OpenCV_LIBS}
)
target_include_directories(main 
    PUBLIC ${EXTRA_INCLUDES}
)
