diff --git a/.gitignore b/.gitignore
index 6ef6990..6ebea1a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,52 +1,4 @@
-# Template from:
-# https://github.com/github/gitignore/blob/master/Autotools.gitignore
-
-# http://www.gnu.org/software/automake
-
-Makefile.in
-/ar-lib
-/mdate-sh
-/py-compile
-/test-driver
-/ylwrap
-
-# http://www.gnu.org/software/autoconf
-
-/autom4te.cache
-/autoscan.log
-/autoscan-*.log
-/aclocal.m4
-/compile
-/config.guess
-/config.h.in
-/config.sub
-/configure
-/configure.scan
-/depcomp
-/install-sh
-/missing
-/stamp-h1
-
-# https://www.gnu.org/software/libtool/
-/libtool
-/ltmain.sh
-
-# http://www.gnu.org/software/texinfo
-
-/texinfo.tex
-
-# Repo Specific Items
-/*.o
-/config.h
-/config.h.in~
-/config.log
-/config.status
-Makefile
-.deps
-*-libtool
-.project
-.libs*
-*.lo
-*.la
-org/open_power/OCC/Metrics/*
-/inventory-sensor.cpp
+build*/
+subprojects/*
+!subprojects/*.wrap
+.vscode/
\ No newline at end of file
diff --git a/Makefile.am b/Makefile.am
deleted file mode 100644
index 00ea59f..0000000
--- a/Makefile.am
+++ /dev/null
@@ -1,38 +0,0 @@
-liboemhandlerdir = ${libdir}/ipmid-providers
-liboemhandler_LTLIBRARIES = liboemhandler.la
-
-liboemhandler_la_SOURCES = oemhandler.cpp \
-                           host-interface.cpp \
-                           org/open_power/OCC/Metrics/error.cpp \
-                           inventory-sensor.cpp
-
-BUILT_SOURCES = org/open_power/OCC/Metrics/error.hpp \
-                org/open_power/OCC/Metrics/error.cpp \
-                inventory-sensor.cpp
-
-CLEANFILES = $(BUILT_SOURCES)
-
-liboemhandler_la_LDFLAGS = $(SYSTEMD_LIBS)\
-                           $(SDBUSPLUS_LIBS) \
-                           $(LIBIPMID_LIBS) \
-                           $(LIBIPMID_HOST_LIBS) \
-                           $(PHOSPHOR_LOGGING_LIBS) \
-                           -version-info 0:0:0 -shared
-
-liboemhandler_la_CXXFLAGS = $(SYSTEMD_CFLAGS) \
-                            $(SDBUSPLUS_CFLAGS) \
-                            $(LIBIPMID_CFLAGS) \
-                            $(LIBIPMID_HOST_CFLAGS) \
-                            $(PHOSPHOR_LOGGING_CFLAGS) \
-                            $(AM_CXXFLAGS)
-
-org/open_power/OCC/Metrics/error.hpp: ${top_srcdir}/org/open_power/OCC/Metrics.errors.yaml
-	@mkdir -p `dirname $@`
-	$(SDBUSPLUSPLUS) -r $(top_srcdir) error exception-header org.open_power.OCC.Metrics > $@
-
-org/open_power/OCC/Metrics/error.cpp: ${top_srcdir}/org/open_power/OCC/Metrics.errors.yaml
-	@mkdir -p `dirname $@`
-	$(SDBUSPLUSPLUS) -r $(top_srcdir) error exception-cpp org.open_power.OCC.Metrics > $@
-
-inventory-sensor.cpp:
-	$(AM_V_GEN)@INVSENSORGEN@ -o $(top_builddir) generate-cpp
diff --git a/README.md b/README.md
index 31aed45..5e3fb66 100644
--- a/README.md
+++ b/README.md
@@ -7,11 +7,10 @@
 ```
 To build this package, do the following steps:
 
-    1. ./bootstrap.sh
-    2. ./configure ${CONFIGURE_FLAGS}
-    3. make
+    meson setup build
+    ninja -C build
 
-To clean the repository run `./bootstrap.sh clean`.
+To clean the repository again run rm -rf build.
 ```
 
 ## Supported Commands
diff --git a/configure.ac b/configure.ac
deleted file mode 100644
index 33d383a..0000000
--- a/configure.ac
+++ /dev/null
@@ -1,84 +0,0 @@
-# Initialization
-AC_PREREQ([2.69])
-AC_INIT([openpower-host-ipmi-oem], [1.0], [https://github.com/openbmc/openpower-host-ipmi-oem/issues])
-AC_CONFIG_HEADERS([config.h])
-AM_INIT_AUTOMAKE([subdir-objects -Wall -Werror foreign dist-xz])
-AM_SILENT_RULES([yes])
-AC_LANG([C++])
-
-# Checks for programs.
-AC_PROG_CXX
-AM_PROG_AR
-AC_PROG_INSTALL
-AC_PROG_MAKE_SET
-
-# Checks for libraries.
-PKG_CHECK_MODULES([SYSTEMD], [libsystemd >= 221])
-
-# Checks for header files.
-AC_CHECK_HEADER(systemd/sd-bus.h, ,[AC_MSG_ERROR([Could not find systemd/sd-bus.h...systemd development package required])])
-PKG_CHECK_MODULES([LIBIPMID], [libipmid])
-PKG_CHECK_MODULES([SDBUSPLUS], [sdbusplus])
-PKG_CHECK_MODULES([PHOSPHOR_LOGGING], [phosphor-logging])
-
-# Check for sdbus++ tool
-AC_PATH_PROG([SDBUSPLUSPLUS], [sdbus++])
-AS_IF([test "x$SDBUSPLUSPLUS" == "x"], AC_MSG_ERROR([Cannot find sdbus++]))
-
-# Checks for typedefs, structures, and compiler characteristics.
-AX_CXX_COMPILE_STDCXX([20],[noext])
-AX_APPEND_COMPILE_FLAGS([-Wall -Werror], [CXXFLAGS])
-
-# Checks for library functions.
-LT_INIT([disable-static shared])
-
-# Check/set gtest specific functions.
-AX_PTHREAD([GTEST_CPPFLAGS="-DGTEST_HAS_PTHREAD=1"],[GTEST_CPPFLAGS="-GTEST_HAS_PTHREAD=0"])
-AC_SUBST(GTEST_CPPFLAGS)
-
-AC_ARG_ENABLE([oe-sdk],
-    AS_HELP_STRING([--enable-oe-sdk], [Link testcases absolutely against OE SDK so they can be ran within it.])
-)
-AC_ARG_VAR(OECORE_TARGET_SYSROOT,
-    [Path to the OE SDK SYSROOT])
-AS_IF([test "x$enable_oe_sdk" == "xyes"],
-    AS_IF([test "x$OECORE_TARGET_SYSROOT" == "x"],
-          AC_MSG_ERROR([OECORE_TARGET_SYSROOT must be set with --enable-oe-sdk])
-    )
-    AC_MSG_NOTICE([Enabling OE-SDK at $OECORE_TARGET_SYSROOT])
-    [
-        testcase_flags="-Wl,-rpath,\${OECORE_TARGET_SYSROOT}/lib"
-        testcase_flags="${testcase_flags} -Wl,-rpath,\${OECORE_TARGET_SYSROOT}/usr/lib"
-        testcase_flags="${testcase_flags} -Wl,-dynamic-linker,`find \${OECORE_TARGET_SYSROOT}/lib/ld-*.so | sort -r -n | head -n1`"
-    ]
-    AC_SUBST([OESDK_TESTCASE_FLAGS], [$testcase_flags])
-)
-
-# Host object name in the D-Bus
-AC_ARG_VAR(HOST_NAME, [The Host name in the object path])
-AS_IF([test "x$HOST_NAME" == "x"],
-      [HOST_NAME="host"])
-AC_DEFINE_UNQUOTED([HOST_NAME], ["$HOST_NAME"], [The Host name in the object path])
-
-# Service dbus object manager
-AC_ARG_VAR(CONTROL_HOST_OBJ_MGR, [The Control Host D-Bus Object Manager])
-AS_IF([test "x$CONTROL_HOST_OBJ_MGR" == "x"],
-      [CONTROL_HOST_OBJ_MGR="/org/open_power/control"])
-AC_DEFINE_UNQUOTED([CONTROL_HOST_OBJ_MGR], ["$CONTROL_HOST_OBJ_MGR"], [The Control Host D-Bus Object Manager])
-
-AS_IF([test "x$INVSENSOR_YAML_GEN" == "x"], [INVSENSOR_YAML_GEN="inventory-sensor-example.yaml"])
-INVSENSORGEN="$PYTHON ${srcdir}/scripts/inventory-sensor.py -i $INVSENSOR_YAML_GEN"
-AC_SUBST(INVSENSORGEN)
-
-AC_DEFINE(MAPPER_BUS_NAME, "xyz.openbmc_project.ObjectMapper",
-          [The object mapper bus name])
-
-AC_DEFINE(MAPPER_OBJ, "/xyz/openbmc_project/object_mapper",
-          [The object mapper object path])
-
-AC_DEFINE(MAPPER_IFACE, "xyz.openbmc_project.ObjectMapper",
-          [The object mapper interface])
-
-# Create configured output.
-AC_CONFIG_FILES([Makefile])
-AC_OUTPUT
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..1611a06
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,57 @@
+project(
+    'openpower-host-ipmi-oem',
+    'cpp',
+    default_options: [
+        'warning_level=3',
+        'werror=true',
+        'cpp_std=c++23',
+        'buildtype=debugoptimized',
+    ],
+    meson_version: '>=1.1.1',
+    license: 'Apache-2.0',
+    version: '0.1',
+)
+
+conf = configuration_data()
+conf.set_quoted('HOST_NAME', get_option('host-name'))
+
+configure_file(output: 'config.h', configuration: conf)
+
+sdbusplus = dependency('sdbusplus')
+phosphorlogging = dependency('phosphor-logging')
+phosphordbusinterfaces = dependency('phosphor-dbus-interfaces')
+ipmid = dependency('libipmid')
+
+root = meson.current_source_dir()
+
+# Generate sdbus++ code (occmetrics)
+subdir('org/open_power/OCC/Metrics')
+
+# Generate inventory sensor files
+inventory_gen_src = []
+subdir('scripts')
+
+lilboemhandler_sources = [
+    'host-interface.cpp',
+    'oemhandler.cpp',
+    md_cpp,
+    inventory_gen_src,
+]
+
+lilboemhandler = library(
+    'oemhandler',
+    lilboemhandler_sources,
+    gnu_symbol_visibility: 'hidden',
+    install: true,
+    install_dir: get_option('libdir') / 'ipmid-providers',
+    version: meson.project_version(),
+    override_options: ['b_lundef=false'],
+    dependencies: [
+        sdbusplus,
+        phosphorlogging,
+        phosphordbusinterfaces,
+        ipmid,
+        occmetrics_dbus,
+    ],
+)
+
diff --git a/meson.options b/meson.options
new file mode 100644
index 0000000..0284ed1
--- /dev/null
+++ b/meson.options
@@ -0,0 +1,15 @@
+option('tests', type: 'feature', description: 'Build tests')
+
+option(
+    'host-name',
+    type: 'string',
+    value: 'host',
+    description: 'The Host name in the object path.',
+)
+
+# Generate configuration from Yaml
+option(
+    'invsensor-yaml-gen',
+    type: 'string',
+    value: 'inventory-sensor-example.yaml',
+)
diff --git a/oemhandler.cpp b/oemhandler.cpp
index 80ea42e..9623b97 100644
--- a/oemhandler.cpp
+++ b/oemhandler.cpp
@@ -83,8 +83,10 @@
 std::string getService(sdbusplus::bus_t& bus, const std::string& path,
                        const std::string& interface)
 {
-    auto method = bus.new_method_call(MAPPER_BUS_NAME, MAPPER_OBJ, MAPPER_IFACE,
-                                      "GetObject");
+    auto method =
+        bus.new_method_call("xyz.openbmc_project.ObjectMapper",
+                            "/xyz/openbmc_project/object_mapper",
+                            "xyz.openbmc_project.ObjectMapper", "GetObject");
 
     method.append(path);
     method.append(std::vector<std::string>({interface}));
@@ -228,8 +230,10 @@
 // storage.  Likely via the ipmi add_sel command.
 ///////////////////////////////////////////////////////////////////////////////
 ipmi_ret_t ipmi_ibm_oem_partial_esel(
-    ipmi_netfn_t netfn, ipmi_cmd_t cmd, ipmi_request_t request,
-    ipmi_response_t response, ipmi_data_len_t data_len, ipmi_context_t context)
+    [[maybe_unused]] ipmi_netfn_t netfn, [[maybe_unused]] ipmi_cmd_t cmd,
+    [[maybe_unused]] ipmi_request_t request,
+    [[maybe_unused]] ipmi_response_t response, ipmi_data_len_t data_len,
+    [[maybe_unused]] ipmi_context_t context)
 {
     uint8_t* reqptr = (uint8_t*)request;
     esel_request_t esel_req;
@@ -318,8 +322,10 @@
 // Prepare for FW Update.
 // Execute needed commands to prepare the system for a fw update from the host.
 ipmi_ret_t ipmi_ibm_oem_prep_fw_update(
-    ipmi_netfn_t netfn, ipmi_cmd_t cmd, ipmi_request_t request,
-    ipmi_response_t response, ipmi_data_len_t data_len, ipmi_context_t context)
+    [[maybe_unused]] ipmi_netfn_t netfn, [[maybe_unused]] ipmi_cmd_t cmd,
+    [[maybe_unused]] ipmi_request_t request,
+    [[maybe_unused]] ipmi_response_t response, ipmi_data_len_t data_len,
+    [[maybe_unused]] ipmi_context_t context)
 {
     ipmi_ret_t ipmi_rc = IPMI_CC_OK;
     *data_len = 0;
@@ -357,8 +363,11 @@
 }
 
 ipmi_ret_t ipmi_ibm_oem_bmc_factory_reset(
-    ipmi_netfn_t netfn, ipmi_cmd_t cmd, ipmi_request_t request,
-    ipmi_response_t response, ipmi_data_len_t data_len, ipmi_context_t context)
+    [[maybe_unused]] ipmi_netfn_t netfn, [[maybe_unused]] ipmi_cmd_t cmd,
+    [[maybe_unused]] ipmi_request_t request,
+    [[maybe_unused]] ipmi_response_t response,
+    [[maybe_unused]] ipmi_data_len_t data_len,
+    [[maybe_unused]] ipmi_context_t context)
 {
     sdbusplus::bus_t bus{ipmid_get_sd_bus_connection()};
 
@@ -449,12 +458,13 @@
                            ipmi_ibm_oem_bmc_factory_reset, SYSTEM_INTERFACE);
 
     // Create new object on the bus
-    auto objPath = std::string{CONTROL_HOST_OBJ_MGR} + '/' + HOST_NAME + '0';
+    auto objPath = std::string{"/org/open_power/control"} + '/' + HOST_NAME +
+                   '0';
 
     // Add sdbusplus ObjectManager.
     auto& sdbusPlusHandler = ipmid_get_sdbus_plus_handler();
     objManager = std::make_unique<sdbusplus::server::manager_t>(
-        *sdbusPlusHandler, CONTROL_HOST_OBJ_MGR);
+        *sdbusPlusHandler, "/org/open_power/control");
 
     opHost = std::make_unique<open_power::host::command::Host>(
         *sdbusPlusHandler, objPath.c_str());
diff --git a/org/open_power/OCC/Metrics/meson.build b/org/open_power/OCC/Metrics/meson.build
new file mode 100644
index 0000000..40504c1
--- /dev/null
+++ b/org/open_power/OCC/Metrics/meson.build
@@ -0,0 +1,34 @@
+sdbuspp_prog = find_program('sdbus++')
+
+domain = 'org.open_power.OCC.Metrics'
+md_yaml_file = files('../Metrics.metadata.yaml')
+
+md_cpp = custom_target(
+    'error.cpp',
+    output: 'error.cpp',
+    input: md_yaml_file,
+    capture: true,
+    command: [sdbuspp_prog, '-r', root, 'error', 'exception-cpp', domain],
+    install: true,
+    install_dir: get_option('includedir') / 'org/open_power/OCC/Metrics',
+)
+
+md_hpp = custom_target(
+    'error.hpp',
+    output: 'error.hpp',
+    input: md_yaml_file,
+    capture: true,
+    command: [sdbuspp_prog, '-r', root, 'error', 'exception-header', domain],
+    install: true,
+    install_dir: get_option('includedir') / 'org/open_power/OCC/Metrics',
+)
+
+occmetrics_dbus_deps = [
+    dependency('phosphor-dbus-interfaces'),
+    dependency('sdbusplus'),
+]
+
+occmetrics_dbus = declare_dependency(
+    dependencies: occmetrics_dbus_deps,
+    sources: [md_cpp, md_hpp],
+)
diff --git a/scripts/inventory-sensor.py b/scripts/inventory-sensor.py
index f5a8d1d..680f5e7 100755
--- a/scripts/inventory-sensor.py
+++ b/scripts/inventory-sensor.py
@@ -9,7 +9,7 @@
 
 
 def generate_cpp(sensor_yaml, output_dir):
-    with open(os.path.join(script_dir, sensor_yaml), "r") as f:
+    with open(sensor_yaml, "r") as f:
         ifile = yaml.safe_load(f)
         if not isinstance(ifile, dict):
             ifile = {}
@@ -57,7 +57,7 @@
 
     args = parser.parse_args()
 
-    if not (os.path.isfile(os.path.join(script_dir, args.sensor_yaml))):
+    if not (os.path.isfile(args.sensor_yaml)):
         sys.exit("Can not find input yaml file " + args.sensor_yaml)
 
     function = valid_commands[args.command]
diff --git a/scripts/meson.build b/scripts/meson.build
new file mode 100644
index 0000000..9b78af1
--- /dev/null
+++ b/scripts/meson.build
@@ -0,0 +1,18 @@
+# Generate Configuration Files from Yaml
+python_exe = find_program('python3', 'python')
+
+invsensor_gen = custom_target(
+    'invsensor-gen',
+    output: 'inventory-sensor.cpp',
+    input: ['inventory-sensor.py', get_option('invsensor-yaml-gen')],
+    command: [
+        python_exe,
+        '@INPUT0@',
+        '-i',
+        '@INPUT1@',
+        '-o',
+        meson.current_build_dir(),
+        'generate-cpp',
+    ],
+)
+inventory_gen_src = invsensor_gen
diff --git a/subprojects/phosphor-dbus-interfaces.wrap b/subprojects/phosphor-dbus-interfaces.wrap
new file mode 100644
index 0000000..346aa0c
--- /dev/null
+++ b/subprojects/phosphor-dbus-interfaces.wrap
@@ -0,0 +1,6 @@
+[wrap-git]
+url = https://github.com/openbmc/phosphor-dbus-interfaces.git
+revision = HEAD
+
+[provide]
+phosphor-dbus-interfaces = phosphor_dbus_interfaces_dep
diff --git a/subprojects/phosphor-logging.wrap b/subprojects/phosphor-logging.wrap
new file mode 100644
index 0000000..71eee8b
--- /dev/null
+++ b/subprojects/phosphor-logging.wrap
@@ -0,0 +1,6 @@
+[wrap-git]
+url = https://github.com/openbmc/phosphor-logging.git
+revision = HEAD
+
+[provide]
+phosphor-logging = phosphor_logging_dep
diff --git a/subprojects/sdbusplus.wrap b/subprojects/sdbusplus.wrap
new file mode 100644
index 0000000..7b076d0
--- /dev/null
+++ b/subprojects/sdbusplus.wrap
@@ -0,0 +1,6 @@
+[wrap-git]
+url = https://github.com/openbmc/sdbusplus.git
+revision = HEAD
+
+[provide]
+sdbusplus = sdbusplus_dep
