diff --git a/common/test/meson.build b/common/test/meson.build
index b6f7012..e26d75b 100644
--- a/common/test/meson.build
+++ b/common/test/meson.build
@@ -1,23 +1,26 @@
-common_test_src = declare_dependency(
-          sources: [
-            '../utils.cpp'])
+common_test_src = declare_dependency(sources: ['../utils.cpp'])
 
-tests = [
-  'pldm_utils_test',
-]
+tests = ['pldm_utils_test']
 
 foreach t : tests
-  test(t, executable(t.underscorify(), t + '.cpp',
-                     implicit_include_directories: false,
-                     dependencies: [
-                         common_test_src,
-                         gmock,
-                         gtest,
-                         libpldm_dep,
-                         nlohmann_json_dep,
-                         phosphor_dbus_interfaces,
-                         phosphor_logging_dep,
-                         libpldmutils,
-                         sdbusplus]),
-       workdir: meson.current_source_dir())
+    test(
+        t,
+        executable(
+            t.underscorify(),
+            t + '.cpp',
+            implicit_include_directories: false,
+            dependencies: [
+                common_test_src,
+                gmock,
+                gtest,
+                libpldm_dep,
+                nlohmann_json_dep,
+                phosphor_dbus_interfaces,
+                phosphor_logging_dep,
+                libpldmutils,
+                sdbusplus,
+            ],
+        ),
+        workdir: meson.current_source_dir(),
+    )
 endforeach
diff --git a/configurations/meson.build b/configurations/meson.build
index fcde362..e5d093b 100644
--- a/configurations/meson.build
+++ b/configurations/meson.build
@@ -7,18 +7,35 @@
 install_subdir('softoff', install_dir: package_datadir)
 
 if get_option('oem-ibm').disabled()
-install_data('fru_master.json', install_dir: package_datadir)
-install_data('entityMap.json', install_dir: package_datadir)
+    install_data('fru_master.json', install_dir: package_datadir)
+    install_data('entityMap.json', install_dir: package_datadir)
 endif
 
 if get_option('oem-ibm').allowed()
     install_subdir('../oem/ibm/configurations/fru', install_dir: package_datadir)
-    install_subdir('../oem/ibm/configurations/events', install_dir: package_datadir)
-    install_subdir('../oem/ibm/configurations/bios', install_dir: package_datadir)
-    install_data('../oem/ibm/configurations/fru_master.json',install_dir: package_datadir)
-    install_data('../oem/ibm/configurations/entityMap.json',install_dir: package_datadir)
-    install_data('../oem/ibm/configurations/fileTable.json',
-        install_dir: package_datadir)
-    install_data('../oem/ibm/configurations/host_eid', install_dir: package_datadir)
+    install_subdir(
+        '../oem/ibm/configurations/events',
+        install_dir: package_datadir,
+    )
+    install_subdir(
+        '../oem/ibm/configurations/bios',
+        install_dir: package_datadir,
+    )
+    install_data(
+        '../oem/ibm/configurations/fru_master.json',
+        install_dir: package_datadir,
+    )
+    install_data(
+        '../oem/ibm/configurations/entityMap.json',
+        install_dir: package_datadir,
+    )
+    install_data(
+        '../oem/ibm/configurations/fileTable.json',
+        install_dir: package_datadir,
+    )
+    install_data(
+        '../oem/ibm/configurations/host_eid',
+        install_dir: package_datadir,
+    )
 endif
 
diff --git a/fw-update/test/meson.build b/fw-update/test/meson.build
index 5af5dc9..e419ccf 100644
--- a/fw-update/test/meson.build
+++ b/fw-update/test/meson.build
@@ -1,33 +1,37 @@
 fw_update_test_src = declare_dependency(
-          sources: [
-            '../activation.cpp',
-            '../inventory_manager.cpp',
-            '../package_parser.cpp',
-            '../device_updater.cpp',
-            '../update_manager.cpp',
-            '../../common/utils.cpp',
-          ])
+    sources: [
+        '../activation.cpp',
+        '../inventory_manager.cpp',
+        '../package_parser.cpp',
+        '../device_updater.cpp',
+        '../update_manager.cpp',
+        '../../common/utils.cpp',
+    ],
+)
 
-tests = [
-  'inventory_manager_test',
-  'package_parser_test',
-  'device_updater_test'
-]
+tests = ['inventory_manager_test', 'package_parser_test', 'device_updater_test']
 
 foreach t : tests
-  test(t, executable(t.underscorify(), t + '.cpp',
-                     implicit_include_directories: false,
-                     include_directories: '../../pldmd',
-                     dependencies: [
-                         fw_update_test_src,
-                         gmock,
-                         gtest,
-                         libpldm_dep,
-                         libpldmutils,
-                         nlohmann_json_dep,
-                         phosphor_dbus_interfaces,
-                         phosphor_logging_dep,
-                         sdbusplus,
-                         sdeventplus]),
-       workdir: meson.current_source_dir())
+    test(
+        t,
+        executable(
+            t.underscorify(),
+            t + '.cpp',
+            implicit_include_directories: false,
+            include_directories: '../../pldmd',
+            dependencies: [
+                fw_update_test_src,
+                gmock,
+                gtest,
+                libpldm_dep,
+                libpldmutils,
+                nlohmann_json_dep,
+                phosphor_dbus_interfaces,
+                phosphor_logging_dep,
+                sdbusplus,
+                sdeventplus,
+            ],
+        ),
+        workdir: meson.current_source_dir(),
+    )
 endforeach
diff --git a/host-bmc/test/meson.build b/host-bmc/test/meson.build
index b649255..9f762ed 100644
--- a/host-bmc/test/meson.build
+++ b/host-bmc/test/meson.build
@@ -1,37 +1,41 @@
 host_bmc_test_src = declare_dependency(
-          sources: [ '../dbus_to_host_effecters.cpp' ],
-          include_directories: '../../requester')
+    sources: ['../dbus_to_host_effecters.cpp'],
+    include_directories: '../../requester',
+)
 
 test_sources = [
-  '../../common/utils.cpp',
-  '../utils.cpp',
-  '../dbus/custom_dbus.cpp',
-  '../dbus/cable.cpp',
-  '../dbus/cpu_core.cpp',
-  '../dbus/pcie_device.cpp',
-  '../dbus/pcie_slot.cpp',
+    '../../common/utils.cpp',
+    '../utils.cpp',
+    '../dbus/custom_dbus.cpp',
+    '../dbus/cable.cpp',
+    '../dbus/cpu_core.cpp',
+    '../dbus/pcie_device.cpp',
+    '../dbus/pcie_slot.cpp',
 ]
 
-tests = [
-  'dbus_to_host_effecter_test',
-  'utils_test',
-  'custom_dbus_test',
-]
+tests = ['dbus_to_host_effecter_test', 'utils_test', 'custom_dbus_test']
 
 foreach t : tests
-  test(t, executable(t.underscorify(), t + '.cpp',
-                     test_sources,
-                     implicit_include_directories: false,
-                     dependencies: [
-                         gtest,
-                         gmock,
-                         host_bmc_test_src,
-                         libpldm_dep,
-                         libpldmutils,
-                         nlohmann_json_dep,
-                         phosphor_dbus_interfaces,
-                         phosphor_logging_dep,
-                         sdbusplus,
-                         sdeventplus]),
-       workdir: meson.current_source_dir())
+    test(
+        t,
+        executable(
+            t.underscorify(),
+            t + '.cpp',
+            test_sources,
+            implicit_include_directories: false,
+            dependencies: [
+                gtest,
+                gmock,
+                host_bmc_test_src,
+                libpldm_dep,
+                libpldmutils,
+                nlohmann_json_dep,
+                phosphor_dbus_interfaces,
+                phosphor_logging_dep,
+                sdbusplus,
+                sdeventplus,
+            ],
+        ),
+        workdir: meson.current_source_dir(),
+    )
 endforeach
diff --git a/libpldmresponder/meson.build b/libpldmresponder/meson.build
index 4f62f4d..4a0f697 100644
--- a/libpldmresponder/meson.build
+++ b/libpldmresponder/meson.build
@@ -1,81 +1,81 @@
 libpldmresponder_deps = [
-  phosphor_dbus_interfaces,
-  phosphor_logging_dep,
-  nlohmann_json_dep,
-  sdbusplus,
-  sdeventplus,
-  libpldm_dep,
-  libpldmutils
+    phosphor_dbus_interfaces,
+    phosphor_logging_dep,
+    nlohmann_json_dep,
+    sdbusplus,
+    sdeventplus,
+    libpldm_dep,
+    libpldmutils,
 ]
 
 sources = [
-  'base.cpp',
-  'bios.cpp',
-  'bios_table.cpp',
-  'bios_attribute.cpp',
-  'bios_string_attribute.cpp',
-  'bios_integer_attribute.cpp',
-  'bios_enum_attribute.cpp',
-  'bios_config.cpp',
-  'pdr_utils.cpp',
-  'pdr.cpp',
-  'platform.cpp',
-  'platform_config.cpp',
-  'fru_parser.cpp',
-  'fru.cpp',
-  '../host-bmc/host_pdr_handler.cpp',
-  '../host-bmc/utils.cpp',
-  '../host-bmc/dbus_to_event_handler.cpp',
-  '../host-bmc/dbus_to_host_effecters.cpp',
-  '../host-bmc/host_condition.cpp',
-  '../host-bmc/dbus/custom_dbus.cpp',
-  '../host-bmc/dbus/cable.cpp',
-  '../host-bmc/dbus/cpu_core.cpp',
-  '../host-bmc/utils.cpp',
-  '../host-bmc/dbus/pcie_device.cpp',
-  '../host-bmc/dbus/pcie_slot.cpp',
-  'event_parser.cpp'
+    'base.cpp',
+    'bios.cpp',
+    'bios_table.cpp',
+    'bios_attribute.cpp',
+    'bios_string_attribute.cpp',
+    'bios_integer_attribute.cpp',
+    'bios_enum_attribute.cpp',
+    'bios_config.cpp',
+    'pdr_utils.cpp',
+    'pdr.cpp',
+    'platform.cpp',
+    'platform_config.cpp',
+    'fru_parser.cpp',
+    'fru.cpp',
+    '../host-bmc/host_pdr_handler.cpp',
+    '../host-bmc/utils.cpp',
+    '../host-bmc/dbus_to_event_handler.cpp',
+    '../host-bmc/dbus_to_host_effecters.cpp',
+    '../host-bmc/host_condition.cpp',
+    '../host-bmc/dbus/custom_dbus.cpp',
+    '../host-bmc/dbus/cable.cpp',
+    '../host-bmc/dbus/cpu_core.cpp',
+    '../host-bmc/utils.cpp',
+    '../host-bmc/dbus/pcie_device.cpp',
+    '../host-bmc/dbus/pcie_slot.cpp',
+    'event_parser.cpp',
 ]
 
 responder_headers = ['.']
 
 if get_option('oem-ibm').allowed()
-   responder_headers += [
-    '../oem/ibm/',
-   ]
-  sources += [
-    '../oem/ibm/libpldmresponder/utils.cpp',
-    '../oem/ibm/libpldmresponder/file_io.cpp',
-    '../oem/ibm/libpldmresponder/file_table.cpp',
-    '../oem/ibm/libpldmresponder/file_io_by_type.cpp',
-    '../oem/ibm/libpldmresponder/file_io_type_pel.cpp',
-    '../oem/ibm/libpldmresponder/file_io_type_dump.cpp',
-    '../oem/ibm/libpldmresponder/file_io_type_cert.cpp',
-    '../oem/ibm/libpldmresponder/platform_oem_ibm.cpp',
-    '../oem/ibm/libpldmresponder/fru_oem_ibm.cpp',
-    '../oem/ibm/libpldmresponder/oem_ibm_handler.cpp',
-    '../oem/ibm/libpldmresponder/inband_code_update.cpp',
-    '../oem/ibm/requester/dbus_to_file_handler.cpp',
-    '../oem/ibm/libpldmresponder/file_io_type_progress_src.cpp',
-    '../oem/ibm/libpldmresponder/file_io_type_vpd.cpp',
-    '../oem/ibm/libpldmresponder/file_io_type_pcie.cpp',
-    '../oem/ibm/host-bmc/host_lamp_test.cpp',
-  ]
+    responder_headers += ['../oem/ibm/']
+    sources += [
+        '../oem/ibm/libpldmresponder/utils.cpp',
+        '../oem/ibm/libpldmresponder/file_io.cpp',
+        '../oem/ibm/libpldmresponder/file_table.cpp',
+        '../oem/ibm/libpldmresponder/file_io_by_type.cpp',
+        '../oem/ibm/libpldmresponder/file_io_type_pel.cpp',
+        '../oem/ibm/libpldmresponder/file_io_type_dump.cpp',
+        '../oem/ibm/libpldmresponder/file_io_type_cert.cpp',
+        '../oem/ibm/libpldmresponder/platform_oem_ibm.cpp',
+        '../oem/ibm/libpldmresponder/fru_oem_ibm.cpp',
+        '../oem/ibm/libpldmresponder/oem_ibm_handler.cpp',
+        '../oem/ibm/libpldmresponder/inband_code_update.cpp',
+        '../oem/ibm/requester/dbus_to_file_handler.cpp',
+        '../oem/ibm/libpldmresponder/file_io_type_progress_src.cpp',
+        '../oem/ibm/libpldmresponder/file_io_type_vpd.cpp',
+        '../oem/ibm/libpldmresponder/file_io_type_pcie.cpp',
+        '../oem/ibm/host-bmc/host_lamp_test.cpp',
+    ]
 endif
 
 libpldmresponder = library(
-  'pldmresponder',
-  sources,
-  version: meson.project_version(),
-  include_directories:include_directories(responder_headers),
-  dependencies: libpldmresponder_deps,
-  install: true)
+    'pldmresponder',
+    sources,
+    version: meson.project_version(),
+    include_directories: include_directories(responder_headers),
+    dependencies: libpldmresponder_deps,
+    install: true,
+)
 
 libpldmresponder_dep = declare_dependency(
-  include_directories:include_directories(responder_headers),
-  link_with: libpldmresponder)
+    include_directories: include_directories(responder_headers),
+    link_with: libpldmresponder,
+)
 
 if get_option('tests').allowed()
-  subdir('test')
+    subdir('test')
 endif
 
diff --git a/libpldmresponder/test/meson.build b/libpldmresponder/test/meson.build
index 9a9fbc9..fa581cd 100644
--- a/libpldmresponder/test/meson.build
+++ b/libpldmresponder/test/meson.build
@@ -1,50 +1,53 @@
 tests = [
-  'libpldmresponder_base_test',
-  'libpldmresponder_bios_test',
-  'libpldmresponder_bios_attribute_test',
-  'libpldmresponder_bios_enum_attribute_test',
-  'libpldmresponder_bios_integer_attribute_test',
-  'libpldmresponder_bios_string_attribute_test',
-  'libpldmresponder_bios_table_test',
-  'libpldmresponder_fru_test',
-  'libpldmresponder_platform_test',
-  'libpldmresponder_pdr_effecter_test',
-  'libpldmresponder_pdr_sensor_test',
+    'libpldmresponder_base_test',
+    'libpldmresponder_bios_test',
+    'libpldmresponder_bios_attribute_test',
+    'libpldmresponder_bios_enum_attribute_test',
+    'libpldmresponder_bios_integer_attribute_test',
+    'libpldmresponder_bios_string_attribute_test',
+    'libpldmresponder_bios_table_test',
+    'libpldmresponder_fru_test',
+    'libpldmresponder_platform_test',
+    'libpldmresponder_pdr_effecter_test',
+    'libpldmresponder_pdr_sensor_test',
 ]
 
 
 if get_option('oem-ibm').allowed()
-  tests += [
-    '../../oem/ibm/test/libpldmresponder_fileio_test',
-    '../../oem/ibm/test/libpldmresponder_oem_platform_test',
-    '../../oem/ibm/test/host_bmc_lamp_test',
-  ]
+    tests += [
+        '../../oem/ibm/test/libpldmresponder_fileio_test',
+        '../../oem/ibm/test/libpldmresponder_oem_platform_test',
+        '../../oem/ibm/test/host_bmc_lamp_test',
+    ]
 endif
 
 if get_option('system-specific-bios-json').allowed()
-  tests += [
-    'libpldmresponder_systemspecific_bios_test'
-  ]
+    tests += ['libpldmresponder_systemspecific_bios_test']
 else
-  tests += [
-    'libpldmresponder_bios_config_test'
-  ]
+    tests += ['libpldmresponder_bios_config_test']
 endif
 
 foreach t : tests
-  test(t, executable(t.underscorify(), t + '.cpp',
-                     implicit_include_directories: false,
-                     include_directories: [ '../../requester', '../../pldmd' ],
-                     dependencies: [
-                         libpldm_dep,
-                         libpldmresponder_dep,
-                         libpldmutils,
-                         gtest,
-                         gmock,
-                         nlohmann_json_dep,
-                         phosphor_dbus_interfaces,
-                         phosphor_logging_dep,
-                         sdeventplus,
-                         sdbusplus]),
-       workdir: meson.current_source_dir())
+    test(
+        t,
+        executable(
+            t.underscorify(),
+            t + '.cpp',
+            implicit_include_directories: false,
+            include_directories: ['../../requester', '../../pldmd'],
+            dependencies: [
+                libpldm_dep,
+                libpldmresponder_dep,
+                libpldmutils,
+                gtest,
+                gmock,
+                nlohmann_json_dep,
+                phosphor_dbus_interfaces,
+                phosphor_logging_dep,
+                sdeventplus,
+                sdbusplus,
+            ],
+        ),
+        workdir: meson.current_source_dir(),
+    )
 endforeach
diff --git a/meson.build b/meson.build
index e8c3bc8..e722bec 100644
--- a/meson.build
+++ b/meson.build
@@ -1,12 +1,16 @@
-project('pldm', ['c', 'cpp'],
-        version: '0.1', meson_version: '>=1.1.1',
-        default_options: [
-          'warning_level=3',
-          'default_library=shared',
-          'werror=true',
-          'cpp_std=c++23',
-          'buildtype=debugoptimized'
-        ])
+project(
+    'pldm',
+    ['c', 'cpp'],
+    version: '0.1',
+    meson_version: '>=1.1.1',
+    default_options: [
+        'warning_level=3',
+        'default_library=shared',
+        'werror=true',
+        'cpp_std=c++23',
+        'buildtype=debugoptimized',
+    ],
+)
 
 # Wno-psabi reduces the number of "Note:" messages when cross-compiling some STL
 # stuff for ARM. See https://stackoverflow.com/questions/48149323/strange-gcc-warning-when-compiling-qt-project
@@ -16,13 +20,21 @@
 
 
 # Disable FORTIFY_SOURCE when compiling with no optimization
-if(get_option('optimization') == '0')
-  add_project_arguments('-U_FORTIFY_SOURCE',language:['cpp','c'])
-  message('Disabling FORTIFY_SOURCE as optimization is set to 0')
+if (get_option('optimization') == '0')
+    add_project_arguments('-U_FORTIFY_SOURCE', language: ['cpp', 'c'])
+    message('Disabling FORTIFY_SOURCE as optimization is set to 0')
 endif
 
-package_datadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name())
-package_localstatedir = join_paths(get_option('prefix'), get_option('localstatedir'), meson.project_name())
+package_datadir = join_paths(
+    get_option('prefix'),
+    get_option('datadir'),
+    meson.project_name(),
+)
+package_localstatedir = join_paths(
+    get_option('prefix'),
+    get_option('localstatedir'),
+    meson.project_name(),
+)
 
 conf_data = configuration_data()
 cpp = meson.get_compiler('cpp')
@@ -32,54 +44,107 @@
     conf_data.set('PLDM_HAS_POLL', 1)
 endif
 if get_option('libpldmresponder').allowed()
-conf_data.set_quoted('BIOS_JSONS_DIR', join_paths(package_datadir, 'bios'))
-conf_data.set('SYSTEM_SPECIFIC_BIOS_JSON', get_option('system-specific-bios-json').allowed())
-conf_data.set_quoted('BIOS_TABLES_DIR', join_paths(package_localstatedir, 'bios'))
-conf_data.set_quoted('PDR_JSONS_DIR', join_paths(package_datadir, 'pdr'))
-conf_data.set_quoted('FRU_JSONS_DIR', join_paths(package_datadir, 'fru'))
-conf_data.set_quoted('FRU_MASTER_JSON', join_paths(package_datadir, 'fru_master.json'))
-conf_data.set_quoted('ENTITY_MAP_JSON', join_paths(package_datadir, 'entityMap.json'))
-conf_data.set_quoted('HOST_JSONS_DIR', join_paths(package_datadir, 'host'))
-conf_data.set_quoted('EVENTS_JSONS_DIR', join_paths(package_datadir, 'events'))
-conf_data.set('HEARTBEAT_TIMEOUT', get_option('heartbeat-timeout-seconds'))
-conf_data.set('TERMINUS_ID', get_option('terminus-id'))
-conf_data.set('TERMINUS_HANDLE',get_option('terminus-handle'))
-conf_data.set('DBUS_TIMEOUT', get_option('dbus-timeout-value'))
-add_project_arguments('-DLIBPLDMRESPONDER', language : ['c','cpp'])
+    conf_data.set_quoted('BIOS_JSONS_DIR', join_paths(package_datadir, 'bios'))
+    conf_data.set(
+        'SYSTEM_SPECIFIC_BIOS_JSON',
+        get_option('system-specific-bios-json').allowed(),
+    )
+    conf_data.set_quoted(
+        'BIOS_TABLES_DIR',
+        join_paths(package_localstatedir, 'bios'),
+    )
+    conf_data.set_quoted('PDR_JSONS_DIR', join_paths(package_datadir, 'pdr'))
+    conf_data.set_quoted('FRU_JSONS_DIR', join_paths(package_datadir, 'fru'))
+    conf_data.set_quoted(
+        'FRU_MASTER_JSON',
+        join_paths(package_datadir, 'fru_master.json'),
+    )
+    conf_data.set_quoted(
+        'ENTITY_MAP_JSON',
+        join_paths(package_datadir, 'entityMap.json'),
+    )
+    conf_data.set_quoted('HOST_JSONS_DIR', join_paths(package_datadir, 'host'))
+    conf_data.set_quoted(
+        'EVENTS_JSONS_DIR',
+        join_paths(package_datadir, 'events'),
+    )
+    conf_data.set('HEARTBEAT_TIMEOUT', get_option('heartbeat-timeout-seconds'))
+    conf_data.set('TERMINUS_ID', get_option('terminus-id'))
+    conf_data.set('TERMINUS_HANDLE', get_option('terminus-handle'))
+    conf_data.set('DBUS_TIMEOUT', get_option('dbus-timeout-value'))
+    add_project_arguments('-DLIBPLDMRESPONDER', language: ['c', 'cpp'])
 endif
 if get_option('softoff').allowed()
-  conf_data.set('SOFTOFF_TIMEOUT_SECONDS', get_option('softoff-timeout-seconds'))
-  conf_data.set_quoted('SOFTOFF_CONFIG_JSON', join_paths(package_datadir, 'softoff'))
+    conf_data.set(
+        'SOFTOFF_TIMEOUT_SECONDS',
+        get_option('softoff-timeout-seconds'),
+    )
+    conf_data.set_quoted(
+        'SOFTOFF_CONFIG_JSON',
+        join_paths(package_datadir, 'softoff'),
+    )
 endif
 if get_option('oem-ibm').allowed()
-  conf_data.set_quoted('FILE_TABLE_JSON', join_paths(package_datadir, 'fileTable.json'))
-  conf_data.set_quoted('LID_RUNNING_DIR', '/var/lib/phosphor-software-manager/hostfw/running')
-  conf_data.set_quoted('LID_ALTERNATE_DIR', '/var/lib/phosphor-software-manager/hostfw/alternate')
-  conf_data.set_quoted('LID_STAGING_DIR', '/var/lib/phosphor-software-manager/hostfw/staging')
-  conf_data.set_quoted('LID_RUNNING_PATCH_DIR', '/usr/local/share/hostfw/running')
-  conf_data.set_quoted('LID_ALTERNATE_PATCH_DIR', '/usr/local/share/hostfw/alternate')
-  conf_data.set('DMA_MAXSIZE', get_option('oem-ibm-dma-maxsize'))
-  add_project_arguments('-DOEM_IBM', language : ['c', 'cpp'])
+    conf_data.set_quoted(
+        'FILE_TABLE_JSON',
+        join_paths(package_datadir, 'fileTable.json'),
+    )
+    conf_data.set_quoted(
+        'LID_RUNNING_DIR',
+        '/var/lib/phosphor-software-manager/hostfw/running',
+    )
+    conf_data.set_quoted(
+        'LID_ALTERNATE_DIR',
+        '/var/lib/phosphor-software-manager/hostfw/alternate',
+    )
+    conf_data.set_quoted(
+        'LID_STAGING_DIR',
+        '/var/lib/phosphor-software-manager/hostfw/staging',
+    )
+    conf_data.set_quoted(
+        'LID_RUNNING_PATCH_DIR',
+        '/usr/local/share/hostfw/running',
+    )
+    conf_data.set_quoted(
+        'LID_ALTERNATE_PATCH_DIR',
+        '/usr/local/share/hostfw/alternate',
+    )
+    conf_data.set('DMA_MAXSIZE', get_option('oem-ibm-dma-maxsize'))
+    add_project_arguments('-DOEM_IBM', language: ['c', 'cpp'])
 endif
-conf_data.set('NUMBER_OF_REQUEST_RETRIES', get_option('number-of-request-retries'))
-conf_data.set('INSTANCE_ID_EXPIRATION_INTERVAL',get_option('instance-id-expiration-interval'))
-conf_data.set('RESPONSE_TIME_OUT',get_option('response-time-out'))
-conf_data.set('FLIGHT_RECORDER_MAX_ENTRIES',get_option('flightrecorder-max-entries'))
+conf_data.set(
+    'NUMBER_OF_REQUEST_RETRIES',
+    get_option('number-of-request-retries'),
+)
+conf_data.set(
+    'INSTANCE_ID_EXPIRATION_INTERVAL',
+    get_option('instance-id-expiration-interval'),
+)
+conf_data.set('RESPONSE_TIME_OUT', get_option('response-time-out'))
+conf_data.set(
+    'FLIGHT_RECORDER_MAX_ENTRIES',
+    get_option('flightrecorder-max-entries'),
+)
 conf_data.set_quoted('HOST_EID_PATH', join_paths(package_datadir, 'host_eid'))
 conf_data.set('MAXIMUM_TRANSFER_SIZE', get_option('maximum-transfer-size'))
 if get_option('transport-implementation') == 'mctp-demux'
-  conf_data.set('PLDM_TRANSPORT_WITH_MCTP_DEMUX', 1)
+    conf_data.set('PLDM_TRANSPORT_WITH_MCTP_DEMUX', 1)
 elif get_option('transport-implementation') == 'af-mctp'
-  conf_data.set('PLDM_TRANSPORT_WITH_AF_MCTP', 1)
+    conf_data.set('PLDM_TRANSPORT_WITH_AF_MCTP', 1)
 endif
-conf_data.set('DEFAULT_SENSOR_UPDATER_INTERVAL', get_option('default-sensor-update-interval'))
+conf_data.set(
+    'DEFAULT_SENSOR_UPDATER_INTERVAL',
+    get_option('default-sensor-update-interval'),
+)
 conf_data.set('SENSOR_POLLING_TIME', get_option('sensor-polling-time'))
 
-configure_file(output: 'config.h',
-  configuration: conf_data
-)
+configure_file(output: 'config.h', configuration: conf_data)
 
-add_project_arguments('-include', '@0@'.format(meson.current_build_dir() /'config.h'), language: 'cpp')
+add_project_arguments(
+    '-include',
+    '@0@'.format(meson.current_build_dir() / 'config.h'),
+    language: 'cpp',
+)
 
 filesystem = import('fs')
 
@@ -92,9 +157,9 @@
 nlohmann_json_dep = dependency('nlohmann_json', include_type: 'system')
 
 if cpp.has_header('CLI/CLI.hpp')
-  CLI11_dep = declare_dependency()
+    CLI11_dep = declare_dependency()
 else
-  CLI11_dep = dependency('CLI11')
+    CLI11_dep = dependency('CLI11')
 endif
 
 if get_option('tests').allowed()
@@ -108,95 +173,100 @@
                     dependency('threads'),
                     gtest_proj.dependency('gtest'),
                     gtest_proj.dependency('gtest_main'),
-                ]
+                ],
             )
             gmock = gtest_proj.dependency('gmock')
         else
             assert(
                 not get_option('tests').allowed(),
-                'Googletest is required if tests are enabled'
+                'Googletest is required if tests are enabled',
             )
         endif
     endif
 endif
 
-libpldm_dep = dependency('libpldm', fallback:['libpldm','libpldm_dep'], include_type: 'system')
+libpldm_dep = dependency(
+    'libpldm',
+    fallback: ['libpldm', 'libpldm_dep'],
+    include_type: 'system',
+)
 
 
 libpldmutils_headers = ['.']
 libpldmutils = library(
-  'pldmutils',
-  'common/transport.cpp',
-  'common/utils.cpp',
-  version: meson.project_version(),
-  dependencies: [
-      libpldm_dep,
-      phosphor_dbus_interfaces,
-      phosphor_logging_dep,
-      nlohmann_json_dep,
-      sdbusplus,
-  ],
-  install: true,
-  include_directories: include_directories(libpldmutils_headers),
+    'pldmutils',
+    'common/transport.cpp',
+    'common/utils.cpp',
+    version: meson.project_version(),
+    dependencies: [
+        libpldm_dep,
+        phosphor_dbus_interfaces,
+        phosphor_logging_dep,
+        nlohmann_json_dep,
+        sdbusplus,
+    ],
+    install: true,
+    include_directories: include_directories(libpldmutils_headers),
 )
 
 libpldmutils = declare_dependency(
-  include_directories: include_directories(libpldmutils_headers),
-  link_with: libpldmutils)
+    include_directories: include_directories(libpldmutils_headers),
+    link_with: libpldmutils,
+)
 
 deps = [
-  libpldm_dep,
-  libpldmutils,
-  nlohmann_json_dep,
-  phosphor_dbus_interfaces,
-  phosphor_logging_dep,
-  sdbusplus,
-  sdeventplus,
-  stdplus,
+    libpldm_dep,
+    libpldmutils,
+    nlohmann_json_dep,
+    phosphor_dbus_interfaces,
+    phosphor_logging_dep,
+    sdbusplus,
+    sdeventplus,
+    stdplus,
 ]
 
 if get_option('libpldmresponder').allowed()
-subdir('libpldmresponder')
-deps += [
-  libpldmresponder_dep
-]
+    subdir('libpldmresponder')
+    deps += [libpldmresponder_dep]
 endif
 
 executable(
-  'pldmd',
-  'pldmd/pldmd.cpp',
-  'pldmd/dbus_impl_pdr.cpp',
-  'fw-update/activation.cpp',
-  'fw-update/inventory_manager.cpp',
-  'fw-update/package_parser.cpp',
-  'fw-update/device_updater.cpp',
-  'fw-update/watch.cpp',
-  'fw-update/update_manager.cpp',
-  'platform-mc/terminus_manager.cpp',
-  'platform-mc/terminus.cpp',
-  'platform-mc/platform_manager.cpp',
-  'platform-mc/manager.cpp',
-  'platform-mc/sensor_manager.cpp',
-  'platform-mc/numeric_sensor.cpp',
-  'requester/mctp_endpoint_discovery.cpp',
-  implicit_include_directories: false,
-  dependencies: deps,
-  install: true,
-  install_dir: get_option('bindir'))
+    'pldmd',
+    'pldmd/pldmd.cpp',
+    'pldmd/dbus_impl_pdr.cpp',
+    'fw-update/activation.cpp',
+    'fw-update/inventory_manager.cpp',
+    'fw-update/package_parser.cpp',
+    'fw-update/device_updater.cpp',
+    'fw-update/watch.cpp',
+    'fw-update/update_manager.cpp',
+    'platform-mc/terminus_manager.cpp',
+    'platform-mc/terminus.cpp',
+    'platform-mc/platform_manager.cpp',
+    'platform-mc/manager.cpp',
+    'platform-mc/sensor_manager.cpp',
+    'platform-mc/numeric_sensor.cpp',
+    'requester/mctp_endpoint_discovery.cpp',
+    implicit_include_directories: false,
+    dependencies: deps,
+    install: true,
+    install_dir: get_option('bindir'),
+)
 
 if get_option('systemd').allowed()
-  systemd_system_unit_dir = dependency('systemd').get_variable(
-          'systemdsystemunitdir')
-  filesystem.copyfile(
-    'pldmd/service_files/pldmd.service',
-    'pldmd.service',
-    install: true,
-    install_dir: systemd_system_unit_dir
-  )
+    systemd_system_unit_dir = dependency('systemd').get_variable(
+        'systemdsystemunitdir',
+    )
+    filesystem.copyfile(
+        'pldmd/service_files/pldmd.service',
+        'pldmd.service',
+        install: true,
+        install_dir: systemd_system_unit_dir,
+    )
 
-  if get_option('oem-ibm').allowed()
-    subdir('oem/ibm/service_files')
-  endif
+    if get_option('oem-ibm').allowed()
+        subdir('oem/ibm/service_files')
+    endif
 endif
 
 subdir('pldmtool')
@@ -204,18 +274,18 @@
 subdir('configurations')
 
 if get_option('utilities').allowed()
-  subdir('utilities')
+    subdir('utilities')
 endif
 
 if get_option('softoff').allowed()
-  subdir('softoff')
+    subdir('softoff')
 endif
 
 if get_option('tests').allowed()
-  subdir('common/test')
-  subdir('fw-update/test')
-  subdir('host-bmc/test')
-  subdir('requester/test')
-  subdir('platform-mc/test')
-  subdir('test')
+    subdir('common/test')
+    subdir('fw-update/test')
+    subdir('host-bmc/test')
+    subdir('requester/test')
+    subdir('platform-mc/test')
+    subdir('test')
 endif
diff --git a/oem/ibm/service_files/meson.build b/oem/ibm/service_files/meson.build
index c0f0314..1a2a817 100644
--- a/oem/ibm/service_files/meson.build
+++ b/oem/ibm/service_files/meson.build
@@ -1,12 +1,12 @@
 subdir('scripts')
 
 filesystem.copyfile(
-  'pldm-create-phyp-nvram.service',
-  install: true,
-  install_dir: systemd_system_unit_dir
+    'pldm-create-phyp-nvram.service',
+    install: true,
+    install_dir: systemd_system_unit_dir,
 )
 filesystem.copyfile(
-  'pldm-create-phyp-nvram-cksum.service',
-  install: true,
-  install_dir: systemd_system_unit_dir,
+    'pldm-create-phyp-nvram-cksum.service',
+    install: true,
+    install_dir: systemd_system_unit_dir,
 )
diff --git a/oem/ibm/service_files/scripts/meson.build b/oem/ibm/service_files/scripts/meson.build
index 35b2626..40742b0 100644
--- a/oem/ibm/service_files/scripts/meson.build
+++ b/oem/ibm/service_files/scripts/meson.build
@@ -1,5 +1,4 @@
-install_data([
-    'create-NVRAM-file',
-    'create-NVRAM-cksum-file'],
-    install_dir: get_option('bindir')
+install_data(
+    ['create-NVRAM-file', 'create-NVRAM-cksum-file'],
+    install_dir: get_option('bindir'),
 )
diff --git a/platform-mc/test/meson.build b/platform-mc/test/meson.build
index 64177cc..ab7b20a 100644
--- a/platform-mc/test/meson.build
+++ b/platform-mc/test/meson.build
@@ -1,35 +1,44 @@
 test_src = declare_dependency(
-          sources: [
-            '../terminus_manager.cpp',
-            '../terminus.cpp',
-            '../platform_manager.cpp',
-            '../manager.cpp',
-            '../sensor_manager.cpp',
-            '../numeric_sensor.cpp',
-            '../../requester/mctp_endpoint_discovery.cpp'],
-            include_directories: ['../../requester', '../../pldmd'])
+    sources: [
+        '../terminus_manager.cpp',
+        '../terminus.cpp',
+        '../platform_manager.cpp',
+        '../manager.cpp',
+        '../sensor_manager.cpp',
+        '../numeric_sensor.cpp',
+        '../../requester/mctp_endpoint_discovery.cpp',
+    ],
+    include_directories: ['../../requester', '../../pldmd'],
+)
 
 tests = [
-  'terminus_manager_test',
-  'terminus_test',
-  'platform_manager_test',
-  'sensor_manager_test',
-  'numeric_sensor_test',
+    'terminus_manager_test',
+    'terminus_test',
+    'platform_manager_test',
+    'sensor_manager_test',
+    'numeric_sensor_test',
 ]
 
 foreach t : tests
-  test(t, executable(t.underscorify(), t + '.cpp',
-                     implicit_include_directories: false,
-                     dependencies: [
-                         gtest,
-                         gmock,
-                         libpldm_dep,
-                         libpldmutils,
-                         nlohmann_json_dep,
-                         phosphor_dbus_interfaces,
-                         phosphor_logging_dep,
-                         sdbusplus,
-                         sdeventplus,
-                         test_src]),
-       workdir: meson.current_source_dir())
+    test(
+        t,
+        executable(
+            t.underscorify(),
+            t + '.cpp',
+            implicit_include_directories: false,
+            dependencies: [
+                gtest,
+                gmock,
+                libpldm_dep,
+                libpldmutils,
+                nlohmann_json_dep,
+                phosphor_dbus_interfaces,
+                phosphor_logging_dep,
+                sdbusplus,
+                sdeventplus,
+                test_src,
+            ],
+        ),
+        workdir: meson.current_source_dir(),
+    )
 endforeach
diff --git a/pldmtool/meson.build b/pldmtool/meson.build
index 1567323..450c62c 100644
--- a/pldmtool/meson.build
+++ b/pldmtool/meson.build
@@ -1,33 +1,32 @@
 libpldm_headers = ['.', './oem/ibm']
 
 sources = [
-  'pldm_cmd_helper.cpp',
-  'pldm_base_cmd.cpp',
-  'pldm_platform_cmd.cpp',
-  'pldm_bios_cmd.cpp',
-  'pldm_fru_cmd.cpp',
-  'pldm_fw_update_cmd.cpp',
-  'pldmtool.cpp',
+    'pldm_cmd_helper.cpp',
+    'pldm_base_cmd.cpp',
+    'pldm_platform_cmd.cpp',
+    'pldm_bios_cmd.cpp',
+    'pldm_fru_cmd.cpp',
+    'pldm_fw_update_cmd.cpp',
+    'pldmtool.cpp',
 ]
 
 if get_option('oem-ibm').allowed()
-sources += [
-    'oem/ibm/pldm_oem_ibm.cpp',
-  ]
+    sources += ['oem/ibm/pldm_oem_ibm.cpp']
 endif
 
 executable(
-  'pldmtool',
-  sources,
-  implicit_include_directories: false,
-  include_directories: include_directories(libpldm_headers),
-  dependencies: [
-    CLI11_dep,
-    libpldm_dep,
-    libpldmutils,
-    nlohmann_json_dep,
-    phosphor_dbus_interfaces,
-    sdbusplus,
-  ],
-  install: true,
-  install_dir: get_option('bindir'))
+    'pldmtool',
+    sources,
+    implicit_include_directories: false,
+    include_directories: include_directories(libpldm_headers),
+    dependencies: [
+        CLI11_dep,
+        libpldm_dep,
+        libpldmutils,
+        nlohmann_json_dep,
+        phosphor_dbus_interfaces,
+        sdbusplus,
+    ],
+    install: true,
+    install_dir: get_option('bindir'),
+)
diff --git a/requester/test/meson.build b/requester/test/meson.build
index a08a990..f269561 100644
--- a/requester/test/meson.build
+++ b/requester/test/meson.build
@@ -1,29 +1,29 @@
 test_src = declare_dependency(
-          sources: [
-            '../mctp_endpoint_discovery.cpp',
-            '../../common/utils.cpp',
-          ])
+    sources: ['../mctp_endpoint_discovery.cpp', '../../common/utils.cpp'],
+)
 
-tests = [
-  'handler_test',
-  'request_test',
-  'mctp_endpoint_discovery_test',
-]
+tests = ['handler_test', 'request_test', 'mctp_endpoint_discovery_test']
 
 foreach t : tests
-  test(t, executable(t.underscorify(), t + '.cpp',
-                     implicit_include_directories: false,
-                     include_directories: [ '../../', '../../pldmd' ],
-                     dependencies: [
-                         gtest,
-                         gmock,
-                         libpldm_dep,
-                         nlohmann_json_dep,
-                         phosphor_dbus_interfaces,
-                         phosphor_logging_dep,
-                         sdbusplus,
-                         sdeventplus,
-                         test_src,
-                    ]),
-       workdir: meson.current_source_dir())
+    test(
+        t,
+        executable(
+            t.underscorify(),
+            t + '.cpp',
+            implicit_include_directories: false,
+            include_directories: ['../../', '../../pldmd'],
+            dependencies: [
+                gtest,
+                gmock,
+                libpldm_dep,
+                nlohmann_json_dep,
+                phosphor_dbus_interfaces,
+                phosphor_logging_dep,
+                sdbusplus,
+                sdeventplus,
+                test_src,
+            ],
+        ),
+        workdir: meson.current_source_dir(),
+    )
 endforeach
diff --git a/softoff/meson.build b/softoff/meson.build
index fd57108..12ff61a 100644
--- a/softoff/meson.build
+++ b/softoff/meson.build
@@ -6,22 +6,25 @@
     sdbusplus,
     phosphor_dbus_interfaces,
     phosphor_logging_dep,
-    ]
+]
 
-source = ['main.cpp','softoff.cpp']
+source = ['main.cpp', 'softoff.cpp']
 
-executable('pldm-softpoweroff',source,
-           implicit_include_directories: false,
-           dependencies: deps,
-           install: true,
-           install_dir: get_option('bindir'))
+executable(
+    'pldm-softpoweroff',
+    source,
+    implicit_include_directories: false,
+    dependencies: deps,
+    install: true,
+    install_dir: get_option('bindir'),
+)
 
 if get_option('systemd').allowed()
-  filesystem.copyfile(
-    'services/pldmSoftPowerOff.service',
-    'pldmSoftPowerOff.service',
-    install: true,
-    install_dir: systemd_system_unit_dir
-  )
+    filesystem.copyfile(
+        'services/pldmSoftPowerOff.service',
+        'pldmSoftPowerOff.service',
+        install: true,
+        install_dir: systemd_system_unit_dir,
+    )
 endif
 
diff --git a/test/meson.build b/test/meson.build
index a1b3549..96fbeaf 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -1,18 +1,17 @@
 pldmd_inc = include_directories('../')
-test_src = declare_dependency(
-          include_directories:pldmd_inc)
+test_src = declare_dependency(include_directories: pldmd_inc)
 
-tests = [
-  'pldmd_registration_test',
-]
+tests = ['pldmd_registration_test']
 
 foreach t : tests
-  test(t, executable(t.underscorify(), t + '.cpp',
-                     implicit_include_directories: false,
-                     dependencies: [
-                         libpldm_dep,
-                         nlohmann_json_dep,
-                         gtest,
-                         test_src]),
-       workdir: meson.current_source_dir())
+    test(
+        t,
+        executable(
+            t.underscorify(),
+            t + '.cpp',
+            implicit_include_directories: false,
+            dependencies: [libpldm_dep, nlohmann_json_dep, gtest, test_src],
+        ),
+        workdir: meson.current_source_dir(),
+    )
 endforeach
diff --git a/utilities/meson.build b/utilities/meson.build
index 383cf29..e49959a 100644
--- a/utilities/meson.build
+++ b/utilities/meson.build
@@ -1,16 +1,23 @@
-deps = [ CLI11_dep, libpldm_dep, sdeventplus, phosphor_logging_dep ]
+deps = [CLI11_dep, libpldm_dep, sdeventplus, phosphor_logging_dep]
 
-executable('set-state-effecter', 'requester/set_state_effecter.cpp', '../common/transport.cpp',
-           implicit_include_directories: false,
-           include_directories: [ '..' ],
-           dependencies: deps,
-           install: true,
-           install_dir: get_option('bindir'))
+executable(
+    'set-state-effecter',
+    'requester/set_state_effecter.cpp',
+    '../common/transport.cpp',
+    implicit_include_directories: false,
+    include_directories: ['..'],
+    dependencies: deps,
+    install: true,
+    install_dir: get_option('bindir'),
+)
 
-executable('set-state-effecter-async',
-           'requester/set_state_effecter_async.cpp', '../common/transport.cpp',
-           implicit_include_directories: false,
-           include_directories: [ '..' ],
-           dependencies: deps,
-           install: true,
-           install_dir: get_option('bindir'))
+executable(
+    'set-state-effecter-async',
+    'requester/set_state_effecter_async.cpp',
+    '../common/transport.cpp',
+    implicit_include_directories: false,
+    include_directories: ['..'],
+    dependencies: deps,
+    install: true,
+    install_dir: get_option('bindir'),
+)
