| project( |
| 'entity-manager', |
| 'cpp', |
| default_options: [ |
| 'warning_level=3', |
| 'werror=true', |
| 'cpp_std=c++23' |
| ], |
| license: 'Apache-2.0', |
| version: '0.1', |
| meson_version: '>=1.1.1', |
| ) |
| add_project_arguments('-Wno-psabi', language: 'cpp') |
| |
| boost_args = [ |
| '-DBOOST_SYSTEM_NO_DEPRECATED', |
| '-DBOOST_ERROR_CODE_HEADER_ONLY', |
| '-DBOOST_NO_RTTI', |
| '-DBOOST_NO_TYPEID', |
| '-DBOOST_ALL_NO_LIB', |
| '-DBOOST_ALLOW_DEPRECATED_HEADERS' |
| ] |
| build_tests = get_option('tests') |
| cpp = meson.get_compiler('cpp') |
| boost = dependency('boost', required: false) |
| if not boost.found() |
| subproject('boost', required: false) |
| boost = declare_dependency( |
| include_directories: 'subprojects/boost_1_71_0', |
| ) |
| boost = boost.as_system('system') |
| endif |
| if get_option('fru-device') |
| i2c = cpp.find_library('i2c') |
| endif |
| |
| if get_option('devicetree-vpd') |
| phosphor_dbus_interfaces_dep = dependency('phosphor-dbus-interfaces', include_type: 'system') |
| endif |
| |
| nlohmann_json_dep = dependency('nlohmann_json', include_type: 'system') |
| sdbusplus = dependency('sdbusplus', include_type: 'system') |
| phosphor_logging_dep = dependency('phosphor-logging') |
| |
| systemd = dependency('systemd') |
| systemd_system_unit_dir = systemd.get_variable( |
| 'systemdsystemunitdir', |
| pkgconfig_define: ['prefix', get_option('prefix')]) |
| packagedir = join_paths( |
| get_option('prefix'), |
| get_option('datadir'), |
| meson.project_name(), |
| ) |
| sysconfdir = join_paths( |
| get_option('prefix'), |
| get_option('sysconfdir'), |
| meson.project_name(), |
| ) |
| threads = dependency('threads') |
| if cpp.has_header('valijson/validator.hpp') |
| valijson = declare_dependency() |
| else |
| subproject('valijson', required: false) |
| valijson = declare_dependency( |
| include_directories: 'subprojects/valijson/include' |
| ) |
| valijson = valijson.as_system('system') |
| endif |
| |
| install_data('blacklist.json') |
| |
| configs = [ |
| '1ux16_riser.json', |
| '2ux8_riser.json', |
| '3ypower_vast2112_psu.json', |
| '8x25_hsbp.json', |
| 'a2ul16riser.json', |
| 'a2ux8x4riser.json', |
| 'acbel_r1ca2122a_psu.json', |
| 'acbell_rica_psu.json', |
| 'ahw1um2riser.json', |
| 'aspower_u1a-d10550_psu.json', |
| 'aspower_u1a-d10800_psu.json', |
| 'aspower_u1a-d11200_psu.json', |
| 'aspower_u1a-d11600_psu.json', |
| 'aspower_u1d-d10800_psu.json', |
| 'asrock_c3_medium_x86.json', |
| 'asrock_e3c246d4i.json', |
| 'asrock_e3c256d4i.json', |
| 'asrock_m3_small_x86.json', |
| 'asrock_n3_xlarge_x86.json', |
| 'asrock_romed8hm3.json', |
| 'asrock_spc621d8hm3.json', |
| 'axx1p100hssi_aic.json', |
| 'axx2prthdhd.json', |
| 'bellavista.json', |
| 'blueridge_1s4u_chassis.json', |
| 'blueridge_2u_chassis.json', |
| 'blueridge_4u_chassis.json', |
| 'blyth.json', |
| 'bnp_baseboard.json', |
| 'bonnell.json', |
| 'brcm_100g_1p_ocp_mezz.json', |
| 'brcm_200g_1p_ocp_mezz.json', |
| 'cx7_ocp.json', |
| 'delta_awf2dc3200w_psu.json', |
| 'delta_dps-1600ab_psu.json', |
| 'delta_dps-2000ab_psu.json', |
| 'delta_dps-750xb_psu.json', |
| 'everest.json', |
| 'f1u12x25_hsbp.json', |
| 'f1u4x25_hsbp.json', |
| 'f2u12x35_hsbp.json', |
| 'f2u8x25_hsbp.json', |
| 'flextronics_s-1100adu00-201_psu.json', |
| 'fp5280g3_chassis.json', |
| 'fp5280g3_fanboard.json', |
| 'fuji.json', |
| 'genesis3_baseboard.json', |
| 'genesis3_chassis.json', |
| 'genesis3_psu.json', |
| 'gospower_g1136-1300wna_psu.json', |
| 'ibm_tacoma_rack_controller.json', |
| 'ingraham.json', |
| 'intel_front_panel.json', |
| 'kudo_bmc.json', |
| 'kudo_motherboard.json', |
| 'meta/bletchley_baseboard.json', |
| 'meta/bletchley_chassis.json', |
| 'meta/bletchley_frontpanel.json', |
| 'meta/bmc_storage_module.json', |
| 'meta/catalina_fio.json', |
| 'meta/catalina_hdd.json', |
| 'meta/catalina_hdd_nvme.json', |
| 'meta/catalina_osfp.json', |
| 'meta/catalina_pdb.json', |
| 'meta/catalina_scm.json', |
| 'meta/fbtp.json', |
| 'meta/fbyv2.json', |
| 'meta/fbyv35.json', |
| 'meta/fbyv35_nic_mellanox.json', |
| 'meta/greatlakes.json', |
| 'meta/greatlakes_nic_mellanox.json', |
| 'meta/harma_bsm.json', |
| 'meta/harma_fanboard.json', |
| 'meta/harma_mb.json', |
| 'meta/harma_mb_vr_infineon.json', |
| 'meta/harma_scm.json', |
| 'meta/minerva_cmm.json', |
| 'meta/minerva_cmm_bsm.json', |
| 'meta/minerva_cmm_hsc_infineon.json', |
| 'meta/minerva_cmm_scm.json', |
| 'meta/minerva_fanboard.json', |
| 'meta/minerva_pdb.json', |
| 'meta/minerva_pdb_hsc_xdp.json', |
| 'meta/minerva_pttv.json', |
| 'meta/minerva_sitv.json', |
| 'meta/terminus_2x100g_nic_tsff.json', |
| 'meta/twinlake.json', |
| 'meta/ventura_fanboard.json', |
| 'meta/ventura_ioboard.json', |
| 'meta/ventura_ledboard.json', |
| 'meta/ventura_rmc.json', |
| 'meta/ventura_scm.json', |
| 'meta/yosemite4.json', |
| 'meta/yosemite4_chassis.json', |
| 'meta/yosemite4_cpu.json', |
| 'meta/yosemite4_fanboard_fsc_max_adc_ti_led_nxp_efuse_max.json', |
| 'meta/yosemite4_fanboard_fsc_max_adc_ti_led_nxp_efuse_mps.json', |
| 'meta/yosemite4_fanboard_fsc_nct_adc_max_led_ons_efuse_max.json', |
| 'meta/yosemite4_fanboard_fsc_nct_adc_max_led_ons_efuse_mps.json', |
| 'meta/yosemite4_floatingfalls.json', |
| 'meta/yosemite4_medusaboard_adc_rns_12vhsc_adi_48vhsc_inf.json', |
| 'meta/yosemite4_medusaboard_adc_rns_12vhsc_mps_48vhsc_adi.json', |
| 'meta/yosemite4_medusaboard_adc_rns_12vhsc_mps_48vhsc_inf.json', |
| 'meta/yosemite4_medusaboard_adc_rns_hsc_adi.json', |
| 'meta/yosemite4_medusaboard_adc_rns_isl_12vhsc_adi_48vhsc_inf.json', |
| 'meta/yosemite4_medusaboard_adc_ti_12vhsc_adi_48vhsc_inf.json', |
| 'meta/yosemite4_medusaboard_adc_ti_12vhsc_mps_48vhsc_adi.json', |
| 'meta/yosemite4_medusaboard_adc_ti_12vhsc_mps_48vhsc_inf.json', |
| 'meta/yosemite4_medusaboard_adc_ti_hsc_adi.json', |
| 'meta/yosemite4_sentineldome_chassis.json', |
| 'meta/yosemite4_sentineldome_t1.json', |
| 'meta/yosemite4_sentineldome_t1_retimer.json', |
| 'meta/yosemite4_sentineldome_t2.json', |
| 'meta/yosemite4_sentineldome_t2_retimer.json', |
| 'meta/yosemite4_spiderboard_adc_max_pwr_ti.json', |
| 'meta/yosemite4_spiderboard_adc_ti_pwr_ti.json', |
| 'meta/yosemite4_wailuafalls.json', |
| 'meta/yosemite4n.json', |
| 'micron_7450.json', |
| 'mori_bmc.json', |
| 'mori_motherboard.json', |
| 'mtjade.json', |
| 'mtjefferson_bmc.json', |
| 'mtjefferson_bp.json', |
| 'mtjefferson_mb.json', |
| 'mtmitchell_bmc.json', |
| 'mtmitchell_bp.json', |
| 'mtmitchell_mb.json', |
| 'mtmitchell_riser.json', |
| 'mudflap.json', |
| 'nf5280m7_baseboard.json', |
| 'nisqually.json', |
| 'nuvoton_npcm8xx_evb.json', |
| 'nvidia_gb200.json', |
| 'nvidia_gb200_io_board.json', |
| 'nvidia_hmc.json', |
| 'nvme_intel_p_series.json', |
| 'nvme_p4500_p5500.json', |
| 'pcie_ssd_retimer.json', |
| 'pennybacker.json', |
| 'pssf132202a.json', |
| 'pssf162205a.json', |
| 'pssf212201a.json', |
| 'pssf222201a.json', |
| 'r1000_chassis.json', |
| 'r2000_chassis.json', |
| 'rainier_1s4u_chassis.json', |
| 'rainier_2u_chassis.json', |
| 'rainier_4u_chassis.json', |
| 'sas_module.json', |
| 'sbp1_baseboard.json', |
| 'sbp1_chassis.json', |
| 'sbp1_hbm.json', |
| 'sbp1_nvme.json', |
| 'sbp1_psu.json', |
| 'sbp1_rssd.json', |
| 'solum_pssf162202_psu.json', |
| 'storm_king.json', |
| 'stp_baseboard.json', |
| 'stp_p4000_chassis.json', |
| 'supermicro-pws-920p-sq_psu.json', |
| 'system1_baseboard.json', |
| 'system1_chassis.json', |
| 'tola.json', |
| 'tyan_s7106_baseboard.json', |
| 'tyan_s8036_baseboard.json', |
| 'vegman_n110_baseboard.json', |
| 'vegman_rx20_baseboard.json', |
| 'vegman_sx20_baseboard.json', |
| 'wft_baseboard.json', |
| ] |
| filepaths = [] |
| foreach c : configs |
| file = join_paths('configurations', c) |
| install_data( |
| file, |
| install_dir: join_paths( |
| packagedir, |
| 'configurations', |
| ) |
| ) |
| filepaths += [file] |
| endforeach |
| |
| if get_option('validate-json') |
| validate_script = files('scripts/validate_configs.py') |
| autojson = custom_target( |
| 'check_syntax', |
| command: [ |
| validate_script, |
| '-v', |
| '-k', |
| ], |
| depend_files: files(filepaths), |
| build_by_default: true, |
| capture: true, |
| output: 'validate_configs.log', |
| ) |
| endif |
| |
| schemas = [ |
| 'global.json', |
| 'legacy.json', |
| 'openbmc-dbus.json', |
| 'ibm.json', |
| 'intel.json', |
| 'pid.json', |
| 'pid_zone.json', |
| 'stepwise.json', |
| 'virtual_sensor.json', |
| 'satellite_controller.json', |
| ] |
| |
| foreach s : schemas |
| install_data( |
| join_paths('schemas', s), |
| install_dir: join_paths( |
| packagedir, |
| 'configurations', |
| 'schemas', |
| ) |
| ) |
| endforeach |
| |
| subdir('service_files') |
| subdir('src') |
| |
| if not build_tests.disabled() |
| test_boost_args = boost_args + ['-DBOOST_ASIO_DISABLE_THREADS'] |
| gtest = dependency('gtest', main: true, disabler: true, required: false) |
| gmock = dependency('gmock', disabler: true, required: false) |
| if not (gtest.found() and gmock.found()) and build_tests.enabled() |
| cmake = import('cmake') |
| gtest_subproject = cmake.subproject('gtest') |
| cm_gtest = gtest_subproject.dependency('gtest') |
| cm_gtest_main = gtest_subproject.dependency('gtest_main') |
| gtest = declare_dependency(dependencies: [cm_gtest, cm_gtest_main, threads]) |
| gmock = gtest_subproject.dependency('gmock') |
| |
| endif |
| |
| test( |
| 'test_entity_manager', |
| executable( |
| 'test_entity_manager', |
| 'test/test_entity-manager.cpp', |
| 'src/expression.cpp', |
| 'src/utils.cpp', |
| cpp_args: test_boost_args, |
| dependencies: [ |
| boost, |
| gtest, |
| nlohmann_json_dep, |
| phosphor_logging_dep, |
| sdbusplus, |
| valijson, |
| ], |
| include_directories: 'src', |
| ) |
| ) |
| |
| test( |
| 'test_fru_utils', |
| executable( |
| 'test_fru_utils', |
| 'test/test_fru-utils.cpp', |
| 'src/fru_utils.cpp', |
| 'src/fru_reader.cpp', |
| cpp_args: test_boost_args, |
| dependencies: [ |
| boost, |
| gtest, |
| phosphor_logging_dep, |
| sdbusplus, |
| ], |
| include_directories: 'src', |
| ) |
| ) |
| |
| test( |
| 'test_topology', |
| executable( |
| 'test_topology', |
| 'test/test_topology.cpp', |
| 'src/topology.cpp', |
| cpp_args: test_boost_args, |
| dependencies: [ |
| gtest, |
| gmock, |
| nlohmann_json_dep, |
| phosphor_logging_dep, |
| ], |
| include_directories: 'src', |
| ) |
| ) |
| endif |