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