project(
    'phosphor-net-ipmid', 'cpp',
    version : '1.0.0',
    meson_version: '>=1.1.1',
    default_options: [
        'warning_level=3',
        'werror=true',
        'cpp_std=c++23',
        'buildtype=debugoptimized',
        'b_lto=true',
    ]
)

conf_data = configuration_data()
conf_data.set('RMCP_PING', get_option('rmcp_ping').enabled())
conf_data.set('PAM_AUTHENTICATE', get_option('pam_authenticate').enabled())

configure_file(output: 'config.h',
    configuration: conf_data
)

sdbusplus_dep = dependency('sdbusplus')
phosphor_dbus_interfaces_dep = dependency('phosphor-dbus-interfaces')
phosphor_logging_dep = dependency('phosphor-logging')
libsystemd_dep = dependency('libsystemd')
libcrypto_dep = dependency('libcrypto')
ipmid_dep = dependency('libipmid')
userlayer_dep = dependency('libuserlayer')
channellayer_dep = dependency('libchannellayer')

# Project Arguments
cpp = meson.get_compiler('cpp')
if cpp.has_header('CLI/CLI.hpp')
    cli11_dep = declare_dependency()
else
    cli11_dep = dependency('CLI11')
endif

add_project_arguments(
  cpp.get_supported_arguments([
    '-DBOOST_ERROR_CODE_HEADER_ONLY',
    '-DBOOST_SYSTEM_NO_DEPRECATED',
    '-DBOOST_COROUTINES_NO_DEPRECATION_WARNING',
    '-DBOOST_ASIO_DISABLE_THREADS',
    '-DBOOST_ALL_NO_LIB',
  ]),
  language : 'cpp')

deps = [
    cli11_dep,
    ipmid_dep,
    userlayer_dep,
    channellayer_dep,
    libcrypto_dep,
    libsystemd_dep,
    phosphor_dbus_interfaces_dep,
    phosphor_logging_dep,
    sdbusplus_dep,
]

sources = [
    'auth_algo.cpp',
    'sessions_manager.cpp',
    'message_parsers.cpp',
    'message_handler.cpp',
    'command_table.cpp',
    'command/channel_auth.cpp',
    'command/guid.cpp',
    'command/open_session.cpp',
    'command/rakp12.cpp',
    'command/rakp34.cpp',
    'command/session_cmds.cpp',
    'comm_module.cpp',
    'main.cpp',
    'integrity_algo.cpp',
    'crypt_algo.cpp',
    'sd_event_loop.cpp',
    'sol/sol_manager.cpp',
    'sol/sol_context.cpp',
    'command/sol_cmds.cpp',
    'command/payload_cmds.cpp',
    'sol_module.cpp',
]

executable(
    'netipmid',
    sources,
    implicit_include_directories: true,
    include_directories: ['command', 'sol'],
    dependencies: deps,
    install: true,
    install_dir: get_option('bindir')
)

systemd = dependency('systemd')
systemd_system_unit_dir = systemd.get_variable(
        'systemdsystemunitdir',
        pkgconfig_define: ['prefix', get_option('prefix')])

configure_file(input: 'phosphor-ipmi-net@.service',
                output: 'phosphor-ipmi-net@.service',
                copy: true,
                install_dir: systemd_system_unit_dir)

configure_file(input: 'phosphor-ipmi-net@.socket',
                output: 'phosphor-ipmi-net@.socket',
                copy: true,
                install_dir: systemd_system_unit_dir)

build_tests = get_option('tests')
if not build_tests.disabled()
  subdir('test')
endif
