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