blob: 9cb3e69915dc730c317b5331f5ee7ef5febad263 [file] [log] [blame]
Brad Bishop0aa15902019-05-08 21:30:01 -04001project(
2 'phosphor-objmgr',
Patrick Williams2a1ef012025-03-03 11:09:20 -05003 'c',
4 'cpp',
Brad Bishop0aa15902019-05-08 21:30:01 -04005 default_options: [
Brad Bishopd6aa5522022-05-31 19:23:48 -04006 'buildtype=debugoptimized',
Patrick Williams26ed9802023-07-12 11:16:09 -05007 'cpp_std=c++23',
Brad Bishop0aa15902019-05-08 21:30:01 -04008 'warning_level=3',
9 'werror=true',
10 ],
11 license: 'Apache-2.0',
Patrick Williams26ed9802023-07-12 11:16:09 -050012 meson_version: '>=1.1.1',
Brad Bishop0aa15902019-05-08 21:30:01 -040013 version: '1.0',
14)
15
Brad Bishop8f809dc2025-07-15 13:18:56 -040016# Enable debugging for debug builds
17if get_option('buildtype').startswith('debug')
18 add_project_arguments('-DMAPPER_ENABLE_DEBUG', language: 'cpp')
19endif
20
21# Boost configuration
22add_project_arguments(
23 ['-DBOOST_ASIO_DISABLE_THREADS', '-DBOOST_ASIO_NO_DEPRECATED'],
24 language: 'cpp',
25)
26
Brad Bishop1d706372025-07-09 16:39:15 -040027cli11 = dependency('CLI11', required: false, include_type: 'system')
28if not cli11.found()
29 cli11_proj = subproject('cli11', required: true)
30 cli11 = cli11_proj.get_variable('CLI11_dep')
31 cli11 = cli11.as_system('system')
Brad Bishop8c243622022-07-11 11:21:50 -040032endif
Brad Bishop1d706372025-07-09 16:39:15 -040033
Patrick Williamsf814e5b2022-03-21 11:14:17 -050034phosphor_logging = dependency('phosphor-logging')
Brad Bishop5962db52022-05-16 21:04:05 -040035phosphor_dbus_interfaces = dependency('phosphor-dbus-interfaces')
Patrick Williamsf814e5b2022-03-21 11:14:17 -050036sdbusplus = dependency('sdbusplus')
Patrick Williams2a1ef012025-03-03 11:09:20 -050037boost = dependency(
38 'boost',
Brad Bishope833e0b2025-07-15 09:51:44 -040039 version: '>=1.87.0',
Patrick Williams2a1ef012025-03-03 11:09:20 -050040 required: false,
41 include_type: 'system',
42)
Ed Tanous26ed4a12022-07-13 13:46:08 -070043if not boost.found()
Brad Bishope833e0b2025-07-15 09:51:44 -040044 cmake = import('cmake')
45 opt = cmake.subproject_options()
46 boost_libs = ['asio', 'callable_traits']
47 opt.add_cmake_defines({'BOOST_INCLUDE_LIBRARIES': ';'.join(boost_libs)})
48
49 boost_deps = []
50 boost_proj = cmake.subproject('boost', required: true, options: opt)
51 foreach boost_lib : boost_libs
52 boost_lib_instance = boost_proj.dependency('boost_' + boost_lib).as_system()
53 boost_deps += [boost_lib_instance]
54 endforeach
55 boost = declare_dependency(dependencies: boost_deps)
Ed Tanous26ed4a12022-07-13 13:46:08 -070056endif
Brad Bishopd6aa5522022-05-31 19:23:48 -040057
Patrick Williamsec874072023-11-29 06:45:19 -060058if get_option('tests').allowed()
Brad Bishopf3fe0db2025-07-09 16:33:11 -040059 gtest = dependency(
60 'gtest_main',
61 main: true,
62 version: '>=1.15.2',
63 required: true,
64 )
65 gmock = dependency('gmock', required: true)
Brad Bishop0aa15902019-05-08 21:30:01 -040066 subdir('src/test')
67 subdir('libmapper/test')
68endif
69
Brad Bishop0aa15902019-05-08 21:30:01 -040070install_headers('libmapper/mapper.h')
71
72libmapper = library(
73 'mapper',
74 'libmapper/mapper.c',
Patrick Williams2a1ef012025-03-03 11:09:20 -050075 dependencies: [dependency('libsystemd')],
Brad Bishop0aa15902019-05-08 21:30:01 -040076 gnu_symbol_visibility: 'hidden',
77 version: meson.project_version(),
Patrick Williams2a1ef012025-03-03 11:09:20 -050078 install: true,
79)
Brad Bishop0aa15902019-05-08 21:30:01 -040080
Patrick Williamsd4887752022-06-16 11:29:08 -050081mapper_dep = declare_dependency(
82 link_with: libmapper,
83 include_directories: include_directories('libmapper'),
Patrick Williams2a1ef012025-03-03 11:09:20 -050084 dependencies: [dependency('libsystemd')],
Patrick Williamsd4887752022-06-16 11:29:08 -050085)
86
Brad Bishop0aa15902019-05-08 21:30:01 -040087import('pkgconfig').generate(
88 name: 'libmapper',
89 description: 'OpenBMC service discovery utility library',
90 version: meson.project_version(),
Patrick Williams2a1ef012025-03-03 11:09:20 -050091 libraries: libmapper,
92)
Brad Bishop0aa15902019-05-08 21:30:01 -040093
94executable(
95 'mapper',
96 'libmapper/app.c',
97 link_with: libmapper,
Patrick Williams2a1ef012025-03-03 11:09:20 -050098 dependencies: [dependency('libsystemd')],
99 install: true,
100)
Brad Bishop0aa15902019-05-08 21:30:01 -0400101
Andrew Jefferyfb853662024-05-03 14:54:11 +0930102mapperx = executable(
Brad Bishop0aa15902019-05-08 21:30:01 -0400103 'mapperx',
104 [
105 'src/main.cpp',
Brad Bishop0aa15902019-05-08 21:30:01 -0400106 'src/processing.cpp',
107 'src/associations.cpp',
Willy Tuaba14d32023-01-31 14:19:59 -0800108 'src/handler.cpp',
Brad Bishop0aa15902019-05-08 21:30:01 -0400109 ],
110 dependencies: [
Ed Tanous26ed4a12022-07-13 13:46:08 -0700111 boost,
Brad Bishop0aa15902019-05-08 21:30:01 -0400112 dependency('libsystemd'),
Brad Bishop5962db52022-05-16 21:04:05 -0400113 phosphor_dbus_interfaces,
Brad Bishop0aa15902019-05-08 21:30:01 -0400114 sdbusplus,
Brad Bishop0aa15902019-05-08 21:30:01 -0400115 dependency('threads'),
Konstantin Aladyshev883d91d2024-04-03 12:38:37 +0300116 dependency('tinyxml2', default_options: ['tests=false']),
Brad Bishop0aa15902019-05-08 21:30:01 -0400117 ],
Brad Bishop13cf45f2025-07-14 16:35:13 -0400118 implicit_include_directories: false,
Brad Bishop2ec91572022-06-03 08:52:11 -0400119 install: true,
120 install_dir: join_paths(
Patrick Williams2a1ef012025-03-03 11:09:20 -0500121 get_option('prefix'),
122 get_option('libexecdir'),
123 meson.project_name(),
124 ),
Brad Bishop0aa15902019-05-08 21:30:01 -0400125)
Andrew Jefferyfb853662024-05-03 14:54:11 +0930126meson.override_find_program('mapperx', mapperx)
Brad Bishop0aa15902019-05-08 21:30:01 -0400127
Brad Bishop2ec91572022-06-03 08:52:11 -0400128systemd_system_unit_dir = dependency('systemd').get_variable(
Patrick Williamsfcae5262025-07-09 11:27:59 -0400129 'systemd_system_unit_dir',
Brad Bishop2ec91572022-06-03 08:52:11 -0400130)
131
132conf = configuration_data()
133conf.set('BINDIR', join_paths(get_option('prefix'), get_option('bindir')))
Patrick Williams2a1ef012025-03-03 11:09:20 -0500134conf.set(
135 'LIBEXECDIR',
136 join_paths(get_option('prefix'), get_option('libexecdir')),
137)
Brad Bishop2ec91572022-06-03 08:52:11 -0400138
139unit_files = [
140 'xyz.openbmc_project.ObjectMapper.service',
141 'mapper-subtree-remove@.service',
Patrick Williams2a1ef012025-03-03 11:09:20 -0500142 'mapper-wait@.service',
Brad Bishop2ec91572022-06-03 08:52:11 -0400143]
144
145foreach u : unit_files
146 configure_file(
147 configuration: conf,
Patrick Williams2a1ef012025-03-03 11:09:20 -0500148 input: join_paths('src/systemd', u) + '.in',
149 install: true,
Brad Bishop2ec91572022-06-03 08:52:11 -0400150 install_dir: systemd_system_unit_dir,
Patrick Williams2a1ef012025-03-03 11:09:20 -0500151 output: u,
Brad Bishop2ec91572022-06-03 08:52:11 -0400152 )
153endforeach
154
155dbus_system_bus_services_dir = dependency('dbus-1').get_variable(
Patrick Williams40302742023-04-12 08:01:37 -0500156 'system_bus_services_dir',
Patrick Williams2a1ef012025-03-03 11:09:20 -0500157 pkgconfig_define: ['prefix', get_option('prefix')],
Brad Bishop2ec91572022-06-03 08:52:11 -0400158)
159
160install_data(
161 'src/dbus/xyz.openbmc_project.ObjectMapper.service',
Patrick Williams2a1ef012025-03-03 11:09:20 -0500162 install_dir: dbus_system_bus_services_dir,
163)
Brad Bishop2ec91572022-06-03 08:52:11 -0400164
165install_data(
166 'src/dbus/xyz.openbmc_project.ObjectMapper.conf',
Patrick Williams2a1ef012025-03-03 11:09:20 -0500167 install_dir: get_option('datadir') / 'dbus-1' / 'system.d',
168)
Brad Bishop2ec91572022-06-03 08:52:11 -0400169
Brad Bishop42e5aee2023-02-03 13:57:33 -0500170if not get_option('unit-failure-monitor').disabled()
171 executable(
172 'phosphor-unit-failure-monitor',
Patrick Williams2a1ef012025-03-03 11:09:20 -0500173 ['fail-monitor/main.cpp', 'fail-monitor/monitor.cpp'],
Brad Bishop0426f312025-07-14 16:23:53 -0400174 dependencies: [cli11, phosphor_logging, sdbusplus],
Brad Bishop13cf45f2025-07-14 16:35:13 -0400175 implicit_include_directories: false,
Patrick Williams2a1ef012025-03-03 11:09:20 -0500176 install: true,
Brad Bishop42e5aee2023-02-03 13:57:33 -0500177 )
178endif