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