set(input_definitions "")
set(input_sources file.hpp file.cpp)
set(input_libraries aer aestream_file)
set(input_include_directories "")

include(FetchContent)
include(GNUInstallDirs)

find_package(cppzmq QUIET)
if (${cppzmq_FOUND})
  message(STATUS "cppzmq found at ${cppzmq_DIR}")
  set(WITH_ZMQ ON PARENT_SCOPE)
  list(APPEND input_definitions WITH_ZMQ)
  list(APPEND input_libraries cppzmq)
  list(APPEND input_sources zmq.hpp zmq.cpp)
else()
  message(STATUS "ZMQ not found, Speck dependencies will not be built")
endif()

if (${USE_CAMERA})
  message(DEBUG "Camera option set to ON, building...")

  # Include libcaer
  find_package(libcaer CONFIG QUIET)
  if (${libcaer_FOUND})
    set(WITH_CAER ON PARENT_SCOPE)
    list(APPEND input_definitions WITH_CAER)
    list(APPEND input_sources inivation.hpp inivation.cpp )
    list(APPEND input_libraries libcaer::caer)
    message(STATUS "Inivation dependencies (libcaer) found at ${libcaer_DIR}")
  endif()

  # Include MetavisionSDK
  find_package(MetavisionSDK COMPONENTS core driver QUIET)
  if (${MetavisionSDK_FOUND})
    list(APPEND input_definitions WITH_METAVISION)
    list(APPEND input_sources prophesee.hpp prophesee.cpp)
    list(APPEND input_libraries MetavisionSDK::core MetavisionSDK::driver)
  endif()
else()
  message(STATUS "Camera option set to OFF")
endif()

# Create the input library
add_library(aestream_input STATIC ${input_sources})
target_link_libraries(aestream_input ${input_libraries})
target_compile_definitions(aestream_input PUBLIC ${input_definitions})
target_include_directories(aestream_input PUBLIC ${input_include_directories})
target_compile_options(aestream_input PRIVATE "-fPIC")