cmake_minimum_required(VERSION 3.03)

project(keller_dv2ps VERSION 0.1)

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

option(
  BUILD_FRONTEND
  "If ON, build the default frontend executable"
  OFF
)

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

set(
  TCPIP_DRIVER_DIR
  $ENV{MIDASSYS}/drivers/bus/tcpip.cxx
  CACHE STRING
  "path to tcpip driver that should be used"
)

set(
  DRIVERS
  $ENV{MIDASSYS}/drivers/class/multi.cxx
)

set(SYS_LIBS
    pthread
    util
    rt
    dl
)

set(MIDAS_LIBS
    midas::mfe
    midas::midas
    midas::mscb
)

set(LIBS ${SYS_LIBS} ${MIDAS_LIBS})

################################################################################
## make tcpip library configurable
################################################################################

if(IS_DIRECTORY ${TCPIP_DRIVER_DIR})
  add_subdirectory(
      # TODO not sure, should it be a submodule? does it really make sense to
      # separate everything?
      ${TCPIP_DRIVER_DIR} ./bus/tcpip
  )

  set(
    LIBS
    ${LIBS}
    tcpip
  )
else()
  set(
    DRIVERS
    ${DRIVERS}
    ${TCPIP_DRIVER_DIR}
  )
endif()

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

add_library(
  keller_dv2ps
  device/keller_dv2ps.cxx
  ${DRIVERS}
)

set_property(
  TARGET
    keller_dv2ps
  PROPERTY
    CXX_STANDARD 11
)

target_include_directories(
  keller_dv2ps
  PUBLIC
    ${CMAKE_CURRENT_SOURCE_DIR}
  PRIVATE
    $ENV{MIDASSYS}/drivers
)

target_link_libraries(
  keller_dv2ps
  ${LIBS}
)

################################################################################
## Test Frontend
################################################################################

if(${BUILD_FRONTEND})

  add_executable(
    keller_dv2ps_fe
    frontend/keller_dv2ps_scfe.cxx
  )

  set_property(
    TARGET
      keller_dv2ps_fe
    PROPERTY
      CXX_STANDARD 11
  )

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

  target_link_libraries(
    keller_dv2ps_fe
    keller_dv2ps
  )

endif()
