xref: /openbmc/entity-manager/meson.build (revision 086f19d2)
1project(
2    'entity-manager',
3    'cpp',
4    default_options: [
5        'warning_level=3',
6        'werror=true',
7        'cpp_std=c++17'
8    ],
9    license: 'Apache-2.0',
10    version: '0.1',
11)
12add_project_arguments('-Wno-psabi', language: 'cpp')
13
14boost_args = [
15    '-DBOOST_SYSTEM_NO_DEPRECATED',
16    '-DBOOST_ERROR_CODE_HEADER_ONLY',
17    '-DBOOST_NO_RTTI',
18    '-DBOOST_NO_TYPEID',
19    '-DBOOST_ALL_NO_LIB',
20]
21build_tests = get_option('tests')
22cpp = meson.get_compiler('cpp')
23boost = dependency('boost', required: false)
24if not boost.found()
25     subproject('boost', required: false)
26     boost = declare_dependency(
27         include_directories: 'subprojects/boost_1_71_0',
28     )
29endif
30if get_option('fru-device')
31    i2c = cpp.find_library('i2c')
32endif
33if cpp.has_header('nlohmann/json.hpp')
34    nlohmann_json = declare_dependency()
35else
36    subproject('nlohmann', required: false)
37    nlohmann_json = declare_dependency(
38        include_directories: [
39            'subprojects/nlohmann/single_include',
40            'subprojects/nlohmann/single_include/nlohmann',
41        ]
42    )
43endif
44sdbusplus = dependency('sdbusplus', required: false)
45if not sdbusplus.found()
46    sdbusplus_proj = subproject('sdbusplus', required: true)
47    sdbusplus = sdbusplus_proj.get_variable('sdbusplus_dep')
48endif
49systemd = dependency('systemd')
50systemd_system_unit_dir = systemd.get_pkgconfig_variable(
51    'systemdsystemunitdir',
52    define_variable: ['prefix', get_option('prefix')])
53packagedir = join_paths(
54    get_option('prefix'),
55    get_option('datadir'),
56    meson.project_name(),
57)
58threads = dependency('threads')
59if cpp.has_header('valijson/validator.hpp')
60    valijson = declare_dependency()
61else
62    subproject('valijson', required: false)
63    valijson = declare_dependency(
64        include_directories: 'subprojects/valijson/include'
65    )
66endif
67
68install_data('blacklist.json')
69
70configs = [
71    '1Ux16 Riser.json',
72    '2Ux8 Riser.json',
73    '8X25 HSBP.json',
74    'A2UL16RISER.json',
75    'A2UX8X4RISER.json',
76    'ACBELL_RICA_PSU.json',
77    'AHW1UM2RISER.json',
78    'ASPOWER_U1A-D10550_PSU.json',
79    'ASPOWER_U1A-D10800_PSU.json',
80    'ASPOWER_U1A-D11200_PSU.json',
81    'ASPOWER_U1A-D11600_PSU.json',
82    'ASPOWER_U1D-D10800_PSU.json',
83    'AXX1P100HSSI_AIC.json',
84    'AXX2PRTHDHD.json',
85    'BNP Baseboard.json',
86    'Bellavista.json',
87    'Delta DPS-750XB PSU.json',
88    'Delta_DPS-1600AB_PSU.json',
89    'Delta_DPS-2000AB_PSU.json',
90    'Everest.json',
91    'F1U12X25 HSBP.json',
92    'F1U4X25 HSBP.json',
93    'F2U12X35 HSBP.json',
94    'F2U8X25 HSBP.json',
95    'FBTP.json',
96    'FBYV2.json',
97    'Flextronics S-1100ADU00-201 PSU.json',
98    'IBM 1000W CFFPS.json',
99    'IBM 1400W CFFPS.json',
100    'IBM 1600W CFFPS.json',
101    'IBM 2000W CFFPS.json',
102    'IBM 2300W CFFPS.json',
103    'Intel Front Panel.json',
104    'Nisqually.json',
105    'NVME P4000.json',
106    'PCIE SSD Retimer.json',
107    'PSSF132202A.json',
108    'PSSF162205A.json',
109    'PSSF212201A.json',
110    'PSSF222201A.json',
111    'Rainier 2U Chassis.json',
112    'Rainier 4U Chassis.json',
113    'Rainier 1S4U Chassis.json',
114    'R1000 Chassis.json',
115    'R2000 Chassis.json',
116    'SAS Module.json',
117    'SOLUM_PSSF162202_PSU.json',
118    'STP Baseboard.json',
119    'STP P4000 Chassis.json',
120    'Tyan_S7106_Baseboard.json',
121    'WFT Baseboard.json',
122]
123
124foreach c : configs
125    install_data(
126        join_paths('configurations', c),
127        install_dir: join_paths(
128            packagedir,
129            'configurations',
130        )
131    )
132endforeach
133
134schemas = [
135    'global.json',
136    'legacy.json',
137    'openbmc-dbus.json',
138    'IBM.json',
139    'Intel.json',
140    'Pid.json',
141    'Pid.Zone.json',
142    'Stepwise.json',
143]
144
145foreach s : schemas
146    install_data(
147        join_paths('schemas', s),
148        install_dir: join_paths(
149            packagedir,
150            'configurations',
151            'schemas',
152        )
153    )
154endforeach
155
156subdir('service_files')
157subdir('src')
158
159if not build_tests.disabled()
160    test_boost_args = boost_args + ['-DBOOST_ASIO_DISABLE_THREADS']
161    gtest = dependency('gtest', main: true, disabler: true, required: false)
162    if not gtest.found() and build_tests.enabled()
163        cmake = import('cmake')
164        gtest_subproject = cmake.subproject('gtest')
165        cm_gtest = gtest_subproject.dependency('gtest')
166        cm_gtest_main = gtest_subproject.dependency('gtest_main')
167        gtest = declare_dependency(dependencies: [cm_gtest, cm_gtest_main, threads])
168    endif
169
170    test(
171        'test_entity_manager',
172        executable(
173            'test_entity_manager',
174            'test/test_entity-manager.cpp',
175            'src/Utils.cpp',
176            cpp_args: test_boost_args,
177            dependencies: [
178                boost,
179                gtest,
180                nlohmann_json,
181                sdbusplus,
182                valijson,
183            ],
184            implicit_include_directories: false,
185            include_directories: 'include',
186        )
187    )
188
189    test(
190        'test_fru_utils',
191        executable(
192            'test_fru_utils',
193            'test/test_fru-utils.cpp',
194            'src/FruUtils.cpp',
195            cpp_args: test_boost_args,
196            dependencies: [
197                boost,
198                gtest,
199            ],
200            implicit_include_directories: false,
201            include_directories: 'include',
202        )
203    )
204endif
205