# Copyright 2013, 2019 Free Software Foundation, Inc.
#
# This file is part of GNU Radio
#
# SPDX-License-Identifier: GPL-3.0-or-later
#

include(CMakeFindDependencyMacro)

# Allows us to use all .cmake files in this directory
list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_CURRENT_LIST_DIR}")

find_dependency(LOG4CPP)
find_dependency(MPLIB)

set(BOOST_REQUIRED_COMPONENTS
    date_time
    program_options
    filesystem
    system
    regex
    thread
)

if (NOT ENABLE_TESTING)
  set(ENABLE_TESTING @ENABLE_TESTING@ CACHE BOOL "Enable testing support")
endif()

if(ENABLE_TESTING)
  list(APPEND BOOST_REQUIRED_COMPONENTS unit_test_framework)
endif(ENABLE_TESTING)

find_dependency(Boost "@Boost_MAJOR_VERSION@.@Boost_MINOR_VERSION@.@Boost_SUBMINOR_VERSION@" COMPONENTS ${BOOST_REQUIRED_COMPONENTS})
find_dependency(Volk)
set(ENABLE_PYTHON @ENABLE_PYTHON@ CACHE BOOL "Enable Python & pybind11 Bindings")
if(${ENABLE_PYTHON})
  set(PYTHON_EXECUTABLE @PYTHON_EXECUTABLE@)
  include(GrPython)
endif()

include("${CMAKE_CURRENT_LIST_DIR}/gnuradio-pmtConfig.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/gnuradio-runtimeConfig.cmake")
cmake_policy(SET CMP0012 NEW)
cmake_policy(SET CMP0057 NEW)

# Propagate the enabledness of GRC:
# Since GRC doesn't contain proper CMake targets (yet?), we need to do this
# manually
set(ENABLE_GRC @ENABLE_GRC@ CACHE BOOL "Enable GRC features (export block YAML)")
if(@ENABLE_GRC@)
  set(GRC_BLOCKS_DIR        "@GRC_BLOCKS_DIR@")
endif()
# Same for a few "special" features.
set(GR_PERFORMANCE_COUNTERS @GR_PERFORMANCE_COUNTERS@)
set(GR_CTRLPORT             @GR_CTRLPORT@)
set(GR_RPCSERVER_ENABLED    @GR_RPCSERVER_ENABLED@)
set(ENABLE_CTRLPORT_THRIFT  @ENABLE_CTRLPORT_THRIFT@)
set(GR_RPCSERVER_THRIFT     @GR_RPCSERVER_THRIFT@)

# Propagate global options
set(GR_RUNTIME_DIR          "@GR_RUNTIME_DIR@")
set(GR_LIBRARY_DIR          "@GR_LIBRARY_DIR@")
set(GR_DATA_DIR             "@GR_DATA_DIR@")
set(GR_PKG_DATA_DIR         "@GR_PKG_DATA_DIR@")
set(GR_DOC_DIR              "@GR_DOC_DIR@")
set(GR_PKG_DOC_DIR          "@GR_PKG_DOC_DIR@")
set(GR_LIBEXEC_DIR          "@GR_LIBEXEC_DIR@")
set(GR_PKG_LIBEXEC_DIR      "@GR_PKG_LIBEXEC_DIR@")
set(GR_THEMES_DIR           "@GR_THEMES_DIR@")
set(GR_CONF_DIR             "@GR_CONF_DIR@")
set(SYSCONFDIR              "@SYSCONFDIR@")
set(GR_PREFSDIR             "@GR_PREFSDIR@")


# We check the requested components in the order given by the list below –
# ordering matters; we have module interdependencies.
set(GR_COMPONENTS
  blocks
  fec
  fft
  filter
  analog
  digital
  dtv
  audio
  channels
  qtgui
  trellis
  uhd
  video-sdl
  vocoder
  wavelet
  zeromq
  network
  soapy
  )

foreach(target ${GR_COMPONENTS})
  if (${target} IN_LIST Gnuradio_FIND_COMPONENTS)
    include("${CMAKE_CURRENT_LIST_DIR}/gnuradio-${target}Config.cmake")
  endif()
endforeach(target)
