blob: f682ca45243346229078b580bd1959c79e05cf41 [file] [log] [blame]
Brad Bishop0aa15902019-05-08 21:30:01 -04001project(
2 'phosphor-objmgr',
3 'c', 'cpp',
4 default_options: [
Brad Bishopd6aa5522022-05-31 19:23:48 -04005 'buildtype=debugoptimized',
Patrick Williams26ed9802023-07-12 11:16:09 -05006 'cpp_std=c++23',
Brad Bishop0aa15902019-05-08 21:30:01 -04007 'warning_level=3',
8 'werror=true',
9 ],
10 license: 'Apache-2.0',
Patrick Williams26ed9802023-07-12 11:16:09 -050011 meson_version: '>=1.1.1',
Brad Bishop0aa15902019-05-08 21:30:01 -040012 version: '1.0',
13)
14
Brad Bishop8c243622022-07-11 11:21:50 -040015cxx = meson.get_compiler('cpp')
16
17if cxx.has_header('CLI/CLI.hpp')
18 cli11_dep = declare_dependency()
19else
20 cli11_dep = dependency('cli11')
21endif
Patrick Williamsf814e5b2022-03-21 11:14:17 -050022phosphor_logging = dependency('phosphor-logging')
Brad Bishop5962db52022-05-16 21:04:05 -040023phosphor_dbus_interfaces = dependency('phosphor-dbus-interfaces')
Patrick Williamsf814e5b2022-03-21 11:14:17 -050024sdbusplus = dependency('sdbusplus')
Ed Tanous26ed4a12022-07-13 13:46:08 -070025boost = dependency('boost', version : '>=1.79.0', required: false, include_type: 'system')
26if not boost.found()
27 subproject('boost', required: false)
28 boost_inc = include_directories('subprojects/boost_1_79_0/', is_system:true)
29 boost = declare_dependency(include_directories : boost_inc)
30 boost = boost.as_system('system')
31endif
Brad Bishopd6aa5522022-05-31 19:23:48 -040032
33if get_option('buildtype').startswith('debug')
34 add_project_arguments('-DMAPPER_ENABLE_DEBUG', language : 'cpp')
35endif
36
Patrick Williamsec874072023-11-29 06:45:19 -060037if get_option('tests').allowed()
Brad Bishop0aa15902019-05-08 21:30:01 -040038 gtest = dependency('gtest', main: true, disabler: true, required: false)
39 gmock = dependency('gmock', disabler: true, required: false)
40 if not gtest.found() or not gmock.found()
41 gtest_proj = import('cmake').subproject('googletest', required: false)
42 if gtest_proj.found()
43 gtest = declare_dependency(
44 dependencies: [
45 dependency('threads'),
46 gtest_proj.dependency('gtest'),
47 gtest_proj.dependency('gtest_main'),
48 ]
49 )
50 gmock = gtest_proj.dependency('gmock')
51 else
52 assert(
Patrick Williamsec874072023-11-29 06:45:19 -060053 not get_option('tests').allowed(),
Brad Bishop0aa15902019-05-08 21:30:01 -040054 'Googletest is required if tests are enabled'
55 )
56 endif
57 endif
58 subdir('src/test')
59 subdir('libmapper/test')
60endif
61
Brad Bishop0aa15902019-05-08 21:30:01 -040062install_headers('libmapper/mapper.h')
63
64libmapper = library(
65 'mapper',
66 'libmapper/mapper.c',
67 dependencies: [ dependency('libsystemd') ],
68 gnu_symbol_visibility: 'hidden',
69 version: meson.project_version(),
70 install: true)
71
Patrick Williamsd4887752022-06-16 11:29:08 -050072mapper_dep = declare_dependency(
73 link_with: libmapper,
74 include_directories: include_directories('libmapper'),
75 dependencies: [ dependency('libsystemd') ],
76)
77
Brad Bishop0aa15902019-05-08 21:30:01 -040078import('pkgconfig').generate(
79 name: 'libmapper',
80 description: 'OpenBMC service discovery utility library',
81 version: meson.project_version(),
82 libraries: libmapper)
83
84executable(
85 'mapper',
86 'libmapper/app.c',
87 link_with: libmapper,
88 dependencies: [ dependency('libsystemd') ],
89 install: true)
90
Andrew Jefferyfb853662024-05-03 14:54:11 +093091mapperx = executable(
Brad Bishop0aa15902019-05-08 21:30:01 -040092 'mapperx',
93 [
94 'src/main.cpp',
Brad Bishop0aa15902019-05-08 21:30:01 -040095 'src/processing.cpp',
96 'src/associations.cpp',
Willy Tuaba14d32023-01-31 14:19:59 -080097 'src/handler.cpp',
Brad Bishop0aa15902019-05-08 21:30:01 -040098 ],
99 dependencies: [
Ed Tanous26ed4a12022-07-13 13:46:08 -0700100 boost,
Brad Bishop0aa15902019-05-08 21:30:01 -0400101 dependency('libsystemd'),
Brad Bishop5962db52022-05-16 21:04:05 -0400102 phosphor_dbus_interfaces,
Brad Bishop0aa15902019-05-08 21:30:01 -0400103 phosphor_logging,
104 sdbusplus,
Brad Bishop0aa15902019-05-08 21:30:01 -0400105 dependency('threads'),
Konstantin Aladyshev883d91d2024-04-03 12:38:37 +0300106 dependency('tinyxml2', default_options: ['tests=false']),
Brad Bishop0aa15902019-05-08 21:30:01 -0400107 ],
Brad Bishop2ec91572022-06-03 08:52:11 -0400108 install: true,
109 install_dir: join_paths(
110 get_option('prefix'), get_option('libexecdir'), meson.project_name())
Brad Bishop0aa15902019-05-08 21:30:01 -0400111)
Andrew Jefferyfb853662024-05-03 14:54:11 +0930112meson.override_find_program('mapperx', mapperx)
Brad Bishop0aa15902019-05-08 21:30:01 -0400113
Brad Bishop2ec91572022-06-03 08:52:11 -0400114systemd_system_unit_dir = dependency('systemd').get_variable(
Patrick Williams40302742023-04-12 08:01:37 -0500115 'systemdsystemunitdir'
Brad Bishop2ec91572022-06-03 08:52:11 -0400116)
117
118conf = configuration_data()
119conf.set('BINDIR', join_paths(get_option('prefix'), get_option('bindir')))
120conf.set('LIBEXECDIR', join_paths(
121 get_option('prefix'), get_option('libexecdir')))
122
123unit_files = [
124 'xyz.openbmc_project.ObjectMapper.service',
125 'mapper-subtree-remove@.service',
126 'mapper-wait@.service'
127]
128
129foreach u : unit_files
130 configure_file(
131 configuration: conf,
132 input : join_paths('src/systemd', u) + '.in',
133 install : true,
134 install_dir: systemd_system_unit_dir,
135 output : u
136 )
137endforeach
138
139dbus_system_bus_services_dir = dependency('dbus-1').get_variable(
Patrick Williams40302742023-04-12 08:01:37 -0500140 'system_bus_services_dir',
Brad Bishop2ec91572022-06-03 08:52:11 -0400141 pkgconfig_define: ['prefix', get_option('prefix')]
142)
143
144install_data(
145 'src/dbus/xyz.openbmc_project.ObjectMapper.service',
146 install_dir: dbus_system_bus_services_dir)
147
148install_data(
149 'src/dbus/xyz.openbmc_project.ObjectMapper.conf',
150 install_dir: get_option('datadir') / 'dbus-1' / 'system.d')
151
Brad Bishop42e5aee2023-02-03 13:57:33 -0500152if not get_option('unit-failure-monitor').disabled()
153 executable(
154 'phosphor-unit-failure-monitor',
155 [
156 'fail-monitor/main.cpp',
157 'fail-monitor/monitor.cpp',
158 ],
159 dependencies: [
160 cli11_dep,
161 phosphor_logging,
162 ],
163 install: true
164 )
165endif