project('rded', ['c', 'cpp'],
        version: '0.1', meson_version: '>=1.1.1',
        default_options: [
          'warning_level=3',
          'werror=true',
          'cpp_std=c++23',
          'c_std=c18',
        ])

sources = [
  'rded.cpp',
  'interface/pldm_interface.cpp',
  'interface/pldm_rde.cpp',
  'util/matcher/rde_match_handler.cpp',
  'util/state_machine/discovery/base/base_disc_state_machine.cpp',
]

cpp = meson.get_compiler('cpp')
phosphor_dbus_interfaces = dependency('phosphor-dbus-interfaces')
sdbusplus = dependency('sdbusplus')
sdeventplus = dependency('sdeventplus')
stdplus = dependency('stdplus')
phosphor_logging_dep = dependency('phosphor-logging')

if cpp.has_header('nlohmann/json.hpp')
  nlohmann_json = declare_dependency()
else
  nlohmann_json = dependency('nlohmann_json')
endif

headers = [
  '.',
  'util',
  'interface',
  'util/state_machine',
  'util/state_machine/discovery/']

requester_inc = include_directories(headers)
req_src = declare_dependency(include_directories:requester_inc)

libbej_dep = dependency('libbej')
libpldm_dep = dependency('libpldm')

if get_option('tests').allowed()
  subdir('tests')
endif

boost = dependency(
  'boost',
  version : '>=1.82.0',
  required : false,
  include_type: 'system'
)

if not boost.found()
  boost = subproject('boost', required: true).get_variable('boost_dep')
  boost = boost.as_system('system')
endif

boost_compile_args = [
  '-DBOOST_ASIO_DISABLE_THREADS',
  '-DBOOST_ALL_NO_LIB',
  '-DBOOST_SYSTEM_NO_DEPRECATED',
  '-DBOOST_ERROR_CODE_HEADER_ONLY',
  '-DBOOST_COROUTINES_NO_DEPRECATION_WARNING',
]

boost_dep = declare_dependency(
    dependencies: dependency('boost',
    modules: ['coroutine', 'context'],
    disabler: true,
    required: false
  ),
  compile_args: boost_compile_args)

deps = [
  libpldm_dep,
  libbej_dep,
  boost_dep,
  nlohmann_json,
  phosphor_dbus_interfaces,
  sdbusplus,
  sdeventplus,
  stdplus,
  req_src,
]

executable(
  'rded',
  sources,
  implicit_include_directories: false,
  dependencies: deps,
  install: true,
  install_dir: get_option('bindir'))

systemd_dep = dependency('systemd')
if systemd_dep.found()
  configure_file(
    copy: true,
    input: 'service_files/rded.service',
    install: true,
    install_dir: systemd_dep.get_variable('systemdsystemunitdir'),
    output: 'rded.service',
  )
endif
