set(PACKAGE data_converters-ngpipes-cfradials)

message(STATUS ${PACKAGE})

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

# Data-manager is optional - only required when BUILD_DM=ON
if(BUILD_DM)
  find_package(vaisala-fire-data-manager REQUIRED)
endif()

set(PIPE_NAMES cfrnc2iris pb2cfrnc cfrnc2pb)
set(PIPE_NAMES_INPUT_DTO cfrnc2pb_input_dto)
set(SCRIPTS cfrnc2iris_focus.sh cfrnc_leosphere_fix.sh cfrnc_input_watchdog.sh)
set(SCRIPTS_INPUT_DTO cfrnc2iris_focus.sh cfrnc_leosphere_fix.sh cfrnc2pb_input_dto.sh cfrnc_input_watchdog.sh)
set(CONF_FILES cfrnc2iris.conf pb2cfrnc.conf cfrnc2pb.conf)
set(CONF_FILES_INPUT_DTO cfrnc2pb_input_dto.conf)
set(SERVICE_FILE cfrnc-input-watchdog.service)

include_directories(
                ${CMAKE_SOURCE_DIR}/ngpipes
                ${IRIS_INCLUDE}/common-dto)

if(BUILD_DM)
  include_directories(
                ${CMAKE_SOURCE_DIR}/ngpipes/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_input_dto cfrnc2pb_input_dto.cpp cfr2file.cpp cfr2sweep.cpp cfr2file.hpp cfr2sweep.hpp cfr2field.hpp volume_desc.hpp volume_state.hpp ptime_strings.hpp cfr1data.hpp cfr1data.cpp)
target_link_libraries(cfrnc2pb_input_dto vaisala-wr-input-dto::input-dto siglog ${Boost_LIBRARIES} m z lz4 ${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 BUILD_DM=ON
if(BUILD_DM)
  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 cfrnc2dm to netcdf component
  set(PIPE_NAMES ${PIPE_NAMES} cfrnc2dm)
  set(CONF_FILES ${CONF_FILES} cfrnc2dm.conf)
else()
  message(STATUS "Skipping cfrnc2dm binary (BUILD_DM=OFF)")
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)

install(TARGETS ${PIPE_NAMES_INPUT_DTO} DESTINATION ${IRIS_PIPES} COMPONENT netcdf-input-dto)
install(PROGRAMS ${SCRIPTS_INPUT_DTO} DESTINATION ${IRIS_PIPES} COMPONENT netcdf-input-dto)
install(FILES ${CONF_FILES_INPUT_DTO} DESTINATION ${IRIS_CONFIG_TMPL} COMPONENT netcdf-input-dto)
install(FILES ${SERVICE_FILE} DESTINATION ${IRIS_SYSCONFDIR} COMPONENT netcdf-input-dto)