cmake_minimum_required(VERSION 3.20)

project(uwave VERSION 0.1)

add_compile_options(
  -Wall
  -Wformat=2
  -Wno-format-nonliteral
  -Wno-strict-aliasing
  -Wuninitialized
  -Wno-unused-function
)

set(CMAKE_PREFIX_PATH "$ENV{MIDASSYS}")
find_package(Midas REQUIRED)

################################################################################
## Device Library
################################################################################

add_library(
  uwave
  device/uWave.cxx
  $ENV{MIDASSYS}/drivers/bus/tcpip.cxx
)

set_property(
  TARGET
    uwave
  PROPERTY
    CXX_STANDARD 11
)

target_include_directories(
  uwave
  PUBLIC
    ${CMAKE_CURRENT_SOURCE_DIR}
)

target_link_libraries(
  uwave
    midas::midas
    midas::mfe
)

################################################################################
## Default Frontend Builder
################################################################################

set(_DEFAULT_UWAVE_FRONTEND_DIR "${CMAKE_CURRENT_LIST_DIR}" CACHE INTERNAL "")

function(default_uwave_frontend F_TARGET F_NAME F_EVENT_ID)

  add_executable(
    ${F_TARGET}
    "${_DEFAULT_UWAVE_FRONTEND_DIR}/frontend/uWave_scfe.cxx"
    $ENV{MIDASSYS}/drivers/class/multi.cxx
  )

  target_compile_definitions(${F_TARGET} PRIVATE FRONTEND_NAME="${F_NAME}")
  target_compile_definitions(${F_TARGET} PRIVATE FRONTEND_ID=${F_EVENT_ID})

  set_property(
    TARGET
      ${F_TARGET}
    PROPERTY
      CXX_STANDARD 11
  )

  target_include_directories(
    ${F_TARGET}
    PRIVATE
      $ENV{MIDASSYS}/drivers
  )

  target_link_libraries(
    ${F_TARGET}
    uwave
  )

  install(
    TARGETS
      ${F_TARGET}
    RUNTIME DESTINATION bin
  )

endfunction()
