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