xref: /openbmc/entity-manager/meson.build (revision c63c875a)
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    'Blyth.json',
78    'AHW1UM2RISER.json',
79    'ASPOWER_U1A-D10550_PSU.json',
80    'ASPOWER_U1A-D10800_PSU.json',
81    'ASPOWER_U1A-D11200_PSU.json',
82    'ASPOWER_U1A-D11600_PSU.json',
83    'ASPOWER_U1D-D10800_PSU.json',
84    'AXX1P100HSSI_AIC.json',
85    'AXX2PRTHDHD.json',
86    'BNP Baseboard.json',
87    'Bellavista.json',
88    'Delta DPS-750XB PSU.json',
89    'Delta_DPS-1600AB_PSU.json',
90    'Delta_DPS-2000AB_PSU.json',
91    'Everest.json',
92    'F1U12X25 HSBP.json',
93    'F1U4X25 HSBP.json',
94    'F2U12X35 HSBP.json',
95    'F2U8X25 HSBP.json',
96    'FBTP.json',
97    'FBYV2.json',
98    'Flextronics S-1100ADU00-201 PSU.json',
99    'IBM 1000W CFFPS.json',
100    'IBM 1400W CFFPS.json',
101    'IBM 1600W CFFPS.json',
102    'IBM 2000W CFFPS.json',
103    'IBM 2300W CFFPS.json',
104    'Intel Front Panel.json',
105    'Nisqually.json',
106    'NVME P4000.json',
107    'PCIE SSD Retimer.json',
108    'PSSF132202A.json',
109    'PSSF162205A.json',
110    'PSSF212201A.json',
111    'PSSF222201A.json',
112    'Rainier 2U Chassis.json',
113    'Rainier 4U Chassis.json',
114    'Rainier 1S4U Chassis.json',
115    'R1000 Chassis.json',
116    'R2000 Chassis.json',
117    'SAS Module.json',
118    'SOLUM_PSSF162202_PSU.json',
119    'STP Baseboard.json',
120    'STP P4000 Chassis.json',
121    'Tyan_S7106_Baseboard.json',
122    'WFT Baseboard.json',
123]
124
125foreach c : configs
126    install_data(
127        join_paths('configurations', c),
128        install_dir: join_paths(
129            packagedir,
130            'configurations',
131        )
132    )
133endforeach
134
135schemas = [
136    'global.json',
137    'legacy.json',
138    'openbmc-dbus.json',
139    'IBM.json',
140    'Intel.json',
141    'Pid.json',
142    'Pid.Zone.json',
143    'Stepwise.json',
144]
145
146foreach s : schemas
147    install_data(
148        join_paths('schemas', s),
149        install_dir: join_paths(
150            packagedir,
151            'configurations',
152            'schemas',
153        )
154    )
155endforeach
156
157subdir('service_files')
158subdir('src')
159
160if not build_tests.disabled()
161    test_boost_args = boost_args + ['-DBOOST_ASIO_DISABLE_THREADS']
162    gtest = dependency('gtest', main: true, disabler: true, required: false)
163    if not gtest.found() and build_tests.enabled()
164        cmake = import('cmake')
165        gtest_subproject = cmake.subproject('gtest')
166        cm_gtest = gtest_subproject.dependency('gtest')
167        cm_gtest_main = gtest_subproject.dependency('gtest_main')
168        gtest = declare_dependency(dependencies: [cm_gtest, cm_gtest_main, threads])
169    endif
170
171    test(
172        'test_entity_manager',
173        executable(
174            'test_entity_manager',
175            'test/test_entity-manager.cpp',
176            'src/Utils.cpp',
177            cpp_args: test_boost_args,
178            dependencies: [
179                boost,
180                gtest,
181                nlohmann_json,
182                sdbusplus,
183                valijson,
184            ],
185            implicit_include_directories: false,
186            include_directories: 'include',
187        )
188    )
189
190    test(
191        'test_fru_utils',
192        executable(
193            'test_fru_utils',
194            'test/test_fru-utils.cpp',
195            'src/FruUtils.cpp',
196            cpp_args: test_boost_args,
197            dependencies: [
198                boost,
199                gtest,
200            ],
201            implicit_include_directories: false,
202            include_directories: 'include',
203        )
204    )
205endif
206