blob: c5d05e3685672a83299d648bb931c2e43d78290c [file] [log] [blame]
project(
'phosphor-objmgr',
'c',
'cpp',
default_options: [
'buildtype=debugoptimized',
'cpp_std=c++23',
'warning_level=3',
'werror=true',
],
license: 'Apache-2.0',
meson_version: '>=1.1.1',
version: '1.0',
)
cxx = meson.get_compiler('cpp')
if cxx.has_header('CLI/CLI.hpp')
cli11_dep = declare_dependency()
else
cli11_dep = dependency('cli11')
endif
phosphor_logging = dependency('phosphor-logging')
phosphor_dbus_interfaces = dependency('phosphor-dbus-interfaces')
sdbusplus = dependency('sdbusplus')
boost = dependency(
'boost',
version: '>=1.79.0',
required: false,
include_type: 'system',
)
if not boost.found()
subproject('boost', required: false)
boost_inc = include_directories('subprojects/boost_1_79_0/', is_system: true)
boost = declare_dependency(include_directories: boost_inc)
boost = boost.as_system('system')
endif
add_project_arguments(
['-DBOOST_ASIO_DISABLE_THREADS', '-DBOOST_ASIO_NO_DEPRECATED'],
language: 'cpp',
)
if get_option('buildtype').startswith('debug')
add_project_arguments('-DMAPPER_ENABLE_DEBUG', language: 'cpp')
endif
if get_option('tests').allowed()
gtest = dependency('gtest', main: true, disabler: true, required: false)
gmock = dependency('gmock', disabler: true, required: false)
if not gtest.found() or not gmock.found()
gtest_proj = import('cmake').subproject('googletest', required: false)
if gtest_proj.found()
gtest = declare_dependency(
dependencies: [
dependency('threads'),
gtest_proj.dependency('gtest'),
gtest_proj.dependency('gtest_main'),
],
)
gmock = gtest_proj.dependency('gmock')
else
assert(
not get_option('tests').allowed(),
'Googletest is required if tests are enabled',
)
endif
endif
subdir('src/test')
subdir('libmapper/test')
endif
install_headers('libmapper/mapper.h')
libmapper = library(
'mapper',
'libmapper/mapper.c',
dependencies: [dependency('libsystemd')],
gnu_symbol_visibility: 'hidden',
version: meson.project_version(),
install: true,
)
mapper_dep = declare_dependency(
link_with: libmapper,
include_directories: include_directories('libmapper'),
dependencies: [dependency('libsystemd')],
)
import('pkgconfig').generate(
name: 'libmapper',
description: 'OpenBMC service discovery utility library',
version: meson.project_version(),
libraries: libmapper,
)
executable(
'mapper',
'libmapper/app.c',
link_with: libmapper,
dependencies: [dependency('libsystemd')],
install: true,
)
mapperx = executable(
'mapperx',
[
'src/main.cpp',
'src/processing.cpp',
'src/associations.cpp',
'src/handler.cpp',
],
dependencies: [
boost,
dependency('libsystemd'),
phosphor_dbus_interfaces,
phosphor_logging,
sdbusplus,
dependency('threads'),
dependency('tinyxml2', default_options: ['tests=false']),
],
install: true,
install_dir: join_paths(
get_option('prefix'),
get_option('libexecdir'),
meson.project_name(),
),
)
meson.override_find_program('mapperx', mapperx)
systemd_system_unit_dir = dependency('systemd').get_variable(
'systemdsystemunitdir',
)
conf = configuration_data()
conf.set('BINDIR', join_paths(get_option('prefix'), get_option('bindir')))
conf.set(
'LIBEXECDIR',
join_paths(get_option('prefix'), get_option('libexecdir')),
)
unit_files = [
'xyz.openbmc_project.ObjectMapper.service',
'mapper-subtree-remove@.service',
'mapper-wait@.service',
]
foreach u : unit_files
configure_file(
configuration: conf,
input: join_paths('src/systemd', u) + '.in',
install: true,
install_dir: systemd_system_unit_dir,
output: u,
)
endforeach
dbus_system_bus_services_dir = dependency('dbus-1').get_variable(
'system_bus_services_dir',
pkgconfig_define: ['prefix', get_option('prefix')],
)
install_data(
'src/dbus/xyz.openbmc_project.ObjectMapper.service',
install_dir: dbus_system_bus_services_dir,
)
install_data(
'src/dbus/xyz.openbmc_project.ObjectMapper.conf',
install_dir: get_option('datadir') / 'dbus-1' / 'system.d',
)
if not get_option('unit-failure-monitor').disabled()
executable(
'phosphor-unit-failure-monitor',
['fail-monitor/main.cpp', 'fail-monitor/monitor.cpp'],
dependencies: [cli11_dep, phosphor_logging],
install: true,
)
endif