add meson build
most the other openbmc projects are turning into meson projects, so
let's hop on that meson train.
Tested: Builds as expected
Change-Id: I06b6f9e28e27bf7922f42f93756efb98bdb40b2a
Signed-off-by: Vernon Mauery <vernon.mauery@linux.intel.com>
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..2f01792
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,129 @@
+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