| project( |
| 'intel-ipmi-oem', |
| 'cpp', |
| version: '0.1', |
| meson_version: '>=1.1.1', |
| default_options: [ |
| 'werror=true', |
| 'warning_level=3', |
| 'cpp_std=c++23', |
| ]) |
| |
| # Project Arguments |
| all_args = [ |
| '-DBOOST_ERROR_CODE_HEADER_ONLY', |
| '-DBOOST_SYSTEM_NO_DEPRECATED', |
| '-DBOOST_ALL_NO_LIB', |
| '-DBOOST_NO_RTTI', |
| '-DBOOST_NO_TYPEID', |
| '-DBOOST_ASIO_DISABLE_THREADS', |
| '-DBOOST_COROUTINES_NO_DEPRECATION_WARNING', |
| '-DBMC_VALIDATION_UNSECURE_FEATURE', |
| '-DUSING_ENTITY_MANAGER_DECORATORS', |
| '-Wno-psabi', |
| '-Wno-pedantic', |
| ] |
| |
| feature_map = { |
| 'intel-pfr': '-DINTEL_PFR_ENABLED', |
| 'bmc-validation-unsecure-feature': '-DBMC_VALIDATION_UNSECURE_FEATURE', |
| 'using-entity-manager-decorators': '-DUSING_ENTITY_MANAGER_DECORATORS', |
| } |
| |
| foreach option_key, option_value : feature_map |
| if(get_option(option_key).allowed()) |
| summary(option_key,option_value, section : 'Enabled Features') |
| add_project_arguments(option_value,language:'cpp') |
| endif |
| endforeach |
| |
| cpp = meson.get_compiler('cpp') |
| add_project_arguments( |
| cpp.get_supported_arguments(all_args), |
| language : 'cpp') |
| |
| fs = import('fs') |
| |
| root_inc = include_directories('.', 'include') |
| |
| # Dependencies |
| sdbusplus_dep = dependency('sdbusplus') |
| phosphor_dbus_interfaces_dep = dependency('phosphor-dbus-interfaces') |
| phosphor_logging_dep = dependency('phosphor-logging') |
| ipmid_dep = dependency('libipmid') |
| channellayer_dep = dependency('libchannellayer') |
| userlayer_dep = dependency('libuserlayer') |
| |
| if cpp.has_header_symbol( |
| 'nlohmann/json.hpp', |
| 'nlohmann::json::string_t', |
| required:false) |
| nlohmann_json_dep = declare_dependency() |
| else |
| nlohmann_json_dep = dependency('nlohmann-json') |
| endif |
| |
| tinyxml_dep = dependency('tinyxml2', |
| default_options: ['tests=false'], |
| include_type: 'system', |
| ) |
| |
| gpio_dep = dependency('libgpiodcxx', |
| default_options: ['bindings=cxx'], |
| ) |
| |
| zinteloemcmds_pre = declare_dependency( |
| include_directories: root_inc, |
| dependencies: [ |
| channellayer_dep, |
| ipmid_dep, |
| gpio_dep, |
| nlohmann_json_dep, |
| phosphor_dbus_interfaces_dep, |
| phosphor_logging_dep, |
| sdbusplus_dep, |
| tinyxml_dep, |
| userlayer_dep, |
| ]) |
| |
| prog_python = import('python').find_installation('python3') |
| generate_allowlist_script = files('generate-allowlist.py') |
| ipmiallowlist = custom_target( |
| 'ipmi-allowlist.hpp', |
| input: [generate_allowlist_script, 'ipmi-allowlist.conf' ], |
| output: 'ipmi-allowlist.hpp', |
| command: [ prog_python, '@INPUT0@', '@INPUT1@', '@OUTPUT@' ], |
| ) |
| |
| zinteloemcmds_src = [ |
| 'src/oemcommands.cpp', |
| 'src/sensorcommands.cpp', |
| 'src/biosconfigcommands.cpp', |
| 'src/storagecommands.cpp', |
| 'src/multinodecommands.cpp', |
| 'src/firmware-update.cpp', |
| 'src/appcommands.cpp', |
| 'src/smbiosmdrv2handler.cpp', |
| 'src/manufacturingcommands.cpp', |
| 'src/bmccontrolservices.cpp', |
| 'src/bridgingcommands.cpp', |
| 'src/ipmi_to_redfish_hooks.cpp', |
| 'src/me_to_redfish_hooks.cpp', |
| 'src/chassiscommands.cpp', |
| 'src/allowlist-filter.cpp', |
| ipmiallowlist, |
| ] |
| |
| zinteloemcmds_lib = library( |
| 'zinteloemcmds', |
| sources: zinteloemcmds_src, |
| implicit_include_directories: false, |
| dependencies: zinteloemcmds_pre, |
| version: meson.project_version(), |
| override_options: ['b_lundef=false'], |
| install: true, |
| install_dir: get_option('libdir') / 'ipmid-providers') |
| |
| if get_option('tests').allowed() |
| subdir('tests') |
| endif |