set(PACKAGE data_converters-ngpipes-cfradials)

message(STATUS ${PACKAGE})

include(FindProtobuf)
find_package(Protobuf REQUIRED)
find_package(vaisala-wr-common-dto REQUIRED)
find_package(spdlog REQUIRED)

# Data-manager is optional - only required when VAISALA_FOCUS_BUILD=true
if(VAISALA_FOCUS_BUILD STREQUAL "true")
  find_package(gRPC REQUIRED)
  find_package(vaisala-fire-data-manager REQUIRED)
endif()

set(PIPE_NAMES cfrnc2iris pb2cfrnc cfrnc2pb)
set(PIPE_NAMES_DM cfrnc2dm)
set(SCRIPTS cfrnc2iris_focus.sh cfrnc_leosphere_fix.sh cfrnc_watchdog.sh iris2cfrnc.sh)
set(CONF_FILES cfrnc2iris.conf pb2cfrnc.conf cfrnc2pb.conf)
set(CONF_FILES_DM cfrnc2dm.conf)
set(SERVICE_FILE cfrnc-watchdog.service)

include_directories(
                ${CMAKE_CURRENT_SOURCE_DIR}/..
                ${IRIS_INCLUDE}/common-dto)

if(VAISALA_FOCUS_BUILD STREQUAL "true")
  include_directories(
                ${CMAKE_CURRENT_SOURCE_DIR}/../data_manager_lib
                ${IRIS_INCLUDE}/data-manager)
endif()

set(CMAKE_INCLUDE_CURRENT_DIR ON)

link_libraries(wrdata sws-iris rscan-iris dl netcdf_c++4 netcdf boost_regex boost_date_time
        siglog boost_program_options boost_system boost_filesystem m user-iris himath-iris dsp-iris antenna-iris config-iris exthdr-iris misc-iris spdlog::spdlog)

add_executable(cfrad_read cfrad_read.cpp cfr2file.cpp cfr2sweep.cpp cfr2file.hpp cfr2sweep.hpp cfr2field.hpp ptime_strings.hpp cfr1data.hpp cfr1data.cpp)
add_executable(cfrnc2iris cfrnc2iris.cpp cfr2file.cpp cfr2sweep.cpp cfr2file.hpp cfr2sweep.hpp cfr2field.hpp volume_desc.hpp volume_state.hpp ptime_strings.hpp cfr1data.hpp cfr1data.cpp)

add_executable(pb2cfrnc pb2cfrnc.cpp)
target_link_libraries(pb2cfrnc vaisala-wr-common-dto::common-dto m z lz4 ${Boost_LIBRARIES} ${PROTOBUF_LIBRARIES})

add_executable(cfrnc2pb cfrnc2pb.cpp cfr2file.cpp cfr2sweep.cpp cfr2file.hpp cfr2sweep.hpp cfr2field.hpp ptime_strings.hpp volume_desc.hpp volume_state.hpp cfr1data.hpp cfr1data.cpp )
target_link_libraries(cfrnc2pb vaisala-wr-common-dto::common-dto m z lz4 ${Boost_LIBRARIES} ${PROTOBUF_LIBRARIES} siglog)

# Data-manager dependent binary - only build when VAISALA_FOCUS_BUILD=true
if(VAISALA_FOCUS_BUILD STREQUAL "true")
  add_executable(cfrnc2dm cfrnc2pb.cpp cfr2file.cpp cfr2sweep.cpp cfr2file.hpp cfr2sweep.hpp cfr2field.hpp ptime_strings.hpp volume_desc.hpp volume_state.hpp cfr1data.hpp cfr1data.cpp)
  set_target_properties(cfrnc2dm PROPERTIES COMPILE_FLAGS "-DINTERFACE_TO_DM")
  target_link_libraries(cfrnc2dm vaisala-wr-common-dto::common-dto data-manager data-manager-iris m z lz4
          ${Boost_LIBRARIES} ${PROTOBUF_LIBRARIES} siglog)
  
  install(TARGETS ${PIPE_NAMES_DM} DESTINATION ${IRIS_PIPES} COMPONENT netcdf-dm)
  install(FILES ${CONF_FILES_DM} DESTINATION ${IRIS_CONFIG_TMPL} COMPONENT netcdf-dm)
  else()
  message(STATUS "Skipping cfrnc2dm binary (VAISALA_FOCUS_BUILD=false)")
endif()

install(TARGETS ${PIPE_NAMES} DESTINATION ${IRIS_PIPES} COMPONENT netcdf)
install(PROGRAMS ${SCRIPTS} DESTINATION ${IRIS_PIPES} COMPONENT netcdf)
install(FILES ${CONF_FILES} DESTINATION ${IRIS_CONFIG_TMPL} COMPONENT netcdf)
install(FILES ${SERVICE_FILE} DESTINATION ${IRIS_SYSCONFDIR} COMPONENT netcdf)