cmake_minimum_required(VERSION 3.0.0)
project(dual_setup)

add_compile_options(-std=c++14)

set(SPINNAKER_INCLUDE_DIR "/usr/include/spinnaker" CACHE PATH "Spinnaker Include Directory")
set(SPINNAKER_LIB "/usr/lib/libSpinnaker.so")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")

if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm")
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfp16-format=ieee")
    set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfp16-format=ieee")
endif (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm")

set(PROPHESEE_DRIVER_INCLUDE_DIRS "/usr/include/metavision/sdk" "/usr/include/metavision/hal" )

set(HDF5_FIND_DEBUG 1)
find_package(HDF5 COMPONENTS CXX REQUIRED)
include_directories(${HDF5_INCLUDE_DIR})
set(common_libraries ${common_libraries} ${HDF5_CXX_LIBRARIES})

include_directories(${PROPHESEE_DRIVER_INCLUDE_DIRS})

find_package(Boost COMPONENTS program_options filesystem REQUIRED)
set(common_libraries ${common_libraries} ${Boost_LIBRARIES})

find_package(OpenCV COMPONENTS core highgui REQUIRED)
set(common_libraries ${common_libraries} ${OpenCV_LIBS})
include_directories(${OpenCV_INCLUDE_DIRS})

find_package(Threads REQUIRED)
set(common_libraries ${common_libraries} ${CMAKE_THREAD_LIBS_INIT})

find_package(catkin_simple REQUIRED)
find_package(catkin REQUIRED)


catkin_simple()

include_directories(
        include/${PROJECT_NAME}
        ${catkin_INCLUDE_DIRS}
        ${SPINNAKER_INCLUDE_DIR}
        include
)

set(SOURCES_RECORDER
        src/record.cpp
        src/recorder.cpp
)

set(HEADERS_RECORDER
        include/recorder.h
)

set(SOURCES_EXTRACTOR
        src/extract.cpp
        src/extractor.cpp
)

set(HEADERS_EXTRACTOR
        include/extractor.h
)

# make the executable
cs_add_executable(record ${SOURCES_RECORDER} ${HEADERS_RECORDER})
cs_add_executable(extract ${SOURCES_EXTRACTOR} ${HEADER_EXTRACTOR})

# link the executable to the necessary libs
target_link_libraries(record
        ${catkin_LIBRARIES} ${SPINNAKER_LIB} ${common_libraries}
        /usr/lib/libmetavision_sdk_core.so
        /usr/lib/libmetavision_sdk_driver.so
)

target_link_libraries(extract
        ${catkin_LIBRARIES} ${SPINNAKER_LIB} ${common_libraries}
        /usr/lib/libmetavision_sdk_core.so
        /usr/lib/libmetavision_sdk_driver.so
)

cs_install()
cs_export()

