cmake_minimum_required(VERSION 3.20)

project(vaisala-wr-rda)
set(PROJECT_DESCRIPTION "Vaisala Weather Radar RDA")

enable_language(C CXX)

# "rda" can be a standalone project or a part of the big "sigmet" project,
# in which case common.cmake might be included already
if (NOT COMMON_INCLUDED)
    include(${CMAKE_CURRENT_SOURCE_DIR}/shared/common.cmake)
    include(${CMAKE_CURRENT_SOURCE_DIR}/shared/ProjectInfo.cmake)
    include(${CMAKE_CURRENT_SOURCE_DIR}/shared/VersionInfo.cmake)
    include(${CMAKE_CURRENT_SOURCE_DIR}/shared/CreatePackageRda.cmake)
    include(${CMAKE_CURRENT_SOURCE_DIR}/shared/EnableCCache.cmake)
    include(${CMAKE_CURRENT_SOURCE_DIR}/shared/Uninstall.cmake)
    include(${CMAKE_CURRENT_SOURCE_DIR}/shared/InstallSymlink.cmake)
    include(${CMAKE_SHARED_DIR}/FindQwt.cmake)
endif (NOT COMMON_INCLUDED)

if (DEFINED BASE_SOURCE_DIR)
    message("The \"base\" source is available in \"rda\" tree.")
    message("Adding ${BASE_SOURCE_DIR} to include path.")
    include_directories(${BASE_SOURCE_DIR}/include)
else (DEFINED BASE_SOURCE_DIR)
    message("The \"base\" source is not available in \"rda\" tree.")
    message("Adding ${IRIS_INCLUDE} to include path.")
    include_directories(${IRIS_INCLUDE})
    message("Adding ${IRIS_LIB} to lib path.")
    link_directories(${IRIS_LIB})
endif (DEFINED BASE_SOURCE_DIR)

# Use Intel IPP include files and libs
set(IPP_ROOT /opt/intel/oneapi/ipp/latest)
set(IPP_SHARED TRUE)
find_package(IPP REQUIRED)
include_directories(${IPP_ROOT}/include/ipp)

# to use GNU standard installation directories
include(GNUInstallDirs)

ProjectInfo_Print()
ProjectInfo_AddDefinitions()
VersionInfo_Get()
VersionInfo_Print()
EnableCCache()
VersionInfo_AddDefinitions()
set(PROJECT_GIT_SHORT_VERSION "10.4.0")
set(CONVERTERS_IRIS_VER "10.4.0")
CreatePackage()
if (NOT COMMON_ROOT)
    Uninstall()
endif (NOT COMMON_ROOT)

set(API_DATA_SCHEMAS_SRC_DIR ${CMAKE_CURRENT_LIST_DIR}/api_data_schemas)

# Where to put generated files
set(GENERATED_ROOT_DIR ${CMAKE_BINARY_DIR}/api_data_schemas)

# Codegeneration options
option(GRPC_USE_SYSTEM "Use system gRPC" ON)
option(ENABLE_LANG_CPP "Build C++ bindings" ON)
option(ENABLE_LANG_PYTHON "Build Python bindings" OFF)
option(ENABLE_API_TESTS "Build API Tests" OFF)
if (NOT GRPC_USE_SYSTEM)
    set(GRPC_FETCHCONTENT ON)
    message("The GRPC_FETCHCONTENT is set to ON.")
else ()
    message("The GRPC_USE_SYSTEM is set to ON.")
endif()

if (JSON_PREGENERATED_HEADERS)
endif()

include_directories(
    ${GENERATED_ROOT_DIR}/cpp
    )

if (GRPC_FETCHCONTENT)
    FetchContent_GetProperties(grpc)
endif()

include(CheckIncludeFile)
check_include_file("gpib/ib.h" HAVE_GPIB_LIBRARY)
if (HAVE_GPIB_LIBRARY)
    add_compile_definitions(HAVE_GPIB_LIBRARY=1)
    link_libraries(gpib)
endif()

###############################################################################

# Install ld configuration for intel-ipp libraries
install(
  FILES ${CMAKE_CURRENT_SOURCE_DIR}/intel-ipp.conf
  DESTINATION "/etc/ld.so.conf.d"
  COMPONENT base )

###############################################################################

# Install the license
install(
  FILES ${CMAKE_CURRENT_SOURCE_DIR}/shared/LICENSE
  DESTINATION "/usr/share/doc/vaisala"
  COMPONENT base )

###############################################################################

include_directories(
        /usr/include/tirpc
        ${CMAKE_CURRENT_SOURCE_DIR}/include)

add_subdirectory(rdasubs_lib)
add_subdirectory(pcicards)
add_subdirectory(softplane)
add_subdirectory(tsapi_lib)
add_subdirectory(dsp)
add_subdirectory(rcp8)
add_subdirectory(rcp8sim)
add_subdirectory(rdautils)
add_subdirectory(ts)
add_subdirectory(jamplayer)

# Unit test options
option(ENABLE_TESTS "Build unit test suite" ON)
if (ENABLE_TESTS)
    enable_testing()

    set(INSTALL_GTEST OFF)

endif()
