diff --git a/.gitignore b/.gitignore
index 6b2bed0..cbe1832 100644
--- a/.gitignore
+++ b/.gitignore
@@ -119,3 +119,6 @@
 src/test/need_to_introspect
 src/test/well_known
 src/test/name_change
+build*/
+subprojects/*
+!subprojects/*.wrap
diff --git a/libmapper/test/meson.build b/libmapper/test/meson.build
new file mode 100644
index 0000000..203f0c3
--- /dev/null
+++ b/libmapper/test/meson.build
@@ -0,0 +1,13 @@
+tests = [
+    [ 'mapper', [ declare_dependency(sources: [ '../mapper.c', 'utils.c' ]) ]],
+]
+
+foreach t : tests
+    name = t[0]
+    extra_deps = t[1]
+    test(name, executable(name.underscorify(), name + '.cpp',
+                     implicit_include_directories: false,
+                     dependencies: [gtest, gmock, sdbusplus, extra_deps],
+                     include_directories: ['../..']),
+         workdir: meson.current_source_dir())
+endforeach
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..3c536af
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,107 @@
+project(
+    'phosphor-objmgr',
+    'c', 'cpp',
+    default_options: [
+        'cpp_std=c++17',
+        'warning_level=3',
+        'werror=true',
+    ],
+    license: 'Apache-2.0',
+    version: '1.0',
+)
+
+phosphor_logging = dependency(
+    'phosphor-logging',
+    fallback: [
+        'phosphor-logging',
+        'phosphor_logging_dep'])
+sdbusplus = dependency(
+    'sdbusplus',
+    fallback: ['sdbusplus', 'sdbusplus_dep'])
+
+if get_option('tests').enabled()
+    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_proj = import('cmake').subproject('googletest', 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 if tests are enabled'
+            )
+        endif
+    endif
+    subdir('src/test')
+    subdir('libmapper/test')
+endif
+
+conf = configuration_data()
+conf.set_quoted('MAPPER_BUSNAME', 'xyz.openbmc_project.ObjectMapper')
+conf.set_quoted('MAPPER_INTERFACE', 'xyz.openbmc_project.ObjectMapper')
+conf.set_quoted('MAPPER_PATH', '/xyz/openbmc_project/object_mapper')
+configure_file(output: 'config.h', configuration: conf)
+
+install_headers('libmapper/mapper.h')
+
+libmapper = library(
+    'mapper',
+    'libmapper/mapper.c',
+    dependencies: [ dependency('libsystemd') ],
+    gnu_symbol_visibility: 'hidden',
+    version: meson.project_version(),
+    install: true)
+
+import('pkgconfig').generate(
+    name: 'libmapper',
+    description: 'OpenBMC service discovery utility library',
+    version: meson.project_version(),
+    libraries: libmapper)
+
+executable(
+    'mapper',
+    'libmapper/app.c',
+    link_with: libmapper,
+    dependencies: [ dependency('libsystemd') ],
+    install: true)
+
+executable(
+    'mapperx',
+    [
+        'src/main.cpp',
+        'src/argument.cpp',
+        'src/processing.cpp',
+        'src/associations.cpp',
+    ],
+    dependencies: [
+        dependency('boost'),
+        dependency('libsystemd'),
+        phosphor_logging,
+        sdbusplus,
+        dependency('systemd'),
+        dependency('threads'),
+        dependency('tinyxml2'),
+    ],
+    install: true
+)
+
+executable(
+    'phosphor-unit-failure-monitor',
+    [
+        'fail-monitor/argument.cpp',
+        'fail-monitor/main.cpp',
+        'fail-monitor/monitor.cpp',
+    ],
+    dependencies: [
+        phosphor_logging,
+    ],
+    install: true
+)
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644
index 0000000..cdf492c
--- /dev/null
+++ b/meson_options.txt
@@ -0,0 +1 @@
+option('tests', type: 'feature', description: 'Build tests', value: 'enabled')
diff --git a/src/test/meson.build b/src/test/meson.build
new file mode 100644
index 0000000..183ed88
--- /dev/null
+++ b/src/test/meson.build
@@ -0,0 +1,20 @@
+processing_cpp_dep = declare_dependency(sources: '../processing.cpp')
+associations_cpp_dep = declare_dependency(sources: '../associations.cpp')
+
+tests = [
+  [ 'well_known', [ associations_cpp_dep, processing_cpp_dep ]],
+  [ 'need_to_introspect', [ associations_cpp_dep, processing_cpp_dep ]],
+  [ 'associations', [ associations_cpp_dep ]],
+  [ 'name_change', [ associations_cpp_dep, processing_cpp_dep ]],
+  [ 'interfaces_added', [ associations_cpp_dep, processing_cpp_dep ]],
+]
+
+foreach t : tests
+  name = t[0]
+  extra_deps = t[1]
+  test(name, executable(name.underscorify(), name + '.cpp',
+                     implicit_include_directories: false,
+                     dependencies: [gtest, gmock, sdbusplus, extra_deps],
+                     include_directories: ['../..']),
+       workdir: meson.current_source_dir())
+endforeach
diff --git a/subprojects/googletest.wrap b/subprojects/googletest.wrap
new file mode 100644
index 0000000..56da9ef
--- /dev/null
+++ b/subprojects/googletest.wrap
@@ -0,0 +1,3 @@
+[wrap-git]
+url = https://github.com/google/googletest
+revision = HEAD
diff --git a/subprojects/phosphor-dbus-interfaces.wrap b/subprojects/phosphor-dbus-interfaces.wrap
new file mode 100644
index 0000000..935a8b2
--- /dev/null
+++ b/subprojects/phosphor-dbus-interfaces.wrap
@@ -0,0 +1,3 @@
+[wrap-git]
+url = https://github.com/openbmc/phosphor-dbus-interfaces.git
+revision = HEAD
diff --git a/subprojects/phosphor-logging.wrap b/subprojects/phosphor-logging.wrap
new file mode 100644
index 0000000..a039fcf
--- /dev/null
+++ b/subprojects/phosphor-logging.wrap
@@ -0,0 +1,3 @@
+[wrap-git]
+url = https://github.com/openbmc/phosphor-logging.git
+revision = HEAD
diff --git a/subprojects/sdbusplus.wrap b/subprojects/sdbusplus.wrap
new file mode 100644
index 0000000..d470130
--- /dev/null
+++ b/subprojects/sdbusplus.wrap
@@ -0,0 +1,3 @@
+[wrap-git]
+url = https://github.com/openbmc/sdbusplus.git
+revision = HEAD
