diff --git a/.gitignore b/.gitignore
index bc496d1..9a5b17a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,80 +1,3 @@
-# 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/
-
-/ltmain.sh
-
-# http://www.gnu.org/software/texinfo
-
-/texinfo.tex
-
-# Repo Specific Items
-*.a
-*.o
-*.lo
-*.la
-*.so*
-*.pc
-/aminclude_static.am
-/config.h
-/config.h.in~
-/config.log
-/config.status
-Makefile
-.deps
-.dirstamp
-.libs/
-/libtool
-/*-libtool
-/ipmid
-.project
-/softoff/phosphor-softpoweroff
-/softoff/xyz/
-/fru-read-gen.cpp
-/ipmiwhitelist.cpp
-/sensor-gen.cpp
-/inventory-sensor-gen.cpp
-/fru-read-gen.cpp
-/channel-gen.cpp
-/entity-gen.cpp
-
-# test related
-/test/*.log
-/test/*.trs
-/test-suite.log
-*-1.0-coverage*
-*.gcda
-*.gcno
-softoff/test
-test/*_unittest
-
 # ignore vim swap files
 .*.sw*
 # failures from patch
@@ -83,4 +6,7 @@
 # backup files from some editors
 *~
 .cscope/
-build/
+
+# Meson
+/build*/
+/subprojects/*/
diff --git a/Makefile.am b/Makefile.am
deleted file mode 100644
index 49547e1..0000000
--- a/Makefile.am
+++ /dev/null
@@ -1,205 +0,0 @@
-AM_DEFAULT_SOURCE_EXT = .cpp
-
-AM_CPPFLAGS = -I$(abs_srcdir) -I$(abs_srcdir)/include
-export AM_CPPFLAGS
-
-if AUTOCONF_CODE_COVERAGE_2019_01_06
-include $(top_srcdir)/aminclude_static.am
-clean-local: code-coverage-clean
-distclean-local: code-coverage-dist-clean
-else
-@CODE_COVERAGE_RULES@
-endif
-
-providersdir = ${libdir}/ipmid-providers
-providers_LTLIBRARIES =
-
-if FEATURE_IPMI_WHITELIST
-IPMI_WHITELIST_SOURCE = ipmiwhitelist.cpp
-else
-IPMI_WHITELIST_SOURCE =
-endif
-
-bin_PROGRAMS = \
-	ipmid
-
-ipmid_SOURCES = \
-	ipmid-new.cpp \
-	settings.cpp \
-	host-cmd-manager.cpp
-
-libipmi20_BUILT_LIST = \
-	sensor-gen.cpp \
-	inventory-sensor-gen.cpp \
-	fru-read-gen.cpp
-
-BUILT_SOURCES = \
-	$(IPMI_WHITELIST_SOURCE) \
-	$(libipmi20_BUILT_LIST)
-
-CLEANFILES = $(BUILT_SOURCES)
-
-COMMON_CXX = \
-	-flto \
-	-Wno-psabi \
-	$(SYSTEMD_CFLAGS) \
-	$(libmapper_CFLAGS) \
-	$(SDBUSPLUS_CFLAGS) \
-	$(PHOSPHOR_LOGGING_CFLAGS) \
-	$(PHOSPHOR_DBUS_INTERFACES_CFLAGS) \
-	-DBOOST_ERROR_CODE_HEADER_ONLY \
-	-DBOOST_SYSTEM_NO_DEPRECATED \
-	-DBOOST_COROUTINES_NO_DEPRECATION_WARNING \
-	-DBOOST_ASIO_DISABLE_THREADS \
-	-DBOOST_ALL_NO_LIB
-
-ipmid_CXXFLAGS = $(COMMON_CXX)
-ipmid_LDADD = \
-	libipmid/libipmid.la \
-	user_channel/libchannellayer.la \
-	libipmid-host/libipmid-host.la
-ipmid_LDFLAGS = \
-	$(SYSTEMD_LIBS) \
-	$(libmapper_LIBS) \
-	$(LIBADD_DLOPEN) \
-	$(PHOSPHOR_LOGGING_LIBS) \
-	$(PHOSPHOR_DBUS_INTERFACES_LIBS) \
-	$(CRYPTO_LIBS) \
-	-lboost_coroutine \
-	-lstdc++fs \
-	-export-dynamic
-
-# TODO: Rather than use -export-dynamic, we should use -export-symbol to have a
-#       selective list of symbols.
-
-ipmiwhitelist.cpp: ${srcdir}/generate_whitelist.sh $(WHITELIST_CONF)
-	$(SHELL) $^ > $@
-
-sensor-gen.cpp: scripts/writesensor.mako.cpp scripts/sensor_gen.py @SENSOR_YAML_GEN@
-	$(AM_V_GEN)@SENSORGEN@ -o $(top_builddir) generate-cpp
-
-inventory-sensor-gen.cpp: scripts/inventorysensor.mako.cpp scripts/inventory-sensor.py @INVSENSOR_YAML_GEN@
-	$(AM_V_GEN)@INVSENSORGEN@ -o $(top_builddir) generate-cpp
-
-fru-read-gen.cpp: scripts/readfru.mako.cpp scripts/fru_gen.py @FRU_YAML_GEN@
-	$(AM_V_GEN)@FRUGEN@ -o $(top_builddir) generate-cpp
-
-providers_LTLIBRARIES += libipmi20.la
-if FEATURE_TRANSPORT_OEM
-libipmi20_la_TRANSPORTOEM = transporthandler_oem.cpp
-else
-libipmi20_la_TRANSPORTOEM =
-endif
-
-libipmi20_la_SOURCES = \
-	app/channel.cpp \
-	app/watchdog.cpp \
-	app/watchdog_service.cpp \
-	apphandler.cpp \
-	sys_info_param.cpp \
-	sensorhandler.cpp \
-	entity_map_json.cpp \
-	storagehandler.cpp \
-	chassishandler.cpp \
-	dcmihandler.cpp \
-	ipmisensor.cpp \
-	storageaddsel.cpp \
-	transporthandler.cpp \
-	globalhandler.cpp \
-	groupext.cpp \
-	selutility.cpp \
-	ipmi_fru_info_area.cpp \
-	read_fru_data.cpp \
-	sensordatahandler.cpp \
-	user_channel/channelcommands.cpp \
-	$(libipmi20_la_TRANSPORTOEM) \
-	$(libipmi20_BUILT_LIST)
-
-check_PROGRAMS =
-XFAIL_TESTS =
-
-TESTS = $(check_PROGRAMS)
-
-libipmi20_la_LIBADD = \
-	libipmid/libipmid.la \
-	user_channel/libchannellayer.la
-libipmi20_la_LDFLAGS = \
-	$(SYSTEMD_LIBS) \
-	$(libmapper_LIBS) \
-	$(PHOSPHOR_LOGGING_LIBS) \
-	$(PHOSPHOR_DBUS_INTERFACES_LIBS) \
-	-lstdc++fs \
-	-lboost_coroutine \
-	-version-info 0:0:0 -shared
-libipmi20_la_CXXFLAGS = $(COMMON_CXX)
-
-if FEATURE_LIBUSERLAYER
-providers_LTLIBRARIES += libusercmds.la
-libusercmds_la_LIBADD = \
-	libipmid/libipmid.la \
-	user_channel/libuserlayer.la \
-	user_channel/libchannellayer.la
-libusercmds_la_SOURCES = \
-	user_channel/usercommands.cpp
-libusercmds_la_LDFLAGS = \
-	$(PHOSPHOR_LOGGING_LIBS) \
-	$(libmapper_LIBS) \
-	-version-info 0:0:0 -shared
-libusercmds_la_CXXFLAGS = $(COMMON_CXX)
-endif
-
-providers_LTLIBRARIES += libsysintfcmds.la
-libsysintfcmds_la_LIBADD = \
-	libipmid/libipmid.la \
-	libipmid-host/libipmid-host.la
-libsysintfcmds_la_SOURCES = \
-	systemintfcmds.cpp \
-	host-interface.cpp
-libsysintfcmds_la_LDFLAGS = \
-	$(SYSTEMD_LIBS) \
-	$(libmapper_LIBS) \
-	$(PHOSPHOR_DBUS_INTERFACES_LIBS) \
-	$(PHOSPHOR_LOGGING_LIBS) \
-	$(SDBUSPLUS_LIBS) \
-	-version-info 0:0:0 -shared
-libsysintfcmds_la_CXXFLAGS = $(COMMON_CXX)
-
-if FEATURE_DYNAMIC_SENSORS
-providers_LTLIBRARIES += libdynamiccmds.la
-libdynamiccmds_la_LIBADD = \
-	libipmid/libipmid.la
-libdynamiccmds_la_LIBADD += libipmi20.la
-libdynamiccmds_la_SOURCES = \
-	dbus-sdr/sensorcommands.cpp \
-	dbus-sdr/storagecommands.cpp \
-	dbus-sdr/sdrutils.cpp \
-	dbus-sdr/sensorutils.cpp
-libdynamiccmds_la_LDFLAGS = \
-	$(PHOSPHOR_LOGGING_LIBS) \
-	$(libmapper_LIBS) \
-	-version-info 0:0:0 -shared
-libdynamiccmds_la_CXXFLAGS = $(COMMON_CXX)
-endif
-
-if FEATURE_IPMI_WHITELIST
-libwhitelistdir = ${libdir}/ipmid-providers
-libwhitelist_LTLIBRARIES = libwhitelist.la
-libwhitelist_la_SOURCES = \
-	whitelist-filter.cpp
-libwhitelist_la_LDFLAGS = \
-	$(SYSTEMD_LIBS) \
-	$(libmapper_LIBS) \
-	$(PHOSPHOR_LOGGING_LIBS) \
-	$(PHOSPHOR_DBUS_INTERFACES_LIBS) \
-	-version-info 0:0:0 -shared
-libwhitelist_la_CXXFLAGS = $(COMMON_CXX)
-nodist_libwhitelist_la_SOURCES = ipmiwhitelist.cpp
-endif
-
-nobase_include_HEADERS = \
-	user_channel/channel_layer.hpp \
-	user_channel/user_layer.hpp \
-	user_channel/cipher_mgmt.hpp
-
-# Forcing the build of self and then subdir
-SUBDIRS = include libipmid libipmid-host user_channel . test softoff
diff --git a/app/meson.build b/app/meson.build
new file mode 100644
index 0000000..5e89b27
--- /dev/null
+++ b/app/meson.build
@@ -0,0 +1,15 @@
+app_inc = include_directories('.')
+
+app_pre = declare_dependency(include_directories: [root_inc, app_inc])
+
+app_lib = static_library(
+  'app',
+  'channel.cpp',
+  'watchdog.cpp',
+  'watchdog_service.cpp',
+  implicit_include_directories: false,
+  dependencies: app_pre)
+
+app_dep = declare_dependency(
+  link_with: app_lib,
+  dependencies: app_pre)
diff --git a/bootstrap.sh b/bootstrap.sh
deleted file mode 100755
index 9fdf674..0000000
--- a/bootstrap.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/sh
-
-AUTOCONF_FILES="Makefile.in aclocal.m4 ar-lib autom4te.cache compile \
-        config.guess config.h.in config.sub configure depcomp install-sh \
-        ltmain.sh missing *libtool test-driver"
-
-case $1 in
-    clean)
-        test -f Makefile && make maintainer-clean
-        for file in ${AUTOCONF_FILES}; do
-            find . -name "$file" -print0 | xargs -0 -r rm -rf
-        done
-        exit 0
-        ;;
-esac
-
-autoreconf -i
-# shellcheck disable=SC2016
-echo 'Run "./configure ${CONFIGURE_FLAGS} && make"'
diff --git a/configure.ac b/configure.ac
deleted file mode 100644
index f7f69a0..0000000
--- a/configure.ac
+++ /dev/null
@@ -1,353 +0,0 @@
-# Initialization
-AC_PREREQ([2.69])
-AC_INIT([phosphor-host-ipmid], [1.0], [https://github.com/openbmc/phosphor-host-ipmid/issues])
-AC_CONFIG_HEADERS([config.h])
-AM_INIT_AUTOMAKE([subdir-objects -Wall -Wno-portability -Werror foreign dist-xz])
-AM_SILENT_RULES([yes])
-AC_LANG([C++])
-
-# Make sure the default CFLAGS of `-O2 -g` don't override CODE_COVERAGE_CFLAGS
-# It is important that this comes before AC_PROG_C{C,XX}, as we are attempting
-# to stop them from populating default CFLAGS and CXXFLAGS.
-AS_IF([test "x$enable_code_coverage" != "xno"], [
-    AS_IF([test "x${CXXFLAGS+set}" != "xset"], [
-        AC_SUBST(CXXFLAGS, [""])
-    ])
-    AS_IF([test "x${CFLAGS+set}" != "xset"], [
-        AC_SUBST(CFLAGS, [""])
-    ])
-])
-
-# Checks for programs.
-AC_PROG_CXX
-AC_PROG_CC
-AM_PROG_AR
-AC_PROG_INSTALL
-AC_PROG_MAKE_SET
-
-# Add an option to enable/disable safe mode in boot flags
-AC_ARG_ENABLE([boot-flag-safe-mode-support],
-    AS_HELP_STRING([--disable-boot-flag-safe-mode-support], [Disable safe mode option in boot flags. [default=enable]])
-)
-AS_IF([test "x$enable_boot_flag_safe_mode_support" != "xno"],
-    AC_MSG_NOTICE([Enabling safe mode option in boot flags])
-    [cpp_flags="$cpp_flags -DENABLE_BOOT_FLAG_SAFE_MODE_SUPPORT"]
-    AC_SUBST([CPPFLAGS], [$cpp_flags]),
-    AC_MSG_WARN([Disabling safe mode option in boot flags])
-)
-
-# Add an option to enable/disable i2c master write read command white list checking
-AC_ARG_ENABLE([i2c-whitelist-check],
-    AS_HELP_STRING([--disable-i2c-whitelist-check], [Disable I2C master write read command white list check. [default=enable]])
-)
-AS_IF([test "x$enable_i2c_whitelist_check" != "xno"],
-    AC_MSG_NOTICE([Enabling I2C master write read command white list check])
-    [cpp_flags="$cpp_flags -DENABLE_I2C_WHITELIST_CHECK"]
-    AC_SUBST([CPPFLAGS], [$cpp_flags]),
-    AC_MSG_WARN([Disabling I2C master write read command white list check])
-)
-
-# softoff dir specific ones
-AC_ARG_ENABLE([softoff],
-    AS_HELP_STRING([--enable-softoff], [Builds soft power off])
-)
-AS_IF([test "x$enable_softoff" != "xno"],
-    [AC_PROG_MKDIR_P]
-    [AC_CHECK_PROG([DIRNAME], dirname, dirname)]
-)
-
-# Make sure the pkgconfigdata is configured for automake
-PKG_INSTALLDIR
-
-# Checks for libraries.
-AC_CHECK_LIB([pam], [pam_start], [], [AC_MSG_ERROR([libpam not found])])
-AC_CHECK_LIB([mapper], [mapper_get_service], ,[AC_MSG_ERROR([Could not find libmapper...openbmc/phosphor-objmgr package required])])
-PKG_CHECK_MODULES([SYSTEMD], [libsystemd >= 221], [], [AC_MSG_ERROR(["systemd required and not found"])])
-PKG_CHECK_MODULES([CRYPTO], [libcrypto >= 1.0.2g], ,[AC_MSG_ERROR([can't find openssl libcrypto])])
-PKG_CHECK_MODULES([PHOSPHOR_LOGGING], [phosphor-logging])
-PKG_CHECK_MODULES([PHOSPHOR_DBUS_INTERFACES], [phosphor-dbus-interfaces])
-PKG_CHECK_MODULES([SDBUSPLUS], [sdbusplus])
-AC_CHECK_HEADER(nlohmann/json.hpp, [], [AC_MSG_ERROR([Could not find nlohmann/json.hpp])])
-
-AS_IF([test "x$enable_softoff" != "xno"], [
-    PKG_CHECK_MODULES([SDEVENTPLUS], [sdeventplus])
-
-    # 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], [mandatory])
-AX_APPEND_COMPILE_FLAGS([-Wall -Werror], [CFLAGS])
-AX_APPEND_COMPILE_FLAGS([-Wall -Werror], [CXXFLAGS])
-
-# Checks for library functions.
-LT_INIT([dlopen disable-static shared])
-LT_LIB_DLLOAD
-
-# Check/set gtest specific functions.
-PKG_CHECK_MODULES([GTEST], [gtest], [], [AC_MSG_NOTICE([gtest not found, tests will not build])])
-PKG_CHECK_MODULES([GTEST_MAIN], [gtest_main], [], [AC_MSG_NOTICE([gtest_main not found, tests will not build])])
-
-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])
-)
-
-# Add code coverage tool
-AX_CODE_COVERAGE
-AS_IF([test "x$CODE_COVERAGE_ENABLED" = "xyes"], [
-    AX_APPEND_COMPILE_FLAGS([-DHAVE_GCOV], [CODE_COVERAGE_CPPFLAGS])
-])
-m4_ifdef([_AX_CODE_COVERAGE_RULES],
-    [AM_CONDITIONAL(AUTOCONF_CODE_COVERAGE_2019_01_06, [true])],
-    [AM_CONDITIONAL(AUTOCONF_CODE_COVERAGE_2019_01_06, [false])])
-AX_ADD_AM_MACRO_STATIC([])
-
-
-AC_ARG_VAR(WHITELIST_CONF, [Paths to IPMI whitelisted commands conf files. (default = ${srcdir}/host-ipmid-whitelist.conf)])
-if test -z "$WHITELIST_CONF"; then
-        WHITELIST_CONF=${srcdir}/host-ipmid-whitelist.conf
-fi
-
-AS_IF([test "x$SENSOR_YAML_GEN" == "x"], [SENSOR_YAML_GEN="$srcdir/scripts/sensor-example.yaml"])
-SENSORGEN="$PYTHON ${srcdir}/scripts/sensor_gen.py -i $SENSOR_YAML_GEN"
-AC_SUBST(SENSOR_YAML_GEN)
-AC_SUBST(SENSORGEN)
-
-AS_IF([test "x$INVSENSOR_YAML_GEN" == "x"], [INVSENSOR_YAML_GEN="$srcdir/scripts/inventory-sensor-example.yaml"])
-INVSENSORGEN="$PYTHON ${srcdir}/scripts/inventory-sensor.py -i $INVSENSOR_YAML_GEN"
-AC_SUBST(INVSENSOR_YAML_GEN)
-AC_SUBST(INVSENSORGEN)
-
-AS_IF([test "x$FRU_YAML_GEN" == "x"], [FRU_YAML_GEN="$srcdir/scripts/fru-read-example.yaml"])
-FRUGEN="$PYTHON $srcdir/scripts/fru_gen.py -i $FRU_YAML_GEN"
-AC_SUBST(FRU_YAML_GEN)
-AC_SUBST(FRUGEN)
-
-AS_IF([test "x$ENTITY_YAML_GEN" == "x"], [ENTITY_YAML_GEN="$srcdir/scripts/entity-example.yaml"])
-ENTITYGEN="$PYTHON $srcdir/scripts/entity_gen.py -i $ENTITY_YAML_GEN"
-AC_SUBST(ENTITY_YAML_GEN)
-AC_SUBST(ENTITYGEN)
-
-AC_DEFINE(CALLOUT_FWD_ASSOCIATION, "callout", [The name of the callout's forward association.])
-AC_DEFINE(BOARD_SENSOR, "/xyz/openbmc_project/inventory/system/chassis/motherboard", [The inventory path to the motherboard fault sensor.])
-AC_DEFINE(SYSTEM_SENSOR, "/xyz/openbmc_project/inventory/system", [The inventory path to the system event sensor.])
-
-# Soft Power off related.
-AS_IF([test "x$enable_softoff" != "xno"],
-    # Dbus service name
-    [AC_ARG_VAR(SOFTOFF_BUSNAME, [The Dbus busname to own])]
-    AS_IF([test "x$SOFTOFF_BUSNAME" == "x"],
-          [SOFTOFF_BUSNAME="xyz.openbmc_project.Ipmi.Internal.SoftPowerOff"])
-    [AC_DEFINE_UNQUOTED([SOFTOFF_BUSNAME], ["$SOFTOFF_BUSNAME"], [The Dbus busname to own])]
-
-    # Service dbus root
-    [AC_ARG_VAR(SOFTOFF_OBJPATH, [The SoftPowerOff Dbus root])]
-    AS_IF([test "x$SOFTOFF_OBJPATH" == "x"],
-          [SOFTOFF_OBJPATH="/xyz/openbmc_project/ipmi/internal/soft_power_off"])
-    [AC_DEFINE_UNQUOTED([SOFTOFF_OBJPATH], ["$SOFTOFF_OBJPATH"], [The SoftPowerOff Dbus root])]
-
-    # Timeouts in SECONDS for SoftPowerOff protocol
-    [AC_ARG_VAR(IPMI_SMS_ATN_ACK_TIMEOUT_SECS, \
-         [Initial timeout for host to ack and query SMS_ATN from BMC])]
-    [AC_DEFINE_UNQUOTED([IPMI_SMS_ATN_ACK_TIMEOUT_SECS], [3], \
-                        [Timeout for host to ack and query SMS_ATN from BMC])]
-
-    [AC_ARG_VAR(IPMI_HOST_SHUTDOWN_COMPLETE_TIMEOUT_SECS, [Wait time for host to shutdown])]
-    [AC_DEFINE_UNQUOTED([IPMI_HOST_SHUTDOWN_COMPLETE_TIMEOUT_SECS], [45*60], [Wait time for host to shutdown])]
-
-    # Indicates an in-band power off or reboot request from the host
-    # This file is used to ensure the soft off service does not run for host
-    # initiated shutdown or reboot requests
-    [AC_ARG_VAR(HOST_INBAND_REQUEST_DIR, [Directory used to indicate the host has initiated a shutdown or reboot])]
-    AS_IF([test "x$HOST_INBAND_REQUEST_DIR" == "x"],
-        [HOST_INBAND_REQUEST_DIR="/run/openbmc/"])
-    [AC_DEFINE_UNQUOTED([HOST_INBAND_REQUEST_DIR], ["$HOST_INBAND_REQUEST_DIR"], [Directory to store host initiated shutdown file])]
-
-    [AC_ARG_VAR(HOST_INBAND_REQUEST_FILE, [File which indicates the host has initiated a shutdown or reboot])]
-    AS_IF([test "x$HOST_INBAND_REQUEST_FILE" == "x"],
-        [HOST_INBAND_REQUEST_FILE="host@%u-request"])
-    [AC_DEFINE_UNQUOTED([HOST_INBAND_REQUEST_FILE], ["$HOST_INBAND_REQUEST_FILE"], [File to create if host has initiated shutdown or reboot])]
-)
-
-# Control Host Interfaces
-# Dbus service name
-AC_ARG_VAR(CONTROL_HOST_BUSNAME, [The Control Host Dbus busname to own])
-AS_IF([test "x$CONTROL_HOST_BUSNAME" == "x"],
-      [CONTROL_HOST_BUSNAME="xyz.openbmc_project.Control.Host"])
-AC_DEFINE_UNQUOTED([CONTROL_HOST_BUSNAME], ["$CONTROL_HOST_BUSNAME"], [The Control Host Dbus busname to own])
-
-# 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="/xyz/openbmc_project/control"])
-AC_DEFINE_UNQUOTED([CONTROL_HOST_OBJ_MGR], ["$CONTROL_HOST_OBJ_MGR"], [The Control Host D-Bus Object Manager])
-
-# Power reading sensor configuration file
-AC_ARG_VAR(POWER_READING_SENSOR, [Power reading sensor configuration file])
-AS_IF([test "x$POWER_READING_SENSOR" == "x"],[POWER_READING_SENSOR="/usr/share/ipmi-providers/power_reading.json"])
-AC_DEFINE_UNQUOTED([POWER_READING_SENSOR], ["$POWER_READING_SENSOR"], [Power reading sensor configuration file])
-
-AC_ARG_VAR(HOST_IPMI_LIB_PATH, [The file path to search for libraries.])
-AS_IF([test "x$HOST_IPMI_LIB_PATH" == "x"], [HOST_IPMI_LIB_PATH="/usr/lib/ipmid-providers/"])
-AC_DEFINE_UNQUOTED([HOST_IPMI_LIB_PATH], ["$HOST_IPMI_LIB_PATH"], [The file path to search for libraries.])
-
-# When a sensor read fails, hwmon will update the OperationalState interface's Functional property.
-# This will mark the sensor as not functional and we will skip reading from that sensor.
-AC_ARG_ENABLE([update-functional-on-fail],
-    AS_HELP_STRING(
-        [--enable-update-functional-on-fail],
-        [Check functional property to skip reading from faulty sensors.]
-    )
-)
-
-AC_ARG_VAR(UPDATE_FUNCTIONAL_ON_FAIL, [Check functional property to skip reading from faulty sensors.])
-AS_IF(
-    [test "x$enable_update_functional_on_fail" == "xyes"],
-    [UPDATE_FUNCTIONAL_ON_FAIL="yes"]
-    AC_DEFINE_UNQUOTED(
-        [UPDATE_FUNCTIONAL_ON_FAIL],
-        ["$UPDATE_FUNCTIONAL_ON_FAIL"],
-        [Check functional property to skip reading from faulty sensors.]
-    )
-)
-
-# When disable-libuserlayer flag is set, libuserlayer won't be included in the build.
-AC_ARG_ENABLE([libuserlayer],
-    AS_HELP_STRING([--disable-libuserlayer], [Set a flag to exclude libuserlayer])
-)
-AM_CONDITIONAL(FEATURE_LIBUSERLAYER, [test "x$enable_libuserlayer" != "xno"])
-
-# When enable-transport-oem flag is set, the transporthandler_oem.cpp contents
-# are compiled and added to the project. The transporthandler_oem.cpp file is
-# copied from your own customization layer in the
-# phosphor-ipmi-host_%.bbappend file. It is not necessary to create this file
-# unless OEM Parameter extensions are required.
-AC_ARG_ENABLE([transport_oem],
-    [  --enable-transport-oem   Enable/disable OEM Parameter extensions],
-    [case "${enableval}" in
-      yes) transport_oem=true ;;
-      no) transport_oem=false ;;
-      *) AC_MSG_ERROR([bad value ${enableval} for --enable-transport_oem]) ;;
-      esac],[transport_oem=false]
-      )
-AM_CONDITIONAL([FEATURE_TRANSPORT_OEM], [test x$transport_oem = xtrue])
-
-# IPMI whitelist mechanism is not needed by everyone; offer a way to disable it
-AC_ARG_ENABLE([ipmi-whitelist],
-    [ --enable-ipmi-whitelist   Enable/disable IPMI whitelist filtering],
-    [case "${enableval}" in
-      yes) ipmi_whitelist=true ;;
-      no) ipmi_whitelist=false ;;
-      *) AC_MSG_ERROR([bad value ${enableval} for --enable-ipmi-whitelist]) ;;
-      esac],[ipmi_whitelist=true]
-      )
-AM_CONDITIONAL([FEATURE_IPMI_WHITELIST], [test x$ipmi_whitelist = xtrue])
-
-# Dynamic sensors stack is enabled by default; offer a way to disable it
-AC_ARG_ENABLE([dynamic_sensors],
-    [ --enable-dynamic_sensors   Enable/disable Dynamic Sensors stack],
-    [case "${enableval}" in
-      yes) dynamic_sensors=true ;;
-      no) dynamic_sensors=false ;;
-      *) AC_MSG_ERROR([bad value ${enableval} for --enable-dynamic_sensors]) ;;
-      esac],[dynamic_sensors=true]
-      )
-AM_CONDITIONAL([FEATURE_DYNAMIC_SENSORS], [test x$dynamic_sensors = xtrue])
-
-AS_IF([test x$dynamic_sensors = xtrue],
-    AC_MSG_NOTICE([Enabling dynamic sensors feature])
-    [cpp_flags="$cpp_flags -DFEATURE_DYNAMIC_SENSORS"]
-    AC_SUBST([CPPFLAGS], [$cpp_flags]),
-    AC_MSG_WARN([Disabling dynamic sensors feature])
-)
-
-# hybrid sensors stack is disabled by default; offer a way to enable it
-AC_ARG_ENABLE([hybrid-sensors],
-    [ --enable-hybrid-sensors   Enable/disable Hybrid Sensors stack],
-    [case "${enableval}" in
-      yes) hybrid_sensors=true ;;
-      no) hybrid_sensors=false ;;
-      *) AC_MSG_ERROR([bad value ${enableval} for --enable-hybrid-sensors]) ;;
-      esac],[hybrid-sensors=false]
-      )
-AM_CONDITIONAL([FEATURE_HYBRID_SENSORS], [test x$hybrid_sensors = xtrue])
-
-AS_IF([test x$hybrid_sensors = xtrue],
-    AC_MSG_NOTICE([Enabling hybrid sensors stack])
-    [cpp_flags="$cpp_flags -DFEATURE_HYBRID_SENSORS"]
-    AC_SUBST([CPPFLAGS], [$cpp_flags]),
-    AC_MSG_WARN([Disabling hybrid sensors feature])
-)
-
-# Sensor cache stack is disabled by default; offer a way to enable it
-AC_ARG_ENABLE([sensors-cache],
-    [ --enable-sensors-cache   Enable/disable sensors cache stack],
-    [case "${enableval}" in
-      yes) sensors_cache=true ;;
-      no) sensors_cache=false ;;
-      *) AC_MSG_ERROR([bad value ${enableval} for --enable-sensors-cache]) ;;
-      esac],[sensors_cache=false]
-      )
-AM_CONDITIONAL([FEATURE_SENSORS_CACHE], [test x$sensors_cache= xtrue])
-
-AS_IF([test x$sensors_cache = xtrue],
-    AC_MSG_NOTICE([Enabling sensors cache stack])
-    [cpp_flags="$cpp_flags -DFEATURE_SENSORS_CACHE"]
-    AC_SUBST([CPPFLAGS], [$cpp_flags]),
-    AC_MSG_WARN([Disabling sensors cache feature])
-)
-
-# Clearing SEL through sel-logger is disabled by default; offer a way to enable it
-AC_ARG_ENABLE([sel_logger_clears_sel],
-    [ --enable-sel_logger_clears_sel   Enable/disable sel-logger to Clear SEL],
-    [case "${enableval}" in
-      yes) sel_logger_clears_sel=true ;;
-      no) sel_logger_clears_sel=false ;;
-      *) AC_MSG_ERROR([bad value ${enableval} for --enable-sel_logger_clears_sel]) ;;
-      esac],[sel_logger_clears_sel=false]
-      )
-AM_CONDITIONAL([FEATURE_SEL_LOGGER_CLEARS_SEL], [test x$sel_logger_clears_sel = xtrue])
-
-AS_IF([test x$sel_logger_clears_sel = xtrue],
-    AC_MSG_NOTICE([Enabling sel-logger to Clear SEL])
-    [cpp_flags="$cpp_flags -DFEATURE_SEL_LOGGER_CLEARS_SEL"]
-    AC_SUBST([CPPFLAGS], [$cpp_flags]),
-    AC_MSG_WARN([Disabling sel-logger to Clear SEL])
-)
-
-# Create configured output
-AC_CONFIG_FILES([
-    Makefile
-    include/Makefile
-    libipmid/Makefile
-    libipmid/libipmid.pc
-    libipmid-host/Makefile
-    libipmid-host/libipmid-host.pc
-    softoff/Makefile
-    test/Makefile
-    user_channel/Makefile
-])
-AC_OUTPUT
diff --git a/dbus-sdr/meson.build b/dbus-sdr/meson.build
new file mode 100644
index 0000000..cbed418
--- /dev/null
+++ b/dbus-sdr/meson.build
@@ -0,0 +1,32 @@
+sensorutils_lib = static_library(
+  'sensorutils',
+  'sensorutils.cpp',
+  include_directories: root_inc,
+  implicit_include_directories: false)
+
+sensorutils_dep = declare_dependency(link_with: sensorutils_lib)
+
+dbus_sdr_pre = declare_dependency(
+  include_directories: root_inc,
+  dependencies: [
+    crypto,
+    phosphor_logging_dep,
+    ipmid_dep,
+    libipmi20_dep,
+    sensorutils_dep,
+  ])
+
+dbus_sdr_src = [
+  'sdrutils.cpp',
+  'sensorcommands.cpp',
+  'storagecommands.cpp'
+]
+
+shared_module(
+  'dynamiccmds',
+  dbus_sdr_src,
+  implicit_include_directories: false,
+  dependencies: dbus_sdr_pre,
+  install: true,
+  install_dir: get_option('libdir') / 'ipmid-providers')
+
diff --git a/generate_whitelist_create.sh b/generate_whitelist_create.sh
new file mode 100755
index 0000000..5fdd7ce
--- /dev/null
+++ b/generate_whitelist_create.sh
@@ -0,0 +1,4 @@
+#/bin/sh
+
+# Ensure some files have been passed.
+./generate_whitelist.sh $* > ipmiwhitelist.cpp
diff --git a/include/Makefile.am b/include/Makefile.am
deleted file mode 100644
index 7c90f70..0000000
--- a/include/Makefile.am
+++ /dev/null
@@ -1,36 +0,0 @@
-nobase_include_HEADERS = \
-	ipmid/api.hpp \
-	ipmid/api-types.hpp \
-	ipmid/sessiondef.hpp \
-	ipmid/sessionhelper.hpp \
-	ipmid/filter.hpp \
-	ipmid/handler.hpp \
-	ipmid/message.hpp \
-	ipmid/message/pack.hpp \
-	ipmid/message/types.hpp \
-	ipmid/message/unpack.hpp \
-	ipmid/api.h \
-	ipmid/iana.hpp \
-	ipmid/oemopenbmc.hpp \
-	ipmid/oemrouter.hpp \
-	ipmid/types.hpp \
-	ipmid/utility.hpp \
-	ipmid/utils.hpp \
-	ipmid-host/cmd.hpp \
-	ipmid-host/cmd-utils.hpp \
-	dbus-sdr/sdrutils.hpp \
-	dbus-sdr/sensorcommands.hpp \
-	dbus-sdr/sensorutils.hpp \
-	dbus-sdr/storagecommands.hpp
-
-# Eventually we will split <ipmid/*> and <host-ipmid/*> headers
-# For now they will be the same during migration
-install-data-local:
-	$(MKDIR_P) $(DESTDIR)$(includedir)/host-ipmid
-	$(LN_S) -f ../ipmid/iana.hpp $(DESTDIR)$(includedir)/host-ipmid/iana.hpp
-	$(LN_S) -f ../ipmid/api.h $(DESTDIR)$(includedir)/host-ipmid/ipmid-api.h
-	$(LN_S) -f ../ipmid/oemopenbmc.hpp $(DESTDIR)$(includedir)/host-ipmid/oemopenbmc.hpp
-	$(LN_S) -f ../ipmid/oemrouter.hpp $(DESTDIR)$(includedir)/host-ipmid/oemrouter.hpp
-	$(LN_S) -f ../ipmid-host/cmd.hpp $(DESTDIR)$(includedir)/host-ipmid/ipmid-host-cmd.hpp
-	$(LN_S) -f ../ipmid-host/cmd-utils.hpp $(DESTDIR)$(includedir)/host-ipmid/ipmid-host-cmd-utils.hpp
-
diff --git a/include/meson.build b/include/meson.build
new file mode 100644
index 0000000..151493b
--- /dev/null
+++ b/include/meson.build
@@ -0,0 +1,36 @@
+install_subdir(
+  'dbus-sdr',
+  install_dir: get_option('includedir'),
+  strip_directory: false,
+  exclude_files: '*.cpp')
+
+install_subdir(
+  'ipmid',
+  install_dir: get_option('includedir'),
+  strip_directory: false,
+  exclude_files: '*.cpp')
+
+install_subdir(
+  'ipmid-host',
+  install_dir: get_option('includedir'),
+  strip_directory: false,
+  exclude_files: '*.cpp')
+
+# Eventually we will split <ipmid/*> and <host-ipmid/*> headers
+# For now they will be the same during migration
+install_data(
+  'ipmid/iana.hpp',
+  'ipmid/api.h',
+  'ipmid/oemopenbmc.hpp',
+  'ipmid/oemrouter.hpp',
+  'ipmid-host/cmd.hpp',
+  'ipmid-host/cmd-utils.hpp',
+  install_dir: get_option('includedir') / 'host-ipmid',
+  rename: [
+    'iana.hpp',
+    'ipmid-api.h',
+    'oemopenbmc.hpp',
+    'oemrouter.hpp',
+    'ipmid-host-cmd.hpp',
+    'ipmid-host-cmd-utils.hpp',
+  ])
diff --git a/libipmid-host/Makefile.am b/libipmid-host/Makefile.am
deleted file mode 100644
index 7b8b003..0000000
--- a/libipmid-host/Makefile.am
+++ /dev/null
@@ -1,8 +0,0 @@
-pkgconfig_DATA = libipmid-host.pc
-lib_LTLIBRARIES = libipmid-host.la
-libipmid_host_la_SOURCES =
-libipmid_host_la_LDFLAGS = \
-	$(SDBUSPLUS_LIBS) \
-	-version-info 0:0:0 -shared
-libipmid_host_la_CXXFLAGS = \
-	$(SDBUSPLUS_CFLAGS)
diff --git a/libipmid-host/libipmid-host.pc.in b/libipmid-host/libipmid-host.pc.in
deleted file mode 100644
index ba842ac..0000000
--- a/libipmid-host/libipmid-host.pc.in
+++ /dev/null
@@ -1,10 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: libipmid-host
-Description: IPMI Host Daemon Library
-Version: @VERSION@
-Cflags: -I${includedir}
-Libs: -L${libdir} -lipmid-host
diff --git a/libipmid-host/meson.build b/libipmid-host/meson.build
new file mode 100644
index 0000000..b3a310a
--- /dev/null
+++ b/libipmid-host/meson.build
@@ -0,0 +1,16 @@
+ipmid_pre = [
+  sdbusplus_dep,
+]
+
+libipmid_host = library(
+  'ipmid-host',
+  dependencies: ipmid_pre,
+  version: meson.project_version(),
+  include_directories: root_inc,
+  install: true,
+  install_dir: get_option('libdir'))
+
+ipmid_host_dep = declare_dependency(
+  dependencies: ipmid_pre,
+  include_directories: root_inc,
+  link_with: libipmid_host)
diff --git a/libipmid/Makefile.am b/libipmid/Makefile.am
deleted file mode 100644
index 189693f..0000000
--- a/libipmid/Makefile.am
+++ /dev/null
@@ -1,23 +0,0 @@
-COMMON_CXX = \
-	-flto \
-	-Wno-psabi \
-	$(SYSTEMD_CFLAGS) \
-	$(SDBUSPLUS_CFLAGS) \
-	-DBOOST_ERROR_CODE_HEADER_ONLY \
-	-DBOOST_SYSTEM_NO_DEPRECATED \
-	-DBOOST_COROUTINES_NO_DEPRECATION_WARNING \
-	-DBOOST_ASIO_DISABLE_THREADS \
-	-DBOOST_ALL_NO_LIB
-
-pkgconfig_DATA = libipmid.pc
-lib_LTLIBRARIES = libipmid.la
-libipmid_la_SOURCES = \
-	sdbus-asio.cpp \
-	signals.cpp \
-	systemintf-sdbus.cpp \
-	utils.cpp
-libipmid_la_LDFLAGS = \
-	$(SYSTEMD_LIBS) \
-	-version-info 0:0:0 -shared
-libipmid_la_CXXFLAGS = \
-	$(COMMON_CXX)
diff --git a/libipmid/libipmid.pc.in b/libipmid/libipmid.pc.in
deleted file mode 100644
index 9366846..0000000
--- a/libipmid/libipmid.pc.in
+++ /dev/null
@@ -1,10 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: libipmid
-Description: IPMI Daemon Library
-Version: @VERSION@
-Cflags: -I${includedir}
-Libs: -L${libdir} -lipmid
diff --git a/libipmid/meson.build b/libipmid/meson.build
new file mode 100644
index 0000000..d0ae316
--- /dev/null
+++ b/libipmid/meson.build
@@ -0,0 +1,30 @@
+ipmid_pre = [
+  boost_coroutine,
+  phosphor_dbus_interfaces_dep,
+  sdbusplus_dep,
+  systemd,
+]
+
+libipmid = library(
+  'ipmid',
+  'sdbus-asio.cpp',
+  'signals.cpp',
+  'systemintf-sdbus.cpp',
+  'utils.cpp',
+  dependencies: ipmid_pre,
+  version: meson.project_version(),
+  include_directories: root_inc,
+  install: true,
+  install_dir: get_option('libdir'),
+  override_options: ['b_lundef=false'])
+
+ipmid_dep = declare_dependency(
+  dependencies: ipmid_pre,
+  include_directories: root_inc,
+  link_with: libipmid)
+
+import('pkgconfig').generate(
+  libipmid,
+  name: 'libipmid',
+  version: meson.project_version(),
+  description: 'ipmid')
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..d933e36
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,270 @@
+project(
+  'phosphor-host-ipimd',
+  'cpp',
+  version: '0.1',
+  meson_version: '>=0.57.0',
+  default_options: [
+    'werror=true',
+    'warning_level=3',
+    'cpp_std=c++20',
+  ])
+
+# Setting up config data
+conf_data = configuration_data()
+
+# The name of the callout's forward association
+conf_data.set_quoted('CALLOUT_FWD_ASSOCIATION', 'callout')
+conf_data.set_quoted('BOARD_SENSOR', get_option('board-sensor'))
+conf_data.set_quoted('SYSTEM_SENSOR', get_option('system-sensor'))
+
+# Soft Power off related.
+if not get_option('softoff').disabled()
+  conf_data.set_quoted('SOFTOFF_BUSNAME', get_option('softoff-busname'))
+  conf_data.set_quoted('SOFTOFF_OBJPATH', get_option('softoff-objpath'))
+  conf_data.set('IPMI_SMS_ATN_ACK_TIMEOUT_SECS', get_option('ipmi-sms-atn-ack-timeout-secs'))
+  conf_data.set('IPMI_HOST_SHUTDOWN_COMPLETE_TIMEOUT_SECS', get_option('ipmi-host-shutdown-complete-timeout-secs'))
+  conf_data.set_quoted('HOST_INBAND_REQUEST_DIR', get_option('host-inband-request-dir'))
+  conf_data.set_quoted('HOST_INBAND_REQUEST_FILE', get_option('host-inband-request-file'))
+endif
+
+conf_data.set_quoted('CONTROL_HOST_BUSNAME', get_option('control-host-busname'))
+conf_data.set_quoted('CONTROL_HOST_OBJ_MGR', get_option('control-host-obj-mgr'))
+conf_data.set_quoted('HOST_NAME', get_option('host-name'))
+conf_data.set_quoted('POWER_READING_SENSOR', get_option('power-reading-sensor'))
+conf_data.set_quoted('HOST_IPMI_LIB_PATH', get_option('host-ipmi-lib-path'))
+
+conf_h = configure_file(
+  output: 'config.h',
+  configuration: conf_data)
+
+root = meson.current_source_dir()
+root_inc = include_directories('.', 'include')
+
+# Project Arguments
+cpp = meson.get_compiler('cpp')
+add_project_arguments(
+  cpp.get_supported_arguments([
+    '-DBOOST_ERROR_CODE_HEADER_ONLY',
+    '-DBOOST_SYSTEM_NO_DEPRECATED',
+    '-DBOOST_COROUTINES_NO_DEPRECATION_WARNING',
+    '-DBOOST_ASIO_DISABLE_THREADS',
+    '-DBOOST_ALL_NO_LIB',
+  ]),
+  language : 'cpp')
+
+feature_map = {
+  'boot-flag-safe-mode-support': '-DENABLE_BOOT_FLAG_SAFE_MODE_SUPPORT',
+  'i2c-whitelist-check'        : '-DENABLE_I2C_WHITELIST_CHECK',
+  'update-functional-on-fail'  : '-DUPDATE_FUNCTIONAL_ON_FAIL',
+  'dynamic-sensors'            : '-DFEATURE_DYNAMIC_SENSORS',
+  'dynamic-sensors-write'      : '-DFEATURE_DYNAMIC_SENSORS_WRITE',
+  'hybrid-sensors'             : '-DFEATURE_HYBRID_SENSORS',
+  'sensors-cache'              : '-DFEATURE_SENSORS_CACHE',
+  'sel-logger-clears-sel'      : '-DFEATURE_SEL_LOGGER_CLEARS_SEL',
+}
+
+foreach option_key, option_value : feature_map
+  if(get_option(option_key).enabled())
+    summary(option_key,option_value, section : 'Enabled Features')
+    add_project_arguments(option_value,language:'cpp')
+  endif
+endforeach
+
+add_project_arguments(
+  cpp.get_supported_arguments([
+    '-flto',
+    '-Wno-psabi',
+    '-Wno-missing-field-initializers',
+    '-Wno-pedantic',
+    '-Wno-non-virtual-dtor'
+  ]),
+  language: 'cpp')
+
+# Dependencies
+phosphor_logging_dep = dependency('phosphor-logging')
+phosphor_dbus_interfaces_dep = dependency('phosphor-dbus-interfaces')
+sdeventplus_dep = dependency('sdeventplus')
+systemd = dependency('systemd')
+crypto = dependency('libcrypto', version : '>=1.0.2g')
+pam = cpp.find_library('pam', required: true)
+mapper = cpp.find_library('mapper', required: true)
+boost_coroutine = cpp.find_library('boost_coroutine', required: true)
+std_cpp_fs = cpp.find_library('stdc++fs', required: true)
+
+sdbusplus_dep = dependency('sdbusplus', required : false, include_type: 'system')
+if not sdbusplus_dep.found()
+  sdbusplus_proj = subproject('sdbusplus', required: true)
+  sdbusplus_dep = sdbusplus_proj.get_variable('sdbusplus_dep')
+  sdbusplus_dep = sdbusplus_dep.as_system('system')
+endif
+
+# Subfolders
+subdir('libipmid')
+subdir('libipmid-host')
+subdir('include')
+subdir('user_channel')
+subdir('scripts')
+
+if not get_option('softoff').disabled()
+  subdir('xyz/openbmc_project/Ipmi/Internal/SoftPowerOff')
+  subdir('softoff')
+endif
+
+# whitelist
+if not get_option('ipmi-whitelist').disabled()
+  generate_whitelist_script = files('generate_whitelist_create.sh')
+
+  whitelist_conf = get_option('whitelist-conf')
+  ipmiwhitelist = run_command( \
+    'bash', \
+    generate_whitelist_script, \
+    whitelist_conf)
+
+  whitelist_pre = declare_dependency(
+    include_directories: root_inc,
+    dependencies: [
+      channellayer_dep,
+      crypto,
+      ipmid_dep,
+      phosphor_dbus_interfaces_dep,
+      phosphor_logging_dep,
+      sdbusplus_dep,
+    ],
+  )
+
+  whitelist_lib = shared_module(
+    'whitelist',
+    'whitelist-filter.cpp',
+    'ipmiwhitelist.cpp',
+    implicit_include_directories: false,
+    dependencies: whitelist_pre,
+    install: true,
+    install_dir: get_option('libdir') / 'ipmid-providers')
+endif
+
+whitelist_dep = declare_dependency(
+  link_with: whitelist_lib,
+  dependencies: whitelist_pre)
+
+# libsysintfcmds
+sysintfcmds_pre = declare_dependency(
+  include_directories: root_inc,
+  dependencies: [
+    channellayer_dep,
+    crypto,
+    mapper,
+    phosphor_dbus_interfaces_dep,
+    phosphor_logging_dep,
+    sdbusplus_dep,
+    ipmid_dep,
+  ])
+
+sysintfcmds_lib = shared_module(
+  'sysintfcmds',
+  'systemintfcmds.cpp',
+  'host-interface.cpp',
+  implicit_include_directories: false,
+  dependencies: sysintfcmds_pre,
+  install: true,
+  install_dir: get_option('libdir') / 'ipmid-providers')
+
+sysintfcmds_dep = declare_dependency(
+  link_with: sysintfcmds_lib,
+  dependencies: sysintfcmds_pre)
+
+# ipmid
+ipmid_pre = [
+  sdbusplus_dep,
+  phosphor_logging_dep,
+  phosphor_dbus_interfaces_dep,
+  boost_coroutine,
+  crypto,
+  ipmid_dep,
+  channellayer_dep,
+  mapper,
+  std_cpp_fs
+]
+
+generated_src = [
+  meson.project_build_root() + '/sensor-gen.cpp',
+  meson.project_build_root() + '/inventory-sensor-gen.cpp',
+  meson.project_build_root() + '/fru-read-gen.cpp',
+]
+
+transportoem_src = []
+if not get_option('transport-oem').disabled()
+  transportoem_src = ['transporthandler_oem.cpp']
+endif
+
+entity_map_json_lib = static_library(
+  'entity_map_json',
+  'entity_map_json.cpp',
+  include_directories: root_inc,
+  dependencies: [ipmid_dep],
+  implicit_include_directories: false)
+
+entity_map_json_dep = declare_dependency(link_with: entity_map_json_lib)
+
+libipmi20_src = [
+  'app/channel.cpp',
+  'app/watchdog.cpp',
+  'app/watchdog_service.cpp',
+  'apphandler.cpp',
+  'sys_info_param.cpp',
+  'sensorhandler.cpp',
+  'storagehandler.cpp',
+  'chassishandler.cpp',
+  'dcmihandler.cpp',
+  'ipmisensor.cpp',
+  'storageaddsel.cpp',
+  'transporthandler.cpp',
+  'globalhandler.cpp',
+  'groupext.cpp',
+  'selutility.cpp',
+  'ipmi_fru_info_area.cpp',
+  'read_fru_data.cpp',
+  'sensordatahandler.cpp',
+  generated_src,
+  transportoem_src,
+  conf_h,
+]
+
+ipmi20_lib = library(
+  'ipmi20',
+  libipmi20_src,
+  dependencies: [ipmid_pre, entity_map_json_dep],
+  include_directories: root_inc,
+  install: true,
+  install_dir: get_option('libdir') / 'ipmid-providers',
+  override_options: ['b_lundef=false'])
+
+libipmi20_dep = declare_dependency(
+  dependencies: ipmid_pre,
+  include_directories: root_inc,
+  link_with: ipmi20_lib)
+
+# ipmid binary
+executable(
+  'ipmid',
+  'ipmid-new.cpp',
+  'host-cmd-manager.cpp',
+  'settings.cpp',
+  implicit_include_directories: false,
+  dependencies: [libipmi20_dep],
+  include_directories: root_inc,
+  export_dynamic: true,
+  install: true,
+  install_dir: get_option('bindir'))
+
+# Dynamic Sensor Stack
+subdir('dbus-sdr')
+
+if not get_option('tests').disabled()
+  subdir('test')
+endif
+
+install_subdir(
+  'user_channel',
+  install_dir: get_option('includedir'),
+  strip_directory: false,
+  exclude_files: '*.cpp')
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 0000000..af121c6
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1,66 @@
+
+option('tests', type: 'feature', description: 'Build tests')
+option('boot-flag-safe-mode-support', type: 'feature', description: 'Add option to enable/disable safe mode in boot flags')
+option('i2c-whitelist-check', type: 'feature', description: 'Add option to enable/disable i2c master write read command white list checking')
+
+# SoftPowerOff
+option('softoff', type: 'feature', description: 'Builds soft power off')
+option('softoff-busname', type: 'string', value: 'xyz.openbmc_project.Ipmi.Internal.SoftPowerOff', description: 'The Dbus busname to own for SoftPowerOff')
+option('softoff-objpath', type: 'string', value: '/xyz/openbmc_project/ipmi/internal/soft_power_off', description: 'The SoftPowerOff Dbus root')
+option('ipmi-sms-atn-ack-timeout-secs', type: 'integer', value: 3, description: 'Timeout for host to ack and query SMS_ATN from BMC')
+option('ipmi-host-shutdown-complete-timeout-secs', type: 'integer', value: 2700, description: 'Wait time for host to shutdown')
+# Indicates an in-band power off or reboot request from the host
+# This file is used to ensure the soft off service does not run for host
+# initiated shutdown or reboot requests
+option('host-inband-request-dir', type: 'string', value: '/run/openbmc/', description: 'Directory to store host initiated shutdown file')
+option('host-inband-request-file', type: 'string', value: 'host@%u-request', description: 'File to create if host has initiated shutdown or reboot')
+
+
+# Config Variables
+option('board-sensor', type: 'string', value: '/xyz/openbmc_project/inventory/system/chassis/motherboard', description: 'The inventory path to the motherboard fault sensor')
+option('system-sensor', type: 'string', value: '/xyz/openbmc_project/inventory/system', description: 'The inventory path to the system event sensor')
+
+# Control Host Interfaces
+option('control-host-busname', type: 'string', value: 'xyz.openbmc_project.Control.Host', description: 'The Control Host Dbus busname to own')
+option('control-host-obj-mgr', type: 'string', value: '/xyz/openbmc_project/control', description: 'The Control Host D-Bus Object Manager')
+option('host-name', type: 'string', value: 'host', description: 'The Control Host D-Bus Object Manager')
+
+# Power reading sensor configuration file
+option('power-reading-sensor', type: 'string', value: '/usr/share/ipmi-providers/power_reading.json', description: 'Power reading sensor configuration file')
+option('host-ipmi-lib-path', type: 'string', value: '/usr/lib/ipmid-providers/', description: 'The file path to search for libraries')
+
+# When a sensor read fails, hwmon will update the OperationalState interface's Functional property.
+# This will mark the sensor as not functional and we will skip reading from that sensor.
+option('update-functional-on-fail', type: 'feature', value: 'disabled', description: 'Check functional property to skip reading from faulty sensors')
+
+# Features
+
+# When libuserlayer is disabled, libuserlayer won't be included in the build.
+option('libuserlayer', type: 'feature', description: 'Option to exclue exclude libuserlayer')
+
+# When transport-oem is enabled, the transporthandler_oem.cpp contents
+# are compiled and added to the project. The transporthandler_oem.cpp file is
+# copied from your own customization layer in the
+# phosphor-ipmi-host_%.bbappend file. It is not necessary to create this file
+# unless OEM Parameter extensions are required.
+option('transport-oem', type: 'feature', value: 'disabled', description: 'Enable transporthandler_oem contents')
+
+# IPMI whitelist mechanism is not needed by everyone; offer a way to disable it
+option('ipmi-whitelist', type: 'feature', description: 'Enable/disable IPMI whitelist filtering')
+option('whitelist-conf', type: 'string', value: 'host-ipmid-whitelist.conf', description: 'Paths to IPMI whitelisted commands conf files')
+
+# Dynamic Sensor Stack
+option('dynamic-sensors', type: 'feature', value: 'disabled', description: 'Dynamic sensors stack is enabled by default; offer a way to disable it')
+option('dynamic-sensors-write', type: 'feature', value: 'disabled', description: 'Dynamic sensors stack is enabled by default; offer a way to disable it')
+option('hybrid-sensors', type: 'feature', value: 'disabled', description: 'Hybrid sensors stack is disabled by default; offer a way to enable it')
+
+# Sensor Cache
+option('sensors-cache', type: 'feature', value: 'disabled', description: 'Sensor cache stack is disabled by default; offer a way to enable it')
+
+# SEL Logger
+option('sel-logger-clears-sel', type: 'feature', value: 'disabled', description: 'Clearing SEL through sel-logger is disabled by default; offer a way to enable it')
+
+# Generate configuration from Yaml
+option('sensor-yaml-gen', type: 'string', value: 'sensor-example.yaml')
+option('invsensor-yaml-gen', type: 'string', value: 'inventory-sensor-example.yaml')
+option('fru-yaml-gen', type: 'string', value: 'fru-read-example.yaml')
diff --git a/sample.cpp b/sample.cpp
deleted file mode 100644
index 72a120a..0000000
--- a/sample.cpp
+++ /dev/null
@@ -1,11 +0,0 @@
-#include <sample.h>
-
-int Factorial(int n)
-{
-    int result = 1;
-    for (int i = 1; i <= n; i++)
-    {
-        result *= i;
-    }
-    return result;
-}
diff --git a/sample.h b/sample.h
deleted file mode 100644
index 6ff3cf9..0000000
--- a/sample.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef GTEST_SAMPLE
-#define GTEST_SAMPLE
-
-int Factorial(int n);
-
-#endif
diff --git a/scripts/meson.build b/scripts/meson.build
new file mode 100644
index 0000000..3740227
--- /dev/null
+++ b/scripts/meson.build
@@ -0,0 +1,35 @@
+# Generate Configuration Files from Yaml
+python_exe = find_program('python3', 'python')
+
+sensor_yaml_script = files('sensor_gen.py')
+sensor_yaml_gen = run_command( \
+  python_exe, \
+  sensor_yaml_script, \
+  '-i', get_option('sensor-yaml-gen'), \
+  '-o', meson.project_build_root(), \
+  'generate-cpp')
+if sensor_yaml_gen.returncode() != 0
+  error(sensor_yaml_gen.stderr())
+endif
+
+invsensor_yaml_script = files('inventory-sensor.py')
+invsensor_yaml_gen = run_command( \
+  python_exe, \
+  invsensor_yaml_script, \
+  '-i', get_option('invsensor-yaml-gen'), \
+  '-o', meson.project_build_root(), \
+  'generate-cpp')
+if invsensor_yaml_gen.returncode() != 0
+  error(invsensor_yaml_gen.stderr())
+endif
+
+fru_yaml_script = files('fru_gen.py')
+fru_yaml_gen = run_command( \
+  python_exe, \
+  fru_yaml_script, \
+  '-i', get_option('fru-yaml-gen'), \
+  '-o', meson.project_build_root(), \
+  'generate-cpp')
+if fru_yaml_gen.returncode() != 0
+  error(fru_yaml_gen.stderr())
+endif
diff --git a/softoff/Makefile.am b/softoff/Makefile.am
deleted file mode 100644
index ec938a3..0000000
--- a/softoff/Makefile.am
+++ /dev/null
@@ -1,49 +0,0 @@
-AM_DEFAULT_SOURCE_EXT = .cpp
-bin_PROGRAMS = phosphor-softpoweroff
-
-# Using ../ instead of $(top_srcdir) due to automake bug in version 1.15.
-#  https://debbugs.gnu.org/cgi/bugreport.cgi?bug=13928
-phosphor_softpoweroff_SOURCES = \
-	softoff.cpp \
-	mainapp.cpp \
-	xyz/openbmc_project/Ipmi/Internal/SoftPowerOff/server.cpp \
-	../libipmid/utils.cpp
-
-BUILT_SOURCES = \
-	xyz/openbmc_project/Ipmi/Internal/SoftPowerOff/server.cpp \
-	xyz/openbmc_project/Ipmi/Internal/SoftPowerOff/server.hpp
-
-nodist_include_HEADERS = xyz/openbmc_project/Ipmi/Internal/SoftPowerOff/server.hpp
-CLEANFILES = \
-	xyz/openbmc_project/Ipmi/Internal/SoftPowerOff/server.cpp \
-	xyz/openbmc_project/Ipmi/Internal/SoftPowerOff/server.hpp
-
-phosphor_softpoweroff_LDFLAGS = \
-	$(SYSTEMD_LIBS) \
-	$(SDBUSPLUS_LIBS) \
-	$(SDEVENTPLUS_LIBS) \
-	$(PHOSPHOR_LOGGING_LIBS) \
-	-lboost_coroutine \
-	$(PHOSPHOR_DBUS_INTERFACES_LIBS)
-phosphor_softpoweroff_CXXFLAGS = \
-	-flto \
-	-Wno-psabi \
-	-DBOOST_ERROR_CODE_HEADER_ONLY \
-	-DBOOST_SYSTEM_NO_DEPRECATED \
-	-DBOOST_COROUTINES_NO_DEPRECATION_WARNING \
-	-DBOOST_ASIO_DISABLE_THREADS \
-	-DBOOST_ALL_NO_LIB
-	$(SYSTEMD_CFLAGS) \
-	$(SDBUSPLUS_CFLAGS) \
-	$(SDEVENTPLUS_CFLAGS) \
-	$(PHOSPHOR_LOGGING_CFLAGS) \
-	$(PHOSPHOR_DBUS_INTERFACES_CFLAGS)
-
-xyz/openbmc_project/Ipmi/Internal/SoftPowerOff/server.cpp: ${top_srcdir}/xyz/openbmc_project/Ipmi/Internal/SoftPowerOff.interface.yaml
-	@mkdir -p `dirname $@`
-	$(SDBUSPLUSPLUS) -r $(top_srcdir) interface server-cpp xyz.openbmc_project.Ipmi.Internal.SoftPowerOff > $@
-
-xyz/openbmc_project/Ipmi/Internal/SoftPowerOff/server.hpp: ${top_srcdir}/xyz/openbmc_project/Ipmi/Internal/SoftPowerOff.interface.yaml
-	@mkdir -p `dirname $@`
-	$(SDBUSPLUSPLUS) -r $(top_srcdir) interface server-header xyz.openbmc_project.Ipmi.Internal.SoftPowerOff > $@
-
diff --git a/softoff/meson.build b/softoff/meson.build
new file mode 100644
index 0000000..f34ad98
--- /dev/null
+++ b/softoff/meson.build
@@ -0,0 +1,31 @@
+softpower_pre = [
+  ipmid_dep,
+  phosphor_logging_dep,
+  phosphor_dbus_interfaces_dep,
+  sdeventplus_dep,
+  sdbusplus_dep,
+  systemd,
+  softoff_dbus,
+  boost_coroutine
+]
+
+softpower_lib = static_library(
+  'softpower_lib',
+  'softoff.cpp',
+  conf_h,
+  dependencies: softpower_pre,
+  include_directories: root_inc)
+
+softpower_dep = declare_dependency(
+  dependencies: softpower_pre,
+  include_directories: root_inc,
+  link_with: softpower_lib)
+
+executable(
+  'phosphor-softpoweroff',
+  'mainapp.cpp',
+  implicit_include_directories: false,
+  dependencies: softpower_dep,
+  include_directories: root_inc,
+  install: true,
+  install_dir: get_option('bindir'))
diff --git a/subprojects/nlohmann_json.wrap b/subprojects/nlohmann_json.wrap
new file mode 100644
index 0000000..0ba9c03
--- /dev/null
+++ b/subprojects/nlohmann_json.wrap
@@ -0,0 +1,3 @@
+[wrap-git]
+url = https://github.com/nlohmann/json
+revision = HEAD
diff --git a/subprojects/phosphor-dbus-interfaces.wrap b/subprojects/phosphor-dbus-interfaces.wrap
new file mode 100644
index 0000000..0bf731e
--- /dev/null
+++ b/subprojects/phosphor-dbus-interfaces.wrap
@@ -0,0 +1,7 @@
+
+[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..6876a6e
--- /dev/null
+++ b/subprojects/phosphor-logging.wrap
@@ -0,0 +1,6 @@
+[wrap-git]
+url = https://github.com/openbmc/phosphor-logging
+revision = HEAD
+
+[provide]
+phosphor-logging = phosphor_logging_dep
diff --git a/subprojects/sdbusplus.wrap b/subprojects/sdbusplus.wrap
new file mode 100644
index 0000000..42cfcee
--- /dev/null
+++ b/subprojects/sdbusplus.wrap
@@ -0,0 +1,6 @@
+[wrap-git]
+url = https://github.com/openbmc/sdbusplus
+revision = HEAD
+
+[provide]
+sdbusplus = sdbusplus_dep
diff --git a/subprojects/sdeventplus.wrap b/subprojects/sdeventplus.wrap
new file mode 100644
index 0000000..a506404
--- /dev/null
+++ b/subprojects/sdeventplus.wrap
@@ -0,0 +1,6 @@
+[wrap-git]
+url = https://github.com/openbmc/sdeventplus
+revision = HEAD
+
+[provide]
+sdeventplus = sdeventplus_dep
diff --git a/test/Makefile.am b/test/Makefile.am
deleted file mode 100644
index 89f4fc6..0000000
--- a/test/Makefile.am
+++ /dev/null
@@ -1,112 +0,0 @@
-COMMON_CXX = \
-    -flto \
-    -Wno-psabi \
-    $(SDBUSPLUS_CFLAGS) \
-    $(SYSTEMD_CFLAGS) \
-    $(libmapper_CFLAGS) \
-    $(SDBUSPLUS_CFLAGS) \
-    $(PHOSPHOR_LOGGING_CFLAGS) \
-    $(PHOSPHOR_DBUS_INTERFACES_CFLAGS) \
-    -DBOOST_ERROR_CODE_HEADER_ONLY \
-    -DBOOST_SYSTEM_NO_DEPRECATED \
-    -DBOOST_COROUTINES_NO_DEPRECATION_WARNING \
-    -DBOOST_ASIO_DISABLE_THREADS \
-    -DBOOST_ALL_NO_LIB
-
-AM_CPPFLAGS = \
-    -I$(top_srcdir) \
-    -I$(top_srcdir)/include \
-    $(CODE_COVERAGE_CPPFLAGS) \
-    $(GTEST_CFLAGS)
-AM_CFLAGS = $(CODE_COVERAGE_CFLAGS)
-AM_CXXFLAGS = $(GTEST_MAIN_CFLAGS) $(GTEST_CFLAGS)
-AM_LDFLAGS = $(GTEST_MAIN_LIBS) $(OESDK_TESTCASE_FLAGS)
-
-# Run all 'check' test programs
-check_PROGRAMS =
-TESTS = $(check_PROGRAMS)
-
-entitymap_json_unittest_SOURCES = entitymap_json_unittest.cpp
-entitymap_json_unittest_LDADD = $(top_builddir)/entity_map_json.o -lgmock
-
-check_PROGRAMS += entitymap_json_unittest
-
-# Build/add sample_unittest to test suite
-sample_unittest_CPPFLAGS = -Igtest $(GTEST_CPPFLAGS) $(AM_CPPFLAGS)
-sample_unittest_CXXFLAGS = $(PTHREAD_CFLAGS) $(CODE_COVERAGE_CXXFLAGS) \
-			   $(CODE_COVERAGE_CFLAGS)
-sample_unittest_LDFLAGS = -lgtest_main -lgtest -pthread $(OESDK_TESTCASE_FLAGS) \
-   			$(CODE_COVERAGE_LDFLAGS)
-sample_unittest_SOURCES = %reldir%/sample_unittest.cpp
-sample_unittest_LDADD = $(top_builddir)/sample.o
-check_PROGRAMS += %reldir%/sample_unittest
-
-# Build/add oemrouter_unittest to test suite
-# Issue #3325
-#check_PROGRAMS += oemrouter_unittest
-#oemrouter_unittest_SOURCES = oemrouter_unittest.cpp
-#oemrouter_unittest_LDADD = $(top_builddir)/oemrouter.o
-
-# Build/add message packing/unpacking unit tests
-message_unittest_CPPFLAGS = \
-    -Igtest \
-    $(GTEST_CPPFLAGS) \
-    $(AM_CPPFLAGS)
-message_unittest_CXXFLAGS = \
-    $(COMMON_CXX) \
-    $(PTHREAD_CFLAGS) \
-    $(PHOSPHOR_LOGGING_CFLAGS) \
-    $(CODE_COVERAGE_CXXFLAGS) \
-    $(CODE_COVERAGE_CFLAGS)
-message_unittest_LDFLAGS = \
-    -lgtest_main \
-    -lgtest \
-    -lsdbusplus \
-    -lsystemd \
-    -pthread \
-    $(CRYPTO_LIBS) \
-    $(PHOSPHOR_LOGGING_LIBS) \
-    $(OESDK_TESTCASE_FLAGS) \
-    $(CODE_COVERAGE_LDFLAGS)
-message_unittest_SOURCES = \
-    %reldir%/message/payload.cpp \
-    %reldir%/message/unpack.cpp \
-    %reldir%/message/pack.cpp
-check_PROGRAMS += %reldir%/message_unittest
-
-# Build/add closesession_unittest to test suite
-session_unittest_CPPFLAGS = \
-    -Igtest \
-    $(GTEST_CPPFLAGS) \
-    $(AM_CPPFLAGS)
-session_unittest_CXXFLAGS = \
-    $(PTHREAD_CFLAGS) \
-    $(CODE_COVERAGE_CXXFLAGS) \
-    $(CODE_COVERAGE_CFLAGS)
-session_unittest_LDFLAGS = \
-    -lgtest_main \
-    -lgtest \
-    -pthread \
-    $(OESDK_TESTCASE_FLAGS) \
-    $(CODE_COVERAGE_LDFLAGS)
-session_unittest_SOURCES = %reldir%/session/closesession_unittest.cpp
-check_PROGRAMS += %reldir%/session_unittest
-
-# Build/add sensorcommands_unittest to test suite
-sensorcommands_unittest_CPPFLAGS = \
-    -Igtest \
-    $(GTEST_CPPFLAGS) \
-    $(AM_CPPFLAGS)
-sensorcommands_unittest_CXXFLAGS = \
-    $(PTHREAD_CFLAGS) \
-    $(CODE_COVERAGE_CXXFLAGS) \
-    $(CODE_COVERAGE_CFLAGS)
-sensorcommands_unittest_LDFLAGS = \
-    -lgtest_main \
-    -lgtest \
-    -pthread \
-    $(OESDK_TESTCASE_FLAGS) \
-    $(CODE_COVERAGE_LDFLAGS)
-sensorcommands_unittest_SOURCES = %reldir%/dbus-sdr/sensorcommands_unittest.cpp
-sensorcommands_unittest_LDADD = $(top_builddir)/dbus-sdr/sensorutils.o
-check_PROGRAMS += %reldir%/sensorcommands_unittest
diff --git a/test/meson.build b/test/meson.build
new file mode 100644
index 0000000..3306a91
--- /dev/null
+++ b/test/meson.build
@@ -0,0 +1,78 @@
+gtest = dependency('gtest', main: true, disabler: true, required: false)
+gmock = dependency('gmock', disabler: true, required: false)
+if not gtest.found() or not gmock.found()
+  gtest_opts = import('cmake').subproject_options()
+  gtest_opts.add_cmake_defines({'CMAKE_CXX_FLAGS': '-Wno-pedantic'})
+  gtest_proj = import('cmake').subproject(
+    'googletest',
+    options: gtest_opts,
+    required: false)
+  if gtest_proj.found()
+    gtest = declare_dependency(
+      dependencies: [
+        dependency('threads'),
+        gtest_proj.dependency('gtest'),
+        gtest_proj.dependency('gtest_main'),
+      ])
+    gmock = gtest_proj.dependency('gmock')
+  else
+    assert(not get_option('tests').enabled(), 'Googletest is required')
+  endif
+endif
+
+test('entitymap_json',
+  executable(
+    'entitymap_json',
+    'entitymap_json_unittest.cpp',
+    include_directories: root_inc,
+    build_by_default: false,
+    implicit_include_directories: false,
+    dependencies: [entity_map_json_dep, gtest, gmock]
+  ))
+
+# Build/add oemrouter_unittest to test suite
+# Issue #3325
+# test('oemrouter',
+#  executable(
+#    'oemrouter',
+#    'oemrouter_unittest.cpp',
+#    include_directories: root_inc,
+#    build_by_default: false,
+#    implicit_include_directories: false,
+#    dependencies: [gtest, gmock]
+#  ))
+
+# Build/add message packing/unpacking unit tests
+test('message',
+  executable(
+    'message',
+    'message/pack.cpp',
+    'message/payload.cpp',
+    'message/unpack.cpp',
+    include_directories: root_inc,
+    build_by_default: false,
+    implicit_include_directories: false,
+    dependencies: [phosphor_logging_dep, crypto, systemd, sdbusplus_dep, gtest, gmock]
+  ))
+
+# Build/add closesession_unittest to test suite
+test('session/closesession',
+  executable(
+    'session_closesession',
+    'session/closesession_unittest.cpp',
+    include_directories: root_inc,
+    build_by_default: false,
+    implicit_include_directories: false,
+    dependencies: [gtest, gmock]
+  ))
+
+# Build/add sensorcommands_unittest to test suite
+test('dbus-sdr/sensorcommands',
+  executable(
+    'dbus-sdr_sensorcommands',
+    'dbus-sdr/sensorcommands_unittest.cpp',
+    include_directories: root_inc,
+    build_by_default: false,
+    implicit_include_directories: false,
+    dependencies: [sensorutils_dep, gtest, gmock]
+  ))
diff --git a/test/sample_unittest.cpp b/test/sample_unittest.cpp
deleted file mode 100644
index e574173..0000000
--- a/test/sample_unittest.cpp
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "sample.h"
-
-#include <gtest/gtest.h>
-
-TEST(FactorialTest, Zero)
-{
-    EXPECT_EQ(1, Factorial(0));
-}
diff --git a/user_channel/Makefile.am b/user_channel/Makefile.am
deleted file mode 100644
index bcd8573..0000000
--- a/user_channel/Makefile.am
+++ /dev/null
@@ -1,53 +0,0 @@
-COMMON_CXX = \
-	-flto \
-	-Wno-psabi \
-	$(SYSTEMD_CFLAGS) \
-	$(libmapper_CFLAGS) \
-	$(SDBUSPLUS_CFLAGS) \
-	$(PHOSPHOR_LOGGING_CFLAGS) \
-	$(PHOSPHOR_DBUS_INTERFACES_CFLAGS) \
-	-DBOOST_ERROR_CODE_HEADER_ONLY \
-	-DBOOST_SYSTEM_NO_DEPRECATED \
-	-DBOOST_COROUTINES_NO_DEPRECATION_WARNING \
-	-DBOOST_ASIO_DISABLE_THREADS \
-	-DBOOST_ALL_NO_LIB
-
-
-lib_LTLIBRARIES =
-
-if FEATURE_LIBUSERLAYER
-
-lib_LTLIBRARIES += libuserlayer.la
-libuserlayer_la_SOURCES = \
-	user_layer.cpp \
-	user_mgmt.cpp \
-	passwd_mgr.cpp
-libuserlayer_la_LDFLAGS = \
-	$(SYSTEMD_LIBS) \
-	$(libmapper_LIBS) \
-	$(PHOSPHOR_LOGGING_LIBS) \
-	$(PHOSPHOR_DBUS_INTERFACES_LIBS) \
-	-lstdc++fs \
-	$(CRYPTO_LIBS) \
-	-lpam_misc \
-	-version-info 0:0:0 -shared
-libuserlayer_la_CXXFLAGS = \
-	-I$(top_srcdir) \
-	$(COMMON_CXX)
-endif
-
-lib_LTLIBRARIES += libchannellayer.la
-libchannellayer_la_SOURCES = \
-	channel_mgmt.cpp \
-	channel_layer.cpp \
-	cipher_mgmt.cpp
-libchannellayer_la_LDFLAGS = \
-	$(SYSTEMD_LIBS) \
-	$(libmapper_LIBS) \
-	$(PHOSPHOR_LOGGING_LIBS) \
-	$(PHOSPHOR_DBUS_INTERFACES_LIBS) \
-	-lstdc++fs \
-	-version-info 0:0:0 -shared
-libchannellayer_la_CXXFLAGS = \
-	-I$(top_srcdir) \
-	$(COMMON_CXX)
diff --git a/user_channel/meson.build b/user_channel/meson.build
new file mode 100644
index 0000000..b7d6a87
--- /dev/null
+++ b/user_channel/meson.build
@@ -0,0 +1,91 @@
+user_channel_inc = include_directories('.')
+
+channellayer_pre = declare_dependency(
+  include_directories: [root_inc, user_channel_inc],
+  dependencies: [
+    crypto,
+    ipmid_dep,
+    phosphor_dbus_interfaces_dep,
+    phosphor_logging_dep,
+    std_cpp_fs,
+    systemd,
+  ])
+
+channellayer_src = [
+  'channel_layer.cpp',
+  'channel_mgmt.cpp',
+  'cipher_mgmt.cpp',
+]
+
+channellayer_lib = library(
+  'channellayer',
+  channellayer_src,
+  implicit_include_directories: false,
+  dependencies: channellayer_pre,
+  version: meson.project_version(),
+  install: true,
+  install_dir: get_option('libdir'),
+  override_options: ['b_lundef=false'])
+
+channellayer_dep = declare_dependency(
+  link_with: channellayer_lib,
+  dependencies: channellayer_pre)
+
+if not get_option('libuserlayer').disabled()
+  userlayer_pre = declare_dependency(
+    include_directories: [root_inc, user_channel_inc],
+    dependencies: [
+      channellayer_dep,
+      crypto,
+      ipmid_dep,
+      phosphor_dbus_interfaces_dep,
+      phosphor_logging_dep,
+      pam,
+      std_cpp_fs,
+      systemd,
+    ])
+
+  userlayer_src = [
+    'user_layer.cpp',
+    'user_mgmt.cpp',
+    'passwd_mgr.cpp',
+  ]
+
+  userlayer_lib = library(
+    'userlayer',
+    userlayer_src,
+    implicit_include_directories: false,
+    dependencies: userlayer_pre,
+    version: meson.project_version(),
+    install: true,
+    install_dir: get_option('libdir'),
+    override_options: ['b_lundef=false'])
+
+  userlayer_dep = declare_dependency(
+    link_with: userlayer_lib,
+    dependencies: userlayer_pre)
+
+  usercmds_pre = declare_dependency(
+    include_directories: [root_inc, user_channel_inc],
+    dependencies: [
+      mapper,
+      phosphor_logging_dep,
+      ipmid_dep,
+      userlayer_dep,
+      channellayer_dep,
+    ])
+
+  usercmds_lib = shared_library(
+    'usercmds',
+    'usercommands.cpp',
+    implicit_include_directories: false,
+    dependencies: usercmds_pre,
+    install: true,
+    install_dir: get_option('libdir') / 'ipmid-providers',
+    override_options: ['b_lundef=false'])
+
+  usercmds_dep = declare_dependency(
+    link_with: usercmds_lib,
+    dependencies: usercmds_pre)
+
+endif
diff --git a/xyz/openbmc_project/Ipmi/Internal/SoftPowerOff/meson.build b/xyz/openbmc_project/Ipmi/Internal/SoftPowerOff/meson.build
new file mode 100644
index 0000000..2302ad4
--- /dev/null
+++ b/xyz/openbmc_project/Ipmi/Internal/SoftPowerOff/meson.build
@@ -0,0 +1,57 @@
+sdbuspp_prog = find_program('sdbus++')
+
+domain = 'xyz.openbmc_project.Ipmi.Internal.SoftPowerOff'
+if_yaml_file = files('../SoftPowerOff.interface.yaml')
+
+if_cpp = custom_target(
+  'server.cpp',
+  output: 'server.cpp',
+  input: if_yaml_file,
+  capture: true,
+  command: [sdbuspp_prog, '-r', root, 'interface', 'server-cpp', domain])
+
+if_hpp = custom_target(
+  'server.hpp',
+  output: 'server.hpp',
+  input: if_yaml_file,
+  capture: true,
+  command: [sdbuspp_prog, '-r', root, 'interface', 'server-header', domain],
+  install: true,
+  install_dir: get_option('includedir') / 'xyz/openbmc_project/Ipmi/Internal/SoftPowerOff')
+
+softoff_dbus_deps = [
+  dependency('phosphor-dbus-interfaces'),
+  dependency('sdbusplus'),
+]
+
+softoff_dbus_lib = library(
+  'softoff-dbus',
+  [
+    if_cpp,
+    if_hpp,
+  ],
+  implicit_include_directories: false,
+  include_directories: root_inc,
+  version: meson.project_version(),
+  dependencies: softoff_dbus_deps,
+  override_options: ['b_lundef=false'],
+  install: true)
+
+softoff_dbus = declare_dependency(
+  dependencies: softoff_dbus_deps,
+  sources: [if_hpp],
+  link_with: softoff_dbus_lib)
+
+softoff_dbus_reqs = []
+foreach dep : softoff_dbus_deps
+  if dep.type_name() == 'pkgconfig'
+    softoff_dbus_reqs += dep
+  endif
+endforeach
+
+import('pkgconfig').generate(
+  name: 'softoff-dbus',
+  description: 'SoftPowerOff DBus Bindings',
+  version: meson.project_version(),
+  libraries: softoff_dbus,
+  requires: softoff_dbus_reqs)
