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