if(" ${CMAKE_SOURCE_DIR}" STREQUAL " ${CMAKE_BINARY_DIR}")
  message(FATAL_ERROR "Please create a separate directory for build files.")
endif()

cmake_minimum_required(VERSION 3.6)

project(INS C CXX)
set(CMAKE_VERBOSE_MAKEFILE OFF)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
# ---[ Options
option(build_modules "build modules" ON)

# set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/source/bin/)

if(build_modules)
  add_subdirectory(modules)
endif()

set(ENABLE_MYSQL ON CACHE BOOL "enable mysql")

##OpenCV
if(WITH_OPENCV)
  if(CMAKE_TOOLCHAIN_FILE)
    if(EXISTS ${PROJECT_SOURCE_DIR}/include/opencv)
       set(OpenCV_LIBS opencv_core opencv_imgproc opencv_highgui opencv_features2d opencv_flann)
       if(EXISTS ${PROJECT_SOURCE_DIR}/include/opencv2/imgcodecs)
         list(APPEND OpenCV_LIBS opencv_imgcodecs)
       endif()
       if(EXISTS ${PROJECT_SOURCE_DIR}/include/opencv2/videoio)
         list(APPEND OpenCV_LIBS opencv_videoio)
       endif()
       message(STATUS "HAVE_OPENCV enabled")
       message(STATUS "opencv libraries: ${OpenCV_LIBS}")
       set(HAVE_OPENCV true)
       set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAVE_OPENCV")
    else()
      set (HAVE_OPENCV false)
    endif()
  else()
     set(OpenCV_FIND_QUIETLY true)
     #find_package(OpenCV REQUIRED) //this will include opencv_ts which result in crash on centos
     find_package(OpenCV OPTIONAL_COMPONENTS imgcodecs)
     find_package(OpenCV OPTIONAL_COMPONENTS videoio)
     set(optional_opencv_libs ${OpenCV_LIBS})
     find_package(OpenCV REQUIRED core imgproc highgui features2d)
     if(OpenCV_FOUND)
       if(imgcodecs_FOUND)
         list(APPEND OpenCV_LIBS optional_opencv_libs)
       endif()
       message(STATUS "HAVE_OPENCV enabled")
       message(STATUS "opencv libraries: ${OpenCV_LIBS}")
       set(HAVE_OPENCV true)
       set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DHAVE_OPENCV")
     else()
       set (HAVE_OPENCV false)
     endif()
   endif()
else()
  set (HAVE_OPENCV false)
endif()

#查找mysql是否安装
find_package(MYSQL QUIET)
if(MYSQL_FOUND AND ENABLE_MYSQL)
    message(STATUS "找到mysqlclient库:\"${MYSQL_INCLUDE_DIR}\",ENABLE_MYSQL宏已打开")
    include_directories(${MYSQL_INCLUDE_DIR})
    include_directories(${MYSQL_INCLUDE_DIR}/mysql)
    add_definitions(-DENABLE_MYSQL)
    list(APPEND  3RDPARTY_LIBS ${MYSQL_LIBRARIES})
endif()

include_directories(${PROJECT_SOURCE_DIR}/3rdparty/rapidjson/include/)
include_directories(/usr/local/include/hv)
include_directories(${PROJECT_SOURCE_DIR}/modules/ProcessingIt/include/)
include_directories(${PROJECT_SOURCE_DIR}/modules/GetCenter/include/)
include_directories(${PROJECT_SOURCE_DIR}/modules/TaskCenter/include/)
include_directories(${PROJECT_SOURCE_DIR}/modules/Disposition/include/)

include_directories(${PROJECT_SOURCE_DIR}/framework/core/include/)
include_directories(${PROJECT_SOURCE_DIR}/framework/dataType/include/)


add_subdirectory(${PROJECT_SOURCE_DIR}/framework)


# 寻找当前目录下所有源文件
aux_source_directory(./source/src DIR_SRCS)

add_compile_options(-Wall -std=c++11 -O2 -g)

link_directories(${PROJECT_SOURCE_DIR}/lib)
link_directories(/usr/local/lib)

list(APPEND ALL_LINKER_LIBS mk_api ZLToolKit dl ${3RDPARTY_LIBS}  ${OpenCV_LIBS} pthread hv ins_core ins_va)

# 指定生成的目标
add_executable(main ${DIR_SRCS})

# 链接
target_link_libraries(main ${ALL_LINKER_LIBS})