blob: 7e75f8345886038bfb7074764f5bcdb5d215d5ba [file] [log] [blame]
project(
'phosphor-snmp',
'cpp',
version: '1.0.0',
meson_version: '>=1.1.1',
default_options: [
'warning_level=3',
'werror=true',
'cpp_std=c++23',
'buildtype=debugoptimized',
],
)
conf_data = configuration_data()
conf_data.set_quoted('BUSNAME_NETWORK_SNMP', 'xyz.openbmc_project.Network.SNMP')
conf_data.set_quoted(
'OBJ_NETWORK_SNMP',
'/xyz/openbmc_project/network/snmp/manager',
)
conf_data.set_quoted(
'SNMP_CONF_PERSIST_PATH',
'/var/lib/phosphor-snmp/managers/',
)
conf_data.set('CLASS_VERSION', 1)
sdbusplus_dep = dependency('sdbusplus')
phosphor_dbus_interfaces_dep = dependency('phosphor-dbus-interfaces')
phosphor_logging_dep = dependency('phosphor-logging')
libsystemd_dep = dependency('libsystemd')
netsnmp_dep = dependency('netsnmp')
libcrypto_dep = dependency('libcrypto')
cpp = meson.get_compiler('cpp')
# Get Cereal dependency.
cereal_dep = dependency('cereal', required: false)
has_cereal = cpp.has_header_symbol(
'cereal/cereal.hpp',
'cereal::specialize',
dependencies: cereal_dep,
required: false,
)
if not has_cereal
cereal_opts = import('cmake').subproject_options()
cereal_opts.add_cmake_defines(
{'BUILD_TESTS': 'OFF', 'SKIP_PERFORMANCE_COMPARISON': 'ON'},
)
cereal_proj = import('cmake').subproject(
'cereal',
options: cereal_opts,
required: false,
)
assert(cereal_proj.found(), 'cereal is required')
cereal_dep = cereal_proj.dependency('cereal')
endif
snmp_headers = include_directories('.')
deps = [
libsystemd_dep,
phosphor_dbus_interfaces_dep,
phosphor_logging_dep,
sdbusplus_dep,
cereal_dep,
]
sources = [
'snmp_main.cpp',
'snmp_conf_manager.cpp',
'snmp_client.cpp',
'snmp_util.cpp',
'snmp_serialize.cpp',
]
configure_file(output: 'config.h', configuration: conf_data)
executable(
'phosphor-network-snmpconf',
sources,
implicit_include_directories: true,
dependencies: deps,
install: true,
install_dir: get_option('bindir'),
)
libsnmp_deps = [
sdbusplus_dep,
phosphor_logging_dep,
phosphor_dbus_interfaces_dep,
netsnmp_dep,
libcrypto_dep,
]
libsnmp_sources = files('snmp_notification.cpp', 'snmp_util.cpp')
libsnmp_lib = library(
'snmp',
libsnmp_sources,
include_directories: snmp_headers,
implicit_include_directories: false,
dependencies: libsnmp_deps,
version: meson.project_version(),
install: true,
)
phosphor_snmp_dep = declare_dependency(
include_directories: snmp_headers,
link_with: libsnmp_lib,
)
import('pkgconfig').generate(
libsnmp_lib,
name: meson.project_name(),
version: meson.project_version(),
libraries: sdbusplus_dep,
description: 'Phosphor snmp utilities',
)
install_headers('snmp.hpp', 'snmp_notification.hpp', subdir: '.')
build_tests = get_option('tests')
if not build_tests.disabled()
subdir('test')
endif