xref: /openbmc/intel-ipmi-oem/meson.build (revision 77a44298)
14a316058SVernon Maueryproject(
24a316058SVernon Mauery  'intel-ipmi-oem',
34a316058SVernon Mauery  'cpp',
44a316058SVernon Mauery  version: '0.1',
54a316058SVernon Mauery  meson_version: '>=1.1.1',
64a316058SVernon Mauery  default_options: [
74a316058SVernon Mauery    'werror=true',
84a316058SVernon Mauery    'warning_level=3',
94a316058SVernon Mauery    'cpp_std=c++23',
104a316058SVernon Mauery  ])
114a316058SVernon Mauery
124a316058SVernon Mauery# Project Arguments
134a316058SVernon Maueryall_args = [
144a316058SVernon Mauery    '-DBOOST_ERROR_CODE_HEADER_ONLY',
154a316058SVernon Mauery    '-DBOOST_SYSTEM_NO_DEPRECATED',
164a316058SVernon Mauery    '-DBOOST_ALL_NO_LIB',
174a316058SVernon Mauery    '-DBOOST_NO_RTTI',
184a316058SVernon Mauery    '-DBOOST_NO_TYPEID',
194a316058SVernon Mauery    '-DBOOST_ASIO_DISABLE_THREADS',
204a316058SVernon Mauery    '-DBOOST_COROUTINES_NO_DEPRECATION_WARNING',
214a316058SVernon Mauery    '-DBMC_VALIDATION_UNSECURE_FEATURE',
224a316058SVernon Mauery    '-DUSING_ENTITY_MANAGER_DECORATORS',
234a316058SVernon Mauery    '-Wno-psabi',
244a316058SVernon Mauery    '-Wno-pedantic',
254a316058SVernon Mauery  ]
264a316058SVernon Mauery
274a316058SVernon Maueryfeature_map = {
284a316058SVernon Mauery  'intel-pfr': '-DINTEL_PFR_ENABLED',
294a316058SVernon Mauery  'bmc-validation-unsecure-feature': '-DBMC_VALIDATION_UNSECURE_FEATURE',
304a316058SVernon Mauery  'using-entity-manager-decorators': '-DUSING_ENTITY_MANAGER_DECORATORS',
314a316058SVernon Mauery}
324a316058SVernon Mauery
334a316058SVernon Maueryforeach option_key, option_value : feature_map
344a316058SVernon Mauery  if(get_option(option_key).allowed())
354a316058SVernon Mauery    summary(option_key,option_value, section : 'Enabled Features')
364a316058SVernon Mauery    add_project_arguments(option_value,language:'cpp')
374a316058SVernon Mauery  endif
384a316058SVernon Maueryendforeach
394a316058SVernon Mauery
404a316058SVernon Mauerycpp = meson.get_compiler('cpp')
414a316058SVernon Maueryadd_project_arguments(
424a316058SVernon Mauery  cpp.get_supported_arguments(all_args),
434a316058SVernon Mauery  language : 'cpp')
444a316058SVernon Mauery
454a316058SVernon Maueryfs = import('fs')
464a316058SVernon Mauery
474a316058SVernon Maueryroot_inc = include_directories('.', 'include')
484a316058SVernon Mauery
494a316058SVernon Mauery# Dependencies
50*77a44298SPatrick Williamsnlohmann_json_dep = dependency('nlohmann_json', include_type: 'system')
514a316058SVernon Maueryphosphor_dbus_interfaces_dep = dependency('phosphor-dbus-interfaces')
524a316058SVernon Maueryphosphor_logging_dep = dependency('phosphor-logging')
53*77a44298SPatrick Williamssdbusplus_dep = dependency('sdbusplus')
544a316058SVernon Maueryipmid_dep = dependency('libipmid')
554a316058SVernon Mauerychannellayer_dep = dependency('libchannellayer')
564a316058SVernon Maueryuserlayer_dep = dependency('libuserlayer')
574a316058SVernon Mauery
584a316058SVernon Mauery
594a316058SVernon Mauerytinyxml_dep = dependency('tinyxml2',
604a316058SVernon Mauery    default_options: ['tests=false'],
614a316058SVernon Mauery    include_type: 'system',
624a316058SVernon Mauery)
634a316058SVernon Mauery
644a316058SVernon Mauerygpio_dep = dependency('libgpiodcxx',
654a316058SVernon Mauery      default_options: ['bindings=cxx'],
664a316058SVernon Mauery      )
674a316058SVernon Mauery
684a316058SVernon Maueryzinteloemcmds_pre = declare_dependency(
694a316058SVernon Mauery  include_directories: root_inc,
704a316058SVernon Mauery  dependencies: [
714a316058SVernon Mauery    channellayer_dep,
724a316058SVernon Mauery    ipmid_dep,
734a316058SVernon Mauery    gpio_dep,
744a316058SVernon Mauery    nlohmann_json_dep,
754a316058SVernon Mauery    phosphor_dbus_interfaces_dep,
764a316058SVernon Mauery    phosphor_logging_dep,
774a316058SVernon Mauery    sdbusplus_dep,
784a316058SVernon Mauery    tinyxml_dep,
794a316058SVernon Mauery    userlayer_dep,
804a316058SVernon Mauery  ])
814a316058SVernon Mauery
824a316058SVernon Maueryprog_python = import('python').find_installation('python3')
834a316058SVernon Mauerygenerate_allowlist_script = files('generate-allowlist.py')
844a316058SVernon Maueryipmiallowlist = custom_target(
854a316058SVernon Mauery    'ipmi-allowlist.hpp',
864a316058SVernon Mauery    input: [generate_allowlist_script, 'ipmi-allowlist.conf' ],
874a316058SVernon Mauery    output: 'ipmi-allowlist.hpp',
884a316058SVernon Mauery    command: [ prog_python, '@INPUT0@', '@INPUT1@', '@OUTPUT@' ],
894a316058SVernon Mauery    )
904a316058SVernon Mauery
914a316058SVernon Maueryzinteloemcmds_src = [
924a316058SVernon Mauery  'src/oemcommands.cpp',
934a316058SVernon Mauery  'src/sensorcommands.cpp',
944a316058SVernon Mauery  'src/biosconfigcommands.cpp',
954a316058SVernon Mauery  'src/storagecommands.cpp',
964a316058SVernon Mauery  'src/multinodecommands.cpp',
974a316058SVernon Mauery  'src/firmware-update.cpp',
984a316058SVernon Mauery  'src/appcommands.cpp',
994a316058SVernon Mauery  'src/smbiosmdrv2handler.cpp',
1004a316058SVernon Mauery  'src/manufacturingcommands.cpp',
1014a316058SVernon Mauery  'src/bmccontrolservices.cpp',
1024a316058SVernon Mauery  'src/bridgingcommands.cpp',
1034a316058SVernon Mauery  'src/ipmi_to_redfish_hooks.cpp',
1044a316058SVernon Mauery  'src/me_to_redfish_hooks.cpp',
1054a316058SVernon Mauery  'src/chassiscommands.cpp',
1064a316058SVernon Mauery  'src/allowlist-filter.cpp',
10721a1b5f8SPeter Foley  'src/fruutils.cpp',
1084a316058SVernon Mauery  ipmiallowlist,
1094a316058SVernon Mauery]
1104a316058SVernon Mauery
1114a316058SVernon Maueryzinteloemcmds_lib = library(
1124a316058SVernon Mauery  'zinteloemcmds',
1134a316058SVernon Mauery  sources: zinteloemcmds_src,
1144a316058SVernon Mauery  implicit_include_directories: false,
1154a316058SVernon Mauery  dependencies: zinteloemcmds_pre,
1164a316058SVernon Mauery  version: meson.project_version(),
1174a316058SVernon Mauery  override_options: ['b_lundef=false'],
1184a316058SVernon Mauery  install: true,
1194a316058SVernon Mauery  install_dir: get_option('libdir') / 'ipmid-providers')
1204a316058SVernon Mauery
1214a316058SVernon Maueryif get_option('tests').allowed()
1224a316058SVernon Mauery  subdir('tests')
1234a316058SVernon Maueryendif
124